From: Stephen Hemminger <stephen@networkplumber•org>
To: Felix Fietkau <nbd@openwrt•org>
Cc: netdev@vger•kernel.org
Subject: Re: [PATCH net] bridge: allow receiption on disabled port
Date: Thu, 10 Oct 2013 19:35:51 -0700 [thread overview]
Message-ID: <20131010193551.462fc1f8@nehalam.linuxnetplumber.net> (raw)
In-Reply-To: <52571481.5010907@openwrt.org>
This is what I was thinking would be better.
Don't want these packets leaking into PRE_ROUTEING chain or have
any chance to get flooded out other ports.
Compile tested only...
I could use another goto instead but that becomes spaghetti and
never like to jump back into a block.
--- a/net/bridge/br_input.c 2013-10-06 14:48:24.946450042 -0700
+++ b/net/bridge/br_input.c 2013-10-10 19:32:14.227926344 -0700
@@ -152,6 +152,16 @@ static int br_handle_local_finish(struct
return 0; /* process further */
}
+/* Deliver packet to local host only */
+static rx_handler_result_t br_local_only(struct sk_buff *skb)
+{
+ if (NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,
+ NULL, br_handle_local_finish))
+ return RX_HANDLER_CONSUMED; /* consumed by filter */
+ else
+ return RX_HANDLER_PASS; /* continue processing */
+}
+
/*
* Return NULL if skb is handled
* note: already called with rcu_read_lock
@@ -206,18 +216,20 @@ rx_handler_result_t br_handle_frame(stru
goto forward;
}
- /* Deliver packet to local host only */
- if (NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,
- NULL, br_handle_local_finish)) {
- return RX_HANDLER_CONSUMED; /* consumed by filter */
- } else {
- *pskb = skb;
- return RX_HANDLER_PASS; /* continue processing */
- }
+ *pskb = skb;
+ return br_local_only(skb);
}
forward:
switch (p->state) {
+ case BR_STATE_DISABLED:
+ if (!ether_addr_equal(p->br->dev->dev_addr, dest))
+ goto drop;
+
+ skb->pkt_type = PACKET_HOST;
+ *pskb = skb;
+ return br_local_only(skb);
+
case BR_STATE_FORWARDING:
rhook = rcu_dereference(br_should_route_hook);
if (rhook) {
next prev parent reply other threads:[~2013-10-11 2:35 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-10 12:52 [PATCH net] bridge: allow receiption on disabled port Felix Fietkau
2013-10-10 20:36 ` Stephen Hemminger
2013-10-10 20:56 ` Felix Fietkau
2013-10-10 21:52 ` Stephen Hemminger
2013-10-10 22:08 ` Felix Fietkau
2013-10-11 2:35 ` Stephen Hemminger [this message]
2013-10-11 10:18 ` Felix Fietkau
2013-10-11 15:10 ` Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131010193551.462fc1f8@nehalam.linuxnetplumber.net \
--to=stephen@networkplumber$(echo .)org \
--cc=nbd@openwrt$(echo .)org \
--cc=netdev@vger$(echo .)kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox