liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit c5e05675112a15fed5f7d108c6d9c4caad2c2cfa
parent a3c4ebbe291e7464d82fcd074d38da6c276ba871
Author: Daniel Barlow <dan@telent.net>
Date:   Mon,  3 Nov 2025 22:01:35 +0000

bridge: flush ipv6 routes via member interfaces

Adding an interface as a bridge member does not (by itself) remove the
routes which go via that interface, whioch makes them basically into
null routes. This isn't a problem for IPv4 because there were no
addresses anyway, but interfaces can acquire IPv6 addresses via
autodiscovery before they get added to the bridde

Possibly it would be better to disable autodiscovery on these
interfaces. More thought needed.

Diffstat:
Mmodules/bridge/members.nix | 5+++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/modules/bridge/members.nix b/modules/bridge/members.nix @@ -11,8 +11,8 @@ let addif = member: # how do we get sight of services from here? maybe we need to - # implement ifwait as a regualr derivation instead of a - # servicedefinition + # implement ifwait as a regular derivation instead of a + # service definition svc.ifwait.build { state = "running"; interface = member; @@ -24,6 +24,7 @@ let name = "${primary.name}.member.${member.name}"; up = '' ip link set dev $(output ${member} ifname) master $(output ${primary} ifname) + ip -6 route flush dev $(output ${member} ifname) ''; down = "ip link set dev $(output ${member} ifname) nomaster"; };