kern/67825: PPPoE doesn't work when Relay session ID is sent in PADO
Girish Venkatachalam
girish1729 at yahoo.com
Fri Jun 11 11:20:36 GMT 2004
>Number: 67825
>Category: kern
>Synopsis: PPPoE doesn't work when Relay session ID is sent in PADO
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Jun 11 11:20:24 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator: Girish Venkatachalam
>Release: FreeBSD 5.2.1-RELEASE i386
>Organization:
>Environment:
System: FreeBSD vinil.tenet.res.in 5.2.1-RELEASE FreeBSD 5.2.1-RELEASE #0: Tue May 11 17:08:23 IST 2004 root at vinil.tenet.res.in:/usr/src/sys/i386/compile/DEVIKERNEL i386
The #define for RELAY SESSION ID parameter is wrong in ng_pppoe.h because of which my home FreeBSD machine wouldn't connect to my ISP in India. This is because if the RELAY SESSION ID given by PADO packet is not echoed in PADR packet a PADS packet is never sent by the server and my machine attemps reconnection in a loop.
I am attaching the patch which fixed the problem for me as well as the section in RFC 2516 which gives the value for RELAY SESSION ID.
Please apply the patch as quickly as possible since the problem almost drove me nuts for nearly two days.
Here is the patch
<<<<<<<<<<<<<<<<<
--- ng_pppoe.h Fri Jun 11 16:26:33 2004
+++ ng_pppoe.h.new Fri Jun 11 16:24:13 2004
@@ -166,7 +166,7 @@
#define PTT_HOST_UNIQ (0x0103)
#define PTT_AC_COOKIE (0x0104)
#define PTT_VENDOR (0x0105)
-#define PTT_RELAY_SID (0x0106)
+#define PTT_RELAY_SID (0x0110)
#define PTT_SRV_ERR (0x0201)
#define PTT_SYS_ERR (0x0202)
#define PTT_GEN_ERR (0x0203)
@@ -182,7 +182,7 @@
#define PTT_HOST_UNIQ (0x0301)
#define PTT_AC_COOKIE (0x0401)
#define PTT_VENDOR (0x0501)
-#define PTT_RELAY_SID (0x0601)
+#define PTT_RELAY_SID (0x1001)
#define PTT_SRV_ERR (0x0102)
#define PTT_SYS_ERR (0x0202)
#define PTT_GEN_ERR (0x0302)
<<<<<<<<<<<<<
And here is the section from the RFC for the value of RELAY SESSION ID
0x0110 Relay-Session-Id
This TAG MAY be added to any discovery packet by an intermediate
agent that is relaying traffic. The TAG_VALUE is opaque to both
the Host and the Access Concentrator. If either the Host or
Access Concentrator receives this TAG they MUST include it
unmodified in any discovery packet they send as a response. All
PADI packets MUST guarantee sufficient room for the addition of a
Relay-Session-Id TAG with a TAG_VALUE length of 12 octets.
A Relay-Session-Id TAG MUST NOT be added if the discovery packet
already contains one. In that case the intermediate agent SHOULD
use the existing Relay-Session-Id TAG. If it can not use the
existing TAG or there is insufficient room to add a Relay-
Session-Id TAG, then it SHOULD return a Generic-Error TAG to the
sender.
-Girish
>Description:
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list