svn commit: r316699 - head/sys/net
Rodney W. Grimes
freebsd at pdx.rh.CN85.dnsmgr.net
Tue Apr 11 16:51:37 UTC 2017
> Author: ae
> Date: Tue Apr 11 08:56:18 2017
> New Revision: 316699
> URL: https://svnweb.freebsd.org/changeset/base/316699
>
> Log:
> Do not adjust interface MTU automatically. Leave this task to the system
> administrator.
>
> This restores the behavior that was prior to r274246.
>
> No objection from: #network
> MFC after: 2 weeks
> Differential Revision: https://reviews.freebsd.org/D10215
>
> Modified:
> head/sys/net/if_gre.c
> head/sys/net/if_gre.h
> head/sys/net/if_me.c
>
> Modified: head/sys/net/if_gre.c
> ==============================================================================
> --- head/sys/net/if_gre.c Tue Apr 11 08:29:12 2017 (r316698)
> +++ head/sys/net/if_gre.c Tue Apr 11 08:56:18 2017 (r316699)
> @@ -88,7 +88,7 @@ __FBSDID("$FreeBSD$");
> #include <machine/in_cksum.h>
> #include <security/mac/mac_framework.h>
>
> -#define GREMTU 1500
> +#define GREMTU 1476
I would of thought that this was
#define GREMTU ETHERMTU
and now should probably be:
#define GREMTU ETHERMTU - gre_hlen;
Or what ever the approprite sizeof(foo) is;
Isn't this arguably wrong in the face of JumboFrames?
> static const char grename[] = "gre";
> static MALLOC_DEFINE(M_GRE, grename, "Generic Routing Encapsulation");
> static VNET_DEFINE(struct mtx, gre_mtx);
> @@ -173,7 +173,7 @@ gre_clone_create(struct if_clone *ifc, i
> GRE2IFP(sc)->if_softc = sc;
> if_initname(GRE2IFP(sc), grename, unit);
>
> - GRE2IFP(sc)->if_mtu = sc->gre_mtu = GREMTU;
> + GRE2IFP(sc)->if_mtu = GREMTU;
> GRE2IFP(sc)->if_flags = IFF_POINTOPOINT|IFF_MULTICAST;
> GRE2IFP(sc)->if_output = gre_output;
> GRE2IFP(sc)->if_ioctl = gre_ioctl;
> @@ -231,7 +231,8 @@ gre_ioctl(struct ifnet *ifp, u_long cmd,
> /* XXX: */
> if (ifr->ifr_mtu < 576)
This is another magic constant that should be in a #define.
> return (EINVAL);
> - break;
> + ifp->if_mtu = ifr->ifr_mtu;
> + return (0);
> case SIOCSIFADDR:
> ifp->if_flags |= IFF_UP;
> case SIOCSIFFLAGS:
> @@ -255,12 +256,6 @@ gre_ioctl(struct ifnet *ifp, u_long cmd,
> }
> error = 0;
> switch (cmd) {
> - case SIOCSIFMTU:
> - GRE_WLOCK(sc);
> - sc->gre_mtu = ifr->ifr_mtu;
> - gre_updatehdr(sc);
> - GRE_WUNLOCK(sc);
> - goto end;
> case SIOCSIFPHYADDR:
> #ifdef INET6
> case SIOCSIFPHYADDR_IN6:
> @@ -549,7 +544,6 @@ gre_updatehdr(struct gre_softc *sc)
> } else
> sc->gre_oseq = 0;
> gh->gre_flags = htons(flags);
> - GRE2IFP(sc)->if_mtu = sc->gre_mtu - sc->gre_hlen;
> }
>
> static void
>
> Modified: head/sys/net/if_gre.h
> ==============================================================================
> --- head/sys/net/if_gre.h Tue Apr 11 08:29:12 2017 (r316698)
> +++ head/sys/net/if_gre.h Tue Apr 11 08:56:18 2017 (r316699)
> @@ -69,7 +69,6 @@ struct gre_softc {
> uint32_t gre_oseq;
> uint32_t gre_key;
> uint32_t gre_options;
> - uint32_t gre_mtu;
> u_int gre_fibnum;
> u_int gre_hlen; /* header size */
> union {
>
> Modified: head/sys/net/if_me.c
> ==============================================================================
> --- head/sys/net/if_me.c Tue Apr 11 08:29:12 2017 (r316698)
> +++ head/sys/net/if_me.c Tue Apr 11 08:56:18 2017 (r316699)
> @@ -66,7 +66,7 @@ __FBSDID("$FreeBSD$");
> #include <machine/in_cksum.h>
> #include <security/mac/mac_framework.h>
>
> -#define MEMTU 1500
> +#define MEMTU (1500 - sizeof(struct mobhdr))
1500 -> ETHERMTU?
> static const char mename[] = "me";
> static MALLOC_DEFINE(M_IFME, mename, "Minimal Encapsulation for IP");
> static VNET_DEFINE(struct mtx, me_mtx);
> @@ -186,7 +186,7 @@ me_clone_create(struct if_clone *ifc, in
> ME2IFP(sc)->if_softc = sc;
> if_initname(ME2IFP(sc), mename, unit);
>
> - ME2IFP(sc)->if_mtu = MEMTU - sizeof(struct mobhdr);
> + ME2IFP(sc)->if_mtu = MEMTU;;
> ME2IFP(sc)->if_flags = IFF_POINTOPOINT|IFF_MULTICAST;
> ME2IFP(sc)->if_output = me_output;
> ME2IFP(sc)->if_ioctl = me_ioctl;
> @@ -236,7 +236,7 @@ me_ioctl(struct ifnet *ifp, u_long cmd,
> case SIOCSIFMTU:
> if (ifr->ifr_mtu < 576)
> return (EINVAL);
> - ifp->if_mtu = ifr->ifr_mtu - sizeof(struct mobhdr);
> + ifp->if_mtu = ifr->ifr_mtu;
> return (0);
> case SIOCSIFADDR:
> ifp->if_flags |= IFF_UP;
>
>
--
Rod Grimes rgrimes at freebsd.org
More information about the svn-src-all
mailing list