Package: ppp
Version: 2.4.3-20050321+2
Severity: normal
Tags: patch

When work with rp-pppoe.so, the mtu of ppp0 device
will be 1492 always.
I need set the mtu of my ppp0 device to 1488 or less,
for some reason, my isp or my dsl-modem don't accept
packet bigger then 1514 bytes.
Change mtu setting of ppp configuration won't work.

I found the cvs version of ppp work.
The following patch is pulled from the cvs version of ppp.

diff -urN ppp-2.4.3/pppd/plugins/rp-pppoe/plugin.c 
ppp-2.4.3-lepton/pppd/plugins/rp-pppoe/plugin.c
--- ppp-2.4.3/pppd/plugins/rp-pppoe/plugin.c    2004-11-04 18:07:37.000000000 
+0800
+++ ppp-2.4.3-lepton/pppd/plugins/rp-pppoe/plugin.c     2006-05-15 
22:54:21.000000000 +0800
@@ -22,7 +22,7 @@
 ***********************************************************************/
 
 static char const RCSID[] =
-"$Id: plugin.c,v 1.12 2004/11/04 10:07:37 paulus Exp $";
+"$Id: plugin.c,v 1.14 2005/08/25 10:51:27 paulus Exp $";
 
 #define _GNU_SOURCE 1
 #include "pppoe.h"
@@ -182,34 +182,6 @@
 }
 
 static void
-PPPOESendConfig(int mtu,
-               u_int32_t asyncmap,
-               int pcomp,
-               int accomp)
-{
-    int sock;
-    struct ifreq ifr;
-
-    if (mtu > MAX_PPPOE_MTU) {
-       warn("Couldn't increase MTU to %d", mtu);
-       mtu = MAX_PPPOE_MTU;
-    }
-    sock = socket(AF_INET, SOCK_DGRAM, 0);
-    if (sock < 0) {
-       error("Couldn't create IP socket: %m");
-       return;
-    }
-    strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
-    ifr.ifr_mtu = mtu;
-    if (ioctl(sock, SIOCSIFMTU, &ifr) < 0) {
-       error("Couldn't set interface MTU to %d: %m", mtu);
-       return;
-    }
-    (void) close (sock);
-}
-
-
-static void
 PPPOERecvConfig(int mru,
                u_int32_t asyncmap,
                int pcomp,
@@ -331,6 +303,11 @@
            lcp_allowoptions[0].neg_pcompression = 0;
            lcp_wantoptions[0].neg_pcompression = 0;
 
+            if (lcp_allowoptions[0].mru > MAX_PPPOE_MTU)
+                lcp_allowoptions[0].mru = MAX_PPPOE_MTU;
+            if (lcp_wantoptions[0].mru > MAX_PPPOE_MTU)
+                lcp_wantoptions[0].mru = MAX_PPPOE_MTU;
+
            ccp_allowoptions[0].deflate = 0 ;
            ccp_wantoptions[0].deflate = 0 ;
 
@@ -433,7 +410,7 @@
     disconnect: &PPPOEDisconnectDevice,
     establish_ppp: &generic_establish_ppp,
     disestablish_ppp: &generic_disestablish_ppp,
-    send_config: &PPPOESendConfig,
+    send_config: NULL,
     recv_config: &PPPOERecvConfig,
     close: NULL,
     cleanup: NULL

-- System Information:
Debian Release: 3.1
Architecture: i386 (i686)
Kernel: Linux 2.6.13.1-skas3-v8.2
Locale: LANG=zh_CN, LC_CTYPE=zh_CN.GB2312 (charmap=GB2312)

Versions of packages ppp depends on:
ii  libc6                  2.3.2.ds1-22      GNU C Library: Shared libraries an
ii  libpam-modules         0.76-22           Pluggable Authentication Modules f
ii  libpam-runtime         0.76-22           Runtime support for the PAM librar
ii  libpam0g               0.76-22           Pluggable Authentication Modules l
ii  libpcap0.7             0.7.2-7           System interface for user-level pa
ii  makedev                2.3.1-77          creates device files in /dev
ii  netbase                4.21              Basic TCP/IP networking system
ii  procps                 1:3.2.1-2         The /proc file system utilities
ii  zlib1g                 1:1.2.2-4.sarge.2 compression library - runtime

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to