Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 01 Aug 2001 23:43:44 +0100
From:      Brian Somers <brian@Awfulhak.org>
To:        Julian Elischer <julian@elischer.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:   kern/27767: (was: PPPoE + Alpha + 32/64 bits)
Message-ID:  <200108012243.f71Mhi809898@hak.lan.Awfulhak.org>
In-Reply-To: Message from Julian Elischer <julian@elischer.org>  of "Wed, 01 Aug 2001 13:01:12 PDT." <Pine.BSF.4.21.0108011243090.35786-100000@InterJet.elischer.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
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-alpha" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200108012243.f71Mhi809898>