Fix SIOCSIFMTU
authorchris <chris@openbsd.org>
Thu, 27 Apr 2000 00:00:24 +0000 (00:00 +0000)
committerchris <chris@openbsd.org>
Thu, 27 Apr 2000 00:00:24 +0000 (00:00 +0000)
sys/dev/ic/fxp.c
sys/net/if_vlan.c

index 4d19ead..c374305 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: fxp.c,v 1.3 2000/04/26 19:12:08 chris Exp $   */
+/*     $OpenBSD: fxp.c,v 1.4 2000/04/27 00:00:25 chris Exp $   */
 /*     $NetBSD: if_fxp.c,v 1.2 1997/06/05 02:01:55 thorpej Exp $       */
 
 /*
@@ -1415,10 +1415,18 @@ fxp_ioctl(ifp, command, data)
 
        case SIOCSIFADDR:
        case SIOCGIFADDR:
-       case SIOCSIFMTU:
                error = ether_ioctl(ifp, command, data);
                break;
 
+       case SIOCSIFMTU:
+               if (ifr->ifr_mtu > ETHERMTU || ifr->ifr_mtu < ETHERMIN) {
+                       error = EINVAL;
+               } else if (ifp->if_mtu != ifr->ifr_mtu) {
+                       ifp->if_mtu = ifr->ifr_mtu;
+                       error = fxp_init(sc);
+               }
+               break;
+
        case SIOCSIFFLAGS:
                sc->all_mcasts = (ifp->if_flags & IFF_ALLMULTI) ? 1 : 0;
 
index 2f41736..6cd892e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_vlan.c,v 1.2 2000/04/26 22:57:27 chris Exp $ */
+/*     $OpenBSD: if_vlan.c,v 1.3 2000/04/27 00:00:24 chris Exp $ */
 /*
  * Copyright 1998 Massachusetts Institute of Technology
  *
@@ -503,7 +503,7 @@ vlan_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                 * jumbo frames.  It would be nice to replace ETHERMTU
                 * with the parent interface's MTU in the following statement.
                 */
-               if (ifr->ifr_mtu > ETHERMTU) {
+               if (ifr->ifr_mtu > ETHERMTU || ifr->ifr_mtu < ETHERMIN) {
                        error = EINVAL;
                } else {
                        ifp->if_mtu = ifr->ifr_mtu;