Hi,
I think the attached will fix it properly -- but I haven't got an
alpha to test with, so can someone do the honours for me ?
Ta.
> can you send us a patch that works for you?
> we can make it #ifdef __Alpha__ or something.
>
> can you ocnfirm that the outgoing packet has a tag-lenth of '8'
> and that teh return tag has a length of '4'?
> (maybe 9 and 5)
>
> sounds like a brain-dead router at the other end..
>
>
> On Wed, 1 Aug 2001, Thomas Pornin wrote:
>
> > Hello,
> >
> > I recently connected my FreeBSD/Alpha (4.3-RELEASE) to an ADSL link
> > using an Alcatel Speed Touch Home modem. As is, it was not working;
> > after some digging, I found that there is a bug either in the ng_pppoe
> > support, or in the modem.
> >
> > The problem is in the pppoe_finduniq() function. In order to identify
> > sessions, the PPPoE code sends a tag with the first packet it sends to
> > the modem; this tag is in fact a 64-bit pointer to some data structure
> > in kernel space. When a packet of type PADO_CODE or PADS_CODE is
> > received, the tag is compared with known pointers.
> >
> > However, only 32 bits are present in the return tag. So, if the original
> > pointer is 0xfffffc00003b3d00, the tag contains only 0x003b3d00, which
> > are the first four bytes of data (in little-endian representation). If
> > I modify the pppoe_finduniq() function to accept matches on these four
> > bytes, the connection is established, and remains fully functionnal
> > afterwards.
> >
> > Some details: The Alpha is little-endian, but the data in the packets is
> > big-endian. If the original pointer is 0xfffffc00003b3d00, the rebuilt
> > tag from the response packet is actually 0x003b3d0000000000. I do not
> > know if the 8-bytes tag is sent correctly, or if the modem is buggy, or
> > whatever.
> >
> > Machine configuration:
> > AXPpci33 at 166 MHz, 32 MB ram
> > ethernet PCI adapter RealTek 8029 10baseT (ed0)
> > modem Alcatel Speed Touch Home (ethernet)
> > FreeBSD 4.3-RELEASE (with a small patch to enable ed0)
> >
> > Feel free to ask for any detail.
> >
> >
> > --Thomas Pornin
--
Brian <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
http://www.freebsd-services.com/ <brian@[uk.]FreeBSD.org>
Don't _EVER_ lose your sense of humour ! <brian@[uk.]OpenBSD.org>
Index: ng_pppoe.c
===================================================================
RCS file: /home/ncvs/src/sys/netgraph/ng_pppoe.c,v
retrieving revision 1.45
diff -u -r1.45 ng_pppoe.c
--- ng_pppoe.c 2001/07/25 03:34:07 1.45
+++ ng_pppoe.c 2001/08/01 22:40:15
@@ -868,7 +868,7 @@
struct {
struct pppoe_tag hdr;
union uniq data;
- } uniqtag;
+ } __attribute ((packed)) uniqtag;
/*
* kick the state machine into starting up
@@ -910,7 +910,7 @@
struct {
struct pppoe_tag hdr;
union uniq data;
- } uniqtag;
+ } __attribute ((packed)) uniqtag;
negp neg = NULL;
struct mbuf *m;
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message