diff options
| author | Fabian Bläse | 2024-11-15 21:12:36 +0000 |
|---|---|---|
| committer | Robert Marko | 2025-05-17 09:35:54 +0000 |
| commit | 723c699e84f4b0f4515928f0cc57a5be2a317ced (patch) | |
| tree | 665f1a4e6ed9df57f4176227de0bf520ec96feef | |
| parent | e8bbf246ce2e134613d3b68477dcb955689408e4 (diff) | |
| download | netifd-723c699e84f4b0f4515928f0cc57a5be2a317ced.tar.gz | |
Restore disable_ipv6 sysctl after removing a device from bridge or bond
If a device is added to a bond or bridge, the disable_ipv6 sysctl is
set, so that no link local addresses are present on the slave devices.
However, the disable_ipv6 sysctl is not restored after removing the
device from the bridge or bond. Therefore, no IPv6 link local addresses
are added and autoconfiguration does not work.
Set the disable_ipv6 to '0' on device removal from bridge or bond.
Signed-off-by: Fabian Bläse <fabian@blaese.de>
Link: https://github.com/openwrt/netifd/pull/40
Signed-off-by: Robert Marko <robimarko@gmail.com>
| -rw-r--r-- | bonding.c | 5 | ||||
| -rw-r--r-- | bridge.c | 5 |
2 files changed, 10 insertions, 0 deletions
@@ -171,6 +171,11 @@ bonding_disable_port(struct bonding_port *bp, bool keep_dev) if (!keep_dev) device_release(&bp->dev); + if (bp->dev.dev->settings.flags & DEV_OPT_IPV6) { + bp->dev.dev->settings.ipv6 = 1; + bp->dev.dev->settings.flags &= ~DEV_OPT_IPV6; + } + return 0; } @@ -327,6 +327,11 @@ bridge_disable_member(struct bridge_member *bm, bool keep_dev) if (!keep_dev) device_release(&bm->dev); + if (bm->dev.dev->settings.flags & DEV_OPT_IPV6) { + bm->dev.dev->settings.ipv6 = 1; + bm->dev.dev->settings.flags &= ~DEV_OPT_IPV6; + } + device_broadcast_event(&bst->dev, DEV_EVENT_TOPO_CHANGE); return 0; |