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

Reply via email to