Index: if_bridge.c =================================================================== RCS file: /cvsroot/src/sys/net/if_bridge.c,v retrieving revision 1.46 diff -u -p -r1.46 if_bridge.c --- if_bridge.c 23 Nov 2006 04:07:07 -0000 1.46 +++ if_bridge.c 11 Jan 2008 09:50:47 -0000 @@ -459,6 +459,7 @@ bridge_ioctl(struct ifnet *ifp, u_long c struct ifbrparam ifbrparam; } args; struct ifdrv *ifd = (struct ifdrv *) data; + struct ifreq *ifr = (struct ifreq *) data; const struct bridge_control *bc; int s, error = 0; @@ -529,6 +530,15 @@ bridge_ioctl(struct ifnet *ifp, u_long c } break; + case SIOCSIFMTU: + if (ifr->ifr_mtu > ETHERMTU_JUMBO || + ifr->ifr_mtu < ETHERMIN || + !LIST_EMPTY(&sc->sc_iflist)) + error = EINVAL; + else + ifp->if_mtu = ifr->ifr_mtu; + break; + default: error = ENOTTY; break; Index: if_ethersubr.c =================================================================== RCS file: /cvsroot/src/sys/net/if_ethersubr.c,v retrieving revision 1.139.2.2 diff -u -p -r1.139.2.2 if_ethersubr.c --- if_ethersubr.c 27 Feb 2007 23:16:42 -0000 1.139.2.2 +++ if_ethersubr.c 11 Jan 2008 09:50:47 -0000 @@ -1504,6 +1504,12 @@ ether_ioctl(struct ifnet *ifp, u_long cm case SIOCSIFMTU: { int maxmtu; + struct bridge_softc *bridge_sc = + (struct bridge_softc *)ifp->if_bridge; + + if (bridge_sc != NULL && + ifr->ifr_mtu != bridge_sc->sc_if.if_mtu) + return EINVAL; if (ec->ec_capabilities & ETHERCAP_JUMBO_MTU) maxmtu = ETHERMTU_JUMBO;