-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
netfilter: bridge: split ipv6 code into separated file
Resolve compilation breakage when CONFIG_IPV6 is not set by moving the IPv6 code into a separated br_netfilter_ipv6.c file. Fixes: efb6de9 ("netfilter: bridge: forward IPv6 fragmented packets") Reported-by: kbuild test robot <fengguang.wu@intel.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
- Loading branch information
Pablo Neira Ayuso
committed
Jun 18, 2015
1 parent
c4e70a8
commit 230ac49
Showing
4 changed files
with
315 additions
and
239 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,66 @@ | ||
#ifndef _BR_NETFILTER_H_ | ||
#define _BR_NETFILTER_H_ | ||
|
||
#include "../../../net/bridge/br_private.h" | ||
|
||
static inline struct nf_bridge_info *nf_bridge_alloc(struct sk_buff *skb) | ||
{ | ||
skb->nf_bridge = kzalloc(sizeof(struct nf_bridge_info), GFP_ATOMIC); | ||
|
||
if (likely(skb->nf_bridge)) | ||
atomic_set(&(skb->nf_bridge->use), 1); | ||
|
||
return skb->nf_bridge; | ||
} | ||
|
||
void nf_bridge_update_protocol(struct sk_buff *skb); | ||
|
||
static inline struct nf_bridge_info * | ||
nf_bridge_info_get(const struct sk_buff *skb) | ||
{ | ||
return skb->nf_bridge; | ||
} | ||
|
||
unsigned int nf_bridge_encap_header_len(const struct sk_buff *skb); | ||
|
||
static inline void nf_bridge_push_encap_header(struct sk_buff *skb) | ||
{ | ||
unsigned int len = nf_bridge_encap_header_len(skb); | ||
|
||
skb_push(skb, len); | ||
skb->network_header -= len; | ||
} | ||
|
||
int br_nf_pre_routing_finish_bridge(struct sock *sk, struct sk_buff *skb); | ||
|
||
static inline struct rtable *bridge_parent_rtable(const struct net_device *dev) | ||
{ | ||
struct net_bridge_port *port; | ||
|
||
port = br_port_get_rcu(dev); | ||
return port ? &port->br->fake_rtable : NULL; | ||
} | ||
|
||
struct net_device *setup_pre_routing(struct sk_buff *skb); | ||
void br_netfilter_enable(void); | ||
|
||
#if IS_ENABLED(CONFIG_IPV6) | ||
int br_validate_ipv6(struct sk_buff *skb); | ||
unsigned int br_nf_pre_routing_ipv6(const struct nf_hook_ops *ops, | ||
struct sk_buff *skb, | ||
const struct nf_hook_state *state); | ||
#else | ||
static inline int br_validate_ipv6(struct sk_buff *skb) | ||
{ | ||
return -1; | ||
} | ||
|
||
static inline unsigned int | ||
br_nf_pre_routing_ipv6(const struct nf_hook_ops *ops, struct sk_buff *skb, | ||
const struct nf_hook_state *state) | ||
{ | ||
return NF_DROP; | ||
} | ||
#endif | ||
|
||
#endif /* _BR_NETFILTER_H_ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.