[PATCH] PPPD problems in persist mode with new kernel ppp driver

Vladimir Chernyshov (rush@ifdtung.if.ua)
Sun, 15 Aug 1999 13:56:28 +0300 (EEST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--750911856-785965683-934714588=:7904
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello people!

pppd-2.3.9 (release) and pppd-2.3.9-pre1 fails to work in
'persist' mode with new ppp driver (kernels 2.3.13+). During
the first attempt to reestablish PPP it exits:

[...]
Aug 14 00:53:04 greengrass pppd[3243]: Hangup (SIGHUP)
Aug 14 00:53:10 greengrass pppd[3243]: Connection terminated.
Aug 14 00:53:10 greengrass pppd[3243]: Connect time 1.1 minutes.
Aug 14 00:53:10 greengrass pppd[3243]: Sent 626 bytes, received 743 bytes.
Aug 14 00:53:10 greengrass pppd[3243]: tcflush failed: Input/output error
Aug 14 00:53:46 greengrass pppd[3243]: Serial connection established.
Aug 14 00:53:46 greengrass pppd[3243]: Couldn't create new ppp unit: Invalid argument
Aug 14 00:53:47 greengrass pppd[3243]: tcsetattr: Invalid argument
Aug 14 00:53:47 greengrass pppd[3243]: Exit.

Here is a proposed patch to pppd-2.3.9 (release), that solves this
problem, while retaining pppd ability to work both with new and
old kernel's ppp driver. 'demand' mode is not tested, but expected
to work. The patch should be applied after ppp-2.3.9-patch1 (found
at the official pppd ftp site).

Vladimir
P.S. please CC replies to originating email address.

-----------------------------------------------------------------
diff -u --recursive --new-file ppp-2.3.9/pppd/main.c ppp-new/pppd/main.c
--- ppp-2.3.9/pppd/main.c Fri Aug 13 09:46:15 1999
+++ ppp-new/pppd/main.c Sun Aug 15 12:39:32 1999
@@ -1029,18 +1029,19 @@
p = inpacket_buf; /* point to beginning of packet buffer */

len = read_packet(inpacket_buf);
- if (len < 0)
- return;

- if (len == 0) {
+ if (len == 0) hungup = 1;
+ if (hungup) {
notice("Modem hangup");
- hungup = 1;
status = EXIT_HANGUP;
lcp_lowerdown(0); /* serial link is no longer available */
link_terminated(0);
return;
}

+ if (len < 0)
+ return;
+
if (debug /*&& (debugflags & DBG_INPACKET)*/)
dbglog("rcvd %P", p, len);

@@ -1339,6 +1340,7 @@
{
info("Hangup (SIGHUP)");
kill_link = 1;
+ hungup = 1;
if (status != EXIT_HANGUP)
status = EXIT_USER_REQUEST;
if (conn_running)
diff -u --recursive --new-file ppp-2.3.9/pppd/sys-linux.c ppp-new/pppd/sys-linux.c
--- ppp-2.3.9/pppd/sys-linux.c Sun Aug 15 12:56:34 1999
+++ ppp-new/pppd/sys-linux.c Sun Aug 15 12:06:59 1999
@@ -248,6 +248,8 @@
warn("Couldn't set /dev/ppp to nonblock: %m");
}

+ ifunit = -1;
+
/* Get an internet socket for doing socket ioctls. */
sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
if (sock_fd < 0) {
@@ -362,9 +364,9 @@
if (new_style_driver) {
if (!demand) {
/* allocate ourselves a ppp unit */
- ifunit = -1;
- if (ioctl(ppp_dev_fd, PPPIOCNEWUNIT, &ifunit) < 0)
- fatal("Couldn't create new ppp unit: %m");
+ if (ifunit == -1)
+ if (ioctl(ppp_dev_fd, PPPIOCNEWUNIT, &ifunit) < 0)
+ fatal("Couldn't create new ppp unit: %m");
set_kdebugflag(kdebugflag);
} else {
set_flags(ppp_dev_fd, get_flags(ppp_dev_fd) & ~SC_LOOP_TRAFFIC);
@@ -2107,9 +2109,9 @@

if (new_style_driver) {
/* allocate ourselves a ppp unit */
- ifunit = -1;
- if (ioctl(ppp_dev_fd, PPPIOCNEWUNIT, &ifunit) < 0)
- fatal("Couldn't create PPP unit: %m");
+ if (ifunit == -1)
+ if (ioctl(ppp_dev_fd, PPPIOCNEWUNIT, &ifunit) < 0)
+ fatal("Couldn't create PPP unit: %m");
set_flags(ppp_dev_fd, SC_LOOP_TRAFFIC);
set_kdebugflag(kdebugflag);
ppp_fd = -1;
-------------------------------------------------------------------

--750911856-785965683-934714588=:7904
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=persist-patch
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.990815135628.7904B@alpha.ifdtung.if.ua>
Content-Description:

ZGlmZiAtdSAtLXJlY3Vyc2l2ZSAtLW5ldy1maWxlIHBwcC0yLjMuOS9wcHBk
L21haW4uYyBwcHAtbmV3L3BwcGQvbWFpbi5jDQotLS0gcHBwLTIuMy45L3Bw
cGQvbWFpbi5jCUZyaSBBdWcgMTMgMDk6NDY6MTUgMTk5OQ0KKysrIHBwcC1u
ZXcvcHBwZC9tYWluLmMJU3VuIEF1ZyAxNSAxMjozOTozMiAxOTk5DQpAQCAt
MTAyOSwxOCArMTAyOSwxOSBAQA0KICAgICBwID0gaW5wYWNrZXRfYnVmOwkv
KiBwb2ludCB0byBiZWdpbm5pbmcgb2YgcGFja2V0IGJ1ZmZlciAqLw0KIA0K
ICAgICBsZW4gPSByZWFkX3BhY2tldChpbnBhY2tldF9idWYpOw0KLSAgICBp
ZiAobGVuIDwgMCkNCi0JcmV0dXJuOw0KIA0KLSAgICBpZiAobGVuID09IDAp
IHsNCisgICAgaWYgKGxlbiA9PSAwKSBodW5ndXAgPSAxOw0KKyAgICBpZiAo
aHVuZ3VwKSB7DQogCW5vdGljZSgiTW9kZW0gaGFuZ3VwIik7DQotCWh1bmd1
cCA9IDE7DQogCXN0YXR1cyA9IEVYSVRfSEFOR1VQOw0KIAlsY3BfbG93ZXJk
b3duKDApOwkvKiBzZXJpYWwgbGluayBpcyBubyBsb25nZXIgYXZhaWxhYmxl
ICovDQogCWxpbmtfdGVybWluYXRlZCgwKTsNCiAJcmV0dXJuOw0KICAgICB9
DQogDQorICAgIGlmIChsZW4gPCAwKQ0KKwlyZXR1cm47DQorDQogICAgIGlm
IChkZWJ1ZyAvKiYmIChkZWJ1Z2ZsYWdzICYgREJHX0lOUEFDS0VUKSovKQ0K
IAlkYmdsb2coInJjdmQgJVAiLCBwLCBsZW4pOw0KIA0KQEAgLTEzMzksNiAr
MTM0MCw3IEBADQogew0KICAgICBpbmZvKCJIYW5ndXAgKFNJR0hVUCkiKTsN
CiAgICAga2lsbF9saW5rID0gMTsNCisgICAgaHVuZ3VwID0gMTsNCiAgICAg
aWYgKHN0YXR1cyAhPSBFWElUX0hBTkdVUCkNCiAJc3RhdHVzID0gRVhJVF9V
U0VSX1JFUVVFU1Q7DQogICAgIGlmIChjb25uX3J1bm5pbmcpDQpkaWZmIC11
IC0tcmVjdXJzaXZlIC0tbmV3LWZpbGUgcHBwLTIuMy45L3BwcGQvc3lzLWxp
bnV4LmMgcHBwLW5ldy9wcHBkL3N5cy1saW51eC5jDQotLS0gcHBwLTIuMy45
L3BwcGQvc3lzLWxpbnV4LmMJU3VuIEF1ZyAxNSAxMjo1NjozNCAxOTk5DQor
KysgcHBwLW5ldy9wcHBkL3N5cy1saW51eC5jCVN1biBBdWcgMTUgMTI6MDY6
NTkgMTk5OQ0KQEAgLTI0OCw2ICsyNDgsOCBAQA0KIAkgICAgd2FybigiQ291
bGRuJ3Qgc2V0IC9kZXYvcHBwIHRvIG5vbmJsb2NrOiAlbSIpOw0KICAgICB9
DQogDQorICAgIGlmdW5pdCA9IC0xOw0KKw0KICAgICAvKiBHZXQgYW4gaW50
ZXJuZXQgc29ja2V0IGZvciBkb2luZyBzb2NrZXQgaW9jdGxzLiAqLw0KICAg
ICBzb2NrX2ZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOw0K
ICAgICBpZiAoc29ja19mZCA8IDApIHsNCkBAIC0zNjIsOSArMzY0LDkgQEAN
CiAgICAgaWYgKG5ld19zdHlsZV9kcml2ZXIpIHsNCiAJaWYgKCFkZW1hbmQp
IHsNCiAJICAgIC8qIGFsbG9jYXRlIG91cnNlbHZlcyBhIHBwcCB1bml0ICov
DQotCSAgICBpZnVuaXQgPSAtMTsNCi0JICAgIGlmIChpb2N0bChwcHBfZGV2
X2ZkLCBQUFBJT0NORVdVTklULCAmaWZ1bml0KSA8IDApDQotCQlmYXRhbCgi
Q291bGRuJ3QgY3JlYXRlIG5ldyBwcHAgdW5pdDogJW0iKTsNCisJICAgIGlm
IChpZnVuaXQgPT0gLTEpDQorCQlpZiAoaW9jdGwocHBwX2Rldl9mZCwgUFBQ
SU9DTkVXVU5JVCwgJmlmdW5pdCkgPCAwKQ0KKwkJICAgIGZhdGFsKCJDb3Vs
ZG4ndCBjcmVhdGUgbmV3IHBwcCB1bml0OiAlbSIpOw0KIAkgICAgc2V0X2tk
ZWJ1Z2ZsYWcoa2RlYnVnZmxhZyk7DQogCX0gZWxzZSB7DQogCSAgICBzZXRf
ZmxhZ3MocHBwX2Rldl9mZCwgZ2V0X2ZsYWdzKHBwcF9kZXZfZmQpICYgflND
X0xPT1BfVFJBRkZJQyk7DQpAQCAtMjEwNyw5ICsyMTA5LDkgQEANCiANCiAg
ICAgaWYgKG5ld19zdHlsZV9kcml2ZXIpIHsNCiAJLyogYWxsb2NhdGUgb3Vy
c2VsdmVzIGEgcHBwIHVuaXQgKi8NCi0JaWZ1bml0ID0gLTE7DQotCWlmIChp
b2N0bChwcHBfZGV2X2ZkLCBQUFBJT0NORVdVTklULCAmaWZ1bml0KSA8IDAp
DQotCSAgICBmYXRhbCgiQ291bGRuJ3QgY3JlYXRlIFBQUCB1bml0OiAlbSIp
Ow0KKwlpZiAoaWZ1bml0ID09IC0xKQ0KKwkgICAgaWYgKGlvY3RsKHBwcF9k
ZXZfZmQsIFBQUElPQ05FV1VOSVQsICZpZnVuaXQpIDwgMCkNCisJCWZhdGFs
KCJDb3VsZG4ndCBjcmVhdGUgUFBQIHVuaXQ6ICVtIik7DQogCXNldF9mbGFn
cyhwcHBfZGV2X2ZkLCBTQ19MT09QX1RSQUZGSUMpOw0KIAlzZXRfa2RlYnVn
ZmxhZyhrZGVidWdmbGFnKTsNCiAJcHBwX2ZkID0gLTE7DQo=
--750911856-785965683-934714588=:7904--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/