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-head mailing list