Page MenuHomeFreeBSD

D31288.1785283255.diff
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

D31288.1785283255.diff

Index: sys/net/if_bridge.c
===================================================================
--- sys/net/if_bridge.c
+++ sys/net/if_bridge.c
@@ -917,6 +917,8 @@
break;
case SIOCSIFMTU:
+ oldmtu = sc->sc_ifp->if_mtu;
+
if (ifr->ifr_mtu < 576) {
error = EINVAL;
break;
@@ -926,17 +928,27 @@
break;
}
CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) {
- if (bif->bif_ifp->if_mtu != ifr->ifr_mtu) {
- log(LOG_NOTICE, "%s: invalid MTU: %u(%s)"
- " != %d\n", sc->sc_ifp->if_xname,
- bif->bif_ifp->if_mtu,
- bif->bif_ifp->if_xname, ifr->ifr_mtu);
+ error = (*bif->bif_ifp->if_ioctl)(bif->bif_ifp,
+ SIOCSIFMTU, (caddr_t)ifr);
+ if (error != 0) {
+ log(LOG_NOTICE, "%s: invalid MTU: %u for"
+ " member %s\n", sc->sc_ifp->if_xname,
+ ifr->ifr_mtu,
+ bif->bif_ifp->if_xname);
error = EINVAL;
break;
}
}
- if (!error)
+ if (error) {
+ /* Restore the previous MTU on all member interfaces. */
+ ifr->ifr_mtu = oldmtu;
+ CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) {
+ (*bif->bif_ifp->if_ioctl)(bif->bif_ifp,
+ SIOCSIFMTU, (caddr_t)ifr);
+ }
+ } else {
sc->sc_ifp->if_mtu = ifr->ifr_mtu;
+ }
break;
default:
/*

File Metadata

Mime Type
text/plain
Expires
Wed, Jul 29, 12:00 AM (19 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29298250
Default Alt Text
D31288.1785283255.diff (1 KB)

Event Timeline