|
@@ -67,27 +67,25 @@ EXPORT_SYMBOL_GPL(nft_bridge_ip6hdr_validate);
|
|
static inline void nft_bridge_set_pktinfo_ipv4(struct nft_pktinfo *pkt,
|
|
static inline void nft_bridge_set_pktinfo_ipv4(struct nft_pktinfo *pkt,
|
|
const struct nf_hook_ops *ops,
|
|
const struct nf_hook_ops *ops,
|
|
struct sk_buff *skb,
|
|
struct sk_buff *skb,
|
|
- const struct net_device *in,
|
|
|
|
- const struct net_device *out)
|
|
|
|
|
|
+ const struct nf_hook_state *state)
|
|
{
|
|
{
|
|
if (nft_bridge_iphdr_validate(skb))
|
|
if (nft_bridge_iphdr_validate(skb))
|
|
- nft_set_pktinfo_ipv4(pkt, ops, skb, in, out);
|
|
|
|
|
|
+ nft_set_pktinfo_ipv4(pkt, ops, skb, state);
|
|
else
|
|
else
|
|
- nft_set_pktinfo(pkt, ops, skb, in, out);
|
|
|
|
|
|
+ nft_set_pktinfo(pkt, ops, skb, state);
|
|
}
|
|
}
|
|
|
|
|
|
static inline void nft_bridge_set_pktinfo_ipv6(struct nft_pktinfo *pkt,
|
|
static inline void nft_bridge_set_pktinfo_ipv6(struct nft_pktinfo *pkt,
|
|
- const struct nf_hook_ops *ops,
|
|
|
|
- struct sk_buff *skb,
|
|
|
|
- const struct net_device *in,
|
|
|
|
- const struct net_device *out)
|
|
|
|
|
|
+ const struct nf_hook_ops *ops,
|
|
|
|
+ struct sk_buff *skb,
|
|
|
|
+ const struct nf_hook_state *state)
|
|
{
|
|
{
|
|
#if IS_ENABLED(CONFIG_IPV6)
|
|
#if IS_ENABLED(CONFIG_IPV6)
|
|
if (nft_bridge_ip6hdr_validate(skb) &&
|
|
if (nft_bridge_ip6hdr_validate(skb) &&
|
|
- nft_set_pktinfo_ipv6(pkt, ops, skb, in, out) == 0)
|
|
|
|
|
|
+ nft_set_pktinfo_ipv6(pkt, ops, skb, state) == 0)
|
|
return;
|
|
return;
|
|
#endif
|
|
#endif
|
|
- nft_set_pktinfo(pkt, ops, skb, in, out);
|
|
|
|
|
|
+ nft_set_pktinfo(pkt, ops, skb, state);
|
|
}
|
|
}
|
|
|
|
|
|
static unsigned int
|
|
static unsigned int
|
|
@@ -99,13 +97,13 @@ nft_do_chain_bridge(const struct nf_hook_ops *ops,
|
|
|
|
|
|
switch (eth_hdr(skb)->h_proto) {
|
|
switch (eth_hdr(skb)->h_proto) {
|
|
case htons(ETH_P_IP):
|
|
case htons(ETH_P_IP):
|
|
- nft_bridge_set_pktinfo_ipv4(&pkt, ops, skb, state->in, state->out);
|
|
|
|
|
|
+ nft_bridge_set_pktinfo_ipv4(&pkt, ops, skb, state);
|
|
break;
|
|
break;
|
|
case htons(ETH_P_IPV6):
|
|
case htons(ETH_P_IPV6):
|
|
- nft_bridge_set_pktinfo_ipv6(&pkt, ops, skb, state->in, state->out);
|
|
|
|
|
|
+ nft_bridge_set_pktinfo_ipv6(&pkt, ops, skb, state);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
- nft_set_pktinfo(&pkt, ops, skb, state->in, state->out);
|
|
|
|
|
|
+ nft_set_pktinfo(&pkt, ops, skb, state);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|