Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Aug 2001 18:11:11 -0700 (PDT)
From:      Julian Elischer <julian@elischer.org>
To:        Brian Somers <brian@Awfulhak.org>
Cc:        Thomas Pornin <Thomas.Pornin@ens.fr>, freebsd-net@FreeBSD.ORG, freebsd-alpha@FreeBSD.ORG, Brian Somers <brian@freebsd-services.com>, FreeBSD-gnats-submit@FreeBSD.ORG
Subject:   Re: kern/27767: (was: PPPoE + Alpha + 32/64 bits)
Message-ID:  <Pine.BSF.4.21.0108011809580.41008-100000@InterJet.elischer.org>
In-Reply-To: <200108012243.f71Mhi809898@hak.lan.Awfulhak.org>

next in thread | previous in thread | raw e-mail | index | archive | help
DUH!
(slaps forhead with palm "obvious when shown")

can you try this thomas?


On Wed, 1 Aug 2001, Brian Somers wrote:

> 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 <brian@freebsd-services.com>                <brian@Awfulhak.org>
>       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 majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0108011809580.41008-100000>