[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-bridge
Subject: [Bridge] Earlier patch and br_input.c
From: D Yun <yun14u () yahoo ! com>
Date: 2003-02-23 7:37:01
[Download RAW message or body]
Ooops ... one more time
I'm a newbie to this mailing list. I'm trying to use
the following patch to apply to br_input.c ; however,
the patch was rejected. Could somebody look into the
patch and make the right change ?
Thanks a bunch,
Peter Nguyen
----------This is from an earlier patch--------------
diff -Naur linux-2.4.10/net/bridge/br_input.c
linux-2.4.10-bridge/net/bridge/br_input.c
--- linux-2.4.10/net/bridge/br_input.c Wed Aug 15
10:54:39 2001
+++ linux-2.4.10-bridge/net/bridge/br_input.c Mon
Sep 24 14:21:40 2001
@@ -4,6 +4,7 @@
*
* Authors:
* Lennert Buytenhek
<buytenh@gnu.org>
+ * Arne Fitzenreiter (MAC Filter)
<arne@fitzenreiter.de>
*
* $Id: br_input.c,v 1.9 2001/08/14 22:05:57
davem Exp $
*
@@ -50,11 +51,14 @@
{
struct net_bridge *br;
unsigned char *dest;
+ unsigned char *src;
+
struct net_bridge_fdb_entry *dst;
struct net_bridge_port *p;
int passedup;
dest = skb->mac.ethernet->h_dest;
+ src = skb->mac.ethernet->h_source;
p = skb->dev->br_port;
br = p->br;
@@ -63,6 +67,22 @@
if (!(br->dev.flags & IFF_UP) ||
p->state == BR_STATE_DISABLED)
goto freeandout;
+
+ if (br->flt_dest) {
+ if (br->flt_dest_allow) {
+ if (br_ftdb_get(br,dest)) goto
freeandout;
+ } else {
+ if (! br_ftdb_get(br,dest))
goto freeandout;
+ }
+ }
+
+ if (br->flt_src) {
+ if (br->flt_src_allow) {
+ if (br_ftdb_get(br,src)) goto
freeandout;
+ } else {
+ if (! br_ftdb_get(br,src))
goto freeandout;
+ }
+ }
if (br->dev.flags & IFF_PROMISC) {
struct sk_buff *skb2;
----------This is from br_input.c--------------------
static int br_handle_frame_finish(struct sk_buff *skb)
{
struct net_bridge *br;
unsigned char *dest;
struct net_bridge_fdb_entry *dst;
struct net_bridge_port *p;
int passedup;
dest = skb->mac.ethernet->h_dest;
p = skb->dev->br_port;
if (p == NULL)
goto err_nolock;
br = p->br;
read_lock(&br->lock);
if (skb->dev->br_port == NULL)
goto err;
passedup = 0;
if (br->dev.flags & IFF_PROMISC) {
struct sk_buff *skb2;
skb2 = skb_clone(skb, GFP_ATOMIC);
if (skb2 != NULL) {
passedup = 1;
br_pass_frame_up(br, skb2);
}
}
if (dest[0] & 1) {
br_flood_forward(br, skb, !passedup);
if (!passedup)
br_pass_frame_up(br, skb);
goto out;
}
dst = br_fdb_get(br, dest);
if (dst != NULL && dst->is_local) {
if (!passedup)
br_pass_frame_up(br, skb);
else
kfree_skb(skb);
br_fdb_put(dst);
goto out;
}
if (dst != NULL) {
br_forward(dst->dst, skb);
br_fdb_put(dst);
goto out;
}
br_flood_forward(br, skb, 0);
out:
read_unlock(&br->lock);
return 0;
err:
read_unlock(&br->lock);
err_nolock:
kfree_skb(skb);
return 0;
}
__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - forms, calculators, tips, more
http://taxes.yahoo.com/
_______________________________________________
Bridge mailing list
Bridge@math.leidenuniv.nl
http://www.math.leidenuniv.nl/mailman/listinfo/bridge
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic