netfilter: add and use nf_ct_set helper
Add a helper to assign a nf_conn entry and the ctinfo bits to an sk_buff. This avoids changing code in followup patch that merges skb->nfct and skb->nfctinfo into skb->_nfct. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
committed by
Pablo Neira Ayuso
parent
cb9c68363e
commit
c74454fadd
@@ -691,10 +691,7 @@ static int nf_ct_resolve_clash(struct net *net, struct sk_buff *skb,
|
||||
|
||||
nf_ct_acct_merge(ct, ctinfo, loser_ct);
|
||||
nf_conntrack_put(&loser_ct->ct_general);
|
||||
/* Assign conntrack already in hashes to this skbuff. Don't
|
||||
* modify skb->nfctinfo to ensure consistent stateful filtering.
|
||||
*/
|
||||
skb->nfct = &ct->ct_general;
|
||||
nf_ct_set(skb, ct, oldinfo);
|
||||
return NF_ACCEPT;
|
||||
}
|
||||
NF_CT_STAT_INC(net, drop);
|
||||
@@ -1282,8 +1279,7 @@ resolve_normal_ct(struct net *net, struct nf_conn *tmpl,
|
||||
}
|
||||
*set_reply = 0;
|
||||
}
|
||||
skb->nfct = &ct->ct_general;
|
||||
skb->nfctinfo = *ctinfo;
|
||||
nf_ct_set(skb, ct, *ctinfo);
|
||||
return ct;
|
||||
}
|
||||
|
||||
@@ -1526,8 +1522,7 @@ static void nf_conntrack_attach(struct sk_buff *nskb, const struct sk_buff *skb)
|
||||
ctinfo = IP_CT_RELATED;
|
||||
|
||||
/* Attach to new skbuff, and increment count */
|
||||
nskb->nfct = &ct->ct_general;
|
||||
nskb->nfctinfo = ctinfo;
|
||||
nf_ct_set(nskb, ct, ctinfo);
|
||||
nf_conntrack_get(skb_nfct(nskb));
|
||||
}
|
||||
|
||||
|
||||
@@ -554,8 +554,7 @@ static void nft_notrack_eval(const struct nft_expr *expr,
|
||||
|
||||
ct = nf_ct_untracked_get();
|
||||
atomic_inc(&ct->ct_general.use);
|
||||
skb->nfct = &ct->ct_general;
|
||||
skb->nfctinfo = IP_CT_NEW;
|
||||
nf_ct_set(skb, ct, IP_CT_NEW);
|
||||
}
|
||||
|
||||
static struct nft_expr_type nft_notrack_type;
|
||||
|
||||
@@ -30,8 +30,7 @@ static inline int xt_ct_target(struct sk_buff *skb, struct nf_conn *ct)
|
||||
if (!ct)
|
||||
ct = nf_ct_untracked_get();
|
||||
atomic_inc(&ct->ct_general.use);
|
||||
skb->nfct = &ct->ct_general;
|
||||
skb->nfctinfo = IP_CT_NEW;
|
||||
nf_ct_set(skb, ct, IP_CT_NEW);
|
||||
|
||||
return XT_CONTINUE;
|
||||
}
|
||||
@@ -413,8 +412,7 @@ notrack_tg(struct sk_buff *skb, const struct xt_action_param *par)
|
||||
if (skb->nfct != NULL)
|
||||
return XT_CONTINUE;
|
||||
|
||||
skb->nfct = &nf_ct_untracked_get()->ct_general;
|
||||
skb->nfctinfo = IP_CT_NEW;
|
||||
nf_ct_set(skb, nf_ct_untracked_get(), IP_CT_NEW);
|
||||
nf_conntrack_get(skb_nfct(skb));
|
||||
|
||||
return XT_CONTINUE;
|
||||
|
||||
Reference in New Issue
Block a user