2005-04-21 13:07:56

by Karsten Keil

[permalink] [raw]
Subject: fix for ISDN ippp filtering

Hi,

We do not longer use DLT_LINUX_SLL for activ/pass filters but DLT_PPP_WITHDIRECTION
witch need 1 as outbound flag.
Please apply.

Signed-off-by: Karsten Keil <[email protected]>

diff -urN linux-2.6.12-rc2.org/drivers/isdn/i4l/isdn_ppp.c linux-2.6.12-rc2/drivers/isdn/i4l/isdn_ppp.c
--- linux-2.6.12-rc2.org/drivers/isdn/i4l/isdn_ppp.c 2005-04-20 16:01:07.070809128 +0200
+++ linux-2.6.12-rc2/drivers/isdn/i4l/isdn_ppp.c 2005-04-20 18:31:28.533367073 +0200
@@ -1151,7 +1151,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);
}


--
Karsten Keil
SuSE Labs
ISDN development


2005-04-21 13:17:25

by Patrick McHardy

[permalink] [raw]
Subject: Re: fix for ISDN ippp filtering

Karsten Keil wrote:
> Hi,
>
> We do not longer use DLT_LINUX_SLL for activ/pass filters but DLT_PPP_WITHDIRECTION
> witch need 1 as outbound flag.
> Please apply.

Won't this break compatibility with old ipppd binaries?

Regards
Patrick


2005-04-21 14:05:46

by Karsten Keil

[permalink] [raw]
Subject: Re: fix for ISDN ippp filtering

On Thu, Apr 21, 2005 at 03:17:21PM +0200, Patrick McHardy wrote:
> Karsten Keil wrote:
> >Hi,
> >
> >We do not longer use DLT_LINUX_SLL for activ/pass filters but
> >DLT_PPP_WITHDIRECTION
> >witch need 1 as outbound flag.
> >Please apply.
>
> Won't this break compatibility with old ipppd binaries?
>

Not really, since such a version was never in our I4L CVS and never
released by isdn4linux. It was my fault that this wrong temporary
attempt to solve the filtering problem was pushed into the kernel.
The new version is still compatible to the old filtering using
DLT_PPP (with libpcap 0.7x version) with was the previous version.
The DLT_LINUX_SLL solution did break compatibility and was rejected
because of this for PPP, but I did miss to revert the ISDN kernel
part in time, so it simple do not work today.


--
Karsten Keil
SuSE Labs
ISDN development