)]}'
{
  "commit": "0ded66479add86dae9ae2039bb78c25d4f04c535",
  "tree": "c2dcf85aac40cd94ff7b9c30422bf495095def65",
  "parents": [
    "955aad3b75e8c6e2b1e1c5002e22d0c8430ed982"
  ],
  "author": {
    "name": "QUICHE team",
    "email": "quiche-dev@google.com",
    "time": "Wed Oct 21 09:08:59 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Oct 21 09:09:39 2026 -0700"
  },
  "message": "QBONE Bonnet: pull netlink usage out of packet exchanger\n\nWe had organically evolved to a point where every queue silo needed its own netlink to hand to a packet exchanger to craft `ethhdr`s, even though the header was uniform and constant.\n\nInstead, in TAP mode, `TunTapDevice` builds its own eth_hdr via `ioctl(SIOCGIFHWADDR)` once the device is opened, which is passed as a parameter to any override or wrapper of `QboneClientPacketExchanger::Start`\n\nAdditionally move the eBPF loader creation up one level so that `QboneTunnel` can be agnostic as to whether the underlying device is TAP vs. TUN\n\nPiperOrigin-RevId: 1003988200\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5fdabd082118dc2262b2440f5b3a3d99ccfed4ca",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/async_write_packet_exchanger.cc",
      "new_id": "4cc546f36aacadbb7cac84e72a8c6be64e5d71a5",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/async_write_packet_exchanger.cc"
    },
    {
      "type": "modify",
      "old_id": "bb696450223f3f5aab683c52392083eef29b0666",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/async_write_packet_exchanger.h",
      "new_id": "49e50b4c7656458d9379e5aa5e1d71362b8d44aa",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/async_write_packet_exchanger.h"
    },
    {
      "type": "modify",
      "old_id": "d1cb1137f2c10969cf2ac7d3ebc18cef834a116b",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/async_write_packet_exchanger_test.cc",
      "new_id": "3f42eac97efc36e822519b9fed62b2840aeb2d11",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/async_write_packet_exchanger_test.cc"
    },
    {
      "type": "modify",
      "old_id": "5581d7c87b7744015faec62cc504b232f06848db",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/mock_qbone_client_packet_exchanger.h",
      "new_id": "233a74c8a8666ea343196bf88dd7395573805ead",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/mock_qbone_client_packet_exchanger.h"
    },
    {
      "type": "modify",
      "old_id": "5e086eef616120a2762981a4b4da79130a0a287c",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/mock_tun_device.h",
      "new_id": "c245f9a20983a0d44a58f0f688815c436fdae5d3",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/mock_tun_device.h"
    },
    {
      "type": "modify",
      "old_id": "7763850b0f56bbe7f29da3b57bc2b46fc7956f39",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/qbone_client_packet_exchanger.h",
      "new_id": "fcef53939245dd7cd2ae27a804cd21e2145af988",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/qbone_client_packet_exchanger.h"
    },
    {
      "type": "modify",
      "old_id": "64a2c3d8625589702a71ca081bb90c02747eb7bf",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/tun_device.cc",
      "new_id": "c1427c7649616c35e8321180c42e79e163bf866d",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/tun_device.cc"
    },
    {
      "type": "modify",
      "old_id": "20ee320081d9fe38b79b19911c4a666c1667e537",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/tun_device.h",
      "new_id": "7107f46f8144c0b14bff542b9b29e8605f4934d9",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/tun_device.h"
    },
    {
      "type": "modify",
      "old_id": "57444c6d4b80987dc38dd90c92bf9b47160e373a",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/tun_device_interface.h",
      "new_id": "12e4d6997309331c8fb8190984a1eb43be00d41b",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/tun_device_interface.h"
    },
    {
      "type": "modify",
      "old_id": "010c5d1cc5a8e032a1a23b634614650ad557b805",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger.cc",
      "new_id": "35b0f40a91b2ceb745b519fbb69d38ad9b63f973",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger.cc"
    },
    {
      "type": "modify",
      "old_id": "2c8130d2145cf552bad25f43fd6797dfa6e8c997",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger.h",
      "new_id": "8a8f5d637e5797fe8b0b09843496f91a7d6b14e2",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger.h"
    },
    {
      "type": "modify",
      "old_id": "34a3f3df4b963f90d2121bd5c8fa66fb65ce5f36",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger_test.cc",
      "new_id": "5bc927625f12f9646d48d0917a88c2f8a00b9506",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/tun_device_packet_exchanger_test.cc"
    },
    {
      "type": "modify",
      "old_id": "ccbab2d5abe86c6afda4c1cc0d8ad6eb81fbffe6",
      "old_mode": 33188,
      "old_path": "quiche/quic/qbone/bonnet/tun_device_test.cc",
      "new_id": "4519fb93aebca268460988bd629085e409cd08ac",
      "new_mode": 33188,
      "new_path": "quiche/quic/qbone/bonnet/tun_device_test.cc"
    }
  ]
}
