Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8fc02781 authored by Gao feng's avatar Gao feng Committed by Pablo Neira Ayuso
Browse files

netfilter: nf_ct_icmpv6: add icmpv6_kmemdup_sysctl_table function



Split sysctl function into smaller chucks to cleanup code and prepare
patches to reduce ifdef pollution.

Signed-off-by: default avatarGao feng <gaofeng@cn.fujitsu.com>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent a9082b45
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -333,22 +333,31 @@ static struct ctl_table icmpv6_sysctl_table[] = {
};
#endif /* CONFIG_SYSCTL */

static int icmpv6_init_net(struct net *net, u_int16_t proto)
static int icmpv6_kmemdup_sysctl_table(struct nf_proto_net *pn,
				       struct nf_icmp_net *in)
{
	struct nf_icmp_net *in = icmpv6_pernet(net);
	struct nf_proto_net *pn = (struct nf_proto_net *)in;
	in->timeout = nf_ct_icmpv6_timeout;
#ifdef CONFIG_SYSCTL
	pn->ctl_table = kmemdup(icmpv6_sysctl_table,
				sizeof(icmpv6_sysctl_table),
				GFP_KERNEL);
	if (!pn->ctl_table)
		return -ENOMEM;

	pn->ctl_table[0].data = &in->timeout;
#endif
	return 0;
}

static int icmpv6_init_net(struct net *net, u_int16_t proto)
{
	struct nf_icmp_net *in = icmpv6_pernet(net);
	struct nf_proto_net *pn = &in->pn;

	in->timeout = nf_ct_icmpv6_timeout;

	return icmpv6_kmemdup_sysctl_table(pn, in);
}

struct nf_conntrack_l4proto nf_conntrack_l4proto_icmpv6 __read_mostly =
{
	.l3proto		= PF_INET6,