svn commit: r317403 - stable/11/sys/net
Andrey V. Elsukov
ae at FreeBSD.org
Tue Apr 25 11:19:24 UTC 2017
Author: ae
Date: Tue Apr 25 11:19:22 2017
New Revision: 317403
URL: https://svnweb.freebsd.org/changeset/base/317403
Log:
MFC r316699:
Do not adjust interface MTU automatically. Leave this task to the system
administrator.
Before r274246 interface MTU was adjusted only when GRE key is configured.
The r274246 has changed this behavior to automatically adjust MTU when any
option, that changes the size of GRE header is configured.
This patch removes automatic MTU adjustment from if_gre(4) and if_me(4),
and restores the behavior that was prior to r274246.
Differential Revision: https://reviews.freebsd.org/D10215
Modified:
stable/11/sys/net/if_gre.c
stable/11/sys/net/if_gre.h
stable/11/sys/net/if_me.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/net/if_gre.c
==============================================================================
--- stable/11/sys/net/if_gre.c Tue Apr 25 10:29:08 2017 (r317402)
+++ stable/11/sys/net/if_gre.c Tue Apr 25 11:19:22 2017 (r317403)
@@ -88,7 +88,7 @@ __FBSDID("$FreeBSD$");
#include <machine/in_cksum.h>
#include <security/mac/mac_framework.h>
-#define GREMTU 1500
+#define GREMTU 1476
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)
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: stable/11/sys/net/if_gre.h
==============================================================================
--- stable/11/sys/net/if_gre.h Tue Apr 25 10:29:08 2017 (r317402)
+++ stable/11/sys/net/if_gre.h Tue Apr 25 11:19:22 2017 (r317403)
@@ -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: stable/11/sys/net/if_me.c
==============================================================================
--- stable/11/sys/net/if_me.c Tue Apr 25 10:29:08 2017 (r317402)
+++ stable/11/sys/net/if_me.c Tue Apr 25 11:19:22 2017 (r317403)
@@ -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))
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;
More information about the svn-src-all
mailing list