mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-10-12 21:45:41 +03:00
Every host-side device uBridge creates for the data plane (persistent TAP anchors, veth host ends, per-link kernel bridges) must be pure L2: no IPv4 address, no IPv6 address and no IPv6 stack activity on that device. Measured today: an idle TAP emits ~6 frames / 2 s of the host's own MLD/DAD from its own link-local, the production Docker veth host end carries fe80::5c30:e8ff:fe00:5d8d/64 and the per-link bridge fe80::f0d9:94ff:feac:e42b/64. On a kernel link the bridge floods those frames into the emulated segment, on a relay link uBridge relays them to the peer, and the host answers neighbor solicitations for its own address (a phantom IPv6 neighbour for the emulated nodes). IPv4 needs no equivalent knob: nothing self-provisions it, and the anchors hold no IPv4 address. The spec adds one command (link l2only <iface> [on|off], netlink addr-gen-mode none -- never a /proc sysctl write, which fails the DAC check for a non-root setcap'd uBridge), applied by the four creators themselves, with an idle-silence acceptance test and a known-noise note in the Docker kernel datapath document. No change to existing command grammar.