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

	in->timeout = nf_ct_icmp_timeout;

	return icmp_kmemdup_sysctl_table(pn, in);
}
static int icmp_timeout_nlattr_to_obj(struct nlattr *tb[],
				      struct net *net, void *data)
{
	unsigned int *timeout = data;
	struct nf_icmp_net *in = icmp_pernet(net);

	if (tb[CTA_TIMEOUT_ICMP_TIMEOUT]) {
		*timeout =
			ntohl(nla_get_be32(tb[CTA_TIMEOUT_ICMP_TIMEOUT])) * HZ;
	} else {
		/* Set default ICMP timeout. */
		*timeout = in->timeout;
	}
	return 0;
}
static int icmp_init_net(struct net *net, u_int16_t proto)
{
	int ret;
	struct nf_icmp_net *in = icmp_pernet(net);
	struct nf_proto_net *pn = &in->pn;

	in->timeout = nf_ct_icmp_timeout;

	ret = icmp_kmemdup_compat_sysctl_table(pn, in);
	if (ret < 0)
		return ret;

	ret = icmp_kmemdup_sysctl_table(pn, in);
	if (ret < 0)
		nf_ct_kfree_compat_sysctl_table(pn);

	return ret;
}
static unsigned int *icmp_get_timeouts(struct net *net)
{
	return &icmp_pernet(net)->timeout;
}