Skip to content

Commit

Permalink
netfilter: xt_CT: fix timeout setting with IPv6
Browse files Browse the repository at this point in the history
This patch fixes ip6tables and the CT target if it is used to set
some custom conntrack timeout policy for IPv6.

Use xt_ct_find_proto which already handles the ip6tables case for us.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  • Loading branch information
Pablo Neira Ayuso committed Oct 15, 2012
1 parent b61a602 commit 0153d5a
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions net/netfilter/xt_CT.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,9 +180,9 @@ xt_ct_set_timeout(struct nf_conn *ct, const struct xt_tgchk_param *par,
typeof(nf_ct_timeout_find_get_hook) timeout_find_get;
struct ctnl_timeout *timeout;
struct nf_conn_timeout *timeout_ext;
const struct ipt_entry *e = par->entryinfo;
struct nf_conntrack_l4proto *l4proto;
int ret = 0;
u8 proto;

rcu_read_lock();
timeout_find_get = rcu_dereference(nf_ct_timeout_find_get_hook);
Expand All @@ -192,9 +192,11 @@ xt_ct_set_timeout(struct nf_conn *ct, const struct xt_tgchk_param *par,
goto out;
}

if (e->ip.invflags & IPT_INV_PROTO) {
proto = xt_ct_find_proto(par);
if (!proto) {
ret = -EINVAL;
pr_info("You cannot use inversion on L4 protocol\n");
pr_info("You must specify a L4 protocol, and not use "
"inversions on it.\n");
goto out;
}

Expand All @@ -214,7 +216,7 @@ xt_ct_set_timeout(struct nf_conn *ct, const struct xt_tgchk_param *par,
/* Make sure the timeout policy matches any existing protocol tracker,
* otherwise default to generic.
*/
l4proto = __nf_ct_l4proto_find(par->family, e->ip.proto);
l4proto = __nf_ct_l4proto_find(par->family, proto);
if (timeout->l4proto->l4proto != l4proto->l4proto) {
ret = -EINVAL;
pr_info("Timeout policy `%s' can only be used by L4 protocol "
Expand Down

0 comments on commit 0153d5a

Please sign in to comment.