diff options
author | Karsten Keil <kkeil@suse.de> | 2005-04-21 11:30:30 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-21 11:30:30 -0400 |
commit | d8470b7c13e11c18cf14a7e3180f0b00e715e4f0 (patch) | |
tree | c92b15c165366a6d5c616305cb4b68349882cb61 | |
parent | 3a6fd752a50af92765853879f4a11cc0cfcd0320 (diff) |
[PATCH] fix for ISDN ippp filtering
We do not longer use DLT_LINUX_SLL for activ/pass filters but
DLT_PPP_WITHDIRECTION witch need 1 as outbound flag.
Signed-off-by: Karsten Keil <kkeil@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | drivers/isdn/i4l/isdn_ppp.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/isdn/i4l/isdn_ppp.c b/drivers/isdn/i4l/isdn_ppp.c index 3c092117a8ea..260a323a96d3 100644 --- a/drivers/isdn/i4l/isdn_ppp.c +++ b/drivers/isdn/i4l/isdn_ppp.c | |||
@@ -1151,7 +1151,7 @@ isdn_ppp_push_higher(isdn_net_dev * net_dev, isdn_net_local * lp, struct sk_buff | |||
1151 | { | 1151 | { |
1152 | u_int16_t *p = (u_int16_t *) skb->data; | 1152 | u_int16_t *p = (u_int16_t *) skb->data; |
1153 | 1153 | ||
1154 | *p = 0; /* indicate inbound in DLT_LINUX_SLL */ | 1154 | *p = 0; /* indicate inbound */ |
1155 | } | 1155 | } |
1156 | 1156 | ||
1157 | if (is->pass_filter | 1157 | if (is->pass_filter |
@@ -1293,12 +1293,12 @@ isdn_ppp_xmit(struct sk_buff *skb, struct net_device *netdev) | |||
1293 | /* check if we should pass this packet | 1293 | /* check if we should pass this packet |
1294 | * the filter instructions are constructed assuming | 1294 | * the filter instructions are constructed assuming |
1295 | * a four-byte PPP header on each packet */ | 1295 | * a four-byte PPP header on each packet */ |
1296 | skb_push(skb, 4); | 1296 | *skb_push(skb, 4) = 1; /* indicate outbound */ |
1297 | 1297 | ||
1298 | { | 1298 | { |
1299 | u_int16_t *p = (u_int16_t *) skb->data; | 1299 | u_int16_t *p = (u_int16_t *) skb->data; |
1300 | 1300 | ||
1301 | *p++ = htons(4); /* indicate outbound in DLT_LINUX_SLL */ | 1301 | p++; |
1302 | *p = htons(proto); | 1302 | *p = htons(proto); |
1303 | } | 1303 | } |
1304 | 1304 | ||
@@ -1491,12 +1491,12 @@ int isdn_ppp_autodial_filter(struct sk_buff *skb, isdn_net_local *lp) | |||
1491 | * temporarily remove part of the fake header stuck on | 1491 | * temporarily remove part of the fake header stuck on |
1492 | * earlier. | 1492 | * earlier. |
1493 | */ | 1493 | */ |
1494 | skb_pull(skb, IPPP_MAX_HEADER - 4); | 1494 | *skb_pull(skb, IPPP_MAX_HEADER - 4) = 1; /* indicate outbound */ |
1495 | 1495 | ||
1496 | { | 1496 | { |
1497 | u_int16_t *p = (u_int16_t *) skb->data; | 1497 | u_int16_t *p = (u_int16_t *) skb->data; |
1498 | 1498 | ||
1499 | *p++ = htons(4); /* indicate outbound in DLT_LINUX_SLL */ | 1499 | p++; |
1500 | *p = htons(proto); | 1500 | *p = htons(proto); |
1501 | } | 1501 | } |
1502 | 1502 | ||