Browse Source

ppp: update to version 2.4.7.git-2018-06-23

This bumps ppp to latest git version.

There is one upstream commit, which changes DES encryption calls from
libcrypt / glibc to openssl.

As long as we don't use glibc-2.28, revert this commit.

Signed-off-by: Martin Schiller <[email protected]>
Martin Schiller 6 years ago
parent
commit
eaaee181d1
33 changed files with 270 additions and 406 deletions
  1. 28 24
      package/network/services/ppp/Makefile
  2. 0 39
      package/network/services/ppp/patches/001-honor-ldflags.patch
  3. 8 8
      package/network/services/ppp/patches/100-debian_ip-ip_option.patch
  4. 1 1
      package/network/services/ppp/patches/101-debian_close_dev_ppp.patch
  5. 1 1
      package/network/services/ppp/patches/103-debian_fix_link_pidfile.patch
  6. 1 1
      package/network/services/ppp/patches/105-debian_demand.patch
  7. 22 21
      package/network/services/ppp/patches/110-debian_defaultroute.patch
  8. 6 6
      package/network/services/ppp/patches/120-debian_ipv6_updown_option.patch
  9. 1 1
      package/network/services/ppp/patches/121-debian_adaptive_lcp_echo.patch
  10. 0 14
      package/network/services/ppp/patches/132-fix_linux_includes.patch
  11. 5 41
      package/network/services/ppp/patches/140-pppoe_compile_fix.patch
  12. 4 4
      package/network/services/ppp/patches/200-makefile.patch
  13. 19 19
      package/network/services/ppp/patches/201-mppe_mppc_1.1.patch
  14. 2 2
      package/network/services/ppp/patches/202-no_strip.patch
  15. 19 2
      package/network/services/ppp/patches/203-opt_flags.patch
  16. 4 4
      package/network/services/ppp/patches/206-compensate_time_change.patch
  17. 1 1
      package/network/services/ppp/patches/208-fix_status_code.patch
  18. 1 1
      package/network/services/ppp/patches/300-filter-pcap-includes-lib.patch
  19. 4 4
      package/network/services/ppp/patches/310-precompile_filter.patch
  20. 0 135
      package/network/services/ppp/patches/320-custom_iface_names.patch
  21. 13 5
      package/network/services/ppp/patches/321-multilink_support_custom_iface_names.patch
  22. 1 1
      package/network/services/ppp/patches/330-retain_foreign_default_routes.patch
  23. 3 3
      package/network/services/ppp/patches/340-populate_default_gateway.patch
  24. 9 9
      package/network/services/ppp/patches/400-simplify_kernel_checks.patch
  25. 1 1
      package/network/services/ppp/patches/401-no_record_file.patch
  26. 2 2
      package/network/services/ppp/patches/403-no_wtmp.patch
  27. 8 8
      package/network/services/ppp/patches/404-remove_obsolete_protocol_names.patch
  28. 1 1
      package/network/services/ppp/patches/405-no_multilink_option.patch
  29. 11 11
      package/network/services/ppp/patches/520-uniq.patch
  30. 0 11
      package/network/services/ppp/patches/530-pppoe_send_padt.patch
  31. 0 14
      package/network/services/ppp/patches/531-pppoe_no_disconnect_warning.patch
  32. 0 11
      package/network/services/ppp/patches/550-fix-printer-args.patch
  33. 94 0
      package/network/services/ppp/patches/600-Revert-pppd-Use-openssl-for-the-DES-instead-of-the-l.patch

+ 28 - 24
package/network/services/ppp/Makefile

@@ -9,16 +9,20 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=ppp
-PKG_VERSION:=2.4.7
-PKG_RELEASE:=14
+PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://download.samba.org/pub/ppp/
-PKG_HASH:=02e0a3dd3e4799e33103f70ec7df75348c8540966ee7c948e4ed8a42bbccfb30
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/paulusmack/ppp
+PKG_SOURCE_DATE:=2018-06-23
+PKG_SOURCE_VERSION:=5c765a67fd25f9d84e71ed61ace37c8c97f6be15
+PKG_MIRROR_HASH:=a79e62d0569e3d6a3207f2a693532d34629fb5b3b9d8c1d9b9786ebd1d1de70f
 PKG_MAINTAINER:=Felix Fietkau <[email protected]>
 PKG_LICENSE:=BSD-4-Clause
 PKG_CPE_ID:=cpe:/a:samba:ppp
 
+PKG_RELEASE_VERSION:=2.4.7
+PKG_VERSION:=$(PKG_RELEASE_VERSION).git-$(PKG_SOURCE_DATE)
+
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
 
 PKG_BUILD_DEPENDS:=libpcap
@@ -215,7 +219,7 @@ define Package/ppp/script_install
 endef
 
 define Package/ppp/install
-	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
+	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
 	$(INSTALL_DIR) $(1)/usr/sbin
 	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/pppd $(1)/usr/sbin/
 	$(INSTALL_DIR) $(1)/etc/ppp
@@ -232,21 +236,21 @@ endef
 Package/ppp-multilink/install=$(Package/ppp/install)
 
 define Package/ppp-mod-pppoa/install
-	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pppoatm.so \
-		$(1)/usr/lib/pppd/$(PKG_VERSION)/
+	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/pppoatm.so \
+		$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
 endef
 
 define Package/ppp-mod-pppoe/install
-	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/rp-pppoe.so \
-		$(1)/usr/lib/pppd/$(PKG_VERSION)/
+	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/rp-pppoe.so \
+		$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
 endef
 
 define Package/ppp-mod-radius/install
-	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/radius.so \
-		$(1)/usr/lib/pppd/$(PKG_VERSION)/
+	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/radius.so \
+		$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
 	$(INSTALL_DIR) $(1)/etc/ppp
 	$(INSTALL_DATA) ./files/etc/ppp/radius.conf $(1)/etc/ppp/
 	$(INSTALL_DIR) $(1)/etc/ppp/radius
@@ -257,23 +261,23 @@ define Package/ppp-mod-radius/install
 endef
 
 define Package/ppp-mod-pppol2tp/install
-	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pppol2tp.so \
-		$(1)/usr/lib/pppd/$(PKG_VERSION)/
+	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/pppol2tp.so \
+		$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
 endef
 
 define Package/ppp-mod-pptp/install
-	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pptp.so \
-		$(1)/usr/lib/pppd/$(PKG_VERSION)/
+	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/pptp.so \
+		$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
 	$(INSTALL_DIR) $(1)/etc/ppp
 	$(INSTALL_DATA) ./files/etc/ppp/options.pptp $(1)/etc/ppp/
 endef
 
 define Package/ppp-mod-passwordfd/install
-	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/passwordfd.so \
-		$(1)/usr/lib/pppd/$(PKG_VERSION)/
+	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/passwordfd.so \
+		$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
 endef
 
 define Package/chat/install

+ 0 - 39
package/network/services/ppp/patches/001-honor-ldflags.patch

@@ -1,39 +0,0 @@
---- a/pppd/plugins/radius/Makefile.linux
-+++ b/pppd/plugins/radius/Makefile.linux
-@@ -43,13 +43,13 @@ install: all
- 	$(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR)
- 
- radius.so: radius.o libradiusclient.a
--	$(CC) -o radius.so -shared radius.o libradiusclient.a
-+	$(CC) $(CFLAGS) -o radius.so -shared radius.o libradiusclient.a
- 
- radattr.so: radattr.o
--	$(CC) -o radattr.so -shared radattr.o
-+	$(CC) $(CFLAGS) -o radattr.so -shared radattr.o
- 
- radrealms.so: radrealms.o
--	$(CC) -o radrealms.so -shared radrealms.o
-+	$(CC) $(CFLAGS) -o radrealms.so -shared radrealms.o
- 
- CLIENTOBJS = avpair.o buildreq.o config.o dict.o ip_util.o \
- 	clientid.o sendserver.o lock.o util.o md5.o
---- a/pppd/plugins/rp-pppoe/Makefile.linux
-+++ b/pppd/plugins/rp-pppoe/Makefile.linux
-@@ -30,7 +30,7 @@ CFLAGS=$(COPTS) -I../../../include '-DRP
- all: rp-pppoe.so pppoe-discovery
- 
- pppoe-discovery: pppoe-discovery.o debug.o
--	$(CC) -o pppoe-discovery pppoe-discovery.o debug.o
-+	$(CC) $(CFLAGS) -o pppoe-discovery pppoe-discovery.o debug.o
- 
- pppoe-discovery.o: pppoe-discovery.c
- 	$(CC) $(CFLAGS) -c -o pppoe-discovery.o pppoe-discovery.c
-@@ -39,7 +39,7 @@ debug.o: debug.c
- 	$(CC) $(CFLAGS) -c -o debug.o debug.c
- 
- rp-pppoe.so: plugin.o discovery.o if.o common.o
--	$(CC) -o rp-pppoe.so -shared plugin.o discovery.o if.o common.o
-+	$(CC) $(CFLAGS) -o rp-pppoe.so -shared plugin.o discovery.o if.o common.o
- 
- install: all
- 	$(INSTALL) -d -m 755 $(LIBDIR)

+ 8 - 8
package/network/services/ppp/patches/100-debian_ip-ip_option.patch

@@ -48,7 +48,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      }
 --- a/pppd/main.c
 +++ b/pppd/main.c
-@@ -316,6 +316,9 @@ main(argc, argv)
+@@ -308,6 +308,9 @@ main(argc, argv)
      struct protent *protp;
      char numbuf[16];
  
@@ -60,18 +60,18 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
 --- a/pppd/options.c
 +++ b/pppd/options.c
-@@ -114,6 +114,8 @@ char	linkname[MAXPATHLEN];	/* logical na
- bool	tune_kernel;		/* may alter kernel settings */
+@@ -118,6 +118,8 @@ bool	tune_kernel;		/* may alter kernel s
  int	connect_delay = 1000;	/* wait this many ms after connect script */
  int	req_unit = -1;		/* requested interface unit */
+ char	req_ifname[MAXIFNAMELEN];	/* requested interface name */
 +char	path_ipup[MAXPATHLEN];	/* pathname of ip-up script */
 +char	path_ipdown[MAXPATHLEN];/* pathname of ip-down script */
  bool	multilink = 0;		/* Enable multilink operation */
  char	*bundle_name = NULL;	/* bundle name for multilink */
  bool	dump_options;		/* print out option values */
-@@ -299,6 +301,13 @@ option_t general_options[] = {
-       "Unset user environment variable",
-       OPT_A2PRINTER | OPT_NOPRINT, (void *)user_unsetprint },
+@@ -317,6 +319,13 @@ option_t general_options[] = {
+       "Metric to use for the default route (Linux only; -1 for default behavior)",
+       OPT_PRIV|OPT_LLIMIT|OPT_INITONLY, NULL, 0, -1 },
  
 +    { "ip-up-script", o_string, path_ipup,
 +      "Set pathname of ip-up script",
@@ -85,10 +85,10 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
        "Enable multilink operation", OPT_PRIO | 1 },
 --- a/pppd/pppd.h
 +++ b/pppd/pppd.h
-@@ -318,6 +318,8 @@ extern bool	tune_kernel;	/* May alter ke
- extern int	connect_delay;	/* Time to delay after connect script */
+@@ -332,6 +332,8 @@ extern int	connect_delay;	/* Time to del
  extern int	max_data_rate;	/* max bytes/sec through charshunt */
  extern int	req_unit;	/* interface unit number to use */
+ extern char	req_ifname[MAXIFNAMELEN]; /* interface name to use */
 +extern char	path_ipup[MAXPATHLEN]; /* pathname of ip-up script */
 +extern char	path_ipdown[MAXPATHLEN]; /* pathname of ip-down script */
  extern bool	multilink;	/* enable multilink operation */

+ 1 - 1
package/network/services/ppp/patches/101-debian_close_dev_ppp.patch

@@ -12,7 +12,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/sys-linux.c
 +++ b/pppd/sys-linux.c
-@@ -458,6 +458,13 @@ int generic_establish_ppp (int fd)
+@@ -460,6 +460,13 @@ int generic_establish_ppp (int fd)
      if (new_style_driver) {
  	int flags;
  

+ 1 - 1
package/network/services/ppp/patches/103-debian_fix_link_pidfile.patch

@@ -11,7 +11,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/main.c
 +++ b/pppd/main.c
-@@ -773,8 +773,7 @@ detach()
+@@ -768,8 +768,7 @@ detach()
  	/* update pid files if they have been written already */
  	if (pidfilename[0])
  	    create_pidfile(pid);

+ 1 - 1
package/network/services/ppp/patches/105-debian_demand.patch

@@ -161,7 +161,7 @@
      } else {
 --- a/pppd/pppd.h
 +++ b/pppd/pppd.h
-@@ -585,7 +585,7 @@ void demand_conf __P((void));	/* config
+@@ -599,7 +599,7 @@ void demand_conf __P((void));	/* config
  void demand_block __P((void));	/* set all NPs to queue up packets */
  void demand_unblock __P((void)); /* set all NPs to pass packets */
  void demand_discard __P((void)); /* set all NPs to discard packets */

+ 22 - 21
package/network/services/ppp/patches/110-debian_defaultroute.patch

@@ -125,9 +125,9 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      bool old_vj;		/* use old (short) form of VJ option? */
 --- a/pppd/pppd.8
 +++ b/pppd/pppd.8
-@@ -121,6 +121,11 @@ the gateway, when IPCP negotiation is su
- This entry is removed when the PPP connection is broken.  This option
- is privileged if the \fInodefaultroute\fR option has been specified.
+@@ -127,6 +127,11 @@ is no other default route with the same
+ value of -1, the route is only added if there is no default route at
+ all.
  .TP
 +.B replacedefaultroute
 +This option is a flag to the defaultroute option. If defaultroute is
@@ -137,7 +137,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  .B disconnect \fIscript
  Execute the command specified by \fIscript\fR, by passing it to a
  shell, after
-@@ -734,7 +739,12 @@ disable both forms of hardware flow cont
+@@ -740,7 +745,12 @@ disable both forms of hardware flow cont
  .TP
  .B nodefaultroute
  Disable the \fIdefaultroute\fR option.  The system administrator who
@@ -153,7 +153,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  .B nodeflate
 --- a/pppd/pppd.h
 +++ b/pppd/pppd.h
-@@ -667,7 +667,7 @@ int  sif6addr __P((int, eui64_t, eui64_t
+@@ -681,7 +681,7 @@ int  sif6addr __P((int, eui64_t, eui64_t
  int  cif6addr __P((int, eui64_t, eui64_t));
  				/* Remove an IPv6 address from i/f */
  #endif
@@ -173,7 +173,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  static u_int32_t proxy_arp_addr;	/* Addr for proxy arp entry added */
  static char proxy_arp_dev[16];		/* Device for proxy arp entry */
  static u_int32_t our_old_addr;		/* for detecting address changes */
-@@ -1552,6 +1554,9 @@ static int read_route_table(struct rtent
+@@ -1570,6 +1572,9 @@ static int read_route_table(struct rtent
  	p = NULL;
      }
  
@@ -183,7 +183,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      SIN_ADDR(rt->rt_dst) = strtoul(cols[route_dest_col], NULL, 16);
      SIN_ADDR(rt->rt_gateway) = strtoul(cols[route_gw_col], NULL, 16);
      SIN_ADDR(rt->rt_genmask) = strtoul(cols[route_mask_col], NULL, 16);
-@@ -1621,20 +1626,51 @@ int have_route_to(u_int32_t addr)
+@@ -1642,20 +1647,52 @@ int have_route_to(u_int32_t addr)
  /********************************************************************
   *
   * sifdefaultroute - assign a default route through the address given.
@@ -193,10 +193,10 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 -{
 -    struct rtentry rt;
 -
--    if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) {
+-    if (defaultroute_exists(&rt, dfl_route_metric) && strcmp(rt.rt_dev, ifname) != 0) {
 -	if (rt.rt_flags & RTF_GATEWAY)
--	    error("not replacing existing default route via %I",
--		  SIN_ADDR(rt.rt_gateway));
+-	    error("not replacing existing default route via %I with metric %d",
+-		  SIN_ADDR(rt.rt_gateway), dfl_route_metric);
 -	else
 + *
 + * If the global default_rt_repl_rest flag is set, then this function
@@ -218,16 +218,16 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 +	   are called again, we will delete the current default route
 +	   and set the new default route in this function.
 +	   - this is normally only the case the doing demand: */
-+	if (defaultroute_exists(&tmp_rt))
++	if (defaultroute_exists(&tmp_rt, dfl_route_metric))
 +	    del_rt = &tmp_rt;
-+    } else if (defaultroute_exists(&old_def_rt) &&
++    } else if (defaultroute_exists(&old_def_rt, dfl_route_metric) &&
 +	       strcmp(old_def_rt.rt_dev, ifname) != 0) {
 +	/* We did not yet replace an existing default route, let's
 +	   check if we should save and replace a default route: */
 +	if (old_def_rt.rt_flags & RTF_GATEWAY) {
 +	    if (!replace) {
-+		error("not replacing existing default route via %I",
-+		      SIN_ADDR(old_def_rt.rt_gateway));
++		error("not replacing existing default route via %I with metric %d",
++		      SIN_ADDR(old_def_rt.rt_gateway), dfl_route_metric);
 +		return 0;
 +	    } else {
 +		/* we need to copy rt_dev because we need it permanent too: */
@@ -235,20 +235,21 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 +		strcpy(tmp_dev, old_def_rt.rt_dev);
 +		old_def_rt.rt_dev = tmp_dev;
 +
-+		notice("replacing old default route to %s [%I]",
-+			old_def_rt.rt_dev, SIN_ADDR(old_def_rt.rt_gateway));
++		notice("replacing old default route to %s [%I] with metric %d",
++			old_def_rt.rt_dev, SIN_ADDR(old_def_rt.rt_gateway),
++		        dfl_route_metric);
 +		default_rt_repl_rest = 1;
 +		del_rt = &old_def_rt;
 +	    }
 +	} else
- 	    error("not replacing existing default route through %s",
--		  rt.rt_dev);
+ 	    error("not replacing existing default route through %s with metric %d",
+-		  rt.rt_dev, dfl_route_metric);
 -	return 0;
-+		  old_def_rt.rt_dev);
++		  old_def_rt.rt_dev, dfl_route_metric);
      }
  
      memset (&rt, 0, sizeof (rt));
-@@ -1649,10 +1685,16 @@ int sifdefaultroute (int unit, u_int32_t
+@@ -1671,10 +1708,16 @@ int sifdefaultroute (int unit, u_int32_t
  
      rt.rt_flags = RTF_UP;
      if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
@@ -266,7 +267,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
      have_default_route = 1;
      return 1;
-@@ -1683,11 +1725,21 @@ int cifdefaultroute (int unit, u_int32_t
+@@ -1708,11 +1751,21 @@ int cifdefaultroute (int unit, u_int32_t
      rt.rt_flags = RTF_UP;
      if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
  	if (still_ppp()) {

+ 6 - 6
package/network/services/ppp/patches/120-debian_ipv6_updown_option.patch

@@ -12,7 +12,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/main.c
 +++ b/pppd/main.c
-@@ -318,6 +318,8 @@ main(argc, argv)
+@@ -310,6 +310,8 @@ main(argc, argv)
  
      strlcpy(path_ipup, _PATH_IPUP, sizeof(path_ipup));
      strlcpy(path_ipdown, _PATH_IPDOWN, sizeof(path_ipdown));
@@ -23,8 +23,8 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      new_phase(PHASE_INITIALIZE);
 --- a/pppd/options.c
 +++ b/pppd/options.c
-@@ -116,6 +116,8 @@ int	connect_delay = 1000;	/* wait this m
- int	req_unit = -1;		/* requested interface unit */
+@@ -120,6 +120,8 @@ int	req_unit = -1;		/* requested interfa
+ char	req_ifname[MAXIFNAMELEN];	/* requested interface name */
  char	path_ipup[MAXPATHLEN];	/* pathname of ip-up script */
  char	path_ipdown[MAXPATHLEN];/* pathname of ip-down script */
 +char	path_ipv6up[MAXPATHLEN];	/* pathname of ipv6-up script */
@@ -32,7 +32,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  bool	multilink = 0;		/* Enable multilink operation */
  char	*bundle_name = NULL;	/* bundle name for multilink */
  bool	dump_options;		/* print out option values */
-@@ -308,6 +310,13 @@ option_t general_options[] = {
+@@ -326,6 +328,13 @@ option_t general_options[] = {
        "Set pathname of ip-down script",
        OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN },
  
@@ -84,8 +84,8 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      }
 --- a/pppd/pppd.h
 +++ b/pppd/pppd.h
-@@ -320,6 +320,8 @@ extern int	max_data_rate;	/* max bytes/s
- extern int	req_unit;	/* interface unit number to use */
+@@ -334,6 +334,8 @@ extern int	req_unit;	/* interface unit n
+ extern char	req_ifname[MAXIFNAMELEN]; /* interface name to use */
  extern char	path_ipup[MAXPATHLEN]; /* pathname of ip-up script */
  extern char	path_ipdown[MAXPATHLEN]; /* pathname of ip-down script */
 +extern char	path_ipv6up[MAXPATHLEN]; /* pathname of ipv6-up script */

+ 1 - 1
package/network/services/ppp/patches/121-debian_adaptive_lcp_echo.patch

@@ -42,7 +42,7 @@
       */
 --- a/pppd/pppd.8
 +++ b/pppd/pppd.8
-@@ -563,6 +563,11 @@ to 1) if the \fIproxyarp\fR option is us
+@@ -569,6 +569,11 @@ to 1) if the \fIproxyarp\fR option is us
  dynamic IP address option (i.e. set /proc/sys/net/ipv4/ip_dynaddr to
  1) in demand mode if the local address changes.
  .TP

+ 0 - 14
package/network/services/ppp/patches/132-fix_linux_includes.patch

@@ -1,19 +1,5 @@
 --- a/pppd/sys-linux.c
 +++ b/pppd/sys-linux.c
-@@ -73,12 +73,12 @@
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/time.h>
--#include <sys/errno.h>
- #include <sys/file.h>
- #include <sys/stat.h>
- #include <sys/utsname.h>
- #include <sys/sysmacros.h>
- 
-+#include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <syslog.h>
 @@ -102,22 +102,15 @@
  #define MAX_ADDR_LEN 7
  #endif

+ 5 - 41
package/network/services/ppp/patches/140-pppoe_compile_fix.patch

@@ -1,7 +1,7 @@
 --- a/pppd/plugins/rp-pppoe/pppoe.h
 +++ b/pppd/plugins/rp-pppoe/pppoe.h
-@@ -48,11 +48,7 @@
- #endif
+@@ -52,11 +52,7 @@
+ #include <netinet/in.h>
  
  /* Ugly header files on some Linux boxes... */
 -#if defined(HAVE_LINUX_IF_H)
@@ -12,15 +12,13 @@
  
  #ifdef HAVE_NET_IF_TYPES_H
  #include <net/if_types.h>
-@@ -80,22 +76,8 @@ typedef unsigned long UINT32_t;
+@@ -84,20 +80,7 @@ typedef unsigned long UINT32_t;
  #error Could not find a 32-bit integer type
  #endif
  
 -#ifdef HAVE_LINUX_IF_ETHER_H
 -#include <linux/if_ether.h>
 -#endif
--
- #include <netinet/in.h>
 -
 -#ifdef HAVE_NETINET_IF_ETHER_H
 -#include <sys/types.h>
@@ -35,45 +33,11 @@
 +#include <net/ethernet.h>
  
  
- 
---- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
-+++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
-@@ -16,6 +16,7 @@
- #include <string.h>
- 
- #include "pppoe.h"
-+#include "pppd/pppd.h"
- 
- #ifdef HAVE_UNISTD_H
- #include <unistd.h>
-@@ -717,6 +718,23 @@ char *xstrdup(const char *s)
-     return ret;
- }
- 
-+void
-+error(char *fmt, ...)
-+{
-+    va_list pvar;
-+
-+#if defined(__STDC__)
-+    va_start(pvar, fmt);
-+#else
-+    char *fmt;
-+    va_start(pvar);
-+    fmt = va_arg(pvar, char *);
-+#endif
-+
-+    fprintf(stderr, fmt, pvar);
-+    va_end(pvar);
-+}
-+
- void usage(void)
- {
-     fprintf(stderr, "Usage: pppoe-discovery [options]\n");
+ /* Ethernet frame types according to RFC 2516 */
 --- a/pppd/plugins/rp-pppoe/Makefile.linux
 +++ b/pppd/plugins/rp-pppoe/Makefile.linux
 @@ -33,7 +33,7 @@ pppoe-discovery: pppoe-discovery.o debug
- 	$(CC) $(CFLAGS) -o pppoe-discovery pppoe-discovery.o debug.o
+ 	$(CC) $(LDFLAGS) -o pppoe-discovery pppoe-discovery.o debug.o
  
  pppoe-discovery.o: pppoe-discovery.c
 -	$(CC) $(CFLAGS) -c -o pppoe-discovery.o pppoe-discovery.c

+ 4 - 4
package/network/services/ppp/patches/200-makefile.patch

@@ -23,9 +23,9 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 -USE_TDB=y
 +#USE_TDB=y
  
- HAS_SHADOW=y
- #USE_PAM=y
-@@ -80,7 +80,7 @@ MAXOCTETS=y
+ # Uncomment the next line to enable Type=notify services in systemd
+ # If enabled, and the user sets the up_sdnotify option, then
+@@ -85,7 +85,7 @@ MAXOCTETS=y
  
  INCLUDE_DIRS= -I../include
  
@@ -34,7 +34,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
  CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS) '-DDESTDIR="@DESTDIR@"'
  
-@@ -120,10 +120,10 @@ CFLAGS   += -DHAS_SHADOW
+@@ -125,10 +125,10 @@ CFLAGS   += -DHAS_SHADOW
  #LIBS     += -lshadow $(LIBS)
  endif
  

+ 19 - 19
package/network/services/ppp/patches/201-mppe_mppc_1.1.patch

@@ -559,8 +559,8 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      if (go->bsd_compress) {
  	opt_buf[0] = CI_BSD_COMPRESS;
  	opt_buf[1] = CILEN_BSD_COMPRESS;
-@@ -679,7 +814,8 @@ ccp_cilen(f)
- 	+ (go->deflate? CILEN_DEFLATE: 0)
+@@ -680,7 +815,8 @@ ccp_cilen(f)
+ 	+ (go->deflate && go->deflate_draft? CILEN_DEFLATE: 0)
  	+ (go->predictor_1? CILEN_PREDICTOR_1: 0)
  	+ (go->predictor_2? CILEN_PREDICTOR_2: 0)
 -	+ (go->mppe? CILEN_MPPE: 0);
@@ -569,7 +569,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  }
  
  /*
-@@ -693,6 +829,8 @@ ccp_addci(f, p, lenp)
+@@ -694,6 +830,8 @@ ccp_addci(f, p, lenp)
  {
      int res;
      ccp_options *go = &ccp_gotoptions[f->unit];
@@ -578,7 +578,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      u_char *p0 = p;
  
      /*
-@@ -701,22 +839,43 @@ ccp_addci(f, p, lenp)
+@@ -702,22 +840,43 @@ ccp_addci(f, p, lenp)
       * in case it gets Acked.
       */
  #ifdef MPPE
@@ -631,7 +631,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      if (go->deflate) {
  	p[0] = go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT;
  	p[1] = CILEN_DEFLATE;
-@@ -802,7 +961,7 @@ ccp_addci(f, p, lenp)
+@@ -803,7 +962,7 @@ ccp_addci(f, p, lenp)
  
  /*
   * ccp_ackci - process a received configure-ack, and return
@@ -640,7 +640,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
   */
  static int
  ccp_ackci(f, p, len)
-@@ -811,24 +970,44 @@ ccp_ackci(f, p, len)
+@@ -812,24 +971,44 @@ ccp_ackci(f, p, len)
      int len;
  {
      ccp_options *go = &ccp_gotoptions[f->unit];
@@ -694,7 +694,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      if (go->deflate) {
  	if (len < CILEN_DEFLATE
  	    || p[0] != (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
-@@ -901,6 +1080,8 @@ ccp_nakci(f, p, len, treat_as_reject)
+@@ -902,6 +1081,8 @@ ccp_nakci(f, p, len, treat_as_reject)
      int treat_as_reject;
  {
      ccp_options *go = &ccp_gotoptions[f->unit];
@@ -703,7 +703,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      ccp_options no;		/* options we've seen already */
      ccp_options try;		/* options to ask for next time */
  
-@@ -908,28 +1089,100 @@ ccp_nakci(f, p, len, treat_as_reject)
+@@ -909,28 +1090,100 @@ ccp_nakci(f, p, len, treat_as_reject)
      try = *go;
  
  #ifdef MPPE
@@ -822,7 +822,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      if (go->deflate && len >= CILEN_DEFLATE
  	&& p[0] == (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
  	&& p[1] == CILEN_DEFLATE) {
-@@ -1002,14 +1255,50 @@ ccp_rejci(f, p, len)
+@@ -1003,14 +1256,50 @@ ccp_rejci(f, p, len)
  	return -1;
  
  #ifdef MPPE
@@ -877,7 +877,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      if (go->deflate_correct && len >= CILEN_DEFLATE
  	&& p[0] == CI_DEFLATE && p[1] == CILEN_DEFLATE) {
  	if (p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
-@@ -1073,14 +1362,15 @@ ccp_reqci(f, p, lenp, dont_nak)
+@@ -1074,14 +1363,15 @@ ccp_reqci(f, p, lenp, dont_nak)
      int dont_nak;
  {
      int ret, newret, res;
@@ -897,7 +897,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
      ret = CONFACK;
      retp = p0 = p;
-@@ -1103,106 +1393,302 @@ ccp_reqci(f, p, lenp, dont_nak)
+@@ -1104,106 +1394,302 @@ ccp_reqci(f, p, lenp, dont_nak)
  	    switch (type) {
  #ifdef MPPE
  	    case CI_MPPE:
@@ -1293,7 +1293,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  	    case CI_DEFLATE:
  	    case CI_DEFLATE_DRAFT:
  		if (!ao->deflate || clen != CILEN_DEFLATE
-@@ -1344,12 +1830,6 @@ ccp_reqci(f, p, lenp, dont_nak)
+@@ -1345,12 +1831,6 @@ ccp_reqci(f, p, lenp, dont_nak)
  	else
  	    *lenp = retp - p0;
      }
@@ -1306,7 +1306,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      return ret;
  }
  
-@@ -1371,24 +1851,35 @@ method_name(opt, opt2)
+@@ -1372,24 +1852,35 @@ method_name(opt, opt2)
  	char *p = result;
  	char *q = result + sizeof(result); /* 1 past result */
  
@@ -1358,7 +1358,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      case CI_DEFLATE:
      case CI_DEFLATE_DRAFT:
  	if (opt2 != NULL && opt2->deflate_size != opt->deflate_size)
-@@ -1444,12 +1935,12 @@ ccp_up(f)
+@@ -1445,12 +1936,12 @@ ccp_up(f)
      } else if (ANY_COMPRESS(*ho))
  	notice("%s transmit compression enabled", method_name(ho, NULL));
  #ifdef MPPE
@@ -1373,7 +1373,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  }
  
  /*
-@@ -1472,7 +1963,7 @@ ccp_down(f)
+@@ -1473,7 +1964,7 @@ ccp_down(f)
  	    lcp_close(f->unit, "MPPE disabled");
  	}
      }
@@ -1382,7 +1382,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  }
  
  /*
-@@ -1532,24 +2023,28 @@ ccp_printpkt(p, plen, printer, arg)
+@@ -1533,24 +2024,28 @@ ccp_printpkt(p, plen, printer, arg)
  #ifdef MPPE
  	    case CI_MPPE:
  		if (optlen >= CILEN_MPPE) {
@@ -1423,7 +1423,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  	    case CI_DEFLATE:
  	    case CI_DEFLATE_DRAFT:
  		if (optlen >= CILEN_DEFLATE) {
-@@ -1635,6 +2130,7 @@ ccp_datainput(unit, pkt, len)
+@@ -1636,6 +2131,7 @@ ccp_datainput(unit, pkt, len)
  	    error("Lost compression sync: disabling compression");
  	    ccp_close(unit, "Lost compression sync");
  #ifdef MPPE
@@ -1431,7 +1431,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  	    /*
  	     * If we were doing MPPE, we must also take the link down.
  	     */
-@@ -1642,9 +2138,18 @@ ccp_datainput(unit, pkt, len)
+@@ -1643,9 +2139,18 @@ ccp_datainput(unit, pkt, len)
  		error("Too many MPPE errors, closing LCP");
  		lcp_close(unit, "Too many MPPE errors");
  	    }
@@ -1459,7 +1459,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      bool deflate_draft;		/* use draft RFC code for deflate? */
 +    bool lzs;			/* do Stac LZS? */
 +    bool mppc;			/* do MPPC? */
-     bool mppe;			/* do MPPE? */
+     u_char mppe;		/* MPPE bitfield */
 +    bool mppe_40;		/* allow 40 bit encryption? */
 +    bool mppe_56;		/* allow 56 bit encryption? */
 +    bool mppe_128;		/* allow 128 bit encryption? */

+ 2 - 2
package/network/services/ppp/patches/202-no_strip.patch

@@ -19,7 +19,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  clean:
 --- a/pppd/Makefile.linux
 +++ b/pppd/Makefile.linux
-@@ -102,7 +102,7 @@ ifdef USE_SRP
+@@ -107,7 +107,7 @@ ifdef USE_SRP
  CFLAGS	+= -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include
  LIBS	+= -lsrp -L/usr/local/ssl/lib -lcrypto
  TARGETS	+= srp-entry
@@ -28,7 +28,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  MANPAGES += srp-entry.8
  EXTRACLEAN += srp-entry.o
  NEEDDES=y
-@@ -208,7 +208,7 @@ all: $(TARGETS)
+@@ -219,7 +219,7 @@ all: $(TARGETS)
  install: pppd
  	mkdir -p $(BINDIR) $(MANDIR)
  	$(EXTRAINSTALL)

+ 19 - 2
package/network/services/ppp/patches/203-opt_flags.patch

@@ -18,6 +18,23 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
  # Uncomment the next line to include support for Microsoft's
  # MS-CHAP authentication protocol.
+@@ -43,13 +44,13 @@ install: all
+ 	$(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR)
+ 
+ radius.so: radius.o libradiusclient.a
+-	$(CC) $(LDFLAGS) -o radius.so -shared radius.o libradiusclient.a
++	$(CC) $(LDFLAGS) -fPIC -o radius.so -shared radius.o libradiusclient.a
+ 
+ radattr.so: radattr.o
+-	$(CC) $(LDFLAGS) -o radattr.so -shared radattr.o
++	$(CC) $(LDFLAGS) -fPIC -o radattr.so -shared radattr.o
+ 
+ radrealms.so: radrealms.o
+-	$(CC) $(LDFLAGS) -o radrealms.so -shared radrealms.o
++	$(CC) $(LDFLAGS) -fPIC -o radrealms.so -shared radrealms.o
+ 
+ CLIENTOBJS = avpair.o buildreq.o config.o dict.o ip_util.o \
+ 	clientid.o sendserver.o lock.o util.o md5.o
 --- a/pppdump/Makefile.linux
 +++ b/pppdump/Makefile.linux
 @@ -2,7 +2,8 @@ DESTDIR = $(INSTROOT)@DESTDIR@
@@ -36,8 +53,8 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  	$(CC) $(CFLAGS) -c -o debug.o debug.c
  
  rp-pppoe.so: plugin.o discovery.o if.o common.o
--	$(CC) $(CFLAGS) -o rp-pppoe.so -shared plugin.o discovery.o if.o common.o
-+	$(CC) $(CFLAGS) -fPIC -o rp-pppoe.so -shared plugin.o discovery.o if.o common.o
+-	$(CC) $(LDFLAGS) -o rp-pppoe.so -shared plugin.o discovery.o if.o common.o
++	$(CC) $(LDFLAGS) -fPIC -o rp-pppoe.so -shared plugin.o discovery.o if.o common.o
  
  install: all
  	$(INSTALL) -d -m 755 $(LIBDIR)

+ 4 - 4
package/network/services/ppp/patches/206-compensate_time_change.patch

@@ -29,7 +29,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  static void setup_signals __P((void));
  static void create_pidfile __P((int pid));
  static void create_linkpidfile __P((int pid));
-@@ -535,6 +537,7 @@ main(argc, argv)
+@@ -527,6 +529,7 @@ main(argc, argv)
  	    info("Starting link");
  	}
  
@@ -37,7 +37,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  	gettimeofday(&start_time, NULL);
  	script_unsetenv("CONNECT_TIME");
  	script_unsetenv("BYTES_SENT");
-@@ -1267,6 +1270,36 @@ struct	callout {
+@@ -1262,6 +1265,36 @@ struct	callout {
  
  static struct callout *callout = NULL;	/* Callout list */
  static struct timeval timenow;		/* Current time */
@@ -74,7 +74,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
  /*
   * timeout - Schedule a timeout.
-@@ -1337,6 +1370,8 @@ calltimeout()
+@@ -1332,6 +1365,8 @@ calltimeout()
  {
      struct callout *p;
  
@@ -83,7 +83,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      while (callout != NULL) {
  	p = callout;
  
-@@ -1364,6 +1399,8 @@ timeleft(tvp)
+@@ -1359,6 +1394,8 @@ timeleft(tvp)
  {
      if (callout == NULL)
  	return NULL;

+ 1 - 1
package/network/services/ppp/patches/208-fix_status_code.patch

@@ -12,7 +12,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/main.c
 +++ b/pppd/main.c
-@@ -1048,7 +1048,8 @@ get_input()
+@@ -1043,7 +1043,8 @@ get_input()
  	}
  	notice("Modem hangup");
  	hungup = 1;

+ 1 - 1
package/network/services/ppp/patches/300-filter-pcap-includes-lib.patch

@@ -7,7 +7,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/Makefile.linux
 +++ b/pppd/Makefile.linux
-@@ -178,8 +178,8 @@ endif
+@@ -189,8 +189,8 @@ endif
  
  ifdef FILTER
  ifneq ($(wildcard /usr/include/pcap-bpf.h),)

+ 4 - 4
package/network/services/ppp/patches/310-precompile_filter.patch

@@ -23,7 +23,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  # Uncomment the next line to enable multilink PPP (enabled by default)
  # Linux distributions: Please leave multilink ENABLED in your builds
  # of pppd!
-@@ -183,6 +186,14 @@ CFLAGS  += -DPPP_FILTER -I$(STAGING_DIR)
+@@ -194,6 +197,14 @@ CFLAGS  += -DPPP_FILTER -I$(STAGING_DIR)
  endif
  endif
  
@@ -48,7 +48,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  /*
   * There have been 3 or 4 different names for this in libpcap CVS, but
   * this seems to be what they have settled on...
-@@ -165,6 +166,13 @@ static int setlogfile __P((char **));
+@@ -170,6 +171,13 @@ static int setlogfile __P((char **));
  static int loadplugin __P((char **));
  #endif
  
@@ -62,7 +62,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  #ifdef PPP_FILTER
  static int setpassfilter __P((char **));
  static int setactivefilter __P((char **));
-@@ -344,6 +352,14 @@ option_t general_options[] = {
+@@ -362,6 +370,14 @@ option_t general_options[] = {
        "set filter for active pkts", OPT_PRIO },
  #endif
  
@@ -77,7 +77,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  #ifdef MAXOCTETS
      { "maxoctets", o_int, &maxoctets,
        "Set connection traffic limit",
-@@ -1493,6 +1509,29 @@ callfile(argv)
+@@ -1511,6 +1527,29 @@ callfile(argv)
      return ok;
  }
  

+ 0 - 135
package/network/services/ppp/patches/320-custom_iface_names.patch

@@ -1,135 +0,0 @@
-pppd: Support arbitrary interface names
-
-This patch implements a new string option "ifname" which allows to specify
-fully custom PPP interface names on Linux. It does so by renaming the
-allocated pppX device immediately after it has been created to the requested
-interface name.
-
-Signed-off-by: Jo-Philipp Wich <[email protected]>
-
---- a/pppd/main.c
-+++ b/pppd/main.c
-@@ -745,8 +745,11 @@ void
- set_ifunit(iskey)
-     int iskey;
- {
--    info("Using interface %s%d", PPP_DRV_NAME, ifunit);
--    slprintf(ifname, sizeof(ifname), "%s%d", PPP_DRV_NAME, ifunit);
-+    if (use_ifname[0] == 0)
-+	slprintf(ifname, sizeof(ifname), "%s%d", PPP_DRV_NAME, ifunit);
-+    else
-+	slprintf(ifname, sizeof(ifname), "%s", use_ifname);
-+    info("Using interface %s", ifname);
-     script_setenv("IFNAME", ifname, iskey);
-     if (iskey) {
- 	create_pidfile(getpid());	/* write pid to file */
---- a/pppd/options.c
-+++ b/pppd/options.c
-@@ -112,6 +112,7 @@ int	log_to_fd = 1;		/* send log messages
- bool	log_default = 1;	/* log_to_fd is default (stdout) */
- int	maxfail = 10;		/* max # of unsuccessful connection attempts */
- char	linkname[MAXPATHLEN];	/* logical name for link */
-+char	use_ifname[IFNAMSIZ];	/* physical name for PPP link */
- bool	tune_kernel;		/* may alter kernel settings */
- int	connect_delay = 1000;	/* wait this many ms after connect script */
- int	req_unit = -1;		/* requested interface unit */
-@@ -277,6 +278,9 @@ option_t general_options[] = {
-     { "linkname", o_string, linkname,
-       "Set logical name for link",
-       OPT_PRIO | OPT_PRIV | OPT_STATIC, NULL, MAXPATHLEN },
-+    { "ifname", o_string, use_ifname,
-+      "Set physical name for PPP interface",
-+      OPT_PRIO | OPT_PRIV | OPT_STATIC, NULL, IFNAMSIZ },
- 
-     { "maxfail", o_int, &maxfail,
-       "Maximum number of unsuccessful connection attempts to allow",
---- a/pppd/pppd.h
-+++ b/pppd/pppd.h
-@@ -74,6 +74,10 @@
- #include "eui64.h"
- #endif
- 
-+#ifndef IFNAMSIZ
-+#define IFNAMSIZ	16
-+#endif
-+
- /*
-  * Limits.
-  */
-@@ -317,6 +321,7 @@ extern char	*record_file;	/* File to rec
- extern bool	sync_serial;	/* Device is synchronous serial device */
- extern int	maxfail;	/* Max # of unsuccessful connection attempts */
- extern char	linkname[MAXPATHLEN]; /* logical name for link */
-+extern char	use_ifname[IFNAMSIZ]; /* physical name for PPP interface */
- extern bool	tune_kernel;	/* May alter kernel settings as necessary */
- extern int	connect_delay;	/* Time to delay after connect script */
- extern int	max_data_rate;	/* max bytes/sec through charshunt */
---- a/pppd/sys-linux.c
-+++ b/pppd/sys-linux.c
-@@ -161,6 +161,10 @@ struct in6_ifreq {
- /* We can get an EIO error on an ioctl if the modem has hung up */
- #define ok_error(num) ((num)==EIO)
- 
-+#if !defined(PPP_DRV_NAME)
-+#define PPP_DRV_NAME	"ppp"
-+#endif /* !defined(PPP_DRV_NAME) */
-+
- static int tty_disc = N_TTY;	/* The TTY discipline */
- static int ppp_disc = N_PPP;	/* The PPP discpline */
- static int initfdflags = -1;	/* Initial file descriptor flags for fd */
-@@ -620,7 +624,8 @@ void generic_disestablish_ppp(int dev_fd
-  */
- static int make_ppp_unit()
- {
--	int x, flags;
-+	struct ifreq ifr;
-+	int x, flags, s;
- 
- 	if (ppp_dev_fd >= 0) {
- 		dbglog("in make_ppp_unit, already had /dev/ppp open?");
-@@ -643,6 +648,30 @@ static int make_ppp_unit()
- 	}
- 	if (x < 0)
- 		error("Couldn't create new ppp unit: %m");
-+
-+	if (use_ifname[0] != 0) {
-+		s = socket(PF_INET, SOCK_DGRAM, 0);
-+		if (s < 0)
-+			s = socket(PF_PACKET, SOCK_DGRAM, 0);
-+		if (s < 0)
-+			s = socket(PF_INET6, SOCK_DGRAM, 0);
-+		if (s < 0)
-+			s = socket(PF_UNIX, SOCK_DGRAM, 0);
-+		if (s >= 0) {
-+			slprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s%d", PPP_DRV_NAME, ifunit);
-+			slprintf(ifr.ifr_newname, sizeof(ifr.ifr_newname), "%s", use_ifname);
-+			x = ioctl(s, SIOCSIFNAME, &ifr);
-+			close(s);
-+		} else {
-+			x = s;
-+		}
-+		if (x < 0) {
-+			error("Couldn't rename %s to %s", ifr.ifr_name, ifr.ifr_newname);
-+			close(ppp_dev_fd);
-+			ppp_dev_fd = -1;
-+		}
-+	}
-+
- 	return x;
- }
- 
---- a/pppstats/pppstats.c
-+++ b/pppstats/pppstats.c
-@@ -506,10 +506,12 @@ main(argc, argv)
-     if (argc > 0)
- 	interface = argv[0];
- 
-+#if 0
-     if (sscanf(interface, PPP_DRV_NAME "%d", &unit) != 1) {
- 	fprintf(stderr, "%s: invalid interface '%s' specified\n",
- 		progname, interface);
-     }
-+#endif
- 
- #ifndef STREAMS
-     {

+ 13 - 5
package/network/services/ppp/patches/321-multilink_support_custom_iface_names.patch

@@ -8,7 +8,15 @@ Signed-off-by: George Kashperko <[email protected]>
  2 files changed, 53 insertions(+), 14 deletions(-)
 --- a/pppd/multilink.c
 +++ b/pppd/multilink.c
-@@ -56,7 +56,8 @@ static void iterate_bundle_links __P((vo
+@@ -35,6 +35,7 @@
+ #include <signal.h>
+ #include <netinet/in.h>
+ #include <unistd.h>
++#include <net/if.h>
+ 
+ #include "pppd.h"
+ #include "fsm.h"
+@@ -56,7 +57,8 @@ static void iterate_bundle_links __P((vo
  
  static int get_default_epdisc __P((struct epdisc *));
  static int parse_num __P((char *str, const char *key, int *valp));
@@ -18,7 +26,7 @@ Signed-off-by: George Kashperko <[email protected]>
  
  #define set_ip_epdisc(ep, addr) do {	\
  	ep->length = 4;			\
-@@ -197,35 +198,38 @@ mp_join_bundle()
+@@ -197,35 +199,38 @@ mp_join_bundle()
  	key.dptr = bundle_id;
  	key.dsize = p - bundle_id;
  	pid = tdb_fetch(pppdb, key);
@@ -65,7 +73,7 @@ Signed-off-by: George Kashperko <[email protected]>
  	}
  
  	/* we have to make a new bundle */
-@@ -408,22 +412,45 @@ parse_num(str, key, valp)
+@@ -408,22 +413,45 @@ parse_num(str, key, valp)
  	return 0;
  }
  
@@ -118,7 +126,7 @@ Signed-off-by: George Kashperko <[email protected]>
  			&& memcmp(vd.dptr, key.dptr, vd.dsize) == 0;
 --- a/pppd/sys-linux.c
 +++ b/pppd/sys-linux.c
-@@ -698,6 +698,16 @@ void cfg_bundle(int mrru, int mtru, int
+@@ -686,6 +686,16 @@ void cfg_bundle(int mrru, int mtru, int
  	add_fd(ppp_dev_fd);
  }
  
@@ -135,7 +143,7 @@ Signed-off-by: George Kashperko <[email protected]>
  /*
   * make_new_bundle - create a new PPP unit (i.e. a bundle)
   * and connect our channel to it.  This should only get called
-@@ -716,6 +726,8 @@ void make_new_bundle(int mrru, int mtru,
+@@ -704,6 +714,8 @@ void make_new_bundle(int mrru, int mtru,
  
  	/* set the mrru and flags */
  	cfg_bundle(mrru, mtru, rssn, tssn);

+ 1 - 1
package/network/services/ppp/patches/330-retain_foreign_default_routes.patch

@@ -12,7 +12,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/sys-linux.c
 +++ b/pppd/sys-linux.c
-@@ -1756,6 +1756,7 @@ int cifdefaultroute (int unit, u_int32_t
+@@ -1753,6 +1753,7 @@ int cifdefaultroute (int unit, u_int32_t
  	SIN_ADDR(rt.rt_genmask) = 0L;
      }
  

+ 3 - 3
package/network/services/ppp/patches/340-populate_default_gateway.patch

@@ -13,7 +13,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/sys-linux.c
 +++ b/pppd/sys-linux.c
-@@ -1710,6 +1710,9 @@ int sifdefaultroute (int unit, u_int32_t
+@@ -1703,6 +1703,9 @@ int sifdefaultroute (int unit, u_int32_t
      memset (&rt, 0, sizeof (rt));
      SET_SA_FAMILY (rt.rt_dst, AF_INET);
  
@@ -21,9 +21,9 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 +    SIN_ADDR(rt.rt_gateway) = gateway;
 +
      rt.rt_dev = ifname;
+     rt.rt_metric = dfl_route_metric + 1; /* +1 for binary compatibility */
  
-     if (kernel_version > KVERSION(2,1,0)) {
-@@ -1717,7 +1720,7 @@ int sifdefaultroute (int unit, u_int32_t
+@@ -1711,7 +1714,7 @@ int sifdefaultroute (int unit, u_int32_t
  	SIN_ADDR(rt.rt_genmask) = 0L;
      }
  

+ 9 - 9
package/network/services/ppp/patches/400-simplify_kernel_checks.patch

@@ -10,7 +10,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/sys-linux.c
 +++ b/pppd/sys-linux.c
-@@ -196,7 +196,7 @@ static int driver_is_old       = 0;
+@@ -192,7 +192,7 @@ static int driver_is_old       = 0;
  static int restore_term        = 0;	/* 1 => we've munged the terminal */
  static struct termios inittermios;	/* Initial TTY termios */
  
@@ -19,7 +19,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
  static char loop_name[20];
  static unsigned char inbuf[512]; /* buffer for chars read from loopback */
-@@ -214,8 +214,8 @@ static int	looped;			/* 1 if using loop
+@@ -210,8 +210,8 @@ static int	looped;			/* 1 if using loop
  static int	link_mtu;		/* mtu for the link (not bundle) */
  
  static struct utsname utsname;	/* for the kernel version */
@@ -29,7 +29,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
  #define MAX_IFS		100
  
-@@ -1451,11 +1451,12 @@ int ccp_fatal_error (int unit)
+@@ -1439,11 +1439,12 @@ int ccp_fatal_error (int unit)
   *
   * path_to_procfs - find the path to the proc file system mount point
   */
@@ -44,7 +44,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      struct mntent *mntent;
      FILE *fp;
  
-@@ -1477,6 +1478,7 @@ static char *path_to_procfs(const char *
+@@ -1465,6 +1466,7 @@ static char *path_to_procfs(const char *
  	    fclose (fp);
  	}
      }
@@ -52,7 +52,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
      strlcpy(proc_path + proc_path_len, tail,
  	    sizeof(proc_path) - proc_path_len);
-@@ -2129,15 +2131,19 @@ int ppp_available(void)
+@@ -2126,15 +2128,19 @@ int ppp_available(void)
      int    my_version, my_modification, my_patch;
      int osmaj, osmin, ospatch;
  
@@ -72,7 +72,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
  	/* XXX should get from driver */
  	driver_version = 2;
-@@ -2197,6 +2203,7 @@ int ppp_available(void)
+@@ -2194,6 +2200,7 @@ int ppp_available(void)
  
      if (ok && ((ifr.ifr_hwaddr.sa_family & ~0xFF) != ARPHRD_PPP))
  	ok = 0;
@@ -80,7 +80,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  
  /*
   *  This is the PPP device. Validate the version of the driver at this
-@@ -2730,6 +2737,7 @@ get_pty(master_fdp, slave_fdp, slave_nam
+@@ -2727,6 +2734,7 @@ get_pty(master_fdp, slave_fdp, slave_nam
      }
  #endif /* TIOCGPTN */
  
@@ -88,7 +88,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      if (sfd < 0) {
  	/* the old way - scan through the pty name space */
  	for (i = 0; i < 64; ++i) {
-@@ -2748,6 +2756,7 @@ get_pty(master_fdp, slave_fdp, slave_nam
+@@ -2745,6 +2753,7 @@ get_pty(master_fdp, slave_fdp, slave_nam
  	    }
  	}
      }
@@ -125,7 +125,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
  char *pppd_pppoe_service = NULL;
  static char *acName = NULL;
  static char *existingSession = NULL;
-@@ -371,10 +368,6 @@ PPPoEDevnameHook(char *cmd, char **argv,
+@@ -372,10 +369,6 @@ PPPoEDevnameHook(char *cmd, char **argv,
  void
  plugin_init(void)
  {

+ 1 - 1
package/network/services/ppp/patches/401-no_record_file.patch

@@ -7,7 +7,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/pppd.h
 +++ b/pppd/pppd.h
-@@ -317,7 +317,6 @@ extern int	holdoff;	/* Dead time before
+@@ -326,7 +326,6 @@ extern int	holdoff;	/* Dead time before
  extern bool	holdoff_specified; /* true if user gave a holdoff value */
  extern bool	notty;		/* Stdin/out is not a tty */
  extern char	*pty_socket;	/* Socket to connect to pty */

+ 2 - 2
package/network/services/ppp/patches/403-no_wtmp.patch

@@ -7,7 +7,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/sys-linux.c
 +++ b/pppd/sys-linux.c
-@@ -2267,6 +2267,7 @@ int ppp_available(void)
+@@ -2264,6 +2264,7 @@ int ppp_available(void)
  
  void logwtmp (const char *line, const char *name, const char *host)
  {
@@ -15,7 +15,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      struct utmp ut, *utp;
      pid_t  mypid = getpid();
  #if __GLIBC__ < 2
-@@ -2332,6 +2333,7 @@ void logwtmp (const char *line, const ch
+@@ -2329,6 +2330,7 @@ void logwtmp (const char *line, const ch
  	close (wtmp);
      }
  #endif

+ 8 - 8
package/network/services/ppp/patches/404-remove_obsolete_protocol_names.patch

@@ -7,7 +7,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/main.c
 +++ b/pppd/main.c
-@@ -882,14 +882,17 @@ struct protocol_list {
+@@ -874,14 +874,17 @@ struct protocol_list {
      const char	*name;
  } protocol_list[] = {
      { 0x21,	"IP" },
@@ -25,7 +25,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      { 0x33,	"Stream Protocol ST-II" },
      { 0x35,	"Banyan Vines" },
      { 0x39,	"AppleTalk EDDP" },
-@@ -903,8 +906,11 @@ struct protocol_list {
+@@ -895,8 +898,11 @@ struct protocol_list {
      { 0x49,	"Serial Data Transport Protocol (PPP-SDTP)" },
      { 0x4b,	"SNA over 802.2" },
      { 0x4d,	"SNA" },
@@ -37,7 +37,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      { 0x53,	"Encryption" },
      { 0x55,	"Individual Link Encryption" },
      { 0x57,	"IPv6" },
-@@ -915,12 +921,15 @@ struct protocol_list {
+@@ -907,12 +913,15 @@ struct protocol_list {
      { 0x65,	"RTP IPHC Compressed non-TCP" },
      { 0x67,	"RTP IPHC Compressed UDP 8" },
      { 0x69,	"RTP IPHC Compressed RTP 8" },
@@ -53,7 +53,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      { 0x0203,	"IBM Source Routing BPDU" },
      { 0x0205,	"DEC LANBridge100 Spanning Tree" },
      { 0x0207,	"Cisco Discovery Protocol" },
-@@ -932,15 +941,19 @@ struct protocol_list {
+@@ -924,15 +933,19 @@ struct protocol_list {
      { 0x0231,	"Luxcom" },
      { 0x0233,	"Sigma Network Systems" },
      { 0x0235,	"Apple Client Server Protocol" },
@@ -73,7 +73,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      { 0x4001,	"Cray Communications Control Protocol" },
      { 0x4003,	"CDPD Mobile Network Registration Protocol" },
      { 0x4005,	"Expand accelerator protocol" },
-@@ -951,8 +964,10 @@ struct protocol_list {
+@@ -943,8 +956,10 @@ struct protocol_list {
      { 0x4023,	"RefTek Protocol" },
      { 0x4025,	"Fibre Channel" },
      { 0x4027,	"EMIT Protocols" },
@@ -84,7 +84,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      { 0x8023,	"OSI Network Layer Control Protocol" },
      { 0x8025,	"Xerox NS IDP Control Protocol" },
      { 0x8027,	"DECnet Phase IV Control Protocol" },
-@@ -961,7 +976,9 @@ struct protocol_list {
+@@ -953,7 +968,9 @@ struct protocol_list {
      { 0x8031,	"Bridging NCP" },
      { 0x8033,	"Stream Protocol Control Protocol" },
      { 0x8035,	"Banyan Vines Control Protocol" },
@@ -94,7 +94,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      { 0x803f,	"NETBIOS Framing Control Protocol" },
      { 0x8041,	"Cisco Systems Control Protocol" },
      { 0x8043,	"Ascom Timeplex" },
-@@ -970,18 +987,24 @@ struct protocol_list {
+@@ -962,18 +979,24 @@ struct protocol_list {
      { 0x8049,	"Serial Data Control Protocol (PPP-SDCP)" },
      { 0x804b,	"SNA over 802.2 Control Protocol" },
      { 0x804d,	"SNA Control Protocol" },
@@ -119,7 +119,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
      { 0x8207,	"Cisco Discovery Protocol Control" },
      { 0x8209,	"Netcs Twin Routing" },
      { 0x820b,	"STP - Control Protocol" },
-@@ -990,24 +1013,29 @@ struct protocol_list {
+@@ -982,24 +1005,29 @@ struct protocol_list {
      { 0x8281,	"MPLSCP" },
      { 0x8285,	"IEEE p1284.4 standard - Protocol Control" },
      { 0x8287,	"ETSI TETRA TNP1 Control Protocol" },

+ 1 - 1
package/network/services/ppp/patches/405-no_multilink_option.patch

@@ -9,7 +9,7 @@ Signed-off-by: Jo-Philipp Wich <[email protected]>
 
 --- a/pppd/options.c
 +++ b/pppd/options.c
-@@ -336,13 +336,14 @@ option_t general_options[] = {
+@@ -350,13 +350,14 @@ option_t general_options[] = {
        "Enable multilink operation", OPT_PRIOSUB | OPT_ALIAS | 1 },
      { "nomultilink", o_bool, &multilink,
        "Disable multilink operation", OPT_PRIOSUB | 0 },

+ 11 - 11
package/network/services/ppp/patches/520-uniq.patch

@@ -147,7 +147,7 @@
      strlcpy(ppp_devnam, devnam, sizeof(ppp_devnam));
 --- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
 +++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
-@@ -348,7 +348,7 @@ packetIsForMe(PPPoEConnection *conn, PPP
+@@ -356,7 +356,7 @@ packetIsForMe(PPPoEConnection *conn, PPP
      if (memcmp(packet->ethHdr.h_dest, conn->myEth, ETH_ALEN)) return 0;
  
      /* If we're not using the Host-Unique tag, then accept the packet */
@@ -156,7 +156,7 @@
  
      parsePacket(packet, parseForHostUniq, &forMe);
      return forMe;
-@@ -474,16 +474,12 @@ sendPADI(PPPoEConnection *conn)
+@@ -494,16 +494,12 @@ sendPADI(PPPoEConnection *conn)
      cursor += namelen + TAG_HDR_SIZE;
  
      /* If we're using Host-Uniq, copy it over */
@@ -179,17 +179,17 @@
      }
  
      packet.length = htons(plen);
-@@ -645,7 +641,7 @@ int main(int argc, char *argv[])
- 
-     memset(conn, 0, sizeof(PPPoEConnection));
+@@ -669,7 +665,7 @@ int main(int argc, char *argv[])
+     conn->discoveryTimeout = PADI_TIMEOUT;
+     conn->discoveryAttempts = MAX_PADI_ATTEMPTS;
  
--    while ((opt = getopt(argc, argv, "I:D:VUAS:C:h")) > 0) {
-+    while ((opt = getopt(argc, argv, "I:D:VUW:AS:C:h")) > 0) {
+-    while ((opt = getopt(argc, argv, "I:D:VUQS:C:t:a:h")) > 0) {
++    while ((opt = getopt(argc, argv, "I:D:VUW:QS:C:t:a:h")) > 0) {
  	switch(opt) {
  	case 'S':
  	    conn->serviceName = xstrdup(optarg);
-@@ -654,7 +650,23 @@ int main(int argc, char *argv[])
- 	    conn->acName = xstrdup(optarg);
+@@ -696,7 +692,23 @@ int main(int argc, char *argv[])
+ 	    }
  	    break;
  	case 'U':
 -	    conn->useHostUniq = 1;
@@ -224,7 +224,7 @@
  
  /* How do we access raw Ethernet devices? */
  #undef USE_LINUX_PACKET
-@@ -217,7 +219,7 @@ typedef struct PPPoEConnectionStruct {
+@@ -219,7 +221,7 @@ typedef struct PPPoEConnectionStruct {
      char *serviceName;		/* Desired service name, if any */
      char *acName;		/* Desired AC name, if any */
      int synchronous;		/* Use synchronous PPP */
@@ -233,7 +233,7 @@
      int printACNames;		/* Just print AC names */
      FILE *debugFile;		/* Debug file for dumping packets */
      int numPADOs;		/* Number of PADO packets received */
-@@ -273,6 +275,33 @@ void pppoe_printpkt(PPPoEPacket *packet,
+@@ -276,6 +278,33 @@ void pppoe_printpkt(PPPoEPacket *packet,
  		    void (*printer)(void *, char *, ...), void *arg);
  void pppoe_log_packet(const char *prefix, PPPoEPacket *packet);
  

+ 0 - 11
package/network/services/ppp/patches/530-pppoe_send_padt.patch

@@ -1,11 +0,0 @@
---- a/pppd/plugins/rp-pppoe/plugin.c
-+++ b/pppd/plugins/rp-pppoe/plugin.c
-@@ -275,7 +275,7 @@ PPPOEDisconnectDevice(void)
- 		sizeof(struct sockaddr_pppox)) < 0)
- 	error("Failed to disconnect PPPoE socket: %d %m", errno);
-     close(conn->sessionSocket);
--    /* don't send PADT?? */
-+    sendPADT(conn, NULL);
-     if (conn->discoverySocket >= 0)
- 	close(conn->discoverySocket);
- }

+ 0 - 14
package/network/services/ppp/patches/531-pppoe_no_disconnect_warning.patch

@@ -1,14 +0,0 @@
---- a/pppd/plugins/rp-pppoe/plugin.c
-+++ b/pppd/plugins/rp-pppoe/plugin.c
-@@ -271,9 +271,8 @@ PPPOEDisconnectDevice(void)
-     sp.sa_addr.pppoe.sid = 0;
-     memcpy(sp.sa_addr.pppoe.dev, conn->ifName, IFNAMSIZ);
-     memcpy(sp.sa_addr.pppoe.remote, conn->peerEth, ETH_ALEN);
--    if (connect(conn->sessionSocket, (struct sockaddr *) &sp,
--		sizeof(struct sockaddr_pppox)) < 0)
--	error("Failed to disconnect PPPoE socket: %d %m", errno);
-+    connect(conn->sessionSocket, (struct sockaddr *) &sp,
-+	    sizeof(struct sockaddr_pppox));
-     close(conn->sessionSocket);
-     sendPADT(conn, NULL);
-     if (conn->discoverySocket >= 0)

+ 0 - 11
package/network/services/ppp/patches/550-fix-printer-args.patch

@@ -1,11 +0,0 @@
---- a/pppd/options.c
-+++ b/pppd/options.c
-@@ -1013,7 +1013,7 @@ print_option(opt, mainopt, printer, arg)
- 			p = (char *) opt->addr2;
- 			if ((opt->flags & OPT_STATIC) == 0)
- 				p = *(char **)p;
--			printer("%q", p);
-+			printer(arg, "%q", p);
- 		} else if (opt->flags & OPT_A2LIST) {
- 			struct option_value *ovp;
- 

+ 94 - 0
package/network/services/ppp/patches/600-Revert-pppd-Use-openssl-for-the-DES-instead-of-the-l.patch

@@ -0,0 +1,94 @@
+From 831dca008699d485f2c8e91749657ef2d0b06166 Mon Sep 17 00:00:00 2001
+From: Martin Schiller <[email protected]>
+Date: Thu, 6 Dec 2018 08:43:17 +0100
+Subject: [PATCH] Revert "pppd: Use openssl for the DES instead of the libcrypt
+ / glibc"
+
+For musl and glibc2.27 we can keep linking to crypt; however if we
+switch to glibc 2.28 we will have to link to one of the SSL libraries.
+
+This reverts commit 3c7b86229f7bd2600d74db14b1fe5b3896be3875.
+---
+ pppd/Makefile.linux |  7 +++----
+ pppd/pppcrypt.c     | 18 +++++++++---------
+ 2 files changed, 12 insertions(+), 13 deletions(-)
+
+--- a/pppd/Makefile.linux
++++ b/pppd/Makefile.linux
+@@ -35,10 +35,10 @@ endif
+ COPTS = -O2 -pipe -Wall -g
+ LIBS =
+ 
+-# Uncomment the next line to include support for Microsoft's
++# Uncomment the next 2 lines to include support for Microsoft's
+ # MS-CHAP authentication protocol.  Also, edit plugins/radius/Makefile.linux.
+ CHAPMS=y
+-#USE_CRYPT=y
++USE_CRYPT=y
+ # Don't use MSLANMAN unless you really know what you're doing.
+ #MSLANMAN=y
+ # Uncomment the next line to include support for MPPE.  CHAPMS (above) must
+@@ -140,8 +140,7 @@ endif
+ 
+ ifdef NEEDDES
+ ifndef USE_CRYPT
+-CFLAGS   += -I/usr/include/openssl
+-LIBS     += -lcrypto
++LIBS     += -ldes $(LIBS)
+ else
+ CFLAGS   += -DUSE_CRYPT=1
+ endif
+--- a/pppd/pppcrypt.c
++++ b/pppd/pppcrypt.c
+@@ -64,7 +64,7 @@ u_char *des_key;	/* OUT 64 bit DES key w
+ 	des_key[7] = Get7Bits(key, 49);
+ 
+ #ifndef USE_CRYPT
+-	DES_set_odd_parity((DES_cblock *)des_key);
++	des_set_odd_parity((des_cblock *)des_key);
+ #endif
+ }
+ 
+@@ -158,25 +158,25 @@ u_char *clear;	/* OUT 8 octets */
+ }
+ 
+ #else /* USE_CRYPT */
+-static DES_key_schedule	key_schedule;
++static des_key_schedule	key_schedule;
+ 
+ bool
+ DesSetkey(key)
+ u_char *key;
+ {
+-	DES_cblock des_key;
++	des_cblock des_key;
+ 	MakeKey(key, des_key);
+-	DES_set_key(&des_key, &key_schedule);
++	des_set_key(&des_key, key_schedule);
+ 	return (1);
+ }
+ 
+ bool
+-DesEncrypt(clear, cipher)
++DesEncrypt(clear, key, cipher)
+ u_char *clear;	/* IN  8 octets */
+ u_char *cipher;	/* OUT 8 octets */
+ {
+-	DES_ecb_encrypt((DES_cblock *)clear, (DES_cblock *)cipher,
+-	    &key_schedule, 1);
++	des_ecb_encrypt((des_cblock *)clear, (des_cblock *)cipher,
++	    key_schedule, 1);
+ 	return (1);
+ }
+ 
+@@ -185,8 +185,8 @@ DesDecrypt(cipher, clear)
+ u_char *cipher;	/* IN  8 octets */
+ u_char *clear;	/* OUT 8 octets */
+ {
+-	DES_ecb_encrypt((DES_cblock *)cipher, (DES_cblock *)clear,
+-	    &key_schedule, 0);
++	des_ecb_encrypt((des_cblock *)cipher, (des_cblock *)clear,
++	    key_schedule, 0);
+ 	return (1);
+ }
+