svn commit: r316699 - head/sys/net

Andrey V. Elsukov bu7cher at yandex.ru
Tue Apr 11 18:16:56 UTC 2017


On 11.04.2017 19:51, Rodney W. Grimes wrote:
>> 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;

I just returned back constants that were here :)
The man page says:
 "The MTU of gre interfaces is set to 1476 by default, to match the
  value used by Cisco routers."

> Isn't this arguably wrong in the face of JumboFrames?
>

I don't see why it may be wrong for jumbo frames. The default MTU value
used by any interfaces is ETHERMTU, if you know that your NIC supports
jumbo frames, you will configure specific MTU value.
If you want 9k MTU on gre(4), you should configure it.

>>  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.

It was here too. I think it is something from the past and can be removed.

From RFC791: "It is recommended that hosts only send datagrams larger
than 576 octets".

>>  			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?

Feel free to fix this. Many pseudo interfaces has similar MTU limitations.

-- 
WBR, Andrey V. Elsukov

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 553 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/svn-src-head/attachments/20170411/a14dc4e6/attachment.sig>


More information about the svn-src-head mailing list