Contributors: 16
Author |
Tokens |
Token Proportion |
Commits |
Commit Proportion |
Pablo Neira Ayuso |
130 |
36.11% |
3 |
9.09% |
Florian Westphal |
43 |
11.94% |
2 |
6.06% |
Jeremy Sowden |
31 |
8.61% |
3 |
9.09% |
Eric W. Biedermann |
26 |
7.22% |
4 |
12.12% |
Bart De Schuymer |
23 |
6.39% |
1 |
3.03% |
Stephen Hemminger |
21 |
5.83% |
3 |
9.09% |
Linus Torvalds (pre-git) |
18 |
5.00% |
5 |
15.15% |
Simon Wunderlich |
18 |
5.00% |
1 |
3.03% |
David S. Miller |
14 |
3.89% |
2 |
6.06% |
Andy Zhou |
11 |
3.06% |
1 |
3.03% |
Patrick McHardy |
8 |
2.22% |
2 |
6.06% |
Herbert Xu |
7 |
1.94% |
2 |
6.06% |
Christian Brauner |
6 |
1.67% |
1 |
3.03% |
Peter Huang (Peng) |
2 |
0.56% |
1 |
3.03% |
Bernhard Thaler |
1 |
0.28% |
1 |
3.03% |
Greg Kroah-Hartman |
1 |
0.28% |
1 |
3.03% |
Total |
360 |
|
33 |
|
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BR_NETFILTER_H_
#define _BR_NETFILTER_H_
#include <linux/netfilter.h>
#include "../../../net/bridge/br_private.h"
static inline struct nf_bridge_info *nf_bridge_alloc(struct sk_buff *skb)
{
#if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
struct nf_bridge_info *b = skb_ext_add(skb, SKB_EXT_BRIDGE_NF);
if (b)
memset(b, 0, sizeof(*b));
return b;
#else
return NULL;
#endif
}
void nf_bridge_update_protocol(struct sk_buff *skb);
int br_nf_hook_thresh(unsigned int hook, struct net *net, struct sock *sk,
struct sk_buff *skb, struct net_device *indev,
struct net_device *outdev,
int (*okfn)(struct net *, struct sock *,
struct sk_buff *));
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 net *net, struct sock *sk, struct sk_buff *skb);
static inline struct rtable *bridge_parent_rtable(const struct net_device *dev)
{
#if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
struct net_bridge_port *port;
port = br_port_get_rcu(dev);
return port ? &port->br->fake_rtable : NULL;
#else
return NULL;
#endif
}
struct net_device *setup_pre_routing(struct sk_buff *skb,
const struct net *net);
#if IS_ENABLED(CONFIG_IPV6)
int br_validate_ipv6(struct net *net, struct sk_buff *skb);
unsigned int br_nf_pre_routing_ipv6(void *priv,
struct sk_buff *skb,
const struct nf_hook_state *state);
#else
static inline int br_validate_ipv6(struct net *net, struct sk_buff *skb)
{
return -1;
}
static inline unsigned int
br_nf_pre_routing_ipv6(void *priv, struct sk_buff *skb,
const struct nf_hook_state *state)
{
return NF_ACCEPT;
}
#endif
#endif /* _BR_NETFILTER_H_ */