Changeset 2281


Ignore:
Timestamp:
Mar 15, 2013, 9:57:04 AM (6 years ago)
Author:
matthijs
Message:

ppp: Upgrade to 2.4.5.

This takes the package from OpenWRT trunk (r35300) with some changes:
some file related to radius and netifd have been removed, the
PKG_BUILD_DIR was corrected and the previous ppp.sh, pppoe.sh, ip-up,
ip-down and resolv.conf symlink have been preserved from the older
package, since the Fonera still uses the pre-netifd network config.

This PPP version should better cope with the funky PPP implementations
with some 3G modems, according to the upstream changelog and local
testing.

Location:
trunk/openwrt/package/ppp
Files:
19 added
19 deleted
6 edited
9 moved

Legend:

Unmodified
Added
Removed
  • trunk/openwrt/package/ppp/Makefile

    r1 r2281  
    1 # 
    2 # Copyright (C) 2006-2008 OpenWrt.org
     1#
     2# Copyright (C) 2006-2012 OpenWrt.org
    33#
    44# This is free software, licensed under the GNU General Public License v2.
    55# See /LICENSE for more information.
    66#
    7 # $Id: Makefile 12369 2008-08-22 05:03:37Z nico $
    87
    98include $(TOPDIR)/rules.mk
     9include $(INCLUDE_DIR)/kernel.mk
    1010
    1111PKG_NAME:=ppp
    12 PKG_VERSION:=2.4.3
    13 PKG_RELEASE:=10
     12PKG_VERSION:=2.4.5
     13PKG_RELEASE:=9
    1414
    1515PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
    1616PKG_SOURCE_URL:=ftp://ftp.samba.org/pub/ppp/
    17 PKG_MD5SUM:=848f6c3cafeb6074ffeb293c3af79b7c
     17PKG_MD5SUM:=4621bc56167b6953ec4071043fe0ec57
     18PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
     19
     20PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
    1821
    1922PKG_BUILD_DEPENDS:=libpcap
    2023
     24PKG_BUILD_PARALLEL:=1
     25PKG_INSTALL:=1
     26
    2127include $(INCLUDE_DIR)/package.mk
    22 include $(INCLUDE_DIR)/kernel.mk
    2328
    2429define Package/ppp/Default
    2530  SECTION:=net
    2631  CATEGORY:=Network
     32  MAINTAINER:=Jo-Philipp Wich <xm@subsignal.org>
    2733  URL:=http://ppp.samba.org/
    2834endef
     
    3238  DEPENDS:=+kmod-ppp
    3339  TITLE:=PPP daemon
    34   MENU:=1
     40  VARIANT:=default
     41endef
     42
     43define Package/ppp-multilink
     44$(call Package/ppp/Default)
     45  DEPENDS:=+kmod-ppp
     46  TITLE:=PPP daemon (with multilink support)
     47  VARIANT:=multilink
    3548endef
    3649
    3750define Package/ppp/description
    38  This package contains the PPP (Point-to-Point Protocol) daemon.
     51This package contains the PPP (Point-to-Point Protocol) daemon.
    3952endef
    4053
    4154define Package/ppp-mod-pppoa
    4255$(call Package/ppp/Default)
    43   DEPENDS:=ppp +linux-atm +kmod-pppoa
     56  DEPENDS:=@(PACKAGE_ppp||PACKAGE_ppp-multilink) +linux-atm +kmod-pppoa
    4457  TITLE:=PPPoA plugin
    4558endef
    4659
    4760define Package/ppp-mod-pppoa/description
    48  This package contains a PPPoA (PPP over ATM) plugin for ppp.
     61This package contains a PPPoA (PPP over ATM) plugin for ppp.
    4962endef
    5063
    5164define Package/ppp-mod-pppoe
    5265$(call Package/ppp/Default)
    53   DEPENDS:=ppp +kmod-pppoe
     66  DEPENDS:=@(PACKAGE_ppp||PACKAGE_ppp-multilink) +kmod-pppoe
    5467  TITLE:=PPPoE plugin
    5568endef
    5669
    5770define Package/ppp-mod-pppoe/description
    58  This package contains a PPPoE (PPP over Ethernet) plugin for ppp.
     71This package contains a PPPoE (PPP over Ethernet) plugin for ppp.
    5972endef
    6073
    6174define Package/ppp-mod-radius
    6275$(call Package/ppp/Default)
    63   DEPENDS:=ppp
     76  DEPENDS:=@(PACKAGE_ppp||PACKAGE_ppp-multilink)
    6477  TITLE:=RADIUS plugin
    6578endef
    6679
    6780define Package/ppp-mod-radius/description
    68  This package contains a RADIUS (Remote Authentication Dial-In User
    69  Service) plugin for ppp.
     81This package contains a RADIUS (Remote Authentication Dial-In User Service)
     82plugin for ppp.
     83endef
     84
     85define Package/ppp-mod-radius/conffiles
     86/etc/ppp/radius.conf
     87/etc/ppp/radius/
     88endef
     89
     90define Package/ppp-mod-pppol2tp
     91$(call Package/ppp/Default)
     92  DEPENDS:=@(PACKAGE_ppp||PACKAGE_ppp-multilink) +kmod-pppol2tp
     93  TITLE:=PPPoL2TP plugin
     94endef
     95
     96define Package/ppp-mod-pppol2tp/description
     97This package contains a PPPoL2TP (PPP over L2TP) plugin for ppp.
     98endef
     99
     100define Package/ppp-mod-pptp
     101$(call Package/ppp/Default)
     102  DEPENDS:=@(PACKAGE_ppp||PACKAGE_ppp-multilink) +kmod-pptp +kmod-mppe +resolveip
     103  TITLE:=PPtP plugin
     104endef
     105
     106define Package/ppp-mod-pptp/description
     107This package contains a PPtP plugin for ppp.
    70108endef
    71109
    72110define Package/chat
    73111$(call Package/ppp/Default)
    74   DEPENDS:=ppp
     112  DEPENDS:=@(PACKAGE_ppp||PACKAGE_ppp-multilink)
    75113  TITLE:=Establish conversation with a modem
    76114endef
    77115
    78116define Package/chat/description
    79  This package contains an utility to establish conversation with other
    80  PPP servers (via a modem).
     117This package contains an utility to establish conversation with other PPP servers
     118(via a modem).
    81119endef
    82120
    83121define Package/pppdump
    84122$(call Package/ppp/Default)
    85   DEPENDS:=ppp
     123  DEPENDS:=@(PACKAGE_ppp||PACKAGE_ppp-multilink)
    86124  TITLE:=Read PPP record file
    87125endef
    88126
    89127define Package/pppdump/description
    90  This package contains an utility to read PPP record file.
     128This package contains an utility to read PPP record file.
    91129endef
    92130
    93131define Package/pppstats
    94132$(call Package/ppp/Default)
    95   DEPENDS:=ppp
     133  DEPENDS:=@(PACKAGE_ppp||PACKAGE_ppp-multilink)
    96134  TITLE:=Report PPP statistics
    97135endef
    98136
    99137define Package/pppstats/description
    100  This package contains an utility to report PPP statistics.
     138This package contains an utility to report PPP statistics.
    101139endef
    102140
     
    108146        UNAME_M="$(ARCH)" \
    109147)
    110 endef
    111 
    112 define Build/Compile
    113         rm -rf $(PKG_INSTALL_DIR)
    114         mkdir -p $(PKG_INSTALL_DIR)/usr
    115         $(MAKE) -C $(PKG_BUILD_DIR) \
    116                 $(TARGET_CONFIGURE_OPTS) \
    117                 COPTS="$(TARGET_CFLAGS)" \
     148        mkdir -p $(PKG_BUILD_DIR)/pppd/plugins/pppoatm/linux
     149        cp \
     150                $(LINUX_DIR)/include/linux/compiler.h \
     151                $(LINUX_DIR)/include/$(LINUX_UAPI_DIR)linux/atm*.h \
     152                $(PKG_BUILD_DIR)/pppd/plugins/pppoatm/linux/
     153endef
     154
     155MAKE_FLAGS += COPTS="$(TARGET_CFLAGS)" \
    118156                PRECOMPILED_FILTER=1 \
    119                 STAGING_DIR="$(STAGING_DIR)" \
    120                 DESTDIR="$(PKG_INSTALL_DIR)/usr" \
    121                 all install
    122 endef
     157                STAGING_DIR="$(STAGING_DIR)"
     158
     159ifeq ($(BUILD_VARIANT),multilink)
     160  MAKE_FLAGS += HAVE_MULTILINK=y
     161else
     162  MAKE_FLAGS += HAVE_MULTILINK=
     163endif
     164
    123165
    124166define Build/InstallDev
    125167        $(INSTALL_DIR) $(1)/usr/include
    126         $(CP) $(PKG_INSTALL_DIR)/usr/include/pppd $(1)/usr/include/
     168        $(CP) $(PKG_INSTALL_DIR)/include/pppd $(1)/usr/include/
     169endef
     170
     171define Package/ppp/script_install
    127172endef
    128173
     
    130175        $(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
    131176        $(INSTALL_DIR) $(1)/usr/sbin
    132         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/pppd $(1)/usr/sbin/
    133         $(INSTALL_DIR) $(1)/lib/network
    134         $(INSTALL_BIN) ./files/ppp.sh $(1)/lib/network/
     177        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/pppd $(1)/usr/sbin/
    135178        $(INSTALL_DIR) $(1)/etc/ppp
    136179        $(INSTALL_CONF) ./files/etc/ppp/chap-secrets $(1)/etc/ppp/
    137180        $(INSTALL_DATA) ./files/etc/ppp/filter $(1)/etc/ppp/
     181        $(INSTALL_DATA) ./files/etc/ppp/options $(1)/etc/ppp/
    138182        $(INSTALL_BIN) ./files/etc/ppp/ip-up $(1)/etc/ppp/
    139         $(INSTALL_DIR) $(1)/etc/ppp/ip-up.d
    140183        $(INSTALL_BIN) ./files/etc/ppp/ip-down $(1)/etc/ppp/
    141         $(INSTALL_DIR) $(1)/etc/ppp/ip-down.d
    142         $(INSTALL_BIN) ./files/etc/ppp/ipv6-up $(1)/etc/ppp/
    143         $(INSTALL_BIN) ./files/etc/ppp/ipv6-down $(1)/etc/ppp/
    144         $(INSTALL_DATA) ./files/etc/ppp/options $(1)/etc/ppp/
    145184        ln -sf /tmp/resolv.conf.auto $(1)/etc/ppp/resolv.conf
    146 endef
    147        
     185        $(INSTALL_DIR) $(1)/lib/network
     186        $(INSTALL_BIN) ./files/ppp.sh $(1)/lib/network/
     187        $(INSTALL_BIN) ./files/pppoe.sh $(1)/lib/network/
     188endef
     189Package/ppp-multilink/install=$(Package/ppp/install)
     190
    148191define Package/ppp-mod-pppoa/install
    149192        $(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
    150         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/pppd/$(PKG_VERSION)/pppoatm.so \
    151                 $(1)/usr/lib/pppd/$(PKG_VERSION)/
    152         $(INSTALL_DIR) $(1)/lib/network
    153         $(INSTALL_BIN) ./files/pppoa.sh $(1)/lib/network/
     193        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pppoatm.so \
     194                $(1)/usr/lib/pppd/$(PKG_VERSION)/
    154195endef
    155196
    156197define Package/ppp-mod-pppoe/install
    157198        $(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
    158         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/pppd/$(PKG_VERSION)/rp-pppoe.so \
    159                 $(1)/usr/lib/pppd/$(PKG_VERSION)/
    160         $(INSTALL_DIR) $(1)/lib/network
    161         $(INSTALL_BIN) ./files/pppoe.sh $(1)/lib/network/
     199        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/rp-pppoe.so \
     200                $(1)/usr/lib/pppd/$(PKG_VERSION)/
    162201endef
    163202
    164203define Package/ppp-mod-radius/install
    165204        $(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
    166         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/pppd/$(PKG_VERSION)/radius.so \
     205        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/radius.so \
    167206                $(1)/usr/lib/pppd/$(PKG_VERSION)/
    168207        $(INSTALL_DIR) $(1)/etc/ppp
     
    175214endef
    176215
     216define Package/ppp-mod-pppol2tp/install
     217        $(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
     218        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pppol2tp.so \
     219                $(1)/usr/lib/pppd/$(PKG_VERSION)/
     220endef
     221
     222define Package/ppp-mod-pptp/install
     223        $(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
     224        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pptp.so \
     225                $(1)/usr/lib/pppd/$(PKG_VERSION)/
     226        $(INSTALL_DIR) $(1)/etc/ppp
     227        $(INSTALL_DATA) ./files/etc/ppp/options.pptp $(1)/etc/ppp/
     228endef
     229
    177230define Package/chat/install
    178231        $(INSTALL_DIR) $(1)/usr/sbin
    179         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/chat $(1)/usr/sbin/
     232        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/chat $(1)/usr/sbin/
    180233endef
    181234
    182235define Package/pppdump/install
    183236        $(INSTALL_DIR) $(1)/usr/sbin
    184         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/pppdump $(1)/usr/sbin/
     237        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/pppdump $(1)/usr/sbin/
    185238endef
    186239
    187240define Package/pppstats/install
    188241        $(INSTALL_DIR) $(1)/usr/sbin
    189         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/pppstats $(1)/usr/sbin/
     242        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/pppstats $(1)/usr/sbin/
    190243endef
    191244
    192245$(eval $(call BuildPackage,ppp))
     246$(eval $(call BuildPackage,ppp-multilink))
    193247$(eval $(call BuildPackage,ppp-mod-pppoa))
    194248$(eval $(call BuildPackage,ppp-mod-pppoe))
    195249$(eval $(call BuildPackage,ppp-mod-radius))
     250$(eval $(call BuildPackage,ppp-mod-pppol2tp))
     251$(eval $(call BuildPackage,ppp-mod-pptp))
    196252$(eval $(call BuildPackage,chat))
    197253$(eval $(call BuildPackage,pppdump))
  • trunk/openwrt/package/ppp/files/etc/ppp/options

    r1 r2281  
    11#debug
    22logfile /dev/null
     3noipdefault
    34noaccomp
    45nopcomp
  • trunk/openwrt/package/ppp/patches/010-use_target_for_configure.patch

    r1 r2281  
     1configure: Allow overriding uname results
    12
    2         Use values exported from $(TOPDIR)/rules.mk for determining
    3         the target system instead of the host configuration
     3In a cross compile setting it makes no sense to rely on the "uname" values
     4reported by the build host system. This patch allows overriding the
     5"uname -r", "uname -s" and "uname -m" results with the "UNAME_R", "UNAME_S"
     6and "UNAME_M" environment variables.
    47
    5 Index: ppp-2.4.3/configure
    6 ===================================================================
    7 --- ppp-2.4.3.orig/configure    2007-06-04 13:22:08.549555552 +0200
    8 +++ ppp-2.4.3/configure 2007-06-04 13:22:08.618545064 +0200
    9 @@ -8,9 +8,9 @@
     8Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     9
     10--- a/configure
     11+++ b/configure
     12@@ -8,9 +8,9 @@ SYSCONF=/etc
    1013 #  if [ -d /NextApps ]; then
    1114 #    system="NeXTStep"
  • trunk/openwrt/package/ppp/patches/100-debian_ip-ip_option.patch

    r2280 r2281  
    1 Index: ppp-2.4.3/pppd/ipcp.c
    2 ===================================================================
    3 --- ppp-2.4.3.orig/pppd/ipcp.c  2007-06-04 13:22:08.478566344 +0200
    4 +++ ppp-2.4.3/pppd/ipcp.c       2007-06-04 13:22:09.003486544 +0200
    5 @@ -1846,7 +1846,7 @@
     1pppd: Allow specifying ip-up and ip-down scripts
     2
     3This patch implements the "ip-up-script" and "ip-down-script" options which
     4allow to specify the path of the ip-up and ip-down scripts to call.
     5
     6These options default to _PATH_IPUP and _PATH_IPDOWN to retain the
     7existing behaviour.
     8
     9The patch originated from the Debian project.
     10
     11Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     12
     13--- a/pppd/ipcp.c
     14+++ b/pppd/ipcp.c
     15@@ -1939,7 +1939,7 @@ ipcp_up(f)
    616      */
    717     if (ipcp_script_state == s_down && ipcp_script_pid == 0) {
    818        ipcp_script_state = s_up;
    9 -       ipcp_script(_PATH_IPUP);
    10 +       ipcp_script(path_ipup);
     19-       ipcp_script(_PATH_IPUP, 0);
     20+       ipcp_script(path_ipup, 0);
    1121     }
    1222 }
    1323 
    14 @@ -1896,7 +1896,7 @@
     24@@ -1989,7 +1989,7 @@ ipcp_down(f)
    1525     /* Execute the ip-down script */
    1626     if (ipcp_script_state == s_up && ipcp_script_pid == 0) {
    1727        ipcp_script_state = s_down;
    18 -       ipcp_script(_PATH_IPDOWN);
    19 +       ipcp_script(path_ipdown);
     28-       ipcp_script(_PATH_IPDOWN, 0);
     29+       ipcp_script(path_ipdown, 0);
    2030     }
    2131 }
    2232 
    23 @@ -1950,13 +1950,13 @@
     33@@ -2043,13 +2043,13 @@ ipcp_script_done(arg)
    2434     case s_up:
    2535        if (ipcp_fsm[0].state != OPENED) {
    2636            ipcp_script_state = s_down;
    27 -           ipcp_script(_PATH_IPDOWN);
    28 +           ipcp_script(path_ipdown);
     37-           ipcp_script(_PATH_IPDOWN, 0);
     38+           ipcp_script(path_ipdown, 0);
    2939        }
    3040        break;
     
    3242        if (ipcp_fsm[0].state == OPENED) {
    3343            ipcp_script_state = s_up;
    34 -           ipcp_script(_PATH_IPUP);
    35 +           ipcp_script(path_ipup);
     44-           ipcp_script(_PATH_IPUP, 0);
     45+           ipcp_script(path_ipup, 0);
    3646        }
    3747        break;
    3848     }
    39 Index: ppp-2.4.3/pppd/main.c
    40 ===================================================================
    41 --- ppp-2.4.3.orig/pppd/main.c  2007-06-04 13:22:08.487564976 +0200
    42 +++ ppp-2.4.3/pppd/main.c       2007-06-04 13:22:09.004486392 +0200
    43 @@ -314,6 +314,9 @@
     49--- a/pppd/main.c
     50+++ b/pppd/main.c
     51@@ -316,6 +316,9 @@ main(argc, argv)
    4452     struct protent *protp;
    4553     char numbuf[16];
     
    5159     new_phase(PHASE_INITIALIZE);
    5260 
    53 Index: ppp-2.4.3/pppd/options.c
    54 ===================================================================
    55 --- ppp-2.4.3.orig/pppd/options.c       2007-06-04 13:22:08.495563760 +0200
    56 +++ ppp-2.4.3/pppd/options.c    2007-06-04 13:22:09.005486240 +0200
    57 @@ -108,6 +108,8 @@
     61--- a/pppd/options.c
     62+++ b/pppd/options.c
     63@@ -113,6 +113,8 @@ char        linkname[MAXPATHLEN];   /* logical na
    5864 bool   tune_kernel;            /* may alter kernel settings */
    5965 int    connect_delay = 1000;   /* wait this many ms after connect script */
     
    6470 char   *bundle_name = NULL;    /* bundle name for multilink */
    6571 bool   dump_options;           /* print out option values */
    66 @@ -276,6 +278,13 @@
     72@@ -281,6 +283,13 @@ option_t general_options[] = {
    6773       "Number of seconds to wait for child processes at exit",
    6874       OPT_PRIO },
     
    7884     { "multilink", o_bool, &multilink,
    7985       "Enable multilink operation", OPT_PRIO | 1 },
    80 Index: ppp-2.4.3/pppd/pppd.h
    81 ===================================================================
    82 --- ppp-2.4.3.orig/pppd/pppd.h  2007-06-04 13:22:08.505562240 +0200
    83 +++ ppp-2.4.3/pppd/pppd.h       2007-06-04 13:22:09.005486240 +0200
    84 @@ -312,6 +312,8 @@
     86--- a/pppd/pppd.h
     87+++ b/pppd/pppd.h
     88@@ -313,6 +313,8 @@ extern bool tune_kernel;    /* May alter ke
    8589 extern int     connect_delay;  /* Time to delay after connect script */
    8690 extern int     max_data_rate;  /* max bytes/sec through charshunt */
  • trunk/openwrt/package/ppp/patches/105-debian_demand.patch

    r2280 r2281  
    1 Index: ppp-2.4.3/pppd/demand.c
    2 ===================================================================
    3 --- ppp-2.4.3.orig/pppd/demand.c        2007-06-04 13:22:08.217606016 +0200
    4 +++ ppp-2.4.3/pppd/demand.c     2007-06-04 13:22:11.613089824 +0200
     1--- a/pppd/demand.c
     2+++ b/pppd/demand.c
    53@@ -36,6 +36,8 @@
    64 #include <errno.h>
     
    2119 #include <pcap-bpf.h>
    2220 #endif
    23 @@ -221,6 +225,14 @@
     21@@ -221,6 +225,14 @@ loop_chars(p, n)
    2422     int c, rv;
    2523 
     
    3634        c = *p++;
    3735        if (c == PPP_FLAG) {
    38 @@ -299,17 +311,102 @@
     36@@ -299,17 +311,102 @@ loop_frame(frame, len)
    3937  * loopback, now that the real serial link is up.
    4038  */
     
    140138            free(pkt);
    141139        } else {
    142 Index: ppp-2.4.3/pppd/ipcp.c
    143 ===================================================================
    144 --- ppp-2.4.3.orig/pppd/ipcp.c  2007-06-04 13:22:11.387124176 +0200
    145 +++ ppp-2.4.3/pppd/ipcp.c       2007-06-04 13:22:11.614089672 +0200
    146 @@ -1796,7 +1796,7 @@
     140--- a/pppd/ipcp.c
     141+++ b/pppd/ipcp.c
     142@@ -1864,7 +1864,7 @@ ipcp_up(f)
    147143                    proxy_arp_set[f->unit] = 1;
    148144 
     
    153149 
    154150     } else {
    155 Index: ppp-2.4.3/pppd/ipv6cp.c
    156 ===================================================================
    157 --- ppp-2.4.3.orig/pppd/ipv6cp.c        2007-06-04 13:22:08.229604192 +0200
    158 +++ ppp-2.4.3/pppd/ipv6cp.c     2007-06-04 13:22:11.614089672 +0200
    159 @@ -1232,7 +1232,7 @@
     151--- a/pppd/ipv6cp.c
     152+++ b/pppd/ipv6cp.c
     153@@ -1232,7 +1232,7 @@ ipv6cp_up(f)
    160154            }
    161155 
     
    166160 
    167161     } else {
    168 Index: ppp-2.4.3/pppd/pppd.h
    169 ===================================================================
    170 --- ppp-2.4.3.orig/pppd/pppd.h  2007-06-04 13:22:11.388124024 +0200
    171 +++ ppp-2.4.3/pppd/pppd.h       2007-06-04 13:22:11.615089520 +0200
    172 @@ -563,7 +563,7 @@
     162--- a/pppd/pppd.h
     163+++ b/pppd/pppd.h
     164@@ -566,7 +566,7 @@ void demand_conf __P((void));       /* config
    173165 void demand_block __P((void)); /* set all NPs to queue up packets */
    174166 void demand_unblock __P((void)); /* set all NPs to pass packets */
  • trunk/openwrt/package/ppp/patches/106-debian_stripMSdomain.patch

    r2280 r2281  
    1 Index: ppp-2.4.3/pppd/chap-new.c
    2 ===================================================================
    3 --- ppp-2.4.3.orig/pppd/chap-new.c      2007-06-04 13:22:08.298593704 +0200
    4 +++ ppp-2.4.3/pppd/chap-new.c   2007-06-04 13:22:11.199152752 +0200
    5 @@ -57,6 +57,7 @@
     1pppd: Implement option to strip domain part from MS CHAP response
     2
     3This patch implements a new boolean option "chapms-strip-domain" which
     4strips the leading domain part of the username in a received MS Chap
     5response.
     6
     7When the option is set, all leading chars up to and including the last
     8backslash in the username are stripped. The option defaults to false.
     9
     10The patch originated from the Debian project.
     11
     12Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     13
     14--- a/pppd/chap-new.c
     15+++ b/pppd/chap-new.c
     16@@ -58,6 +58,7 @@ int (*chap_verify_hook)(char *name, char
    617 int chap_timeout_time = 3;
    718 int chap_max_transmits = 10;
     
    1122 /*
    1223  * Command-line options.
    13 @@ -68,6 +69,8 @@
     24@@ -69,6 +70,8 @@ static option_t chap_option_list[] = {
    1425          "Set max #xmits for challenge", OPT_PRIO },
    1526        { "chap-interval", o_int, &chap_rechallenge_time,
     
    2031 };
    2132 
    22 @@ -338,6 +341,14 @@
     33@@ -336,6 +339,14 @@ chap_handle_response(struct chap_server_
    2334                        /* Null terminate and clean remote name. */
    2435                        slprintf(rname, sizeof(rname), "%.*v", len, name);
  • trunk/openwrt/package/ppp/patches/110-debian_defaultroute.patch

    r2280 r2281  
    1 Index: ppp-2.4.3/pppd/ipcp.c
    2 ===================================================================
    3 --- ppp-2.4.3.orig/pppd/ipcp.c  2007-06-04 13:22:09.003486544 +0200
    4 +++ ppp-2.4.3/pppd/ipcp.c       2007-06-04 13:22:11.387124176 +0200
    5 @@ -197,6 +197,16 @@
     1pppd: Add "replacedefaultroute" and "noreplacedefaultroute" options
     2
     3This patch implements two new options, "replacedefaultroute" to replace any
     4existing system default route when specified and "noreplacedefaultroute" to
     5disable the "replacedefaultroute" option, which is useful in multi user
     6environments where the administrator wants to allow users to dial pppd
     7connections but not allow them to change the system default route.
     8
     9The patch originated from the Debian project.
     10
     11Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     12
     13--- a/pppd/ipcp.c
     14+++ b/pppd/ipcp.c
     15@@ -198,6 +198,14 @@ static option_t ipcp_option_list[] = {
    616       "disable defaultroute option", OPT_ALIAS | OPT_A2CLR,
    717       &ipcp_wantoptions[0].default_route },
    818 
    9 +#ifdef __linux__
    1019+    { "replacedefaultroute", o_bool,
    1120+                               &ipcp_wantoptions[0].replace_default_route,
     
    1625+      "Never replace default route", OPT_A2COPY,
    1726+                               &ipcp_wantoptions[0].replace_default_route },
    18 +#endif
    1927     { "proxyarp", o_bool, &ipcp_wantoptions[0].proxy_arp,
    2028       "Add proxy ARP entry", OPT_ENABLE|1, &ipcp_allowoptions[0].proxy_arp },
    2129     { "noproxyarp", o_bool, &ipcp_allowoptions[0].proxy_arp,
    22 @@ -263,7 +273,7 @@
     30@@ -271,7 +279,7 @@ struct protent ipcp_protent = {
    2331     ip_active_pkt
    2432 };
     
    2634-static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t));
    2735+static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t, bool));
    28  static void ipcp_script __P((char *));         /* Run an up/down script */
     36 static void ipcp_script __P((char *, int));    /* Run an up/down script */
    2937 static void ipcp_script_done __P((void *));
    3038 
    31 @@ -1659,7 +1669,12 @@
     39@@ -1742,7 +1750,8 @@ ip_demand_conf(u)
    3240     if (!sifnpmode(u, PPP_IP, NPMODE_QUEUE))
    3341        return 0;
    3442     if (wo->default_route)
    35 +#ifndef __linux__
    36         if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr))
    37 +#else
     43-       if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr))
    3844+       if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr,
    39 +                                           wo->replace_default_route))
    40 +#endif
     45+               wo->replace_default_route))
    4146            default_route_set[u] = 1;
    4247     if (wo->proxy_arp)
    4348        if (sifproxyarp(u, wo->hisaddr))
    44 @@ -1741,7 +1756,8 @@
     49@@ -1830,7 +1839,8 @@ ipcp_up(f)
    4550      */
    4651     if (demand) {
     
    5257                warn("Local IP address changed to %I", go->ouraddr);
    5358                script_setenv("OLDIPLOCAL", ip_ntoa(wo->ouraddr), 0);
    54 @@ -1766,7 +1782,12 @@
     59@@ -1855,7 +1865,8 @@ ipcp_up(f)
    5560 
    5661            /* assign a default route through the interface if required */
    5762            if (ipcp_wantoptions[f->unit].default_route)
    58 +#ifndef __linux__
    59                 if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
    60 +#else
     63-               if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
    6164+               if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr,
    62 +                                            wo->replace_default_route))
    63 +#endif
     65+                       wo->replace_default_route))
    6466                    default_route_set[f->unit] = 1;
    6567 
    6668            /* Make a proxy ARP entry if requested. */
    67 @@ -1813,7 +1834,12 @@
     69@@ -1905,7 +1916,8 @@ ipcp_up(f)
    6870 
    6971        /* assign a default route through the interface if required */
    7072        if (ipcp_wantoptions[f->unit].default_route)
    71 +#ifndef __linux__
    72             if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
    73 +#else
     73-           if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
    7474+           if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr,
    75 +                                        wo->replace_default_route))
    76 +#endif
     75+                   wo->replace_default_route))
    7776                default_route_set[f->unit] = 1;
    7877 
    7978        /* Make a proxy ARP entry if requested. */
    80 @@ -1890,7 +1916,7 @@
     79@@ -1983,7 +1995,7 @@ ipcp_down(f)
    8180        sifnpmode(f->unit, PPP_IP, NPMODE_DROP);
    8281        sifdown(f->unit);
     
    8786 
    8887     /* Execute the ip-down script */
    89 @@ -1906,16 +1932,25 @@
     88@@ -1999,16 +2011,25 @@ ipcp_down(f)
    9089  * proxy arp entries, etc.
    9190  */
     
    115114        default_route_set[unit] = 0;
    116115     }
    117 Index: ppp-2.4.3/pppd/ipcp.h
    118 ===================================================================
    119 --- ppp-2.4.3.orig/pppd/ipcp.h  2007-06-04 13:22:08.263599024 +0200
    120 +++ ppp-2.4.3/pppd/ipcp.h       2007-06-04 13:22:11.387124176 +0200
    121 @@ -70,6 +70,7 @@
     116--- a/pppd/ipcp.h
     117+++ b/pppd/ipcp.h
     118@@ -70,6 +70,7 @@ typedef struct ipcp_options {
    122119     bool old_addrs;            /* Use old (IP-Addresses) option? */
    123120     bool req_addr;             /* Ask peer to send IP address? */
     
    127124     bool neg_vj;               /* Van Jacobson Compression? */
    128125     bool old_vj;               /* use old (short) form of VJ option? */
    129 Index: ppp-2.4.3/pppd/pppd.h
    130 ===================================================================
    131 --- ppp-2.4.3.orig/pppd/pppd.h  2007-06-04 13:22:09.005486240 +0200
    132 +++ ppp-2.4.3/pppd/pppd.h       2007-06-04 13:22:11.388124024 +0200
    133 @@ -642,7 +642,11 @@
     126--- a/pppd/pppd.8
     127+++ b/pppd/pppd.8
     128@@ -121,6 +121,11 @@ the gateway, when IPCP negotiation is su
     129 This entry is removed when the PPP connection is broken.  This option
     130 is privileged if the \fInodefaultroute\fR option has been specified.
     131 .TP
     132+.B replacedefaultroute
     133+This option is a flag to the defaultroute option. If defaultroute is
     134+set and this flag is also set, pppd replaces an existing default route
     135+with the new default route.
     136+.TP
     137 .B disconnect \fIscript
     138 Execute the command specified by \fIscript\fR, by passing it to a
     139 shell, after
     140@@ -717,7 +722,12 @@ disable both forms of hardware flow cont
     141 .TP
     142 .B nodefaultroute
     143 Disable the \fIdefaultroute\fR option.  The system administrator who
     144-wishes to prevent users from creating default routes with pppd
     145+wishes to prevent users from adding a default route with pppd
     146+can do so by placing this option in the /etc/ppp/options file.
     147+.TP
     148+.B noreplacedefaultroute
     149+Disable the \fIreplacedefaultroute\fR option. The system administrator who
     150+wishes to prevent users from replacing a default route with pppd
     151 can do so by placing this option in the /etc/ppp/options file.
     152 .TP
     153 .B nodeflate
     154--- a/pppd/pppd.h
     155+++ b/pppd/pppd.h
     156@@ -645,7 +645,7 @@ int  sif6addr __P((int, eui64_t, eui64_t
    134157 int  cif6addr __P((int, eui64_t, eui64_t));
    135158                                /* Remove an IPv6 address from i/f */
    136159 #endif
    137 +#ifndef __linux__
    138  int  sifdefaultroute __P((int, u_int32_t, u_int32_t));
    139 +#else
     160-int  sifdefaultroute __P((int, u_int32_t, u_int32_t));
    140161+int  sifdefaultroute __P((int, u_int32_t, u_int32_t, bool replace_default_rt));
    141 +#endif
    142162                                /* Create default route through i/f */
    143163 int  cifdefaultroute __P((int, u_int32_t, u_int32_t));
    144164                                /* Delete default route through i/f */
    145 Index: ppp-2.4.3/pppd/sys-linux.c
    146 ===================================================================
    147 --- ppp-2.4.3.orig/pppd/sys-linux.c     2007-06-04 13:22:08.807516336 +0200
    148 +++ ppp-2.4.3/pppd/sys-linux.c  2007-06-04 13:22:11.389123872 +0200
    149 @@ -206,6 +206,8 @@
     165--- a/pppd/sys-linux.c
     166+++ b/pppd/sys-linux.c
     167@@ -206,6 +206,8 @@ static unsigned char inbuf[512]; /* buff
    150168 
    151169 static int     if_is_up;       /* Interface has been marked up */
    152  static u_int32_t default_route_gateway;        /* Gateway for default route added */
    153 +static struct rtentry old_def_rt;       /* Old default route */
    154 +static int       default_rt_repl_rest;  /* replace and restore old default rt */
     170 static int     have_default_route;     /* Gateway for default route added */
     171+static struct  rtentry old_def_rt;     /* Old default route */
     172+static int     default_rt_repl_rest;   /* replace and restore old default rt */
    155173 static u_int32_t proxy_arp_addr;       /* Addr for proxy arp entry added */
    156174 static char proxy_arp_dev[16];         /* Device for proxy arp entry */
    157175 static u_int32_t our_old_addr;         /* for detecting address changes */
    158 @@ -1520,6 +1522,9 @@
     176@@ -1544,6 +1546,9 @@ static int read_route_table(struct rtent
    159177        p = NULL;
    160178     }
     
    166184     SIN_ADDR(rt->rt_gateway) = strtoul(cols[route_gw_col], NULL, 16);
    167185     SIN_ADDR(rt->rt_genmask) = strtoul(cols[route_mask_col], NULL, 16);
    168 @@ -1589,19 +1594,53 @@
     186@@ -1613,20 +1618,51 @@ int have_route_to(u_int32_t addr)
    169187 /********************************************************************
    170188  *
     
    177195-
    178196-    if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) {
    179 -       u_int32_t old_gateway = SIN_ADDR(rt.rt_gateway);
    180 -
    181 -       if (old_gateway != gateway)
    182 -           error("not replacing existing default route to %s [%I]",
    183 -                 rt.rt_dev, old_gateway);
    184 -       return 0;
     197-       if (rt.rt_flags & RTF_GATEWAY)
     198-           error("not replacing existing default route via %I",
     199-                 SIN_ADDR(rt.rt_gateway));
     200-       else
    185201+ *
    186202+ * If the global default_rt_repl_rest flag is set, then this function
     
    198214+    struct rtentry *del_rt = NULL;
    199215+
    200 +   
    201216+    if (default_rt_repl_rest) {
    202217+       /* We have already reclaced the original defaultroute, if we
    203 +         * are called again, we will delete the current default route
    204 +         * and set the new default route in this function. 
    205 +         * - this is normally only the case the doing demand: */
    206 +       if (defaultroute_exists( &tmp_rt ))
    207 +               del_rt = &tmp_rt;
    208 +    } else if ( defaultroute_exists( &old_def_rt                ) &&
    209 +                            strcmp(  old_def_rt.rt_dev, ifname ) != 0) {
     218+          are called again, we will delete the current default route
     219+          and set the new default route in this function.
     220+          - this is normally only the case the doing demand: */
     221+       if (defaultroute_exists(&tmp_rt))
     222+           del_rt = &tmp_rt;
     223+    } else if (defaultroute_exists(&old_def_rt) &&
     224+              strcmp(old_def_rt.rt_dev, ifname) != 0) {
    210225+       /* We did not yet replace an existing default route, let's
    211 +        * check if we should save and replace a default route:
    212 +         */
    213 +       u_int32_t old_gateway = SIN_ADDR(old_def_rt.rt_gateway);
    214 +
    215 +       if (old_gateway != gateway) {
     226+          check if we should save and replace a default route: */
     227+       if (old_def_rt.rt_flags & RTF_GATEWAY) {
    216228+           if (!replace) {
    217 +               error("not replacing default route to %s [%I]",
    218 +                       old_def_rt.rt_dev, old_gateway);
     229+               error("not replacing existing default route via %I",
     230+                     SIN_ADDR(old_def_rt.rt_gateway));
    219231+               return 0;
    220232+           } else {
    221 +               // we need to copy rt_dev because we need it permanent too:
    222 +               char * tmp_dev = malloc(strlen(old_def_rt.rt_dev)+1);
     233+               /* we need to copy rt_dev because we need it permanent too: */
     234+               char *tmp_dev = malloc(strlen(old_def_rt.rt_dev) + 1);
    223235+               strcpy(tmp_dev, old_def_rt.rt_dev);
    224236+               old_def_rt.rt_dev = tmp_dev;
    225237+
    226238+               notice("replacing old default route to %s [%I]",
    227 +                       old_def_rt.rt_dev, old_gateway);
    228 +               default_rt_repl_rest = 1;
     239+                       old_def_rt.rt_dev, SIN_ADDR(old_def_rt.rt_gateway));
     240+               default_rt_repl_rest = 1;
    229241+               del_rt = &old_def_rt;
    230242+           }
    231 +       }
    232      }
    233  
    234      memset (&rt, '\0', sizeof (rt));
    235 @@ -1623,6 +1662,12 @@
     243+       } else
     244            error("not replacing existing default route through %s",
     245-                 rt.rt_dev);
     246-       return 0;
     247+                 old_def_rt.rt_dev);
     248     }
     249 
     250     memset (&rt, 0, sizeof (rt));
     251@@ -1641,10 +1677,16 @@ int sifdefaultroute (int unit, u_int32_t
     252 
     253     rt.rt_flags = RTF_UP;
     254     if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
     255-       if ( ! ok_error ( errno ))
     256+       if (!ok_error(errno))
    236257            error("default route ioctl(SIOCADDRT): %m");
    237258        return 0;
     
    239260+    if (default_rt_repl_rest && del_rt)
    240261+        if (ioctl(sock_fd, SIOCDELRT, del_rt) < 0) {
    241 +           if ( ! ok_error ( errno ))
    242 +               error("del old default route ioctl(SIOCDELRT): %m(%d)", errno);
     262+           if (!ok_error(errno))
     263+               error("del old default route ioctl(SIOCDELRT): %m");
    243264+           return 0;
    244265+        }
    245266 
    246      default_route_gateway = gateway;
     267     have_default_route = 1;
    247268     return 1;
    248 @@ -1658,6 +1703,16 @@
     269@@ -1675,11 +1717,21 @@ int cifdefaultroute (int unit, u_int32_t
     270     rt.rt_flags = RTF_UP;
     271     if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
     272        if (still_ppp()) {
     273-           if ( ! ok_error ( errno ))
     274+           if (!ok_error(errno))
     275                error("default route ioctl(SIOCDELRT): %m");
    249276            return 0;
    250277        }
     
    252279+    if (default_rt_repl_rest) {
    253280+       notice("restoring old default route to %s [%I]",
    254 +                       old_def_rt.rt_dev, SIN_ADDR(old_def_rt.rt_gateway));
     281+               old_def_rt.rt_dev, SIN_ADDR(old_def_rt.rt_gateway));
    255282+        if (ioctl(sock_fd, SIOCADDRT, &old_def_rt) < 0) {
    256 +           if ( ! ok_error ( errno ))
    257 +               error("restore default route ioctl(SIOCADDRT): %m(%d)", errno);
     283+           if (!ok_error(errno))
     284+               error("restore default route ioctl(SIOCADDRT): %m");
    258285+           return 0;
    259286+        }
     
    263290     return 1;
    264291 }
     292--- a/pppd/sys-solaris.c
     293+++ b/pppd/sys-solaris.c
     294@@ -2036,12 +2036,18 @@ cifaddr(u, o, h)
     295  * sifdefaultroute - assign a default route through the address given.
     296  */
     297 int
     298-sifdefaultroute(u, l, g)
     299+sifdefaultroute(u, l, g, replace)
     300     int u;
     301     u_int32_t l, g;
     302+    bool replace;
     303 {
     304     struct rtentry rt;
     305 
     306+    if (replace) {
     307+       error("replacedefaultroute not supported on this platform");
     308+       return 0;
     309+    }
     310+
     311 #if defined(__USLC__)
     312     g = l;                     /* use the local address as gateway */
     313 #endif
  • trunk/openwrt/package/ppp/patches/200-makefile.patch

    r1 r2281  
    1 Index: ppp-2.4.3/pppd/Makefile.linux
    2 ===================================================================
    3 --- ppp-2.4.3.orig/pppd/Makefile.linux  2007-06-04 13:22:08.197609056 +0200
    4 +++ ppp-2.4.3/pppd/Makefile.linux       2007-06-04 13:22:11.837055776 +0200
    5 @@ -48,21 +48,21 @@
     1pppd: tune Linux config defaults for OpenWrt
     2
     3This patch adjusts a number defaults to properly match the OpenWrt environment.
     4It is not intended for upstream.
     5
     6Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     7
     8--- a/pppd/Makefile.linux
     9+++ b/pppd/Makefile.linux
     10@@ -48,7 +48,7 @@ MPPE=y
    611 # Uncomment the next line to include support for PPP packet filtering.
    712 # This requires that the libpcap library and headers be installed
     
    1217 # Uncomment the next line to enable multilink PPP (enabled by default)
    1318 # Linux distributions: Please leave multilink ENABLED in your builds
    14  # of pppd!
    15 -HAVE_MULTILINK=y
    16 +#HAVE_MULTILINK=y
    17  
     19@@ -58,11 +58,11 @@ HAVE_MULTILINK=y
    1820 # Uncomment the next line to enable the TDB database (enabled by default.)
    1921 # If you enable multilink, then TDB is automatically enabled also.
     
    3032 # Enable plugins
    3133 PLUGIN=y
    32 @@ -77,7 +77,7 @@
     34@@ -77,7 +77,7 @@ MAXOCTETS=y
    3335 
    3436 INCLUDE_DIRS= -I../include
     
    3739+COMPILE_FLAGS= -DHAVE_PATHS_H -DHAVE_MMAP
    3840 
    39  CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS)
     41 CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS) '-DDESTDIR="@DESTDIR@"'
    4042 
    41 @@ -117,12 +117,12 @@
     43@@ -117,10 +117,10 @@ CFLAGS   += -DHAS_SHADOW
    4244 #LIBS     += -lshadow $(LIBS)
    4345 endif
     
    4547-ifneq ($(wildcard /usr/include/crypt.h),)
    4648+#ifneq ($(wildcard /usr/include/crypt.h),)
    47  CFLAGS   += -DHAVE_CRYPT_H=1
    48 -endif
    49 -ifneq ($(wildcard /usr/lib/libcrypt.*),)
    50 +#endif
    51 +#ifneq ($(wildcard /usr/lib/libcrypt.*),)
     49 CFLAGS  += -DHAVE_CRYPT_H=1
    5250 LIBS   += -lcrypt
    5351-endif
  • trunk/openwrt/package/ppp/patches/201-mppe_mppc_1.1.patch

    r1 r2281  
    1 Index: ppp-2.4.3/include/linux/ppp-comp.h
    2 ===================================================================
    3 --- ppp-2.4.3.orig/include/linux/ppp-comp.h     2007-06-04 13:22:08.143617264 +0200
    4 +++ ppp-2.4.3/include/linux/ppp-comp.h  2007-06-04 13:22:12.031026288 +0200
     1pppd: add support for MPPE and MPPC encryption and compression protocols
     2
     3This is a forward ported version of ppp-2.4.3-mppe-mppc-1.1.patch.gz found on
     4http://mppe-mppc.alphacron.de/ .
     5
     6Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     7
     8--- a/include/linux/ppp-comp.h
     9+++ b/include/linux/ppp-comp.h
    510@@ -36,7 +36,7 @@
    611  */
     
    1217  *  NOTE TO MAINTAINERS:
    1318  *     If you modify this file at all, please set the above date.
    14 @@ -86,7 +86,7 @@
    15  
    16         /* Compress a packet */
    17         int     (*compress) (void *state, unsigned char *rptr,
    18 -                             unsigned char *obuf, int isize, int osize);
    19 +                            unsigned char *obuf, int isize, int osize);
    20  
    21         /* Return compression statistics */
    22         void    (*comp_stat) (void *state, struct compstat *stats);
    23 @@ -107,7 +107,7 @@
    24  
    25         /* Decompress a packet. */
    26         int     (*decompress) (void *state, unsigned char *ibuf, int isize,
    27 -                               unsigned char *obuf, int osize);
    28 +                              unsigned char *obuf, int osize);
    29  
    30         /* Update state for an incompressible packet received */
    31         void    (*incomp) (void *state, unsigned char *ibuf, int icnt);
    32 @@ -288,6 +288,33 @@
    33             opts |= MPPE_OPT_UNKNOWN;           \
    34      } while (/* CONSTCOND */ 0)
     19@@ -201,6 +201,33 @@ struct compressor {
     20 #define CI_MPPE                        18      /* config option for MPPE */
     21 #define CILEN_MPPE             6       /* length of config option */
    3522 
    3623+/* MPPE/MPPC definitions by J.D.*/
     
    6451  * Definitions for other, as yet unsupported, compression methods.
    6552  */
    66 Index: ppp-2.4.3/include/net/ppp-comp.h
    67 ===================================================================
    68 --- ppp-2.4.3.orig/include/net/ppp-comp.h       2007-06-04 13:22:08.150616200 +0200
    69 +++ ppp-2.4.3/include/net/ppp-comp.h    2007-06-04 13:22:12.031026288 +0200
    70 @@ -255,6 +255,33 @@
    71             opts |= MPPE_OPT_UNKNOWN;           \
    72      } while (/* CONSTCOND */ 0)
     53--- a/include/net/ppp-comp.h
     54+++ b/include/net/ppp-comp.h
     55@@ -168,6 +168,33 @@ struct compressor {
     56 #define CI_MPPE                        18      /* config option for MPPE */
     57 #define CILEN_MPPE             6       /* length of config option */
    7358 
    7459+/* MPPE/MPPC definitions by J.D.*/
     
    10287  * Definitions for other, as yet unsupported, compression methods.
    10388  */
    104 Index: ppp-2.4.3/pppd/ccp.c
    105 ===================================================================
    106 --- ppp-2.4.3.orig/pppd/ccp.c   2007-06-04 13:22:08.157615136 +0200
    107 +++ ppp-2.4.3/pppd/ccp.c        2007-06-04 13:22:12.033025984 +0200
    108 @@ -62,12 +62,10 @@
     89--- a/pppd/ccp.c
     90+++ b/pppd/ccp.c
     91@@ -62,12 +62,10 @@ static int setdeflate __P((char **));
    10992 static char bsd_value[8];
    11093 static char deflate_value[8];
     
    122105 static option_t ccp_option_list[] = {
    123106     { "noccp", o_bool, &ccp_protent.enabled_flag,
    124 @@ -108,54 +106,36 @@
     107@@ -108,54 +106,36 @@ static option_t ccp_option_list[] = {
    125108       "don't allow Predictor-1", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
    126109       &ccp_allowoptions[0].predictor_1 },
     
    206189 
    207190     { NULL }
    208 @@ -241,7 +221,7 @@
     191@@ -241,7 +221,7 @@ static fsm_callbacks ccp_callbacks = {
    209192  */
    210193 #define ANY_COMPRESS(opt)      ((opt).deflate || (opt).bsd_compress \
     
    215198 /*
    216199  * Local state (mainly for handling reset-reqs and reset-acks).
    217 @@ -344,6 +324,100 @@
     200@@ -344,6 +324,100 @@ setdeflate(argv)
    218201     return 1;
    219202 }
     
    316299  * ccp_init - initialize CCP.
    317300  */
    318 @@ -378,6 +452,30 @@
     301@@ -378,6 +452,30 @@ ccp_init(unit)
    319302     ccp_allowoptions[0].bsd_bits = BSD_MAX_BITS;
    320303 
     
    347330 
    348331 /*
    349 @@ -455,11 +553,11 @@
     332@@ -455,11 +553,11 @@ ccp_input(unit, p, len)
    350333     if (oldstate == OPENED && p[0] == TERMREQ && f->state != OPENED) {
    351334        notice("Compression disabled by peer.");
     
    361344 
    362345     /*
    363 @@ -487,6 +585,15 @@
     346@@ -487,6 +585,15 @@ ccp_extcode(f, code, id, p, len)
    364347            break;
    365348        /* send a reset-ack, which the transmitter will see and
     
    377360        break;
    378361 
    379 @@ -515,12 +622,11 @@
     362@@ -515,12 +622,11 @@ ccp_protrej(unit)
    380363     fsm_lowerdown(&ccp_fsm[unit]);
    381364 
     
    392375 
    393376 /*
    394 @@ -537,7 +643,7 @@
     377@@ -537,7 +643,7 @@ ccp_resetci(f)
    395378     all_rejected[f->unit] = 0;
    396379 
     
    401384        int auth_mschap_bits = auth_done[f->unit];
    402385        int numbits;
    403 @@ -551,80 +657,109 @@
     386@@ -551,80 +657,109 @@ ccp_resetci(f)
    404387         * NB: If MPPE is required, all other compression opts are invalid.
    405388         *     So, we return right away if we can't do it.
     
    577560        opt_buf[0] = CI_BSD_COMPRESS;
    578561        opt_buf[1] = CILEN_BSD_COMPRESS;
    579 @@ -679,7 +814,8 @@
     562@@ -679,7 +814,8 @@ ccp_cilen(f)
    580563        + (go->deflate? CILEN_DEFLATE: 0)
    581564        + (go->predictor_1? CILEN_PREDICTOR_1: 0)
     
    587570 
    588571 /*
    589 @@ -693,6 +829,8 @@
     572@@ -693,6 +829,8 @@ ccp_addci(f, p, lenp)
    590573 {
    591574     int res;
     
    596579 
    597580     /*
    598 @@ -701,22 +839,43 @@
     581@@ -701,22 +839,43 @@ ccp_addci(f, p, lenp)
    599582      * in case it gets Acked.
    600583      */
     
    649632        p[0] = go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT;
    650633        p[1] = CILEN_DEFLATE;
    651 @@ -802,7 +961,7 @@
     634@@ -802,7 +961,7 @@ ccp_addci(f, p, lenp)
    652635 
    653636 /*
     
    658641 static int
    659642 ccp_ackci(f, p, len)
    660 @@ -811,24 +970,44 @@
     643@@ -811,24 +970,44 @@ ccp_ackci(f, p, len)
    661644     int len;
    662645 {
     
    712695        if (len < CILEN_DEFLATE
    713696            || p[0] != (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
    714 @@ -891,7 +1070,7 @@
    715  
    716  /*
    717   * ccp_nakci - process received configure-nak.
    718 - * Returns 1 iff the nak was OK.
    719 + * Returns 1 if the nak was OK.
    720   */
    721  static int
    722  ccp_nakci(f, p, len, treat_as_reject)
    723 @@ -900,6 +1079,8 @@
    724      int len;
     697@@ -901,6 +1080,8 @@ ccp_nakci(f, p, len, treat_as_reject)
     698     int treat_as_reject;
    725699 {
    726700     ccp_options *go = &ccp_gotoptions[f->unit];
     
    730704     ccp_options try;           /* options to ask for next time */
    731705 
    732 @@ -907,28 +1088,100 @@
     706@@ -908,28 +1089,100 @@ ccp_nakci(f, p, len, treat_as_reject)
    733707     try = *go;
    734708 
     
    849823        && p[0] == (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
    850824        && p[1] == CILEN_DEFLATE) {
    851 @@ -1001,14 +1254,50 @@
     825@@ -1002,14 +1255,50 @@ ccp_rejci(f, p, len)
    852826        return -1;
    853827 
     
    904878        && p[0] == CI_DEFLATE && p[1] == CILEN_DEFLATE) {
    905879        if (p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
    906 @@ -1072,14 +1361,15 @@
     880@@ -1073,14 +1362,15 @@ ccp_reqci(f, p, lenp, dont_nak)
    907881     int dont_nak;
    908882 {
     
    924898     ret = CONFACK;
    925899     retp = p0 = p;
    926 @@ -1102,103 +1392,305 @@
     900@@ -1103,106 +1393,302 @@ ccp_reqci(f, p, lenp, dont_nak)
    927901            switch (type) {
    928902 #ifdef MPPE
    929903            case CI_MPPE:
    930904-               if (!ao->mppe || clen != CILEN_MPPE) {
    931 +               if ((!ao->mppc && !ao->mppe) || clen != CILEN_MPPE) {
     905+               if ((!ao->mppc && !ao->mppe) || clen != CILEN_MPPE) {
    932906                    newret = CONFREJ;
    933907                    break;
    934908                }
    935909-               MPPE_CI_TO_OPTS(&p[2], ho->mppe);
    936  
     910-
    937911-               /* Nak if anything unsupported or unknown are set. */
    938912-               if (ho->mppe & MPPE_OPT_UNSUPPORTED) {
     
    941915-               }
    942916-               if (ho->mppe & MPPE_OPT_UNKNOWN) {
    943 +               p2 = p[2];
    944 +               p5 = p[5];
    945 +               /* not sure what they want, tell 'em what we got */
    946 +               if (((p[2] & ~MPPE_STATELESS) != 0 || p[3] != 0 || p[4] != 0 ||
    947 +                    (p[5] & ~(MPPE_40BIT | MPPE_56BIT | MPPE_128BIT |
    948 +                              MPPE_MPPC)) != 0 || p[5] == 0) ||
    949 +                   (p[2] == 0 && p[3] == 0 && p[4] == 0 &&  p[5] == 0)) {
     917+               p2 = p[2];
     918+               p5 = p[5];
     919+               /* not sure what they want, tell 'em what we got */
     920+               if (((p[2] & ~MPPE_STATELESS) != 0 || p[3] != 0 || p[4] != 0 ||
     921+                    (p[5] & ~(MPPE_40BIT | MPPE_56BIT | MPPE_128BIT |
     922+                              MPPE_MPPC)) != 0 || p[5] == 0) ||
     923+                   (p[2] == 0 && p[3] == 0 && p[4] == 0 &&  p[5] == 0)) {
    950924                    newret = CONFNAK;
    951925-                   ho->mppe &= ~MPPE_OPT_UNKNOWN;
    952 +                   p[2] = (wo->mppe_stateless ? MPPE_STATELESS : 0);
    953 +                   p[3] = 0;
    954 +                   p[4] = 0;
    955 +                   p[5] = (wo->mppe_40 ? MPPE_40BIT : 0) |
    956 +                       (wo->mppe_56 ? MPPE_56BIT : 0) |
    957 +                       (wo->mppe_128 ? MPPE_128BIT : 0) |
    958 +                       (wo->mppc ? MPPE_MPPC : 0);
    959 +                   break;
    960                 }
    961  
     926-               }
     927-
    962928-               /* Check state opt */
    963929-               if (ho->mppe & MPPE_OPT_STATEFUL) {
     
    970936-                  if (refuse_mppe_stateful) {
    971937-                       error("Refusing MPPE stateful mode offered by peer");
    972 +               if ((p[5] & MPPE_MPPC)) {
    973 +                   if (ao->mppc) {
    974 +                       ho->mppc = 1;
    975 +                       BCOPY(p, opt_buf, CILEN_MPPE);
    976 +                       opt_buf[2] = opt_buf[3] = opt_buf[4] = 0;
    977 +                       opt_buf[5] = MPPE_MPPC;
    978 +                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE, 1) <= 0) {
    979 +                           ho->mppc = 0;
    980 +                           p[5] &= ~MPPE_MPPC;
    981 +                           newret = CONFNAK;
    982 +                       }
    983 +                   } else {
    984                         newret = CONFREJ;
     938-                       newret = CONFREJ;
    985939-                       break;
    986 +                       if (wo->mppe || ao->mppe) {
    987 +                           p[5] &= ~MPPE_MPPC;
    988 +                           newret = CONFNAK;
    989 +                       }
    990 +                   }
    991 +               }
    992 +
    993 +               if (ao->mppe)
    994 +                   ho->mppe = 1;
    995 +
    996 +               if ((p[2] & MPPE_STATELESS)) {
    997 +                   if (ao->mppe_stateless) {
    998 +                       if (wo->mppe_stateless)
    999 +                           ho->mppe_stateless = 1;
    1000 +                       else {
    1001 +                           newret = CONFNAK;
    1002 +                           if (!dont_nak)
    1003 +                               p[2] &= ~MPPE_STATELESS;
    1004 +                       }
    1005 +                   } else {
    1006 +                       newret = CONFNAK;
    1007 +                       if (!dont_nak)
    1008 +                           p[2] &= ~MPPE_STATELESS;
    1009 +                   }
    1010 +               } else {
    1011 +                   if (wo->mppe_stateless && !dont_nak) {
    1012 +                       wo->mppe_stateless = 0;
    1013 +                       newret = CONFNAK;
    1014 +                       p[2] |= MPPE_STATELESS;
     940+                   p[2] = (wo->mppe_stateless ? MPPE_STATELESS : 0);
     941+                   p[3] = 0;
     942+                   p[4] = 0;
     943+                   p[5] = (wo->mppe_40 ? MPPE_40BIT : 0) |
     944+                       (wo->mppe_56 ? MPPE_56BIT : 0) |
     945+                       (wo->mppe_128 ? MPPE_128BIT : 0) |
     946+                       (wo->mppc ? MPPE_MPPC : 0);
     947+                   break;
     948+               }
     949+
     950+               if ((p[5] & MPPE_MPPC)) {
     951+                   if (ao->mppc) {
     952+                       ho->mppc = 1;
     953+                       BCOPY(p, opt_buf, CILEN_MPPE);
     954+                       opt_buf[2] = opt_buf[3] = opt_buf[4] = 0;
     955+                       opt_buf[5] = MPPE_MPPC;
     956+                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE, 1) <= 0) {
     957+                           ho->mppc = 0;
     958+                           p[5] &= ~MPPE_MPPC;
     959+                           newret = CONFNAK;
     960+                       }
     961+                   } else {
     962+                     newret = CONFREJ;
     963+                       if (wo->mppe || ao->mppe) {
     964+                           p[5] &= ~MPPE_MPPC;
     965+                           newret = CONFNAK;
     966+                       }
    1015967                    }
    1016968                }
    1017  
     969-
    1018970-               /* Find out which of {S,L} are set. */
    1019971-               if ((ho->mppe & MPPE_OPT_128)
    1020972-                    && (ho->mppe & MPPE_OPT_40)) {
    1021973-                   /* Both are set, negotiate the strongest. */
    1022 +               if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_56BIT|MPPE_128BIT)) {
    1023                     newret = CONFNAK;
     974-                   newret = CONFNAK;
    1024975-                   if (ao->mppe & MPPE_OPT_128)
    1025976-                       ho->mppe &= ~MPPE_OPT_40;
     
    1029980-                       newret = CONFREJ;
    1030981-                       break;
    1031 +                   if (ao->mppe_128) {
    1032 +                       ho->mppe_128 = 1;
    1033 +                       p[5] &= ~(MPPE_40BIT|MPPE_56BIT);
    1034 +                       BCOPY(p, opt_buf, CILEN_MPPE);
    1035 +                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
    1036 +                             MPPE_MAX_KEY_LEN);
    1037 +                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
    1038 +                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
    1039 +                           ho->mppe_128 = 0;
    1040 +                           p[5] |= (MPPE_40BIT|MPPE_56BIT);
    1041 +                           p[5] &= ~MPPE_128BIT;
    1042 +                           goto check_mppe_56_40;
    1043 +                       }
    1044 +                       goto check_mppe;
    1045                     }
     982-                   }
    1046983-               } else if (ho->mppe & MPPE_OPT_128) {
    1047984-                   if (!(ao->mppe & MPPE_OPT_128)) {
    1048985-                       newret = CONFREJ;
    1049986-                       break;
    1050 +                   p[5] &= ~MPPE_128BIT;
    1051 +                   goto check_mppe_56_40;
    1052 +               }
    1053 +               if ((p[5] & ~MPPE_MPPC) == (MPPE_56BIT|MPPE_128BIT)) {
    1054 +                   newret = CONFNAK;
    1055 +                   if (ao->mppe_128) {
    1056 +                       ho->mppe_128 = 1;
    1057 +                       p[5] &= ~MPPE_56BIT;
    1058 +                       BCOPY(p, opt_buf, CILEN_MPPE);
    1059 +                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
    1060 +                             MPPE_MAX_KEY_LEN);
    1061 +                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
    1062 +                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
    1063 +                           ho->mppe_128 = 0;
    1064 +                           p[5] |= MPPE_56BIT;
    1065 +                           p[5] &= ~MPPE_128BIT;
    1066 +                           goto check_mppe_56;
    1067 +                       }
    1068 +                       goto check_mppe;
    1069                     }
     987-                   }
    1070988-               } else if (ho->mppe & MPPE_OPT_40) {
    1071989-                   if (!(ao->mppe & MPPE_OPT_40)) {
    1072990-                       newret = CONFREJ;
    1073991-                       break;
     992-                   }
     993+               if (ao->mppe)
     994+                   ho->mppe = 1;
     995+
     996+               if ((p[2] & MPPE_STATELESS)) {
     997+                   if (ao->mppe_stateless) {
     998+                       if (wo->mppe_stateless)
     999+                           ho->mppe_stateless = 1;
     1000+                       else {
     1001+                           newret = CONFNAK;
     1002+                           if (!dont_nak)
     1003+                               p[2] &= ~MPPE_STATELESS;
     1004+                       }
     1005+                   } else {
     1006+                       newret = CONFNAK;
     1007+                       if (!dont_nak)
     1008+                           p[2] &= ~MPPE_STATELESS;
     1009+                   }
     1010+               } else {
     1011+                   if (wo->mppe_stateless && !dont_nak) {
     1012+                       wo->mppe_stateless = 0;
     1013+                       newret = CONFNAK;
     1014+                       p[2] |= MPPE_STATELESS;
     1015+                   }
     1016+               }
     1017
     1018+               if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_56BIT|MPPE_128BIT)) {
     1019+                   newret = CONFNAK;
     1020+                   if (ao->mppe_128) {
     1021+                       ho->mppe_128 = 1;
     1022+                       p[5] &= ~(MPPE_40BIT|MPPE_56BIT);
     1023+                       BCOPY(p, opt_buf, CILEN_MPPE);
     1024+                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
     1025+                             MPPE_MAX_KEY_LEN);
     1026+                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
     1027+                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
     1028+                           ho->mppe_128 = 0;
     1029+                           p[5] |= (MPPE_40BIT|MPPE_56BIT);
     1030+                           p[5] &= ~MPPE_128BIT;
     1031+                           goto check_mppe_56_40;
     1032+                       }
     1033+                       goto check_mppe;
     1034+                   }
     1035+                   p[5] &= ~MPPE_128BIT;
     1036+                   goto check_mppe_56_40;
     1037+               }
     1038+               if ((p[5] & ~MPPE_MPPC) == (MPPE_56BIT|MPPE_128BIT)) {
     1039+                   newret = CONFNAK;
     1040+                   if (ao->mppe_128) {
     1041+                       ho->mppe_128 = 1;
     1042+                       p[5] &= ~MPPE_56BIT;
     1043+                       BCOPY(p, opt_buf, CILEN_MPPE);
     1044+                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
     1045+                             MPPE_MAX_KEY_LEN);
     1046+                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
     1047+                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
     1048+                           ho->mppe_128 = 0;
     1049+                           p[5] |= MPPE_56BIT;
     1050+                           p[5] &= ~MPPE_128BIT;
     1051+                           goto check_mppe_56;
     1052+                       }
     1053+                       goto check_mppe;
     1054+                   }
     1055+                   p[5] &= ~MPPE_128BIT;
     1056+                   goto check_mppe_56;
     1057+               }
     1058+               if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_128BIT)) {
     1059+                   newret = CONFNAK;
     1060+                   if (ao->mppe_128) {
     1061+                       ho->mppe_128 = 1;
     1062+                       p[5] &= ~MPPE_40BIT;
     1063+                       BCOPY(p, opt_buf, CILEN_MPPE);
     1064+                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
     1065+                             MPPE_MAX_KEY_LEN);
     1066+                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
     1067+                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
     1068+                           ho->mppe_128 = 0;
     1069+                           p[5] |= MPPE_40BIT;
     1070+                           p[5] &= ~MPPE_128BIT;
     1071+                           goto check_mppe_40;
     1072+                       }
     1073+                       goto check_mppe;
     1074+                   }
     1075+                   p[5] &= ~MPPE_128BIT;
     1076+                   goto check_mppe_40;
     1077+               }
     1078+               if ((p[5] & ~MPPE_MPPC) == MPPE_128BIT) {
     1079+                   if (ao->mppe_128) {
     1080+                       ho->mppe_128 = 1;
     1081+                       BCOPY(p, opt_buf, CILEN_MPPE);
     1082+                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
     1083+                             MPPE_MAX_KEY_LEN);
     1084+                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
     1085+                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
     1086+                           ho->mppe_128 = 0;
     1087+                           p[5] &= ~MPPE_128BIT;
     1088+                           newret = CONFNAK;
     1089+                       }
     1090+                       goto check_mppe;
     1091+                   }
    10741092+                   p[5] &= ~MPPE_128BIT;
    1075 +                   goto check_mppe_56;
    1076 +               }
    1077 +               if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_128BIT)) {
    1078 +                   newret = CONFNAK;
    1079 +                   if (ao->mppe_128) {
    1080 +                       ho->mppe_128 = 1;
    1081 +                       p[5] &= ~MPPE_40BIT;
     1093+                   newret = CONFNAK;
     1094+                   goto check_mppe;
     1095+               }
     1096+           check_mppe_56_40:
     1097+               if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_56BIT)) {
     1098+                   newret = CONFNAK;
     1099+                   if (ao->mppe_56) {
     1100+                       ho->mppe_56 = 1;
     1101+                       p[5] &= ~MPPE_40BIT;
    10821102+                       BCOPY(p, opt_buf, CILEN_MPPE);
     1103+                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
     1104+                             MPPE_MAX_KEY_LEN);
     1105+                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
     1106+                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
     1107+                           ho->mppe_56 = 0;
     1108+                           p[5] |= MPPE_40BIT;
     1109+                           p[5] &= ~MPPE_56BIT;
     1110+                           newret = CONFNAK;
     1111+                           goto check_mppe_40;
     1112+                       }
     1113+                       goto check_mppe;
     1114+                   }
     1115+                   p[5] &= ~MPPE_56BIT;
     1116+                   goto check_mppe_40;
     1117+               }
     1118+           check_mppe_56:
     1119+               if ((p[5] & ~MPPE_MPPC) == MPPE_56BIT) {
     1120+                   if (ao->mppe_56) {
     1121+                       ho->mppe_56 = 1;
     1122+                       BCOPY(p, opt_buf, CILEN_MPPE);
     1123+                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
     1124+                             MPPE_MAX_KEY_LEN);
     1125+                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
     1126+                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
     1127+                           ho->mppe_56 = 0;
     1128+                           p[5] &= ~MPPE_56BIT;
     1129+                           newret = CONFNAK;
     1130+                       }
     1131+                       goto check_mppe;
     1132+                   }
     1133+                   p[5] &= ~MPPE_56BIT;
     1134+                   newret = CONFNAK;
     1135+                   goto check_mppe;
     1136+               }
     1137+           check_mppe_40:
     1138+               if ((p[5] & ~MPPE_MPPC) == MPPE_40BIT) {
     1139+                   if (ao->mppe_40) {
     1140+                       ho->mppe_40 = 1;
     1141+                       BCOPY(p, opt_buf, CILEN_MPPE);
    10831142+                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
    1084 +                             MPPE_MAX_KEY_LEN);
    1085 +                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
    1086 +                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
    1087 +                           ho->mppe_128 = 0;
    1088 +                           p[5] |= MPPE_40BIT;
    1089 +                           p[5] &= ~MPPE_128BIT;
    1090 +                           goto check_mppe_40;
    1091 +                       }
    1092 +                       goto check_mppe;
    1093 +                   }
    1094 +                   p[5] &= ~MPPE_128BIT;
    1095 +                   goto check_mppe_40;
    1096 +               }
    1097 +               if ((p[5] & ~MPPE_MPPC) == MPPE_128BIT) {
    1098 +                   if (ao->mppe_128) {
    1099 +                       ho->mppe_128 = 1;
    1100 +                       BCOPY(p, opt_buf, CILEN_MPPE);
    1101 +                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
    1102 +                             MPPE_MAX_KEY_LEN);
    1103 +                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
    1104 +                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
    1105 +                           ho->mppe_128 = 0;
    1106 +                           p[5] &= ~MPPE_128BIT;
    1107 +                           newret = CONFNAK;
    1108 +                       }
    1109 +                       goto check_mppe;
    1110 +                   }
    1111 +                   p[5] &= ~MPPE_128BIT;
    1112 +                   newret = CONFNAK;
    1113 +                   goto check_mppe;
    1114 +               }
    1115 +           check_mppe_56_40:
    1116 +               if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_56BIT)) {
    1117 +                   newret = CONFNAK;
    1118 +                   if (ao->mppe_56) {
    1119 +                       ho->mppe_56 = 1;
    1120 +                       p[5] &= ~MPPE_40BIT;
    1121 +                       BCOPY(p, opt_buf, CILEN_MPPE);
    1122 +                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
    1123 +                             MPPE_MAX_KEY_LEN);
    1124 +                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
    1125 +                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
    1126 +                           ho->mppe_56 = 0;
    1127 +                           p[5] |= MPPE_40BIT;
    1128 +                           p[5] &= ~MPPE_56BIT;
    1129 +                           newret = CONFNAK;
    1130 +                           goto check_mppe_40;
    1131 +                       }
    1132 +                       goto check_mppe;
    1133 +                   }
    1134 +                   p[5] &= ~MPPE_56BIT;
    1135 +                   goto check_mppe_40;
    1136 +               }
    1137 +           check_mppe_56:
    1138 +               if ((p[5] & ~MPPE_MPPC) == MPPE_56BIT) {
    1139 +                   if (ao->mppe_56) {
    1140 +                       ho->mppe_56 = 1;
    1141 +                       BCOPY(p, opt_buf, CILEN_MPPE);
    1142 +                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
    1143 +                             MPPE_MAX_KEY_LEN);
    1144 +                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
    1145 +                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
    1146 +                           ho->mppe_56 = 0;
    1147 +                           p[5] &= ~MPPE_56BIT;
    1148 +                           newret = CONFNAK;
    1149 +                       }
    1150 +                       goto check_mppe;
    1151 +                   }
    1152 +                   p[5] &= ~MPPE_56BIT;
    1153 +                   newret = CONFNAK;
    1154 +                   goto check_mppe;
    1155 +               }
    1156 +           check_mppe_40:
    1157 +               if ((p[5] & ~MPPE_MPPC) == MPPE_40BIT) {
    1158 +                   if (ao->mppe_40) {
    1159 +                       ho->mppe_40 = 1;
    1160 +                       BCOPY(p, opt_buf, CILEN_MPPE);
    1161 +                       BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
    1162 +                             MPPE_MAX_KEY_LEN);
    1163 +                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
    1164 +                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
    1165 +                           ho->mppe_40 = 0;
     1143+                             MPPE_MAX_KEY_LEN);
     1144+                       if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
     1145+                                    MPPE_MAX_KEY_LEN, 1) <= 0) {
     1146+                           ho->mppe_40 = 0;
    11661147+                           p[5] &= ~MPPE_40BIT;
    1167 +                           newret = CONFNAK;
    1168 +                       }
    1169 +                       goto check_mppe;
    1170 +                   }
    1171 +                   p[5] &= ~MPPE_40BIT;
    1172 +               }
    1173 +
    1174 +           check_mppe:
    1175 +               if (!ho->mppe_40 && !ho->mppe_56 && !ho->mppe_128) {
    1176 +                   if (wo->mppe_40 || wo->mppe_56 || wo->mppe_128) {
    1177 +                       newret = CONFNAK;
    1178 +                       p[2] |= (wo->mppe_stateless ? MPPE_STATELESS : 0);
     1148+                           newret = CONFNAK;
     1149+                       }
     1150+                       goto check_mppe;
     1151+                   }
     1152+                   p[5] &= ~MPPE_40BIT;
     1153+               }
     1154+ 
     1155+           check_mppe:
     1156+               if (!ho->mppe_40 && !ho->mppe_56 && !ho->mppe_128) {
     1157+                   if (wo->mppe_40 || wo->mppe_56 || wo->mppe_128) {
     1158+                       newret = CONFNAK;
     1159+                       p[2] |= (wo->mppe_stateless ? MPPE_STATELESS : 0);
    11791160+                       p[5] |= (wo->mppe_40 ? MPPE_40BIT : 0) |
    1180 +                           (wo->mppe_56 ? MPPE_56BIT : 0) |
    1181 +                           (wo->mppe_128 ? MPPE_128BIT : 0) |
    1182 +                           (wo->mppc ? MPPE_MPPC : 0);
    1183 +                   } else {
    1184 +                       ho->mppe = ho->mppe_stateless = 0;
    1185                     }
     1161+                           (wo->mppe_56 ? MPPE_56BIT : 0) |
     1162+                           (wo->mppe_128 ? MPPE_128BIT : 0) |
     1163+                           (wo->mppc ? MPPE_MPPC : 0);
     1164+                   } else {
     1165+                       ho->mppe = ho->mppe_stateless = 0;
     1166+                   }
    11861167                } else {
    11871168-                   /* Neither are set. */
    1188 +                   /* MPPE is not compatible with other compression types */
    1189 +                   if (wo->mppe) {
    1190 +                       ao->bsd_compress = 0;
    1191 +                       ao->predictor_1 = 0;
    1192 +                       ao->predictor_2 = 0;
    1193 +                       ao->deflate = 0;
    1194 +                       ao->lzs = 0;
    1195 +                   }
    1196 +               }
    1197 +               if ((!ho->mppc || !ao->mppc) && !ho->mppe) {
    1198 +                   p[2] = p2;
    1199 +                   p[5] = p5;
    1200                     newret = CONFREJ;
    1201                     break;
    1202                 }
    1203  
     1169-                   /* We cannot accept this.  */
     1170-                   newret = CONFNAK;
     1171-                   /* Give the peer our idea of what can be used,
     1172-                      so it can choose and confirm */
     1173-                   ho->mppe = ao->mppe;
     1174-               }
     1175-
    12041176-               /* rebuild the opts */
    12051177-               MPPE_OPTS_TO_CI(ho->mppe, &p[2]);
     
    12301202-                       newret = CONFREJ;
    12311203-               }
    1232 +               /*
    1233 +                * I have commented the code below because according to RFC1547
    1234 +                * MTU is only information for higher level protocols about
    1235 +                * "the maximum allowable length for a packet (q.v.) transmitted
    1236 +                * over a point-to-point link without incurring network layer
    1237 +                * fragmentation." Of course a PPP implementation should be able
    1238 +                * to handle overhead added by MPPE - in our case apropriate code
    1239 +                * is located in drivers/net/ppp_generic.c in the kernel sources.
    1240 +                *
    1241 +                * According to RFC1661:
    1242 +                * - when negotiated MRU is less than 1500 octets, a PPP
    1243 +                *   implementation must still be able to receive at least 1500
    1244 +                *   octets,
    1245 +                * - when PFC is negotiated, a PPP implementation is still
    1246 +                *   required to receive frames with uncompressed protocol field.
    1247 +                *
    1248 +                * So why not to handle MPPE overhead without changing MTU value?
    1249 +                * I am sure that RFC3078, unfortunately silently, assumes that.
    1250 +                */
    1251  
    1252                 /*
     1204-
     1205-               /*
    12531206-                * We have accepted MPPE or are willing to negotiate
    12541207-                * MPPE parameters.  A CONFREJ is due to subsequent
    12551208-                * (non-MPPE) processing.
    1256 +                * We need to decrease the interface MTU by MPPE_PAD
    1257 +                * because MPPE frames **grow**.  The kernel [must]
    1258 +                * allocate MPPE_PAD extra bytes in xmit buffers.
    1259                  */
     1209-                */
    12601210-               rej_for_ci_mppe = 0;
    1261 +/*
    1262 +               mtu = netif_get_mtu(f->unit);
    1263 +               if (mtu) {
    1264 +                   netif_set_mtu(f->unit, mtu - MPPE_PAD);
    1265 +               } else {
     1211-               break;
     1212-#endif /* MPPE */
     1213+                   /* MPPE is not compatible with other compression types */
     1214+                   if (wo->mppe) {
     1215+                       ao->bsd_compress = 0;
     1216+                       ao->predictor_1 = 0;
     1217+                       ao->predictor_2 = 0;
     1218+                       ao->deflate = 0;
     1219+                       ao->lzs = 0;
     1220+                   }
     1221+               }
     1222+               if ((!ho->mppc || !ao->mppc) && !ho->mppe) {
     1223+                   p[2] = p2;
     1224+                   p[5] = p5;
     1225+                   newret = CONFREJ;
     1226+                   break;
     1227+               }
     1228
     1229+               /*
     1230+                * I have commented the code below because according to RFC1547
     1231+                * MTU is only information for higher level protocols about
     1232+                * "the maximum allowable length for a packet (q.v.) transmitted
     1233+                * over a point-to-point link without incurring network layer
     1234+                * fragmentation." Of course a PPP implementation should be able
     1235+                * to handle overhead added by MPPE - in our case apropriate code
     1236+                * is located in drivers/net/ppp_generic.c in the kernel sources.
     1237+                *
     1238+                * According to RFC1661:
     1239+                * - when negotiated MRU is less than 1500 octets, a PPP
     1240+                *   implementation must still be able to receive at least 1500
     1241+                *   octets,
     1242+                * - when PFC is negotiated, a PPP implementation is still
     1243+                *   required to receive frames with uncompressed protocol field.
     1244+                *
     1245+                * So why not to handle MPPE overhead without changing MTU value?
     1246+                * I am sure that RFC3078, unfortunately silently, assumes that.
     1247+                */
     1248+
     1249+               /*
     1250+                * We need to decrease the interface MTU by MPPE_PAD
     1251+                * because MPPE frames **grow**.  The kernel [must]
     1252+                * allocate MPPE_PAD extra bytes in xmit buffers.
     1253+                */
     1254+ /*
     1255+               mtu = netif_get_mtu(f->unit);
     1256+               if (mtu) {
     1257+                   netif_set_mtu(f->unit, mtu - MPPE_PAD);
     1258+               } else {
    12661259+                   newret = CONFREJ;
    1267 +                   if (ccp_wantoptions[f->unit].mppe) {
    1268 +                       error("Cannot adjust MTU needed by MPPE.");
    1269 +                       lcp_close(f->unit, "Cannot adjust MTU needed by MPPE.");
    1270 +                   }
    1271 +               }
    1272 +*/
    1273                 break;
    1274  #endif /* MPPE */
    1275 +
     1260+                   if (ccp_wantoptions[f->unit].mppe) {
     1261+                       error("Cannot adjust MTU needed by MPPE.");
     1262+                       lcp_close(f->unit, "Cannot adjust MTU needed by MPPE.");
     1263+                   }
     1264+               }
     1265+ */
     1266+               break;
     1267+ #endif /* MPPE */
     1268+ 
    12761269+           case CI_LZS:
    1277 +               if (!ao->lzs || clen != CILEN_LZS) {
    1278 +                   newret = CONFREJ;
    1279 +                   break;
    1280 +               }
    1281 +
    1282 +               ho->lzs = 1;
     1270+               if (!ao->lzs || clen != CILEN_LZS) {
     1271+                   newret = CONFREJ;
     1272+                   break;
     1273+               }
     1274+ 
     1275+               ho->lzs = 1;
    12831276+               ho->lzs_hists = (p[2] << 8) | p[3];
    1284 +               ho->lzs_mode = p[4];
    1285 +               if ((ho->lzs_hists != ao->lzs_hists) ||
     1277+               ho->lzs_mode = p[4];
     1278+       if ((ho->lzs_hists != ao->lzs_hists) ||
    12861279+                   (ho->lzs_mode != ao->lzs_mode)) {
    1287 +                   newret = CONFNAK;
    1288 +                   if (!dont_nak) {
    1289 +                       p[2] = ao->lzs_hists >> 8;
    1290 +                       p[3] = ao->lzs_hists & 0xff;
    1291 +                       p[4] = ao->lzs_mode;
    1292 +                   } else
    1293 +                       break;
    1294 +               }
    1295 +
    1296 +               if (p == p0 && ccp_test(f->unit, p, CILEN_LZS, 1) <= 0) {
    1297 +                   newret = CONFREJ;
    1298 +               }
    1299 +               break;
    1300 +
     1280+                   newret = CONFNAK;
     1281+                   if (!dont_nak) {
     1282+                       p[2] = ao->lzs_hists >> 8;
     1283+                       p[3] = ao->lzs_hists & 0xff;
     1284+                       p[4] = ao->lzs_mode;
     1285+           } else
     1286+                       break;
     1287+               }
     1288+
     1289+               if (p == p0 && ccp_test(f->unit, p, CILEN_LZS, 1) <= 0) {
     1290+                   newret = CONFREJ;
     1291+               }
     1292+               break;
    13011293            case CI_DEFLATE:
    13021294            case CI_DEFLATE_DRAFT:
    13031295                if (!ao->deflate || clen != CILEN_DEFLATE
    1304 @@ -1340,12 +1832,6 @@
     1296@@ -1344,12 +1830,6 @@ ccp_reqci(f, p, lenp, dont_nak)
    13051297        else
    13061298            *lenp = retp - p0;
     
    13151307 }
    13161308 
    1317 @@ -1367,24 +1853,35 @@
     1309@@ -1371,24 +1851,35 @@ method_name(opt, opt2)
    13181310        char *p = result;
    13191311        char *q = result + sizeof(result); /* 1 past result */
     
    13671359     case CI_DEFLATE_DRAFT:
    13681360        if (opt2 != NULL && opt2->deflate_size != opt->deflate_size)
    1369 @@ -1440,12 +1937,12 @@
     1361@@ -1444,12 +1935,12 @@ ccp_up(f)
    13701362     } else if (ANY_COMPRESS(*ho))
    13711363        notice("%s transmit compression enabled", method_name(ho, NULL));
     
    13821374 
    13831375 /*
    1384 @@ -1468,7 +1965,7 @@
     1376@@ -1472,7 +1963,7 @@ ccp_down(f)
    13851377            lcp_close(f->unit, "MPPE disabled");
    13861378        }
     
    13911383 
    13921384 /*
    1393 @@ -1528,24 +2025,28 @@
     1385@@ -1532,24 +2023,28 @@ ccp_printpkt(p, plen, printer, arg)
    13941386 #ifdef MPPE
    13951387            case CI_MPPE:
     
    14321424            case CI_DEFLATE_DRAFT:
    14331425                if (optlen >= CILEN_DEFLATE) {
    1434 @@ -1631,6 +2132,7 @@
     1426@@ -1635,6 +2130,7 @@ ccp_datainput(unit, pkt, len)
    14351427            error("Lost compression sync: disabling compression");
    14361428            ccp_close(unit, "Lost compression sync");
     
    14401432             * If we were doing MPPE, we must also take the link down.
    14411433             */
    1442 @@ -1638,9 +2140,18 @@
     1434@@ -1642,9 +2138,18 @@ ccp_datainput(unit, pkt, len)
    14431435                error("Too many MPPE errors, closing LCP");
    14441436                lcp_close(unit, "Too many MPPE errors");
     
    14601452             * We don't do that if we are still waiting for an
    14611453             * acknowledgement to a previous reset-request.
    1462 @@ -1671,4 +2182,3 @@
    1463      } else
    1464         ccp_localstate[f->unit] &= ~RACK_PENDING;
    1465  }
    1466 -
    1467 Index: ppp-2.4.3/pppd/ccp.h
    1468 ===================================================================
    1469 --- ppp-2.4.3.orig/pppd/ccp.h   2007-06-04 13:22:08.162614376 +0200
    1470 +++ ppp-2.4.3/pppd/ccp.h        2007-06-04 13:22:12.033025984 +0200
    1471 @@ -37,9 +37,17 @@
     1454--- a/pppd/ccp.h
     1455+++ b/pppd/ccp.h
     1456@@ -37,9 +37,17 @@ typedef struct ccp_options {
    14721457     bool predictor_2;          /* do Predictor-2? */
    14731458     bool deflate_correct;      /* use correct code for deflate? */
     
    14871472 } ccp_options;
    14881473 
    1489 Index: ppp-2.4.3/pppd/chap_ms.c
    1490 ===================================================================
    1491 --- ppp-2.4.3.orig/pppd/chap_ms.c       2007-06-04 13:22:08.168613464 +0200
    1492 +++ ppp-2.4.3/pppd/chap_ms.c    2007-06-04 13:22:12.033025984 +0200
    1493 @@ -895,13 +895,17 @@
     1474--- a/pppd/chap_ms.c
     1475+++ b/pppd/chap_ms.c
     1476@@ -898,13 +898,17 @@ set_mppe_enc_types(int policy, int types
    14941477     /*
    14951478      * Disable undesirable encryption types.  Note that we don't ENABLE
     
    15111494        default:
    15121495            break;
    1513 Index: ppp-2.4.3/pppd/pppd.8
    1514 ===================================================================
    1515 --- ppp-2.4.3.orig/pppd/pppd.8  2007-06-04 13:22:08.175612400 +0200
    1516 +++ ppp-2.4.3/pppd/pppd.8       2007-06-04 13:22:12.034025832 +0200
    1517 @@ -622,9 +622,29 @@
    1518  Enables the use of PPP multilink; this is an alias for the `multilink'
    1519  option.  This option is currently only available under Linux.
    1520  .TP
    1521 -.B mppe\-stateful
    1522 -Allow MPPE to use stateful mode.  Stateless mode is still attempted first.
    1523 -The default is to disallow stateful mode. 
    1524 +.B mppc
    1525 +Enables MPPC (Microsoft Point to Point Compression).  This is the default.
    1526 +.TP
    1527 +.B mppe \fIsubopt1[,subopt2[,subopt3[..]]]
    1528 +Modify MPPE (Microsoft Point to Point Encryption) parameters. In order
    1529 +for MPPE to successfully come up, you must have authenticated with either
    1530 +MS-CHAP or MS-CHAPv2. By default MPPE is optional, it means that pppd will
    1531 +not propose MPPE to the peer, but will negotiate MPPE if peer wants that.
    1532 +You can change this using \fIrequired\fR suboption.
    1533 +This option is presently only supported under Linux, and only if your
    1534 +kernel has been configured to include MPPE support.
    1535 +.IP
    1536 +MPPE suboptions:
    1537 +.br
    1538 +\fIrequired\fR - require MPPE; disconnect if peer doesn't support it,
    1539 +.br
    1540 +\fIstateless\fR - try to negotiate stateless mode; default is stateful,
    1541 +.br
    1542 +\fIno40\fR - disable 40 bit keys,
    1543 +.br
    1544 +\fIno56\fR - disable 56 bit keys,
    1545 +.br
    1546 +\fIno128\fR - disable 128 bit keys
    1547  .TP
    1548  .B mpshortseq
    1549  Enables the use of short (12-bit) sequence numbers in multilink
    1550 @@ -757,17 +777,11 @@
    1551  Disables the use of PPP multilink.  This option is currently only
    1552  available under Linux.
    1553  .TP
    1554 -.B nomppe
    1555 -Disables MPPE (Microsoft Point to Point Encryption).  This is the default.
    1556 -.TP
    1557 -.B nomppe\-40
    1558 -Disable 40-bit encryption with MPPE.
    1559 +.B nomppc
    1560 +Disables MPPC (Microsoft Point to Point Compression).
    1561  .TP
    1562 -.B nomppe\-128
    1563 -Disable 128-bit encryption with MPPE.
    1564 -.TP
    1565 -.B nomppe\-stateful
    1566 -Disable MPPE stateful mode.  This is the default.
    1567 +.B nomppe
    1568 +Disables MPPE (Microsoft Point to Point Encryption).
    1569  .TP
    1570  .B nompshortseq
    1571  Disables the use of short (12-bit) sequence numbers in the PPP
    1572 @@ -948,19 +962,6 @@
    1573  Require the peer to authenticate itself using CHAP [Challenge
    1574  Handshake Authentication Protocol] authentication.
    1575  .TP
    1576 -.B require\-mppe
    1577 -Require the use of MPPE (Microsoft Point to Point Encryption).  This
    1578 -option disables all other compression types.  This option enables
    1579 -both 40-bit and 128-bit encryption.  In order for MPPE to successfully
    1580 -come up, you must have authenticated with either MS\-CHAP or MS\-CHAPv2.
    1581 -This option is presently only supported under Linux, and only if your
    1582 -kernel has been configured to include MPPE support.
    1583 -.TP
    1584 -.B require\-mppe\-40
    1585 -Require the use of MPPE, with 40-bit encryption.
    1586 -.TP
    1587 -.B require\-mppe\-128
    1588 -Require the use of MPPE, with 128-bit encryption.
    1589  .TP
    1590  .B require\-mschap
    1591  Require the peer to authenticate itself using MS\-CHAP [Microsoft Challenge
  • trunk/openwrt/package/ppp/patches/202-no_strip.patch

    r2280 r2281  
    1 Index: ppp-2.4.3/chat/Makefile.linux
    2 ===================================================================
    3 --- ppp-2.4.3.orig/chat/Makefile.linux  2007-06-04 13:22:08.064629272 +0200
    4 +++ ppp-2.4.3/chat/Makefile.linux       2007-06-04 13:22:12.463960472 +0200
    5 @@ -25,7 +25,7 @@
     1build: Do not strip binaries on install
     2
     3Strippign executables should be handled by the distro packaging, not by ppp
     4itself. This patch removes the "-s" (strip) switch from all "install" commands
     5in order to install unstripped binaries into the destination prefix.
     6
     7Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     8
     9--- a/chat/Makefile.linux
     10+++ b/chat/Makefile.linux
     11@@ -25,7 +25,7 @@ chat.o:       chat.c
    612 
    713 install: chat
    8         mkdir -p $(BINDIR)
     14        mkdir -p $(BINDIR) $(MANDIR)
    915-       $(INSTALL) -s -c chat $(BINDIR)
    1016+       $(INSTALL) -c chat $(BINDIR)
     
    1218 
    1319 clean:
    14 Index: ppp-2.4.3/pppd/Makefile.linux
    15 ===================================================================
    16 --- ppp-2.4.3.orig/pppd/Makefile.linux  2007-06-04 13:22:11.837055776 +0200
    17 +++ ppp-2.4.3/pppd/Makefile.linux       2007-06-04 13:22:12.463960472 +0200
    18 @@ -99,7 +99,7 @@
     20--- a/pppd/Makefile.linux
     21+++ b/pppd/Makefile.linux
     22@@ -99,7 +99,7 @@ ifdef USE_SRP
    1923 CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include
    2024 LIBS   += -lsrp -L/usr/local/ssl/lib -lcrypto
     
    2529 EXTRACLEAN += srp-entry.o
    2630 NEEDDES=y
    27 @@ -202,7 +202,7 @@
     31@@ -200,7 +200,7 @@ all: $(TARGETS)
    2832 install: pppd
    2933        mkdir -p $(BINDIR) $(MANDIR)
     
    3438          chmod o-rx,u+s $(BINDIR)/pppd; fi
    3539        $(INSTALL) -c -m 444 pppd.8 $(MANDIR)
    36 Index: ppp-2.4.3/pppd/plugins/radius/Makefile.linux
    37 ===================================================================
    38 --- ppp-2.4.3.orig/pppd/plugins/radius/Makefile.linux   2007-06-04 13:22:08.076627448 +0200
    39 +++ ppp-2.4.3/pppd/plugins/radius/Makefile.linux        2007-06-04 13:22:12.463960472 +0200
    40 @@ -36,9 +36,9 @@
     40--- a/pppd/plugins/radius/Makefile.linux
     41+++ b/pppd/plugins/radius/Makefile.linux
     42@@ -36,9 +36,9 @@ all: $(PLUGIN)
    4143 
    4244 install: all
     
    5153        $(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR)
    5254 
    53 Index: ppp-2.4.3/pppd/plugins/rp-pppoe/Makefile.linux
    54 ===================================================================
    55 --- ppp-2.4.3.orig/pppd/plugins/rp-pppoe/Makefile.linux 2007-06-04 13:22:09.416423768 +0200
    56 +++ ppp-2.4.3/pppd/plugins/rp-pppoe/Makefile.linux      2007-06-04 13:22:12.468959712 +0200
    57 @@ -39,9 +39,9 @@
     55--- a/pppd/plugins/rp-pppoe/Makefile.linux
     56+++ b/pppd/plugins/rp-pppoe/Makefile.linux
     57@@ -43,9 +43,9 @@ rp-pppoe.so: plugin.o discovery.o if.o c
    5858 
    5959 install: all
     
    6666 
    6767 clean:
    68         rm -f *.o *.so
    69 Index: ppp-2.4.3/pppdump/Makefile.linux
    70 ===================================================================
    71 --- ppp-2.4.3.orig/pppdump/Makefile.linux       2007-06-04 13:22:08.091625168 +0200
    72 +++ ppp-2.4.3/pppdump/Makefile.linux    2007-06-04 13:22:12.468959712 +0200
    73 @@ -17,5 +17,5 @@
     68        rm -f *.o *.so pppoe-discovery
     69--- a/pppdump/Makefile.linux
     70+++ b/pppdump/Makefile.linux
     71@@ -17,5 +17,5 @@ clean:
    7472 
    7573 install:
     
    7876+       $(INSTALL) -c pppdump $(BINDIR)
    7977        $(INSTALL) -c -m 444 pppdump.8 $(MANDIR)
    80 Index: ppp-2.4.3/pppstats/Makefile.linux
    81 ===================================================================
    82 --- ppp-2.4.3.orig/pppstats/Makefile.linux      2007-06-04 13:22:08.099623952 +0200
    83 +++ ppp-2.4.3/pppstats/Makefile.linux   2007-06-04 13:22:12.468959712 +0200
    84 @@ -22,7 +22,7 @@
     78--- a/pppstats/Makefile.linux
     79+++ b/pppstats/Makefile.linux
     80@@ -22,7 +22,7 @@ all: pppstats
    8581 
    8682 install: pppstats
  • trunk/openwrt/package/ppp/patches/204-radius_config.patch

    r2280 r2281  
    1 Index: ppp-2.4.3/pppd/plugins/radius/config.c
    2 ===================================================================
    3 --- ppp-2.4.3.orig/pppd/plugins/radius/config.c 2007-06-04 13:22:07.980642040 +0200
    4 +++ ppp-2.4.3/pppd/plugins/radius/config.c      2007-06-04 13:22:13.139857720 +0200
    5 @@ -369,31 +369,37 @@
     1--- a/pppd/plugins/radius/config.c
     2+++ b/pppd/plugins/radius/config.c
     3@@ -369,31 +369,37 @@ static int test_config(char *filename)
    64        }
    75 #endif
     
    4139        return 0;
    4240 }
    43 Index: ppp-2.4.3/pppd/plugins/radius/options.h
    44 ===================================================================
    45 --- ppp-2.4.3.orig/pppd/plugins/radius/options.h        2007-06-04 13:22:07.989640672 +0200
    46 +++ ppp-2.4.3/pppd/plugins/radius/options.h     2007-06-04 13:22:13.139857720 +0200
    47 @@ -31,24 +31,21 @@
     41--- a/pppd/plugins/radius/options.h
     42+++ b/pppd/plugins/radius/options.h
     43@@ -31,24 +31,21 @@ typedef struct _option {
    4844 static SERVER acctserver = {0};
    4945 static SERVER authserver = {0};
  • trunk/openwrt/package/ppp/patches/206-compensate_time_change.patch

    r2280 r2281  
    1 Index: ppp-2.4.3/pppd/main.c
    2 ===================================================================
    3 --- ppp-2.4.3.orig/pppd/main.c  2007-06-04 13:22:13.340827168 +0200
    4 +++ ppp-2.4.3/pppd/main.c       2007-06-04 13:22:13.755764088 +0200
     1pppd: Watch out for time warps
     2
     3On many embedded systems there is no battery backed RTC and a proper system
     4time only becomes available through NTP after establishing a connection.
     5
     6When the clock suddenly jumps forward, the internal accounting (connect time)
     7is confused resulting in unreliable data.
     8
     9This patch implements periodic clock checking to look for time warps, if one
     10is detected, the internal counters are adjusted accordingly.
     11
     12Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     13
     14--- a/pppd/main.c
     15+++ b/pppd/main.c
    516@@ -90,6 +90,7 @@
    617 #include <sys/socket.h>
     
    1122 #include "pppd.h"
    1223 #include "magic.h"
    13 @@ -227,6 +228,7 @@
     24@@ -228,6 +229,7 @@ static struct subprocess *children;
    1425 
    1526 /* Prototypes for procedures local to this file. */
     
    1930 static void create_pidfile __P((int pid));
    2031 static void create_linkpidfile __P((int pid));
    21 @@ -531,6 +533,7 @@
     32@@ -535,6 +537,7 @@ main(argc, argv)
    2233            info("Starting link");
    2334        }
     
    2738        script_unsetenv("CONNECT_TIME");
    2839        script_unsetenv("BYTES_SENT");
    29 @@ -1195,6 +1198,36 @@
     40@@ -1267,6 +1270,36 @@ struct   callout {
    3041 
    3142 static struct callout *callout = NULL; /* Callout list */
     
    6475 /*
    6576  * timeout - Schedule a timeout.
    66 @@ -1265,6 +1298,8 @@
     77@@ -1337,6 +1370,8 @@ calltimeout()
    6778 {
    6879     struct callout *p;
     
    7384        p = callout;
    7485 
    75 @@ -1292,6 +1327,8 @@
     86@@ -1364,6 +1399,8 @@ timeleft(tvp)
    7687 {
    7788     if (callout == NULL)
  • trunk/openwrt/package/ppp/patches/207-lcp_mtu_max.patch

    r2280 r2281  
    1 Index: ppp-2.4.3/pppd/lcp.c
    2 ===================================================================
    3 --- ppp-2.4.3.orig/pppd/lcp.c   2007-06-04 13:22:07.874658152 +0200
    4 +++ ppp-2.4.3/pppd/lcp.c        2007-06-04 13:22:13.945735208 +0200
    5 @@ -1891,12 +1891,12 @@
     1pppd: Cap MTU to the user configured value
     2
     3This patchs caps the calculated MTU value in lcp.c to the user specified "mru"
     4option value. Without this patch pppd would advertise a different MTU value
     5compared to what is set on the local interface in some cases.
     6
     7Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     8
     9--- a/pppd/lcp.c
     10+++ b/pppd/lcp.c
     11@@ -1904,12 +1904,12 @@ lcp_up(f)
    612      * the interface MTU is set to the lowest of that, the
    713      * MTU we want to use, and our link MRU.
  • trunk/openwrt/package/ppp/patches/300-filter-pcap-includes-lib.patch

    r1 r2281  
    1 Index: ppp-2.4.3/pppd/Makefile.linux
    2 ===================================================================
    3 --- ppp-2.4.3.orig/pppd/Makefile.linux  2007-06-04 13:22:12.463960472 +0200
    4 +++ ppp-2.4.3/pppd/Makefile.linux       2007-06-04 13:22:14.133706632 +0200
    5 @@ -172,8 +172,8 @@
     1build: Add required CFLAGS for libpcap
     2
     3This patch adds some flags to required to properly link libpcap within the
     4OpenWrt environment.
     5
     6Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     7
     8--- a/pppd/Makefile.linux
     9+++ b/pppd/Makefile.linux
     10@@ -170,8 +170,8 @@ endif
    611 
    712 ifdef FILTER
  • trunk/openwrt/package/ppp/patches/310-precompile_filter.patch

    r2280 r2281  
    1 Index: ppp-2.4.3/pppd/Makefile.linux
    2 ===================================================================
    3 --- ppp-2.4.3.orig/pppd/Makefile.linux  2007-06-04 13:22:14.133706632 +0200
    4 +++ ppp-2.4.3/pppd/Makefile.linux       2007-06-04 13:22:14.320678208 +0200
    5 @@ -50,6 +50,9 @@
     1pppd: Implement support for precompiled pcap filters
     2
     3This patch implements support for precompiled pcap filters which is useful to
     4support dial-on-demand on memory constrained embedded devices without having
     5to link the full libpcap into pppd to generate the filters during runtime.
     6
     7Two new options are introduced; "precompiled-pass-filter" specifies a pre-
     8compiled filter file containing rules to match packets which should be passed,
     9"precompiled-active-filter" specifies a filter file containing rules to match
     10packets which are treated as active.
     11
     12Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
     13
     14--- a/pppd/Makefile.linux
     15+++ b/pppd/Makefile.linux
     16@@ -50,6 +50,9 @@ MPPE=y
    617 # and that the kernel driver support PPP packet filtering.
    718 #FILTER=y
     
    1324 # Linux distributions: Please leave multilink ENABLED in your builds
    1425 # of pppd!
    15 @@ -177,6 +180,14 @@
     26@@ -175,6 +178,14 @@ CFLAGS  += -DPPP_FILTER -I$(STAGING_DIR)
    1627 endif
    1728 endif
     
    2839      PPPDSRCS += ipv6cp.c eui64.c
    2940      HEADERS  += ipv6cp.h eui64.h
    30 Index: ppp-2.4.3/pppd/demand.c
    31 ===================================================================
    32 --- ppp-2.4.3.orig/pppd/demand.c        2007-06-04 13:22:11.613089824 +0200
    33 +++ ppp-2.4.3/pppd/demand.c     2007-06-04 13:22:14.320678208 +0200
    34 @@ -438,12 +438,14 @@
    35         return 0;
    36      proto = PPP_PROTOCOL(p);
    37  #ifdef PPP_FILTER
    38 +       *p = 1; /* set outbound for the filter rule */
    39      if (pass_filter.bf_len != 0
    40         && bpf_filter(pass_filter.bf_insns, p, len, len) == 0)
    41         return 0;
    42      if (active_filter.bf_len != 0
    43         && bpf_filter(active_filter.bf_insns, p, len, len) == 0)
    44         return 0;
    45 +       *p = 0xff; /* restore original ppp header */
    46  #endif
    47      for (i = 0; (protp = protocols[i]) != NULL; ++i) {
    48         if (protp->protocol < 0xC000 && (protp->protocol & ~0x8000) == proto) {
    49 Index: ppp-2.4.3/pppd/options.c
    50 ===================================================================
    51 --- ppp-2.4.3.orig/pppd/options.c       2007-06-04 13:22:09.005486240 +0200
    52 +++ ppp-2.4.3/pppd/options.c    2007-06-04 13:22:14.321678056 +0200
    53 @@ -57,14 +57,7 @@
     41--- a/pppd/options.c
     42+++ b/pppd/options.c
     43@@ -57,6 +57,7 @@
    5444 
    5545 #ifdef PPP_FILTER
    5646 #include <pcap.h>
    57 -/*
    58 - * DLT_PPP_WITH_DIRECTION is in current libpcap cvs, and should be in
    59 - * libpcap-0.8.4.  Until that is released, use DLT_PPP - but that means
    60 - * we lose the inbound and outbound qualifiers.
    61 - */
    62 -#ifndef DLT_PPP_WITH_DIRECTION
    63 -#define DLT_PPP_WITH_DIRECTION DLT_PPP
    64 -#endif
    6547+#include <pcap-bpf.h>
    66  #endif
    67  
    68  #include "pppd.h"
    69 @@ -155,6 +148,13 @@
     48 /*
     49  * There have been 3 or 4 different names for this in libpcap CVS, but
     50  * this seems to be what they have settled on...
     51@@ -162,6 +163,13 @@ static int setlogfile __P((char **));
    7052 static int loadplugin __P((char **));
    7153 #endif
     
    8163 static int setpassfilter __P((char **));
    8264 static int setactivefilter __P((char **));
    83 @@ -312,6 +312,14 @@
     65@@ -326,6 +334,14 @@ option_t general_options[] = {
    8466       "set filter for active pkts", OPT_PRIO },
    8567 #endif
     
    9678     { "maxoctets", o_int, &maxoctets,
    9779       "Set connection traffic limit",
    98 @@ -1447,6 +1455,29 @@
     80@@ -1472,6 +1488,29 @@ callfile(argv)
    9981     return ok;
    10082 }
     
    126108 /*
    127109  * setpassfilter - Set the pass filter for packets
    128 @@ -1458,7 +1489,7 @@
    129      pcap_t *pc;
    130      int ret = 0;
    131  
    132 -    pc = pcap_open_dead(DLT_PPP_WITH_DIRECTION, 65535);
    133 +    pc = pcap_open_dead(DLT_PPP_PPPD, 65535);
    134      if (pcap_compile(pc, &pass_filter, *argv, 1, netmask) == -1) {
    135         option_error("error in pass-filter expression: %s\n",
    136                      pcap_geterr(pc));
    137 @@ -1479,7 +1510,7 @@
    138      pcap_t *pc;
    139      int ret = 0;
    140  
    141 -    pc = pcap_open_dead(DLT_PPP_WITH_DIRECTION, 65535);
    142 +    pc = pcap_open_dead(DLT_PPP_PPPD, 65535);
    143      if (pcap_compile(pc, &active_filter, *argv, 1, netmask) == -1) {
    144         option_error("error in active-filter expression: %s\n",
    145                      pcap_geterr(pc));
    146 Index: ppp-2.4.3/pppd/pcap_pcc.c
    147 ===================================================================
    148 --- /dev/null   1970-01-01 00:00:00.000000000 +0000
    149 +++ ppp-2.4.3/pppd/pcap_pcc.c   2007-06-04 13:22:14.321678056 +0200
     110--- /dev/null
     111+++ b/pppd/pcap_pcc.c
    150112@@ -0,0 +1,74 @@
    151113+#include <pcap.h>
     
    223185+  return 0;
    224186+}
    225 Index: ppp-2.4.3/pppd/pcap_pcc.h
    226 ===================================================================
    227 --- /dev/null   1970-01-01 00:00:00.000000000 +0000
    228 +++ ppp-2.4.3/pppd/pcap_pcc.h   2007-06-04 13:22:14.321678056 +0200
     187--- /dev/null
     188+++ b/pppd/pcap_pcc.h
    229189@@ -0,0 +1,7 @@
    230190+#ifndef PCAP_PCC_H
Note: See TracChangeset for help on using the changeset viewer.