diff --git a/bonding.c b/bonding.c index 3b25751..7daf0fd 100644 --- a/bonding.c +++ b/bonding.c @@ -170,6 +170,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; } diff --git a/bridge.c b/bridge.c index 2128ec7..70ece78 100644 --- a/bridge.c +++ b/bridge.c @@ -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;