)]}'
{
  "commit": "ae5692541980c18701aad66044b0127760d4b8ad",
  "tree": "01cea524e14226ff60579ce7996be2ad77406692",
  "parents": [
    "256510789f8e989598b367acf2fbe0e783e6e61f"
  ],
  "author": {
    "name": "ericorth",
    "email": "ericorth@google.com",
    "time": "Thu Jul 23 14:18:00 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Jul 23 14:18:40 2026 -0700"
  },
  "message": "Bonnet Tun Exchanger Refactor: Drop the base class that barely did anything\n\nTunDevicePacketExchanger had a base class that didn\u0027t do anything significant. Overcomplicates my efforts to refactor the exchanger for worker-thread writes.\n\nMerge the little bit of behavior directly into TunDevicePacketExchanger and replace the base class with a pure interface.  Also, while at it, move the now-interface (and its mock) into the bonnet/ subdir and rename from QbonePacketExchanger to QBONE client packet exchanger to better describe its purpose.\n\nThrough some of the moved/modified logic, there may be some very minor changes to how the packets get logged/monitored, e.g. neighbor solicit packets (which are directly responded to in the exchanger) now get treated as a write packet rather than a read error.\n\nPiperOrigin-RevId: 952953687\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "78232083e47c89bcd03ff8436242af1eeeefebe2",
      "old_mode": 33188,
      "old_path": "build/source_list.bzl",
      "new_id": "38cbf2cd6423916a799765acc4c15abf06c145c8",
      "new_mode": 33188,
      "new_path": "build/source_list.bzl"
    },
    {
      "type": "modify",
      "old_id": "cb57ef724eeb29def9e51b6e3923113e5f2fab82",
      "old_mode": 33188,
      "old_path": "build/source_list.gni",
      "new_id": "f23c1b9f3b248d64ad7b52af336e21d2c76aca38",
      "new_mode": 33188,
      "new_path": "build/source_list.gni"
    },
    {
      "type": "modify",
      "old_id": "8aef483779c9fea972b0b5cb38cec3f2f2ba8f80",
      "old_mode": 33188,
      "old_path": "build/source_list.json",
      "new_id": "dcbd9bf1a924d862fe872d67103cefa9a62d4db7",
      "new_mode": 33188,
      "new_path": "build/source_list.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3c5167cd9f97d501d63e569f683bdd97431f65b9",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/mock_qbone_client_packet_exchanger.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1a07a00b16e2d443f10b20b0de6fec739c49966f",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/qbone_client_packet_exchanger.h"
    },
    {
      "type": "modify",
      "old_id": "7575359e8a84c5a0323b9a180afbddb214c4f3ec",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger.cc",
      "new_id": "a132b1657d30614747ed45b6edeb9401ddba4edc",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger.cc"
    },
    {
      "type": "modify",
      "old_id": "c953444087b626683f27dc15e9201ce402ecca5c",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger.h",
      "new_id": "b1743ec85cc71a19c46d26558b408548d443f860",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger.h"
    },
    {
      "type": "modify",
      "old_id": "fd22342f6303d5d79cb0529c60f5196359517d5e",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger_test.cc",
      "new_id": "094b2c786ec16912df2a53c94f73fac282d1f348",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger_test.cc"
    },
    {
      "type": "delete",
      "old_id": "42a66915c544f4fb033e8130727aa1b7c5151959",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/mock_qbone_packet_exchanger.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "b86e6de44e14be7b2da033f2b0b88c632f4b8648",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/qbone_client.cc",
      "new_id": "5a01199cfca67c215c26c4e8978f00889041a221",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/qbone_client.cc"
    },
    {
      "type": "modify",
      "old_id": "1838c87e09e8e626bcc913a3eac99f552632a35c",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/qbone_client.h",
      "new_id": "34b2b45f859307acddfc413ab92ef8080a70b16f",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/qbone_client.h"
    },
    {
      "type": "modify",
      "old_id": "8d2a11152f722092caef1e250a68f52913069665",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/qbone_client_session.cc",
      "new_id": "6e31e61401b576ef55e6e0007444f3cb87bc2e05",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/qbone_client_session.cc"
    },
    {
      "type": "modify",
      "old_id": "c1e1cea9cc20e5e6c23d08f7898e4f27ca806fc6",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/qbone_client_session.h",
      "new_id": "ef7310c27d103b00ff591d18c58ce2e0f311d58a",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/qbone_client_session.h"
    },
    {
      "type": "modify",
      "old_id": "f875a3fca3a7ac9c655d43fc0b1e0bc6c4ae9ff3",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/qbone_client_test.cc",
      "new_id": "830628a685969e1683cb11dab12110ee88ed8b0c",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/qbone_client_test.cc"
    },
    {
      "type": "delete",
      "old_id": "13eee333c52d7866d3ffc242cf94e8d47c4dc7c3",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/qbone_packet_exchanger.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "5616426234b063e735c5393fa7dd7c1b8fa86852",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/qbone_packet_exchanger.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "13fffe98bfa0f18bce62f05aeb98925b05327f7c",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/qbone_packet_exchanger_test.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "6211a4cf268871e6c2644f711fc23c70fbbeafe8",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/qbone_session_test.cc",
      "new_id": "81ab85565898a29b1ec282ea47fa5d5b8ff6e163",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/qbone_session_test.cc"
    }
  ]
}
