aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorBart De Schuymer <bdschuym@pandora.be>2010-04-15 06:14:51 -0400
committerPatrick McHardy <kaber@trash.net>2010-04-15 06:14:51 -0400
commitea2d9b41bd418894d1ee25de1642c3325d71c397 (patch)
treee8187786c8d83123da104476fc0eb7132ec29045 /include
parent9c6eb28aca52d562f3ffbaebaa56385df9972a43 (diff)
netfilter: bridge-netfilter: simplify IP DNAT
Remove br_netfilter.c::br_nf_local_out(). The function br_nf_local_out() was needed because the PF_BRIDGE::LOCAL_OUT hook could be called when IP DNAT happens on to-be-bridged traffic. The new scheme eliminates this mess. Signed-off-by: Bart De Schuymer <bdschuym@pandora.be> Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/netfilter_bridge.h17
1 files changed, 14 insertions, 3 deletions
diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h
index f8105e54716a..ffab6c423a57 100644
--- a/include/linux/netfilter_bridge.h
+++ b/include/linux/netfilter_bridge.h
@@ -41,9 +41,8 @@ enum nf_br_hook_priorities {
41 41
42#define BRNF_PKT_TYPE 0x01 42#define BRNF_PKT_TYPE 0x01
43#define BRNF_BRIDGED_DNAT 0x02 43#define BRNF_BRIDGED_DNAT 0x02
44#define BRNF_DONT_TAKE_PARENT 0x04 44#define BRNF_BRIDGED 0x04
45#define BRNF_BRIDGED 0x08 45#define BRNF_NF_BRIDGE_PREROUTING 0x08
46#define BRNF_NF_BRIDGE_PREROUTING 0x10
47 46
48 47
49/* Only used in br_forward.c */ 48/* Only used in br_forward.c */
@@ -68,6 +67,18 @@ static inline unsigned int nf_bridge_encap_header_len(const struct sk_buff *skb)
68 } 67 }
69} 68}
70 69
70extern int br_handle_frame_finish(struct sk_buff *skb);
71/* Only used in br_device.c */
72static inline int br_nf_pre_routing_finish_bridge_slow(struct sk_buff *skb)
73{
74 struct nf_bridge_info *nf_bridge = skb->nf_bridge;
75
76 skb_pull(skb, ETH_HLEN);
77 nf_bridge->mask ^= BRNF_BRIDGED_DNAT;
78 skb->dev = nf_bridge->physindev;
79 return br_handle_frame_finish(skb);
80}
81
71/* This is called by the IP fragmenting code and it ensures there is 82/* This is called by the IP fragmenting code and it ensures there is
72 * enough room for the encapsulating header (if there is one). */ 83 * enough room for the encapsulating header (if there is one). */
73static inline unsigned int nf_bridge_pad(const struct sk_buff *skb) 84static inline unsigned int nf_bridge_pad(const struct sk_buff *skb)