Commit f1caad27 authored by Gao feng's avatar Gao feng Committed by Pablo Neira Ayuso

netfilter: nf_conntrack: prepare l4proto->init_net cleanup

l4proto->init contain quite redundant code. We can simplify this
by adding a new parameter l3proto.

This patch prepares that code simplification.
Signed-off-by: default avatarGao feng <gaofeng@cn.fujitsu.com>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent fa0f61f0
...@@ -97,7 +97,7 @@ struct nf_conntrack_l4proto { ...@@ -97,7 +97,7 @@ struct nf_conntrack_l4proto {
#endif #endif
int *net_id; int *net_id;
/* Init l4proto pernet data */ /* Init l4proto pernet data */
int (*init_net)(struct net *net); int (*init_net)(struct net *net, u_int16_t proto);
/* Protocol name */ /* Protocol name */
const char *name; const char *name;
......
...@@ -337,7 +337,7 @@ static struct ctl_table icmp_compat_sysctl_table[] = { ...@@ -337,7 +337,7 @@ static struct ctl_table icmp_compat_sysctl_table[] = {
#endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */ #endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */
static int icmp_init_net(struct net *net) static int icmp_init_net(struct net *net, u_int16_t proto)
{ {
struct nf_icmp_net *in = icmp_pernet(net); struct nf_icmp_net *in = icmp_pernet(net);
struct nf_proto_net *pn = (struct nf_proto_net *)in; struct nf_proto_net *pn = (struct nf_proto_net *)in;
......
...@@ -333,7 +333,7 @@ static struct ctl_table icmpv6_sysctl_table[] = { ...@@ -333,7 +333,7 @@ static struct ctl_table icmpv6_sysctl_table[] = {
}; };
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */
static int icmpv6_init_net(struct net *net) static int icmpv6_init_net(struct net *net, u_int16_t proto)
{ {
struct nf_icmp_net *in = icmpv6_pernet(net); struct nf_icmp_net *in = icmpv6_pernet(net);
struct nf_proto_net *pn = (struct nf_proto_net *)in; struct nf_proto_net *pn = (struct nf_proto_net *)in;
......
...@@ -461,7 +461,7 @@ int nf_conntrack_l4proto_register(struct net *net, ...@@ -461,7 +461,7 @@ int nf_conntrack_l4proto_register(struct net *net,
int ret = 0; int ret = 0;
if (l4proto->init_net) { if (l4proto->init_net) {
ret = l4proto->init_net(net); ret = l4proto->init_net(net, l4proto->l3proto);
if (ret < 0) if (ret < 0)
return ret; return ret;
} }
...@@ -515,7 +515,8 @@ int nf_conntrack_proto_init(struct net *net) ...@@ -515,7 +515,8 @@ int nf_conntrack_proto_init(struct net *net)
{ {
unsigned int i; unsigned int i;
int err; int err;
err = nf_conntrack_l4proto_generic.init_net(net); err = nf_conntrack_l4proto_generic.init_net(net,
nf_conntrack_l4proto_generic.l3proto);
if (err < 0) if (err < 0)
return err; return err;
err = nf_ct_l4proto_register_sysctl(net, err = nf_ct_l4proto_register_sysctl(net,
......
...@@ -815,7 +815,7 @@ static struct ctl_table dccp_sysctl_table[] = { ...@@ -815,7 +815,7 @@ static struct ctl_table dccp_sysctl_table[] = {
}; };
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */
static int dccp_init_net(struct net *net) static int dccp_init_net(struct net *net, u_int16_t proto)
{ {
struct dccp_net *dn = dccp_pernet(net); struct dccp_net *dn = dccp_pernet(net);
struct nf_proto_net *pn = (struct nf_proto_net *)dn; struct nf_proto_net *pn = (struct nf_proto_net *)dn;
......
...@@ -135,7 +135,7 @@ static struct ctl_table generic_compat_sysctl_table[] = { ...@@ -135,7 +135,7 @@ static struct ctl_table generic_compat_sysctl_table[] = {
#endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */ #endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */
static int generic_init_net(struct net *net) static int generic_init_net(struct net *net, u_int16_t proto)
{ {
struct nf_generic_net *gn = generic_pernet(net); struct nf_generic_net *gn = generic_pernet(net);
struct nf_proto_net *pn = (struct nf_proto_net *)gn; struct nf_proto_net *pn = (struct nf_proto_net *)gn;
......
...@@ -348,7 +348,7 @@ gre_timeout_nla_policy[CTA_TIMEOUT_GRE_MAX+1] = { ...@@ -348,7 +348,7 @@ gre_timeout_nla_policy[CTA_TIMEOUT_GRE_MAX+1] = {
}; };
#endif /* CONFIG_NF_CT_NETLINK_TIMEOUT */ #endif /* CONFIG_NF_CT_NETLINK_TIMEOUT */
static int gre_init_net(struct net *net) static int gre_init_net(struct net *net, u_int16_t proto)
{ {
struct netns_proto_gre *net_gre = gre_pernet(net); struct netns_proto_gre *net_gre = gre_pernet(net);
int i; int i;
......
...@@ -767,7 +767,7 @@ static int sctp_kmemdup_compat_sysctl_table(struct nf_proto_net *pn) ...@@ -767,7 +767,7 @@ static int sctp_kmemdup_compat_sysctl_table(struct nf_proto_net *pn)
return 0; return 0;
} }
static int sctpv4_init_net(struct net *net) static int sctpv4_init_net(struct net *net, u_int16_t proto)
{ {
int ret; int ret;
struct sctp_net *sn = sctp_pernet(net); struct sctp_net *sn = sctp_pernet(net);
...@@ -793,7 +793,7 @@ static int sctpv4_init_net(struct net *net) ...@@ -793,7 +793,7 @@ static int sctpv4_init_net(struct net *net)
return ret; return ret;
} }
static int sctpv6_init_net(struct net *net) static int sctpv6_init_net(struct net *net, u_int16_t proto)
{ {
struct sctp_net *sn = sctp_pernet(net); struct sctp_net *sn = sctp_pernet(net);
struct nf_proto_net *pn = (struct nf_proto_net *)sn; struct nf_proto_net *pn = (struct nf_proto_net *)sn;
......
...@@ -1593,7 +1593,7 @@ static int tcp_kmemdup_compat_sysctl_table(struct nf_proto_net *pn) ...@@ -1593,7 +1593,7 @@ static int tcp_kmemdup_compat_sysctl_table(struct nf_proto_net *pn)
return 0; return 0;
} }
static int tcpv4_init_net(struct net *net) static int tcpv4_init_net(struct net *net, u_int16_t proto)
{ {
int i; int i;
int ret = 0; int ret = 0;
...@@ -1631,7 +1631,7 @@ static int tcpv4_init_net(struct net *net) ...@@ -1631,7 +1631,7 @@ static int tcpv4_init_net(struct net *net)
return ret; return ret;
} }
static int tcpv6_init_net(struct net *net) static int tcpv6_init_net(struct net *net, u_int16_t proto)
{ {
int i; int i;
struct nf_tcp_net *tn = tcp_pernet(net); struct nf_tcp_net *tn = tcp_pernet(net);
......
...@@ -283,7 +283,7 @@ static void udp_init_net_data(struct nf_udp_net *un) ...@@ -283,7 +283,7 @@ static void udp_init_net_data(struct nf_udp_net *un)
} }
} }
static int udpv4_init_net(struct net *net) static int udpv4_init_net(struct net *net, u_int16_t proto)
{ {
int ret; int ret;
struct nf_udp_net *un = udp_pernet(net); struct nf_udp_net *un = udp_pernet(net);
...@@ -307,7 +307,7 @@ static int udpv4_init_net(struct net *net) ...@@ -307,7 +307,7 @@ static int udpv4_init_net(struct net *net)
return ret; return ret;
} }
static int udpv6_init_net(struct net *net) static int udpv6_init_net(struct net *net, u_int16_t proto)
{ {
struct nf_udp_net *un = udp_pernet(net); struct nf_udp_net *un = udp_pernet(net);
struct nf_proto_net *pn = (struct nf_proto_net *)un; struct nf_proto_net *pn = (struct nf_proto_net *)un;
......
...@@ -234,7 +234,7 @@ static struct ctl_table udplite_sysctl_table[] = { ...@@ -234,7 +234,7 @@ static struct ctl_table udplite_sysctl_table[] = {
}; };
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */
static int udplite_init_net(struct net *net) static int udplite_init_net(struct net *net, u_int16_t proto)
{ {
int i; int i;
struct udplite_net *un = udplite_pernet(net); struct udplite_net *un = udplite_pernet(net);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment