Servus,

I had the same problem here and posted it to the isdn4linux Mailing
list. You need a patched kernel, and important, your ipppd has to be
linked against  libpcap-0.7.2 (my ipppd out of Debian sarge worked).

 http://listserv.isdn4linux.de/pipermail/isdn4linux/2005-March/001319.html

diff -ur linux-2.6.8-9.org/drivers/isdn/i4l/isdn_ppp.c linux/drivers/isdn/i4l/isdn_ppp.c
--- linux-2.6.8-9.org/drivers/isdn/i4l/isdn_ppp.c	2004-08-14 07:37:25.000000000 +0200
+++ linux/drivers/isdn/i4l/isdn_ppp.c	2004-09-20 12:34:20.000000000 +0200
@@ -1152,7 +1152,7 @@
 	{
 		u_int16_t *p = (u_int16_t *) skb->data;
 
-		*p = 0;	/* indicate inbound in DLT_LINUX_SLL */
+		*p = 0;	/* indicate inbound */
 	}
 
 	if (is->pass_filter
@@ -1293,12 +1293,12 @@
 	/* check if we should pass this packet
 	 * the filter instructions are constructed assuming
 	 * a four-byte PPP header on each packet */
-	skb_push(skb, 4);
+	*skb_push(skb, 4) = 1; /* indicate outbound */
 
 	{
 		u_int16_t *p = (u_int16_t *) skb->data;
 
-		*p++ = htons(4); /* indicate outbound in DLT_LINUX_SLL */
+		p++;
 		*p   = htons(proto);
 	}
 
@@ -1491,12 +1491,12 @@
 	 * temporarily remove part of the fake header stuck on
 	 * earlier.
 	 */
-	skb_pull(skb, IPPP_MAX_HEADER - 4);
+	*skb_pull(skb, IPPP_MAX_HEADER - 4) = 1; /* indicate outbound */
 
 	{
 		u_int16_t *p = (u_int16_t *) skb->data;
 
-		*p++ = htons(4);	/* indicate outbound in DLT_LINUX_SLL */
+		p++;
 		*p   = htons(proto);
 	}
 	

Attachment: pgp8Za1baR4p6.pgp
Description: PGP signature

HTH,
        Max

Reply via email to