Skip to content

Commit

Permalink
netfilter: flowtable: call dst_check() to fall back to classic forwar…
Browse files Browse the repository at this point in the history
…ding

In case the route is stale, pass up the packet to the classic forwarding
path for re-evaluation and schedule this flow entry for removal.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  • Loading branch information
Pablo Neira Ayuso committed Mar 17, 2021
1 parent f440126 commit e5075c0
Showing 1 changed file with 2 additions and 10 deletions.
12 changes: 2 additions & 10 deletions net/netfilter/nf_flow_table_ip.c
Original file line number Diff line number Diff line change
Expand Up @@ -197,14 +197,6 @@ static bool nf_flow_exceeds_mtu(const struct sk_buff *skb, unsigned int mtu)
return true;
}

static int nf_flow_offload_dst_check(struct dst_entry *dst)
{
if (unlikely(dst_xfrm(dst)))
return dst_check(dst, 0) ? 0 : -1;

return 0;
}

static unsigned int nf_flow_xmit_xfrm(struct sk_buff *skb,
const struct nf_hook_state *state,
struct dst_entry *dst)
Expand Down Expand Up @@ -256,7 +248,7 @@ nf_flow_offload_ip_hook(void *priv, struct sk_buff *skb,

flow_offload_refresh(flow_table, flow);

if (nf_flow_offload_dst_check(&rt->dst)) {
if (!dst_check(&rt->dst, 0)) {
flow_offload_teardown(flow);
return NF_ACCEPT;
}
Expand Down Expand Up @@ -476,7 +468,7 @@ nf_flow_offload_ipv6_hook(void *priv, struct sk_buff *skb,

flow_offload_refresh(flow_table, flow);

if (nf_flow_offload_dst_check(&rt->dst)) {
if (!dst_check(&rt->dst, 0)) {
flow_offload_teardown(flow);
return NF_ACCEPT;
}
Expand Down

0 comments on commit e5075c0

Please sign in to comment.