Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Aug 2018 08:02:40 +0000 (UTC)
From:      Eugene Grosbein <eugen@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r476338 - in head/net/mpd5: . files
Message-ID:  <201808040802.w7482eqV022597@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: eugen
Date: Sat Aug  4 08:02:40 2018
New Revision: 476338
URL: https://svnweb.freebsd.org/changeset/ports/476338

Log:
  net/mpd5: revert previous LCP MRU negotiation change
  and add new way to deal with same problem
  following upstream changes r22478, r2249:
  
  - reverse r2246 as it used wrong way to deal with the problem;
  - make it possible to override results of LCP negotiation
    and set interface MTU to specified value with a command:
  
  set iface mtu NNN override
  
  New option "override" is not documented yet.
  This is dangerous option as it can violate RFC 1661
  and should be used with caution and at your own risk.
  It is useful when you deal with broken PPP peer
  negotiating too low value while higher MTU is known to work.

Added:
  head/net/mpd5/files/patch-mtu-override   (contents, props changed)
Deleted:
  head/net/mpd5/files/patch-mtu
Modified:
  head/net/mpd5/Makefile

Modified: head/net/mpd5/Makefile
==============================================================================
--- head/net/mpd5/Makefile	Sat Aug  4 07:57:34 2018	(r476337)
+++ head/net/mpd5/Makefile	Sat Aug  4 08:02:40 2018	(r476338)
@@ -3,7 +3,7 @@
 
 PORTNAME=	mpd
 DISTVERSION=	5.8
-PORTREVISION=	6
+PORTREVISION=	7
 CATEGORIES=	net
 MASTER_SITES=	SF/${PORTNAME}/Mpd5/Mpd-${PORTVERSION}
 PKGNAMESUFFIX=	5

Added: head/net/mpd5/files/patch-mtu-override
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/mpd5/files/patch-mtu-override	Sat Aug  4 08:02:40 2018	(r476338)
@@ -0,0 +1,107 @@
+Index: src/iface.h
+===================================================================
+--- src/iface.h	(revision 2246)
++++ src/iface.h	(working copy)
+@@ -107,6 +107,7 @@
+     u_char		traffic[IFACE_IDLE_SPLIT];	/* Mark any traffic */
+     u_short		mtu;			/* Interface MTU */
+     u_short		max_mtu;		/* Configured maximum MTU */
++    u_short		mtu_override;		/* Configured MTU override */
+     struct optinfo	options;		/* Configuration options */
+     u_int		idle_timeout;		/* Idle timeout */
+     u_int		session_timeout;	/* Session timeout */
+Index: src/iface.c
+===================================================================
+--- src/iface.c	(revision 2246)
++++ src/iface.c	(working copy)
+@@ -162,7 +162,7 @@
+ 	IfaceSetCommand, NULL, 2, (void *) SET_ADDRS },
+     { "route {dest}[/{width}]",		"Add IP route",
+ 	IfaceSetCommand, NULL, 2, (void *) SET_ROUTE },
+-    { "mtu {size}",			"Set max allowed interface MTU",
++    { "mtu {size} [override]",		"Set max allowed or override interface MTU",
+ 	IfaceSetCommand, NULL, 2, (void *) SET_MTU },
+     { "name [{name}]",			"Set interface name",
+ 	IfaceSetCommand, NULL, 2, (void *) SET_NAME },
+@@ -289,6 +289,7 @@ IfaceInit(Bund b)
+   /* Default configuration */
+   iface->mtu = NG_IFACE_MTU_DEFAULT;
+   iface->max_mtu = NG_IFACE_MTU_DEFAULT;
++  iface->mtu_override = 0;
+ #ifdef SIOCSIFDESCR
+   iface->ifdescr = NULL;
+   iface->conf.ifdescr = NULL;
+@@ -1606,15 +1607,30 @@ IfaceSetCommand(Context ctx, int ac, cha
+     case SET_MTU:
+       {
+ 	int	max_mtu;
++	int	override;
+ 
+ 	/* Check */
+-	if (ac != 1)
++	if (ac < 1 || ac > 2)
+ 	  return(-1);
+ 
+ 	max_mtu = atoi(av[0]);
++	override = 0;
++
++	if (ac == 2 && av[1][0]) {
++	  if (strcmp(av[1], "override") == 0)
++	    override = 1;
++	  else
++	    Error("Invalid keyword %s", av[1]);
++	}
++	
+ 	if (max_mtu < IFACE_MIN_MTU || max_mtu > IFACE_MAX_MTU)
+-	  Error("Invalid interface mtu %d", max_mtu);
+-	iface->max_mtu = max_mtu;
++	  if (!override || max_mtu != 0)
++	    Error("Invalid interface mtu %d", max_mtu);
++
++	if (max_mtu != 0)
++	  iface->max_mtu = max_mtu;
++	if (override)
++	  iface->mtu_override = max_mtu;
+       }
+       break;
+ 
+@@ -1743,6 +1759,7 @@ IfaceStat(Context ctx, int ac, char *av[
+     Printf("\tGroup           : %s\r\n", iface->conf.ifgroup);
+ #endif
+     Printf("\tMaximum MTU     : %d bytes\r\n", iface->max_mtu);
++    Printf("\tMTU override    : %d bytes\r\n", iface->mtu_override);
+     Printf("\tIdle timeout    : %d seconds\r\n", iface->idle_timeout);
+     Printf("\tSession timeout : %d seconds\r\n", iface->session_timeout);
+     if (!u_rangeempty(&iface->conf.self_addr)) {
+@@ -1873,14 +1890,18 @@ IfaceSetMTU(Bund b, int mtu)
+ 	return;
+     }
+ 
+-    if ((b->params.mtu > 0) && (mtu > b->params.mtu)) {
++    if (!iface->mtu_override && (b->params.mtu > 0) && (mtu > b->params.mtu)) {
+ 	mtu = b->params.mtu;
+ 	Log(LG_IFACE2, ("[%s] IFACE: forcing MTU of auth backend: %d bytes",
+ 	    b->name, mtu));
+     }
+ 
+-    /* Limit MTU to configured maximum */
+-    if (mtu > iface->max_mtu)
++    /* Limit MTU to configured maximum/override */
++    if (iface->mtu_override) {
++	mtu = iface->mtu_override;
++	Log(LG_IFACE2, ("[%s] IFACE: forcing MTU override: %d bytes",
++	    b->name, mtu));
++    } else if (mtu > iface->max_mtu)
+         mtu = iface->max_mtu;
+ 
+     /* Set MTU on interface */
+@@ -3061,6 +3082,9 @@ IfaceSetupMSS(Bund b, uint16_t maxMSS)
+   memset(&tcpmsscfg, 0, sizeof(tcpmsscfg));
+   tcpmsscfg.maxMSS = maxMSS;
+ 
++  Log(LG_IFACE2, ("[%s] IFACE: Configuring ng_tcpmss %s %u",
++      b->name, path, (unsigned)tcpmsscfg.maxMSS));
++
+   snprintf(tcpmsscfg.inHook, sizeof(tcpmsscfg.inHook), "in");
+   snprintf(tcpmsscfg.outHook, sizeof(tcpmsscfg.outHook), "out");
+   if (NgSendMsg(gLinksCsock, path, NGM_TCPMSS_COOKIE, NGM_TCPMSS_CONFIG,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201808040802.w7482eqV022597>