> 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                                                 rgri...@freebsd.org
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to