Date: Fri, 28 Jun 2002 20:10:31 +0200 From: Andre Albsmeier <andre.albsmeier@mchp.siemens.de> To: Brian Somers <brian@FreeBSD.ORG> Cc: cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG Subject: Re: cvs commit: src/sys/netgraph ng_pppoe.c Message-ID: <20020628201031.A89906@curry.mchp.siemens.de> In-Reply-To: <200206272128.g5RLSi9e029446@freefall.freebsd.org>; from brian@FreeBSD.ORG on Thu, Jun 27, 2002 at 02:28:44PM -0700 References: <200206272128.g5RLSi9e029446@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 27-Jun-2002 at 14:28:44 -0700, Brian Somers wrote:
> brian 2002/06/27 14:28:44 PDT
>
> Modified files: (Branch: RELENG_4)
> sys/netgraph ng_pppoe.c
> Log:
> Remove calls to send_sessionid().
>
> I have no idea what the problem is (yet). Andre Albsmeier has reported
> that removing these fixes his PPPoE connection again - although the
> calls don't seem to affect PPPoE here.
>
> This is a temporary fix 'till I figure out what's broken.
Without any tuning ppp waits for the carrier for 5 seconds (see ppp(8)).
The problem is that the additional send_sessionid() delayed this process
slightly but still enough that the timeout expired and the connection was
lost. I found this when I noticed that removing send_acname() made my
connection work again even with send_sessionid() enabled. (I assume that
send_acname() produces a similar delay as send_sessionid().)
It might be that the german TDSL modems (I got the Siemens one) and/or
the DSLAM are a little bit slower than others.
You can work around this by simply adding
set cd 10
to ppp.conf. However, I would suggest to increase the default value
in ppp already (We have many users in germany which use the same DSL
hardware as I do :-)).
I have also made a small patch for for ppp/ether.c so the new SESSIONID
message appears nicely in syslog and the env variable gets set:
Jun 28 20:03:27 <daemon.info> gate ppp[475]: Phase: deflink: closed -> opening
Jun 28 20:03:27 <daemon.info> gate ppp[475]: Phase: deflink: Connected!
Jun 28 20:03:27 <daemon.info> gate ppp[475]: Phase: deflink: opening -> dial
Jun 28 20:03:27 <daemon.info> gate ppp[475]: Phase: deflink: dial -> carrier
Jun 28 20:03:31 <daemon.info> gate ppp[475]: Phase: Received NGM_PPPOE_ACNAME (hook "MUNX13-erx")
Jun 28 20:03:32 <daemon.info> gate ppp[475]: Phase: Received NGM_PPPOE_SESSIONID (hook "0x17fc")
Jun 28 20:03:33 <daemon.info> gate ppp[475]: Phase: Received NGM_PPPOE_SUCCESS
Jun 28 20:03:33 <daemon.info> gate ppp[475]: Phase: deflink: carrier -> login
This is the patch (partly stolen from pppoed):
--- ether.c.ORI Mon Jun 24 20:17:26 2002
+++ ether.c Fri Jun 28 20:02:24 2002
@@ -204,8 +204,8 @@
char msgbuf[sizeof(struct ng_mesg) + sizeof(struct ngpppoe_sts)];
struct ng_mesg *rep = (struct ng_mesg *)msgbuf;
struct ngpppoe_sts *sts = (struct ngpppoe_sts *)(msgbuf + sizeof *rep);
- char unknown[14];
- const char *msg;
+ char unknown[14], sessionid[7];
+ const char *msg, *asciiptr;
struct timeval t;
fd_set *r;
int asciilen, ret;
@@ -242,6 +242,7 @@
}
asciilen = 0;
+ asciiptr = NULL;
switch (rep->header.cmd) {
case NGM_PPPOE_SET_FLAG: msg = "SET_FLAG"; break;
case NGM_PPPOE_CONNECT: msg = "CONNECT"; break;
@@ -256,6 +257,15 @@
if (setenv("ACNAME", sts->hook, 1) != 0)
log_Printf(LogWARN, "setenv: cannot set ACNAME=%s: %m", sts->hook);
asciilen = rep->header.arglen;
+ asciiptr = sts->hook;
+ break;
+ case NGM_PPPOE_SESSIONID:
+ msg = "SESSIONID";
+ snprintf(sessionid, sizeof sessionid, "0x%04x", *(u_int16_t *)sts);
+ if (setenv("SESSIONID", sessionid, 1) != 0)
+ log_Printf(LogWARN, "setenv: cannot set SESSIONID=%s: %m", sessionid);
+ asciilen = strlen( sessionid );
+ asciiptr = sessionid;
break;
default:
snprintf(unknown, sizeof unknown, "<%d>", (int)rep->header.cmd);
@@ -265,7 +275,7 @@
if (asciilen)
log_Printf(LogPHASE, "Received NGM_PPPOE_%s (hook \"%.*s\")\n",
- msg, asciilen, sts->hook);
+ msg, asciilen, asciiptr);
else
log_Printf(LogPHASE, "Received NGM_PPPOE_%s\n", msg);
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020628201031.A89906>
