From 9fb27297abcacf028ed46ec77923b4b31b4432f2 Mon Sep 17 00:00:00 2001 From: Art Haas Date: Tue, 11 Mar 2003 00:12:46 -0800 Subject: [PATCH] [NETFILTER]: Really apply the ipv4 C99 patches this time. :-) --- net/ipv4/netfilter/arptable_filter.c | 25 +++++++--- net/ipv4/netfilter/ip_conntrack_standalone.c | 37 ++++++++++---- net/ipv4/netfilter/ip_fw_compat.c | 49 ++++++++++++------ net/ipv4/netfilter/ip_nat_rule.c | 25 +++++++--- net/ipv4/netfilter/ip_nat_standalone.c | 34 ++++++++++--- net/ipv4/netfilter/iptable_filter.c | 34 ++++++++++--- net/ipv4/netfilter/iptable_mangle.c | 52 ++++++++++++++------ 7 files changed, 188 insertions(+), 68 deletions(-) diff --git a/net/ipv4/netfilter/arptable_filter.c b/net/ipv4/netfilter/arptable_filter.c index b7f40e831eb1c..0519b79304960 100644 --- a/net/ipv4/netfilter/arptable_filter.c +++ b/net/ipv4/netfilter/arptable_filter.c @@ -111,9 +111,14 @@ static struct } }; -static struct arpt_table packet_filter -= { { NULL, NULL }, "filter", &initial_table.repl, - FILTER_VALID_HOOKS, RW_LOCK_UNLOCKED, NULL, THIS_MODULE }; +static struct arpt_table packet_filter = { + .name = "filter", + .table = &initial_table.repl, + .valid_hooks = FILTER_VALID_HOOKS, + .lock = RW_LOCK_UNLOCKED, + .private = NULL, + .me = THIS_MODULE, +}; /* The work comes in here from netfilter.c */ static unsigned int arpt_hook(unsigned int hook, @@ -125,9 +130,17 @@ static unsigned int arpt_hook(unsigned int hook, return arpt_do_table(pskb, hook, in, out, &packet_filter, NULL); } -static struct nf_hook_ops arpt_ops[] -= { { { NULL, NULL }, arpt_hook, NF_ARP, NF_ARP_IN, 0 }, - { { NULL, NULL }, arpt_hook, NF_ARP, NF_ARP_OUT, 0 } +static struct nf_hook_ops arpt_ops[] = { + { + .hook = arpt_hook, + .pf = NF_ARP, + .hooknum = NF_ARP_IN, + }, + { + .hook = arpt_hook, + .pf = NF_ARP, + .hooknum = NF_ARP_OUT, + } }; static int __init init(void) diff --git a/net/ipv4/netfilter/ip_conntrack_standalone.c b/net/ipv4/netfilter/ip_conntrack_standalone.c index 3b6cd1628dfd4..f3c5450dfb70c 100644 --- a/net/ipv4/netfilter/ip_conntrack_standalone.c +++ b/net/ipv4/netfilter/ip_conntrack_standalone.c @@ -226,17 +226,34 @@ static unsigned int ip_conntrack_local(unsigned int hooknum, /* Connection tracking may drop packets, but never alters them, so make it the first hook. */ -static struct nf_hook_ops ip_conntrack_in_ops -= { { NULL, NULL }, ip_conntrack_in, PF_INET, NF_IP_PRE_ROUTING, - NF_IP_PRI_CONNTRACK }; -static struct nf_hook_ops ip_conntrack_local_out_ops -= { { NULL, NULL }, ip_conntrack_local, PF_INET, NF_IP_LOCAL_OUT, - NF_IP_PRI_CONNTRACK }; +static struct nf_hook_ops ip_conntrack_in_ops = { + .hook = ip_conntrack_in, + .pf = PF_INET, + .hooknum = NF_IP_PRE_ROUTING, + .priority = NF_IP_PRI_CONNTRACK, +}; + +static struct nf_hook_ops ip_conntrack_local_out_ops = { + .hook = ip_conntrack_local, + .pf = PF_INET, + .hooknum = NF_IP_LOCAL_OUT, + .priority = NF_IP_PRI_CONNTRACK, +}; + /* Refragmenter; last chance. */ -static struct nf_hook_ops ip_conntrack_out_ops -= { { NULL, NULL }, ip_refrag, PF_INET, NF_IP_POST_ROUTING, NF_IP_PRI_LAST }; -static struct nf_hook_ops ip_conntrack_local_in_ops -= { { NULL, NULL }, ip_confirm, PF_INET, NF_IP_LOCAL_IN, NF_IP_PRI_LAST-1 }; +static struct nf_hook_ops ip_conntrack_out_ops = { + .hook = ip_refrag, + .pf = PF_INET, + .hooknum = NF_IP_POST_ROUTING, + .priority = NF_IP_PRI_LAST, +}; + +static struct nf_hook_ops ip_conntrack_local_in_ops = { + .hook = ip_confirm, + .pf = PF_INET, + .hooknum = NF_IP_LOCAL_IN, + .priority = NF_IP_PRI_LAST-1, +}; static int init_or_cleanup(int init) { diff --git a/net/ipv4/netfilter/ip_fw_compat.c b/net/ipv4/netfilter/ip_fw_compat.c index b19fcbbb5df37..8efe916faf348 100644 --- a/net/ipv4/netfilter/ip_fw_compat.c +++ b/net/ipv4/netfilter/ip_fw_compat.c @@ -216,21 +216,40 @@ static int sock_fn(struct sock *sk, int optval, void *user, unsigned int len) return -ip_fw_ctl(optval, &tmp_fw, len); } -static struct nf_hook_ops preroute_ops -= { { NULL, NULL }, fw_in, PF_INET, NF_IP_PRE_ROUTING, NF_IP_PRI_FILTER }; - -static struct nf_hook_ops postroute_ops -= { { NULL, NULL }, fw_in, PF_INET, NF_IP_POST_ROUTING, NF_IP_PRI_FILTER }; - -static struct nf_hook_ops forward_ops -= { { NULL, NULL }, fw_in, PF_INET, NF_IP_FORWARD, NF_IP_PRI_FILTER }; - -static struct nf_hook_ops local_in_ops -= { { NULL, NULL }, fw_confirm, PF_INET, NF_IP_LOCAL_IN, NF_IP_PRI_LAST - 1 }; - -static struct nf_sockopt_ops sock_ops -= { { NULL, NULL }, PF_INET, 64, 64 + 1024 + 1, &sock_fn, 0, 0, NULL, - 0, NULL }; +static struct nf_hook_ops preroute_ops = { + .hook = fw_in, + .pf = PF_INET, + .hooknum = NF_IP_PRE_ROUTING, + .priority = NF_IP_PRI_FILTER, +}; + +static struct nf_hook_ops postroute_ops = { + .hook = fw_in, + .pf = PF_INET, + .hooknum = NF_IP_POST_ROUTING, + .priority = NF_IP_PRI_FILTER, +}; + +static struct nf_hook_ops forward_ops = { + .hook = fw_in, + .pf = PF_INET, + .hooknum = NF_IP_FORWARD, + .priority = NF_IP_PRI_FILTER, +}; + +static struct nf_hook_ops local_in_ops = { + .hook = fw_confirm, + .pf = PF_INET, + .hooknum = NF_IP_LOCAL_IN, + .priority = NF_IP_PRI_LAST - 1, +}; + +static struct nf_sockopt_ops sock_ops = { + .pf = PF_INET, + .set_optmin = 64, + .set_optmax = 64 + 1024 + 1, + .set = &sock_fn, +}; extern int ipfw_init_or_cleanup(int init); diff --git a/net/ipv4/netfilter/ip_nat_rule.c b/net/ipv4/netfilter/ip_nat_rule.c index 7ae3e26398397..e994863bedc58 100644 --- a/net/ipv4/netfilter/ip_nat_rule.c +++ b/net/ipv4/netfilter/ip_nat_rule.c @@ -101,9 +101,13 @@ static struct } }; -static struct ipt_table nat_table -= { { NULL, NULL }, "nat", &nat_initial_table.repl, - NAT_VALID_HOOKS, RW_LOCK_UNLOCKED, NULL, THIS_MODULE }; +static struct ipt_table nat_table = { + .name = "nat", + .table = &nat_initial_table.repl, + .valid_hooks = NAT_VALID_HOOKS, + .lock = RW_LOCK_UNLOCKED, + .me = THIS_MODULE, +}; /* Source NAT */ static unsigned int ipt_snat_target(struct sk_buff **pskb, @@ -270,10 +274,17 @@ int ip_nat_rule_find(struct sk_buff **pskb, return ret; } -static struct ipt_target ipt_snat_reg -= { { NULL, NULL }, "SNAT", ipt_snat_target, ipt_snat_checkentry, NULL }; -static struct ipt_target ipt_dnat_reg -= { { NULL, NULL }, "DNAT", ipt_dnat_target, ipt_dnat_checkentry, NULL }; +static struct ipt_target ipt_snat_reg = { + .name = "SNAT", + .target = ipt_snat_target, + .checkentry = ipt_snat_checkentry, +}; + +static struct ipt_target ipt_dnat_reg = { + .name = "DNAT", + .target = ipt_dnat_target, + .checkentry = ipt_dnat_checkentry, +}; int __init ip_nat_rule_init(void) { diff --git a/net/ipv4/netfilter/ip_nat_standalone.c b/net/ipv4/netfilter/ip_nat_standalone.c index 151f944a9837b..ee360c0db5892 100644 --- a/net/ipv4/netfilter/ip_nat_standalone.c +++ b/net/ipv4/netfilter/ip_nat_standalone.c @@ -225,18 +225,36 @@ ip_nat_local_fn(unsigned int hooknum, /* We must be after connection tracking and before packet filtering. */ /* Before packet filtering, change destination */ -static struct nf_hook_ops ip_nat_in_ops -= { { NULL, NULL }, ip_nat_fn, PF_INET, NF_IP_PRE_ROUTING, NF_IP_PRI_NAT_DST }; +static struct nf_hook_ops ip_nat_in_ops = { + .hook = ip_nat_fn, + .pf = PF_INET, + .hooknum = NF_IP_PRE_ROUTING, + .priority = NF_IP_PRI_NAT_DST, +}; + /* After packet filtering, change source */ -static struct nf_hook_ops ip_nat_out_ops -= { { NULL, NULL }, ip_nat_out, PF_INET, NF_IP_POST_ROUTING, NF_IP_PRI_NAT_SRC}; +static struct nf_hook_ops ip_nat_out_ops = { + .hook = ip_nat_out, + .pf = PF_INET, + .hooknum = NF_IP_POST_ROUTING, + .priority = NF_IP_PRI_NAT_SRC, +}; + /* Before packet filtering, change destination */ -static struct nf_hook_ops ip_nat_local_out_ops -= { { NULL, NULL }, ip_nat_local_fn, PF_INET, NF_IP_LOCAL_OUT, NF_IP_PRI_NAT_DST }; +static struct nf_hook_ops ip_nat_local_out_ops = { + .hook = ip_nat_local_fn, + .pf = PF_INET, + .hooknum = NF_IP_LOCAL_OUT, + .priority = NF_IP_PRI_NAT_DST, +}; #ifdef CONFIG_IP_NF_NAT_LOCAL -static struct nf_hook_ops ip_nat_local_in_ops -= { { NULL, NULL }, ip_nat_fn, PF_INET, NF_IP_LOCAL_IN, NF_IP_PRI_NAT_SRC }; +static struct nf_hook_ops ip_nat_local_in_ops = { + .hook = ip_nat_fn, + .pf = PF_INET, + .hooknum = NF_IP_LOCAL_IN, + .priority = NF_IP_PRI_NAT_SRC, +}; #endif /* Protocol registration. */ diff --git a/net/ipv4/netfilter/iptable_filter.c b/net/ipv4/netfilter/iptable_filter.c index be9b81cea3728..a30b48144e797 100644 --- a/net/ipv4/netfilter/iptable_filter.c +++ b/net/ipv4/netfilter/iptable_filter.c @@ -81,9 +81,13 @@ static struct } }; -static struct ipt_table packet_filter -= { { NULL, NULL }, "filter", &initial_table.repl, - FILTER_VALID_HOOKS, RW_LOCK_UNLOCKED, NULL, THIS_MODULE }; +static struct ipt_table packet_filter = { + .name = "filter", + .table = &initial_table.repl, + .valid_hooks = FILTER_VALID_HOOKS, + .lock = RW_LOCK_UNLOCKED, + .me = THIS_MODULE +}; /* The work comes in here from netfilter.c. */ static unsigned int @@ -114,11 +118,25 @@ ipt_local_out_hook(unsigned int hook, return ipt_do_table(pskb, hook, in, out, &packet_filter, NULL); } -static struct nf_hook_ops ipt_ops[] -= { { { NULL, NULL }, ipt_hook, PF_INET, NF_IP_LOCAL_IN, NF_IP_PRI_FILTER }, - { { NULL, NULL }, ipt_hook, PF_INET, NF_IP_FORWARD, NF_IP_PRI_FILTER }, - { { NULL, NULL }, ipt_local_out_hook, PF_INET, NF_IP_LOCAL_OUT, - NF_IP_PRI_FILTER } +static struct nf_hook_ops ipt_ops[] = { + { + .hook = ipt_hook, + .pf = PF_INET, + .hooknum = NF_IP_LOCAL_IN, + .priority = NF_IP_PRI_FILTER, + }, + { + .hook = ipt_hook, + .pf = PF_INET, + .hooknum = NF_IP_FORWARD, + .priority = NF_IP_PRI_FILTER, + }, + { + .hook = ipt_local_out_hook, + .pf = PF_INET, + .hooknum = NF_IP_LOCAL_OUT, + .priority = NF_IP_PRI_FILTER, + }, }; /* Default to forward because I got too much mail already. */ diff --git a/net/ipv4/netfilter/iptable_mangle.c b/net/ipv4/netfilter/iptable_mangle.c index fe2f3cd3b9e1d..2031cd5a125aa 100644 --- a/net/ipv4/netfilter/iptable_mangle.c +++ b/net/ipv4/netfilter/iptable_mangle.c @@ -114,9 +114,13 @@ static struct } }; -static struct ipt_table packet_mangler -= { { NULL, NULL }, "mangle", &initial_table.repl, - MANGLE_VALID_HOOKS, RW_LOCK_UNLOCKED, NULL, THIS_MODULE }; +static struct ipt_table packet_mangler = { + .name = "mangle", + .table = &initial_table.repl, + .valid_hooks = MANGLE_VALID_HOOKS, + .lock = RW_LOCK_UNLOCKED, + .me = THIS_MODULE, +}; /* The work comes in here from netfilter.c. */ static unsigned int @@ -167,17 +171,37 @@ ipt_local_hook(unsigned int hook, return ret; } -static struct nf_hook_ops ipt_ops[] -= { { { NULL, NULL }, ipt_route_hook, PF_INET, NF_IP_PRE_ROUTING, - NF_IP_PRI_MANGLE }, - { { NULL, NULL }, ipt_local_hook, PF_INET, NF_IP_LOCAL_IN, - NF_IP_PRI_MANGLE }, - { { NULL, NULL }, ipt_route_hook, PF_INET, NF_IP_FORWARD, - NF_IP_PRI_MANGLE }, - { { NULL, NULL }, ipt_local_hook, PF_INET, NF_IP_LOCAL_OUT, - NF_IP_PRI_MANGLE }, - { { NULL, NULL }, ipt_route_hook, PF_INET, NF_IP_POST_ROUTING, - NF_IP_PRI_MANGLE } +static struct nf_hook_ops ipt_ops[] = { + { + .hook = ipt_route_hook, + .pf = PF_INET, + .hooknum = NF_IP_PRE_ROUTING, + .priority = NF_IP_PRI_MANGLE, + }, + { + .hook = ipt_local_hook, + .pf = PF_INET, + .hooknum = NF_IP_LOCAL_IN, + .priority = NF_IP_PRI_MANGLE, + }, + { + .hook = ipt_route_hook, + .pf = PF_INET, + .hooknum = NF_IP_FORWARD, + .priority = NF_IP_PRI_MANGLE, + }, + { + .hook = ipt_local_hook, + .pf = PF_INET, + .hooknum = NF_IP_LOCAL_OUT, + .priority = NF_IP_PRI_MANGLE, + }, + { + .hook = ipt_route_hook, + .pf = PF_INET, + .hooknum = NF_IP_POST_ROUTING, + .priority = NF_IP_PRI_MANGLE, + }, }; static int __init init(void) -- 2.53.0