diff options
author | Patrick McHardy <kaber@trash.net> | 2007-07-08 01:22:02 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-07-11 01:17:15 -0400 |
commit | 9f15c5302de4e8b0aac7ca24c36bf26a7fe1a513 (patch) | |
tree | f9bf5883558941b1ad519f02106f53eefc90ba38 /net | |
parent | ba9dda3ab5a865542e69dfe01edb2436857c9420 (diff) |
[NETFILTER]: x_tables: mark matches and targets __read_mostly
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
73 files changed, 79 insertions, 79 deletions
diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c index 1d75a5cd7b44..e981232942a1 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c | |||
@@ -1140,13 +1140,13 @@ void arpt_unregister_table(struct arpt_table *table) | |||
1140 | } | 1140 | } |
1141 | 1141 | ||
1142 | /* The built-in targets: standard (NULL) and error. */ | 1142 | /* The built-in targets: standard (NULL) and error. */ |
1143 | static struct arpt_target arpt_standard_target = { | 1143 | static struct arpt_target arpt_standard_target __read_mostly = { |
1144 | .name = ARPT_STANDARD_TARGET, | 1144 | .name = ARPT_STANDARD_TARGET, |
1145 | .targetsize = sizeof(int), | 1145 | .targetsize = sizeof(int), |
1146 | .family = NF_ARP, | 1146 | .family = NF_ARP, |
1147 | }; | 1147 | }; |
1148 | 1148 | ||
1149 | static struct arpt_target arpt_error_target = { | 1149 | static struct arpt_target arpt_error_target __read_mostly = { |
1150 | .name = ARPT_ERROR_TARGET, | 1150 | .name = ARPT_ERROR_TARGET, |
1151 | .target = arpt_error, | 1151 | .target = arpt_error, |
1152 | .targetsize = ARPT_FUNCTION_MAXNAMELEN, | 1152 | .targetsize = ARPT_FUNCTION_MAXNAMELEN, |
diff --git a/net/ipv4/netfilter/arpt_mangle.c b/net/ipv4/netfilter/arpt_mangle.c index 497a16e0b064..c4bdab47597f 100644 --- a/net/ipv4/netfilter/arpt_mangle.c +++ b/net/ipv4/netfilter/arpt_mangle.c | |||
@@ -81,7 +81,7 @@ checkentry(const char *tablename, const void *e, const struct xt_target *target, | |||
81 | return true; | 81 | return true; |
82 | } | 82 | } |
83 | 83 | ||
84 | static struct arpt_target arpt_mangle_reg = { | 84 | static struct arpt_target arpt_mangle_reg __read_mostly = { |
85 | .name = "mangle", | 85 | .name = "mangle", |
86 | .target = target, | 86 | .target = target, |
87 | .targetsize = sizeof(struct arpt_mangle), | 87 | .targetsize = sizeof(struct arpt_mangle), |
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c index 650ab52e9157..2ba5bd9c8c1b 100644 --- a/net/ipv4/netfilter/ip_tables.c +++ b/net/ipv4/netfilter/ip_tables.c | |||
@@ -2264,7 +2264,7 @@ icmp_checkentry(const char *tablename, | |||
2264 | } | 2264 | } |
2265 | 2265 | ||
2266 | /* The built-in targets: standard (NULL) and error. */ | 2266 | /* The built-in targets: standard (NULL) and error. */ |
2267 | static struct xt_target ipt_standard_target = { | 2267 | static struct xt_target ipt_standard_target __read_mostly = { |
2268 | .name = IPT_STANDARD_TARGET, | 2268 | .name = IPT_STANDARD_TARGET, |
2269 | .targetsize = sizeof(int), | 2269 | .targetsize = sizeof(int), |
2270 | .family = AF_INET, | 2270 | .family = AF_INET, |
@@ -2275,7 +2275,7 @@ static struct xt_target ipt_standard_target = { | |||
2275 | #endif | 2275 | #endif |
2276 | }; | 2276 | }; |
2277 | 2277 | ||
2278 | static struct xt_target ipt_error_target = { | 2278 | static struct xt_target ipt_error_target __read_mostly = { |
2279 | .name = IPT_ERROR_TARGET, | 2279 | .name = IPT_ERROR_TARGET, |
2280 | .target = ipt_error, | 2280 | .target = ipt_error, |
2281 | .targetsize = IPT_FUNCTION_MAXNAMELEN, | 2281 | .targetsize = IPT_FUNCTION_MAXNAMELEN, |
@@ -2298,7 +2298,7 @@ static struct nf_sockopt_ops ipt_sockopts = { | |||
2298 | #endif | 2298 | #endif |
2299 | }; | 2299 | }; |
2300 | 2300 | ||
2301 | static struct xt_match icmp_matchstruct = { | 2301 | static struct xt_match icmp_matchstruct __read_mostly = { |
2302 | .name = "icmp", | 2302 | .name = "icmp", |
2303 | .match = icmp_match, | 2303 | .match = icmp_match, |
2304 | .matchsize = sizeof(struct ipt_icmp), | 2304 | .matchsize = sizeof(struct ipt_icmp), |
diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c index 5de13b44b1ca..1cef3b09c326 100644 --- a/net/ipv4/netfilter/ipt_CLUSTERIP.c +++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c | |||
@@ -466,7 +466,7 @@ static void destroy(const struct xt_target *target, void *targinfo) | |||
466 | nf_ct_l3proto_module_put(target->family); | 466 | nf_ct_l3proto_module_put(target->family); |
467 | } | 467 | } |
468 | 468 | ||
469 | static struct xt_target clusterip_tgt = { | 469 | static struct xt_target clusterip_tgt __read_mostly = { |
470 | .name = "CLUSTERIP", | 470 | .name = "CLUSTERIP", |
471 | .family = AF_INET, | 471 | .family = AF_INET, |
472 | .target = target, | 472 | .target = target, |
diff --git a/net/ipv4/netfilter/ipt_ECN.c b/net/ipv4/netfilter/ipt_ECN.c index a647c1db86dd..f1253bd3837f 100644 --- a/net/ipv4/netfilter/ipt_ECN.c +++ b/net/ipv4/netfilter/ipt_ECN.c | |||
@@ -128,7 +128,7 @@ checkentry(const char *tablename, | |||
128 | return true; | 128 | return true; |
129 | } | 129 | } |
130 | 130 | ||
131 | static struct xt_target ipt_ecn_reg = { | 131 | static struct xt_target ipt_ecn_reg __read_mostly = { |
132 | .name = "ECN", | 132 | .name = "ECN", |
133 | .family = AF_INET, | 133 | .family = AF_INET, |
134 | .target = target, | 134 | .target = target, |
diff --git a/net/ipv4/netfilter/ipt_LOG.c b/net/ipv4/netfilter/ipt_LOG.c index bcc43a625e72..9bfce614ec28 100644 --- a/net/ipv4/netfilter/ipt_LOG.c +++ b/net/ipv4/netfilter/ipt_LOG.c | |||
@@ -463,7 +463,7 @@ static bool ipt_log_checkentry(const char *tablename, | |||
463 | return true; | 463 | return true; |
464 | } | 464 | } |
465 | 465 | ||
466 | static struct xt_target ipt_log_reg = { | 466 | static struct xt_target ipt_log_reg __read_mostly = { |
467 | .name = "LOG", | 467 | .name = "LOG", |
468 | .family = AF_INET, | 468 | .family = AF_INET, |
469 | .target = ipt_log_target, | 469 | .target = ipt_log_target, |
diff --git a/net/ipv4/netfilter/ipt_MASQUERADE.c b/net/ipv4/netfilter/ipt_MASQUERADE.c index f136ef7f23f8..bc033e0f424d 100644 --- a/net/ipv4/netfilter/ipt_MASQUERADE.c +++ b/net/ipv4/netfilter/ipt_MASQUERADE.c | |||
@@ -169,7 +169,7 @@ static struct notifier_block masq_inet_notifier = { | |||
169 | .notifier_call = masq_inet_event, | 169 | .notifier_call = masq_inet_event, |
170 | }; | 170 | }; |
171 | 171 | ||
172 | static struct xt_target masquerade = { | 172 | static struct xt_target masquerade __read_mostly = { |
173 | .name = "MASQUERADE", | 173 | .name = "MASQUERADE", |
174 | .family = AF_INET, | 174 | .family = AF_INET, |
175 | .target = masquerade_target, | 175 | .target = masquerade_target, |
diff --git a/net/ipv4/netfilter/ipt_NETMAP.c b/net/ipv4/netfilter/ipt_NETMAP.c index a902c71218bf..0a7ce15bbdd0 100644 --- a/net/ipv4/netfilter/ipt_NETMAP.c +++ b/net/ipv4/netfilter/ipt_NETMAP.c | |||
@@ -85,7 +85,7 @@ target(struct sk_buff **pskb, | |||
85 | return nf_nat_setup_info(ct, &newrange, hooknum); | 85 | return nf_nat_setup_info(ct, &newrange, hooknum); |
86 | } | 86 | } |
87 | 87 | ||
88 | static struct xt_target target_module = { | 88 | static struct xt_target target_module __read_mostly = { |
89 | .name = MODULENAME, | 89 | .name = MODULENAME, |
90 | .family = AF_INET, | 90 | .family = AF_INET, |
91 | .target = target, | 91 | .target = target, |
diff --git a/net/ipv4/netfilter/ipt_REDIRECT.c b/net/ipv4/netfilter/ipt_REDIRECT.c index 2a04103b50d1..61e1e4772e37 100644 --- a/net/ipv4/netfilter/ipt_REDIRECT.c +++ b/net/ipv4/netfilter/ipt_REDIRECT.c | |||
@@ -101,7 +101,7 @@ redirect_target(struct sk_buff **pskb, | |||
101 | return nf_nat_setup_info(ct, &newrange, hooknum); | 101 | return nf_nat_setup_info(ct, &newrange, hooknum); |
102 | } | 102 | } |
103 | 103 | ||
104 | static struct xt_target redirect_reg = { | 104 | static struct xt_target redirect_reg __read_mostly = { |
105 | .name = "REDIRECT", | 105 | .name = "REDIRECT", |
106 | .family = AF_INET, | 106 | .family = AF_INET, |
107 | .target = redirect_target, | 107 | .target = redirect_target, |
diff --git a/net/ipv4/netfilter/ipt_REJECT.c b/net/ipv4/netfilter/ipt_REJECT.c index 90f7b7093785..dd5432c3f365 100644 --- a/net/ipv4/netfilter/ipt_REJECT.c +++ b/net/ipv4/netfilter/ipt_REJECT.c | |||
@@ -240,7 +240,7 @@ static bool check(const char *tablename, | |||
240 | return true; | 240 | return true; |
241 | } | 241 | } |
242 | 242 | ||
243 | static struct xt_target ipt_reject_reg = { | 243 | static struct xt_target ipt_reject_reg __read_mostly = { |
244 | .name = "REJECT", | 244 | .name = "REJECT", |
245 | .family = AF_INET, | 245 | .family = AF_INET, |
246 | .target = reject, | 246 | .target = reject, |
diff --git a/net/ipv4/netfilter/ipt_SAME.c b/net/ipv4/netfilter/ipt_SAME.c index 3649fabc04ea..3a0d7dac0af8 100644 --- a/net/ipv4/netfilter/ipt_SAME.c +++ b/net/ipv4/netfilter/ipt_SAME.c | |||
@@ -161,7 +161,7 @@ same_target(struct sk_buff **pskb, | |||
161 | return nf_nat_setup_info(ct, &newrange, hooknum); | 161 | return nf_nat_setup_info(ct, &newrange, hooknum); |
162 | } | 162 | } |
163 | 163 | ||
164 | static struct xt_target same_reg = { | 164 | static struct xt_target same_reg __read_mostly = { |
165 | .name = "SAME", | 165 | .name = "SAME", |
166 | .family = AF_INET, | 166 | .family = AF_INET, |
167 | .target = same_target, | 167 | .target = same_target, |
diff --git a/net/ipv4/netfilter/ipt_TOS.c b/net/ipv4/netfilter/ipt_TOS.c index ac43e86afbcf..25f5d0b39065 100644 --- a/net/ipv4/netfilter/ipt_TOS.c +++ b/net/ipv4/netfilter/ipt_TOS.c | |||
@@ -63,7 +63,7 @@ checkentry(const char *tablename, | |||
63 | return true; | 63 | return true; |
64 | } | 64 | } |
65 | 65 | ||
66 | static struct xt_target ipt_tos_reg = { | 66 | static struct xt_target ipt_tos_reg __read_mostly = { |
67 | .name = "TOS", | 67 | .name = "TOS", |
68 | .family = AF_INET, | 68 | .family = AF_INET, |
69 | .target = target, | 69 | .target = target, |
diff --git a/net/ipv4/netfilter/ipt_TTL.c b/net/ipv4/netfilter/ipt_TTL.c index 737830b68ade..2b54e7b0cfe8 100644 --- a/net/ipv4/netfilter/ipt_TTL.c +++ b/net/ipv4/netfilter/ipt_TTL.c | |||
@@ -80,7 +80,7 @@ static bool ipt_ttl_checkentry(const char *tablename, | |||
80 | return true; | 80 | return true; |
81 | } | 81 | } |
82 | 82 | ||
83 | static struct xt_target ipt_TTL = { | 83 | static struct xt_target ipt_TTL __read_mostly = { |
84 | .name = "TTL", | 84 | .name = "TTL", |
85 | .family = AF_INET, | 85 | .family = AF_INET, |
86 | .target = ipt_ttl_target, | 86 | .target = ipt_ttl_target, |
diff --git a/net/ipv4/netfilter/ipt_ULOG.c b/net/ipv4/netfilter/ipt_ULOG.c index 5b25ca688784..226750d1f89b 100644 --- a/net/ipv4/netfilter/ipt_ULOG.c +++ b/net/ipv4/netfilter/ipt_ULOG.c | |||
@@ -381,7 +381,7 @@ static int compat_to_user(void __user *dst, void *src) | |||
381 | } | 381 | } |
382 | #endif /* CONFIG_COMPAT */ | 382 | #endif /* CONFIG_COMPAT */ |
383 | 383 | ||
384 | static struct xt_target ipt_ulog_reg = { | 384 | static struct xt_target ipt_ulog_reg __read_mostly = { |
385 | .name = "ULOG", | 385 | .name = "ULOG", |
386 | .family = AF_INET, | 386 | .family = AF_INET, |
387 | .target = ipt_ulog_target, | 387 | .target = ipt_ulog_target, |
diff --git a/net/ipv4/netfilter/ipt_addrtype.c b/net/ipv4/netfilter/ipt_addrtype.c index abea446a4437..59f01f7ba6b4 100644 --- a/net/ipv4/netfilter/ipt_addrtype.c +++ b/net/ipv4/netfilter/ipt_addrtype.c | |||
@@ -44,7 +44,7 @@ static bool match(const struct sk_buff *skb, | |||
44 | return ret; | 44 | return ret; |
45 | } | 45 | } |
46 | 46 | ||
47 | static struct xt_match addrtype_match = { | 47 | static struct xt_match addrtype_match __read_mostly = { |
48 | .name = "addrtype", | 48 | .name = "addrtype", |
49 | .family = AF_INET, | 49 | .family = AF_INET, |
50 | .match = match, | 50 | .match = match, |
diff --git a/net/ipv4/netfilter/ipt_ah.c b/net/ipv4/netfilter/ipt_ah.c index 49d503cbab09..61b017fd743c 100644 --- a/net/ipv4/netfilter/ipt_ah.c +++ b/net/ipv4/netfilter/ipt_ah.c | |||
@@ -88,7 +88,7 @@ checkentry(const char *tablename, | |||
88 | return true; | 88 | return true; |
89 | } | 89 | } |
90 | 90 | ||
91 | static struct xt_match ah_match = { | 91 | static struct xt_match ah_match __read_mostly = { |
92 | .name = "ah", | 92 | .name = "ah", |
93 | .family = AF_INET, | 93 | .family = AF_INET, |
94 | .match = match, | 94 | .match = match, |
diff --git a/net/ipv4/netfilter/ipt_ecn.c b/net/ipv4/netfilter/ipt_ecn.c index 3129e3106162..d6925c674069 100644 --- a/net/ipv4/netfilter/ipt_ecn.c +++ b/net/ipv4/netfilter/ipt_ecn.c | |||
@@ -111,7 +111,7 @@ static bool checkentry(const char *tablename, const void *ip_void, | |||
111 | return true; | 111 | return true; |
112 | } | 112 | } |
113 | 113 | ||
114 | static struct xt_match ecn_match = { | 114 | static struct xt_match ecn_match __read_mostly = { |
115 | .name = "ecn", | 115 | .name = "ecn", |
116 | .family = AF_INET, | 116 | .family = AF_INET, |
117 | .match = match, | 117 | .match = match, |
diff --git a/net/ipv4/netfilter/ipt_iprange.c b/net/ipv4/netfilter/ipt_iprange.c index 854281c62008..6a3a033a6808 100644 --- a/net/ipv4/netfilter/ipt_iprange.c +++ b/net/ipv4/netfilter/ipt_iprange.c | |||
@@ -63,7 +63,7 @@ match(const struct sk_buff *skb, | |||
63 | return true; | 63 | return true; |
64 | } | 64 | } |
65 | 65 | ||
66 | static struct xt_match iprange_match = { | 66 | static struct xt_match iprange_match __read_mostly = { |
67 | .name = "iprange", | 67 | .name = "iprange", |
68 | .family = AF_INET, | 68 | .family = AF_INET, |
69 | .match = match, | 69 | .match = match, |
diff --git a/net/ipv4/netfilter/ipt_owner.c b/net/ipv4/netfilter/ipt_owner.c index deea4b8cc055..b14e77da7a33 100644 --- a/net/ipv4/netfilter/ipt_owner.c +++ b/net/ipv4/netfilter/ipt_owner.c | |||
@@ -68,7 +68,7 @@ checkentry(const char *tablename, | |||
68 | return true; | 68 | return true; |
69 | } | 69 | } |
70 | 70 | ||
71 | static struct xt_match owner_match = { | 71 | static struct xt_match owner_match __read_mostly = { |
72 | .name = "owner", | 72 | .name = "owner", |
73 | .family = AF_INET, | 73 | .family = AF_INET, |
74 | .match = match, | 74 | .match = match, |
diff --git a/net/ipv4/netfilter/ipt_recent.c b/net/ipv4/netfilter/ipt_recent.c index 68f7181e412d..a7b14f2ae2dc 100644 --- a/net/ipv4/netfilter/ipt_recent.c +++ b/net/ipv4/netfilter/ipt_recent.c | |||
@@ -460,7 +460,7 @@ static const struct file_operations recent_fops = { | |||
460 | }; | 460 | }; |
461 | #endif /* CONFIG_PROC_FS */ | 461 | #endif /* CONFIG_PROC_FS */ |
462 | 462 | ||
463 | static struct xt_match recent_match = { | 463 | static struct xt_match recent_match __read_mostly = { |
464 | .name = "recent", | 464 | .name = "recent", |
465 | .family = AF_INET, | 465 | .family = AF_INET, |
466 | .match = ipt_recent_match, | 466 | .match = ipt_recent_match, |
diff --git a/net/ipv4/netfilter/ipt_tos.c b/net/ipv4/netfilter/ipt_tos.c index 67699ae46d37..e740441c973d 100644 --- a/net/ipv4/netfilter/ipt_tos.c +++ b/net/ipv4/netfilter/ipt_tos.c | |||
@@ -33,7 +33,7 @@ match(const struct sk_buff *skb, | |||
33 | return (ip_hdr(skb)->tos == info->tos) ^ info->invert; | 33 | return (ip_hdr(skb)->tos == info->tos) ^ info->invert; |
34 | } | 34 | } |
35 | 35 | ||
36 | static struct xt_match tos_match = { | 36 | static struct xt_match tos_match __read_mostly = { |
37 | .name = "tos", | 37 | .name = "tos", |
38 | .family = AF_INET, | 38 | .family = AF_INET, |
39 | .match = match, | 39 | .match = match, |
diff --git a/net/ipv4/netfilter/ipt_ttl.c b/net/ipv4/netfilter/ipt_ttl.c index 59a644db4d74..a439900a4ba5 100644 --- a/net/ipv4/netfilter/ipt_ttl.c +++ b/net/ipv4/netfilter/ipt_ttl.c | |||
@@ -44,7 +44,7 @@ static bool match(const struct sk_buff *skb, | |||
44 | return false; | 44 | return false; |
45 | } | 45 | } |
46 | 46 | ||
47 | static struct xt_match ttl_match = { | 47 | static struct xt_match ttl_match __read_mostly = { |
48 | .name = "ttl", | 48 | .name = "ttl", |
49 | .family = AF_INET, | 49 | .family = AF_INET, |
50 | .match = match, | 50 | .match = match, |
diff --git a/net/ipv4/netfilter/nf_nat_rule.c b/net/ipv4/netfilter/nf_nat_rule.c index ea1a07c74fe3..080393a143d7 100644 --- a/net/ipv4/netfilter/nf_nat_rule.c +++ b/net/ipv4/netfilter/nf_nat_rule.c | |||
@@ -228,7 +228,7 @@ int nf_nat_rule_find(struct sk_buff **pskb, | |||
228 | return ret; | 228 | return ret; |
229 | } | 229 | } |
230 | 230 | ||
231 | static struct xt_target ipt_snat_reg = { | 231 | static struct xt_target ipt_snat_reg __read_mostly = { |
232 | .name = "SNAT", | 232 | .name = "SNAT", |
233 | .target = ipt_snat_target, | 233 | .target = ipt_snat_target, |
234 | .targetsize = sizeof(struct nf_nat_multi_range_compat), | 234 | .targetsize = sizeof(struct nf_nat_multi_range_compat), |
@@ -238,7 +238,7 @@ static struct xt_target ipt_snat_reg = { | |||
238 | .family = AF_INET, | 238 | .family = AF_INET, |
239 | }; | 239 | }; |
240 | 240 | ||
241 | static struct xt_target ipt_dnat_reg = { | 241 | static struct xt_target ipt_dnat_reg __read_mostly = { |
242 | .name = "DNAT", | 242 | .name = "DNAT", |
243 | .target = ipt_dnat_target, | 243 | .target = ipt_dnat_target, |
244 | .targetsize = sizeof(struct nf_nat_multi_range_compat), | 244 | .targetsize = sizeof(struct nf_nat_multi_range_compat), |
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c index 4f93b79163aa..254c769b750a 100644 --- a/net/ipv6/netfilter/ip6_tables.c +++ b/net/ipv6/netfilter/ip6_tables.c | |||
@@ -1441,13 +1441,13 @@ icmp6_checkentry(const char *tablename, | |||
1441 | } | 1441 | } |
1442 | 1442 | ||
1443 | /* The built-in targets: standard (NULL) and error. */ | 1443 | /* The built-in targets: standard (NULL) and error. */ |
1444 | static struct xt_target ip6t_standard_target = { | 1444 | static struct xt_target ip6t_standard_target __read_mostly = { |
1445 | .name = IP6T_STANDARD_TARGET, | 1445 | .name = IP6T_STANDARD_TARGET, |
1446 | .targetsize = sizeof(int), | 1446 | .targetsize = sizeof(int), |
1447 | .family = AF_INET6, | 1447 | .family = AF_INET6, |
1448 | }; | 1448 | }; |
1449 | 1449 | ||
1450 | static struct xt_target ip6t_error_target = { | 1450 | static struct xt_target ip6t_error_target __read_mostly = { |
1451 | .name = IP6T_ERROR_TARGET, | 1451 | .name = IP6T_ERROR_TARGET, |
1452 | .target = ip6t_error, | 1452 | .target = ip6t_error, |
1453 | .targetsize = IP6T_FUNCTION_MAXNAMELEN, | 1453 | .targetsize = IP6T_FUNCTION_MAXNAMELEN, |
@@ -1464,7 +1464,7 @@ static struct nf_sockopt_ops ip6t_sockopts = { | |||
1464 | .get = do_ip6t_get_ctl, | 1464 | .get = do_ip6t_get_ctl, |
1465 | }; | 1465 | }; |
1466 | 1466 | ||
1467 | static struct xt_match icmp6_matchstruct = { | 1467 | static struct xt_match icmp6_matchstruct __read_mostly = { |
1468 | .name = "icmp6", | 1468 | .name = "icmp6", |
1469 | .match = &icmp6_match, | 1469 | .match = &icmp6_match, |
1470 | .matchsize = sizeof(struct ip6t_icmp), | 1470 | .matchsize = sizeof(struct ip6t_icmp), |
diff --git a/net/ipv6/netfilter/ip6t_HL.c b/net/ipv6/netfilter/ip6t_HL.c index 33c4cb8a5c43..ad4d94310b87 100644 --- a/net/ipv6/netfilter/ip6t_HL.c +++ b/net/ipv6/netfilter/ip6t_HL.c | |||
@@ -79,7 +79,7 @@ static bool ip6t_hl_checkentry(const char *tablename, | |||
79 | return true; | 79 | return true; |
80 | } | 80 | } |
81 | 81 | ||
82 | static struct xt_target ip6t_HL = { | 82 | static struct xt_target ip6t_HL __read_mostly = { |
83 | .name = "HL", | 83 | .name = "HL", |
84 | .family = AF_INET6, | 84 | .family = AF_INET6, |
85 | .target = ip6t_hl_target, | 85 | .target = ip6t_hl_target, |
diff --git a/net/ipv6/netfilter/ip6t_LOG.c b/net/ipv6/netfilter/ip6t_LOG.c index 996168d2ca25..540bf14b851c 100644 --- a/net/ipv6/netfilter/ip6t_LOG.c +++ b/net/ipv6/netfilter/ip6t_LOG.c | |||
@@ -477,7 +477,7 @@ static bool ip6t_log_checkentry(const char *tablename, | |||
477 | return true; | 477 | return true; |
478 | } | 478 | } |
479 | 479 | ||
480 | static struct xt_target ip6t_log_reg = { | 480 | static struct xt_target ip6t_log_reg __read_mostly = { |
481 | .name = "LOG", | 481 | .name = "LOG", |
482 | .family = AF_INET6, | 482 | .family = AF_INET6, |
483 | .target = ip6t_log_target, | 483 | .target = ip6t_log_target, |
diff --git a/net/ipv6/netfilter/ip6t_REJECT.c b/net/ipv6/netfilter/ip6t_REJECT.c index 0fa1f2cf9fba..14008dc6a197 100644 --- a/net/ipv6/netfilter/ip6t_REJECT.c +++ b/net/ipv6/netfilter/ip6t_REJECT.c | |||
@@ -244,7 +244,7 @@ static bool check(const char *tablename, | |||
244 | return true; | 244 | return true; |
245 | } | 245 | } |
246 | 246 | ||
247 | static struct xt_target ip6t_reject_reg = { | 247 | static struct xt_target ip6t_reject_reg __read_mostly = { |
248 | .name = "REJECT", | 248 | .name = "REJECT", |
249 | .family = AF_INET6, | 249 | .family = AF_INET6, |
250 | .target = reject6_target, | 250 | .target = reject6_target, |
diff --git a/net/ipv6/netfilter/ip6t_ah.c b/net/ipv6/netfilter/ip6t_ah.c index fbf3d7748dc2..a9fe2aa97072 100644 --- a/net/ipv6/netfilter/ip6t_ah.c +++ b/net/ipv6/netfilter/ip6t_ah.c | |||
@@ -120,7 +120,7 @@ checkentry(const char *tablename, | |||
120 | return true; | 120 | return true; |
121 | } | 121 | } |
122 | 122 | ||
123 | static struct xt_match ah_match = { | 123 | static struct xt_match ah_match __read_mostly = { |
124 | .name = "ah", | 124 | .name = "ah", |
125 | .family = AF_INET6, | 125 | .family = AF_INET6, |
126 | .match = match, | 126 | .match = match, |
diff --git a/net/ipv6/netfilter/ip6t_eui64.c b/net/ipv6/netfilter/ip6t_eui64.c index 2af99fc6bdc9..34ba150bfe5d 100644 --- a/net/ipv6/netfilter/ip6t_eui64.c +++ b/net/ipv6/netfilter/ip6t_eui64.c | |||
@@ -62,7 +62,7 @@ match(const struct sk_buff *skb, | |||
62 | return false; | 62 | return false; |
63 | } | 63 | } |
64 | 64 | ||
65 | static struct xt_match eui64_match = { | 65 | static struct xt_match eui64_match __read_mostly = { |
66 | .name = "eui64", | 66 | .name = "eui64", |
67 | .family = AF_INET6, | 67 | .family = AF_INET6, |
68 | .match = match, | 68 | .match = match, |
diff --git a/net/ipv6/netfilter/ip6t_frag.c b/net/ipv6/netfilter/ip6t_frag.c index 65482af711de..bb1cfa82b47c 100644 --- a/net/ipv6/netfilter/ip6t_frag.c +++ b/net/ipv6/netfilter/ip6t_frag.c | |||
@@ -137,7 +137,7 @@ checkentry(const char *tablename, | |||
137 | return true; | 137 | return true; |
138 | } | 138 | } |
139 | 139 | ||
140 | static struct xt_match frag_match = { | 140 | static struct xt_match frag_match __read_mostly = { |
141 | .name = "frag", | 141 | .name = "frag", |
142 | .family = AF_INET6, | 142 | .family = AF_INET6, |
143 | .match = match, | 143 | .match = match, |
diff --git a/net/ipv6/netfilter/ip6t_hbh.c b/net/ipv6/netfilter/ip6t_hbh.c index 8eecac14ddaa..6247d4cdad99 100644 --- a/net/ipv6/netfilter/ip6t_hbh.c +++ b/net/ipv6/netfilter/ip6t_hbh.c | |||
@@ -193,7 +193,7 @@ checkentry(const char *tablename, | |||
193 | return true; | 193 | return true; |
194 | } | 194 | } |
195 | 195 | ||
196 | static struct xt_match opts_match[] = { | 196 | static struct xt_match opts_match[] __read_mostly = { |
197 | { | 197 | { |
198 | .name = "hbh", | 198 | .name = "hbh", |
199 | .family = AF_INET6, | 199 | .family = AF_INET6, |
diff --git a/net/ipv6/netfilter/ip6t_hl.c b/net/ipv6/netfilter/ip6t_hl.c index ddee088f5f10..ca29ec00dc18 100644 --- a/net/ipv6/netfilter/ip6t_hl.c +++ b/net/ipv6/netfilter/ip6t_hl.c | |||
@@ -49,7 +49,7 @@ static bool match(const struct sk_buff *skb, | |||
49 | return false; | 49 | return false; |
50 | } | 50 | } |
51 | 51 | ||
52 | static struct xt_match hl_match = { | 52 | static struct xt_match hl_match __read_mostly = { |
53 | .name = "hl", | 53 | .name = "hl", |
54 | .family = AF_INET6, | 54 | .family = AF_INET6, |
55 | .match = match, | 55 | .match = match, |
diff --git a/net/ipv6/netfilter/ip6t_ipv6header.c b/net/ipv6/netfilter/ip6t_ipv6header.c index ca020ce1c4a3..2c65c2f9a4ab 100644 --- a/net/ipv6/netfilter/ip6t_ipv6header.c +++ b/net/ipv6/netfilter/ip6t_ipv6header.c | |||
@@ -141,7 +141,7 @@ ipv6header_checkentry(const char *tablename, | |||
141 | return true; | 141 | return true; |
142 | } | 142 | } |
143 | 143 | ||
144 | static struct xt_match ip6t_ipv6header_match = { | 144 | static struct xt_match ip6t_ipv6header_match __read_mostly = { |
145 | .name = "ipv6header", | 145 | .name = "ipv6header", |
146 | .family = AF_INET6, | 146 | .family = AF_INET6, |
147 | .match = &ipv6header_match, | 147 | .match = &ipv6header_match, |
diff --git a/net/ipv6/netfilter/ip6t_mh.c b/net/ipv6/netfilter/ip6t_mh.c index e94fdd82f284..0fa714092dc9 100644 --- a/net/ipv6/netfilter/ip6t_mh.c +++ b/net/ipv6/netfilter/ip6t_mh.c | |||
@@ -89,7 +89,7 @@ mh_checkentry(const char *tablename, | |||
89 | return !(mhinfo->invflags & ~IP6T_MH_INV_MASK); | 89 | return !(mhinfo->invflags & ~IP6T_MH_INV_MASK); |
90 | } | 90 | } |
91 | 91 | ||
92 | static struct xt_match mh_match = { | 92 | static struct xt_match mh_match __read_mostly = { |
93 | .name = "mh", | 93 | .name = "mh", |
94 | .family = AF_INET6, | 94 | .family = AF_INET6, |
95 | .checkentry = mh_checkentry, | 95 | .checkentry = mh_checkentry, |
diff --git a/net/ipv6/netfilter/ip6t_owner.c b/net/ipv6/netfilter/ip6t_owner.c index d2bf3204aeac..6036613aef36 100644 --- a/net/ipv6/netfilter/ip6t_owner.c +++ b/net/ipv6/netfilter/ip6t_owner.c | |||
@@ -68,7 +68,7 @@ checkentry(const char *tablename, | |||
68 | return true; | 68 | return true; |
69 | } | 69 | } |
70 | 70 | ||
71 | static struct xt_match owner_match = { | 71 | static struct xt_match owner_match __read_mostly = { |
72 | .name = "owner", | 72 | .name = "owner", |
73 | .family = AF_INET6, | 73 | .family = AF_INET6, |
74 | .match = match, | 74 | .match = match, |
diff --git a/net/ipv6/netfilter/ip6t_rt.c b/net/ipv6/netfilter/ip6t_rt.c index f86fdcdd8cb8..549deea26418 100644 --- a/net/ipv6/netfilter/ip6t_rt.c +++ b/net/ipv6/netfilter/ip6t_rt.c | |||
@@ -224,7 +224,7 @@ checkentry(const char *tablename, | |||
224 | return true; | 224 | return true; |
225 | } | 225 | } |
226 | 226 | ||
227 | static struct xt_match rt_match = { | 227 | static struct xt_match rt_match __read_mostly = { |
228 | .name = "rt", | 228 | .name = "rt", |
229 | .family = AF_INET6, | 229 | .family = AF_INET6, |
230 | .match = match, | 230 | .match = match, |
diff --git a/net/netfilter/xt_CLASSIFY.c b/net/netfilter/xt_CLASSIFY.c index 30884833e665..519428566829 100644 --- a/net/netfilter/xt_CLASSIFY.c +++ b/net/netfilter/xt_CLASSIFY.c | |||
@@ -39,7 +39,7 @@ target(struct sk_buff **pskb, | |||
39 | return XT_CONTINUE; | 39 | return XT_CONTINUE; |
40 | } | 40 | } |
41 | 41 | ||
42 | static struct xt_target xt_classify_target[] = { | 42 | static struct xt_target xt_classify_target[] __read_mostly = { |
43 | { | 43 | { |
44 | .family = AF_INET, | 44 | .family = AF_INET, |
45 | .name = "CLASSIFY", | 45 | .name = "CLASSIFY", |
diff --git a/net/netfilter/xt_CONNMARK.c b/net/netfilter/xt_CONNMARK.c index 4284a59b03e1..5a00c5444334 100644 --- a/net/netfilter/xt_CONNMARK.c +++ b/net/netfilter/xt_CONNMARK.c | |||
@@ -142,7 +142,7 @@ static int compat_to_user(void __user *dst, void *src) | |||
142 | } | 142 | } |
143 | #endif /* CONFIG_COMPAT */ | 143 | #endif /* CONFIG_COMPAT */ |
144 | 144 | ||
145 | static struct xt_target xt_connmark_target[] = { | 145 | static struct xt_target xt_connmark_target[] __read_mostly = { |
146 | { | 146 | { |
147 | .name = "CONNMARK", | 147 | .name = "CONNMARK", |
148 | .family = AF_INET, | 148 | .family = AF_INET, |
diff --git a/net/netfilter/xt_CONNSECMARK.c b/net/netfilter/xt_CONNSECMARK.c index 8d5e154013d6..63d73138c1b9 100644 --- a/net/netfilter/xt_CONNSECMARK.c +++ b/net/netfilter/xt_CONNSECMARK.c | |||
@@ -115,7 +115,7 @@ destroy(const struct xt_target *target, void *targinfo) | |||
115 | nf_ct_l3proto_module_put(target->family); | 115 | nf_ct_l3proto_module_put(target->family); |
116 | } | 116 | } |
117 | 117 | ||
118 | static struct xt_target xt_connsecmark_target[] = { | 118 | static struct xt_target xt_connsecmark_target[] __read_mostly = { |
119 | { | 119 | { |
120 | .name = "CONNSECMARK", | 120 | .name = "CONNSECMARK", |
121 | .family = AF_INET, | 121 | .family = AF_INET, |
diff --git a/net/netfilter/xt_DSCP.c b/net/netfilter/xt_DSCP.c index ed6b524064f0..798ab731009d 100644 --- a/net/netfilter/xt_DSCP.c +++ b/net/netfilter/xt_DSCP.c | |||
@@ -81,7 +81,7 @@ static bool checkentry(const char *tablename, | |||
81 | return true; | 81 | return true; |
82 | } | 82 | } |
83 | 83 | ||
84 | static struct xt_target xt_dscp_target[] = { | 84 | static struct xt_target xt_dscp_target[] __read_mostly = { |
85 | { | 85 | { |
86 | .name = "DSCP", | 86 | .name = "DSCP", |
87 | .family = AF_INET, | 87 | .family = AF_INET, |
diff --git a/net/netfilter/xt_MARK.c b/net/netfilter/xt_MARK.c index 6b7369fc263f..f30fe0baf7de 100644 --- a/net/netfilter/xt_MARK.c +++ b/net/netfilter/xt_MARK.c | |||
@@ -133,7 +133,7 @@ static int compat_to_user_v1(void __user *dst, void *src) | |||
133 | } | 133 | } |
134 | #endif /* CONFIG_COMPAT */ | 134 | #endif /* CONFIG_COMPAT */ |
135 | 135 | ||
136 | static struct xt_target xt_mark_target[] = { | 136 | static struct xt_target xt_mark_target[] __read_mostly = { |
137 | { | 137 | { |
138 | .name = "MARK", | 138 | .name = "MARK", |
139 | .family = AF_INET, | 139 | .family = AF_INET, |
diff --git a/net/netfilter/xt_NFLOG.c b/net/netfilter/xt_NFLOG.c index 20e55d588a3c..d3594c7ccb26 100644 --- a/net/netfilter/xt_NFLOG.c +++ b/net/netfilter/xt_NFLOG.c | |||
@@ -52,7 +52,7 @@ nflog_checkentry(const char *tablename, const void *entry, | |||
52 | return true; | 52 | return true; |
53 | } | 53 | } |
54 | 54 | ||
55 | static struct xt_target xt_nflog_target[] = { | 55 | static struct xt_target xt_nflog_target[] __read_mostly = { |
56 | { | 56 | { |
57 | .name = "NFLOG", | 57 | .name = "NFLOG", |
58 | .family = AF_INET, | 58 | .family = AF_INET, |
diff --git a/net/netfilter/xt_NFQUEUE.c b/net/netfilter/xt_NFQUEUE.c index 201155b316e0..13f59f3e8c38 100644 --- a/net/netfilter/xt_NFQUEUE.c +++ b/net/netfilter/xt_NFQUEUE.c | |||
@@ -36,7 +36,7 @@ target(struct sk_buff **pskb, | |||
36 | return NF_QUEUE_NR(tinfo->queuenum); | 36 | return NF_QUEUE_NR(tinfo->queuenum); |
37 | } | 37 | } |
38 | 38 | ||
39 | static struct xt_target xt_nfqueue_target[] = { | 39 | static struct xt_target xt_nfqueue_target[] __read_mostly = { |
40 | { | 40 | { |
41 | .name = "NFQUEUE", | 41 | .name = "NFQUEUE", |
42 | .family = AF_INET, | 42 | .family = AF_INET, |
diff --git a/net/netfilter/xt_NOTRACK.c b/net/netfilter/xt_NOTRACK.c index 5085fb3d1e2d..b7d6312fccc7 100644 --- a/net/netfilter/xt_NOTRACK.c +++ b/net/netfilter/xt_NOTRACK.c | |||
@@ -33,7 +33,7 @@ target(struct sk_buff **pskb, | |||
33 | return XT_CONTINUE; | 33 | return XT_CONTINUE; |
34 | } | 34 | } |
35 | 35 | ||
36 | static struct xt_target xt_notrack_target[] = { | 36 | static struct xt_target xt_notrack_target[] __read_mostly = { |
37 | { | 37 | { |
38 | .name = "NOTRACK", | 38 | .name = "NOTRACK", |
39 | .family = AF_INET, | 39 | .family = AF_INET, |
diff --git a/net/netfilter/xt_SECMARK.c b/net/netfilter/xt_SECMARK.c index f3e78c592f3a..c83779a941a1 100644 --- a/net/netfilter/xt_SECMARK.c +++ b/net/netfilter/xt_SECMARK.c | |||
@@ -109,7 +109,7 @@ static bool checkentry(const char *tablename, const void *entry, | |||
109 | return true; | 109 | return true; |
110 | } | 110 | } |
111 | 111 | ||
112 | static struct xt_target xt_secmark_target[] = { | 112 | static struct xt_target xt_secmark_target[] __read_mostly = { |
113 | { | 113 | { |
114 | .name = "SECMARK", | 114 | .name = "SECMARK", |
115 | .family = AF_INET, | 115 | .family = AF_INET, |
diff --git a/net/netfilter/xt_TCPMSS.c b/net/netfilter/xt_TCPMSS.c index 6ae6df993aa2..d40f7e4b1289 100644 --- a/net/netfilter/xt_TCPMSS.c +++ b/net/netfilter/xt_TCPMSS.c | |||
@@ -259,7 +259,7 @@ xt_tcpmss_checkentry6(const char *tablename, | |||
259 | } | 259 | } |
260 | #endif | 260 | #endif |
261 | 261 | ||
262 | static struct xt_target xt_tcpmss_reg[] = { | 262 | static struct xt_target xt_tcpmss_reg[] __read_mostly = { |
263 | { | 263 | { |
264 | .family = AF_INET, | 264 | .family = AF_INET, |
265 | .name = "TCPMSS", | 265 | .name = "TCPMSS", |
diff --git a/net/netfilter/xt_TRACE.c b/net/netfilter/xt_TRACE.c index b82fc4680344..4df2dedcc0b5 100644 --- a/net/netfilter/xt_TRACE.c +++ b/net/netfilter/xt_TRACE.c | |||
@@ -21,7 +21,7 @@ target(struct sk_buff **pskb, | |||
21 | return XT_CONTINUE; | 21 | return XT_CONTINUE; |
22 | } | 22 | } |
23 | 23 | ||
24 | static struct xt_target xt_trace_target[] = { | 24 | static struct xt_target xt_trace_target[] __read_mostly = { |
25 | { | 25 | { |
26 | .name = "TRACE", | 26 | .name = "TRACE", |
27 | .family = AF_INET, | 27 | .family = AF_INET, |
diff --git a/net/netfilter/xt_comment.c b/net/netfilter/xt_comment.c index aa9503ff90ba..64bcdb0fe1e6 100644 --- a/net/netfilter/xt_comment.c +++ b/net/netfilter/xt_comment.c | |||
@@ -29,7 +29,7 @@ match(const struct sk_buff *skb, | |||
29 | return true; | 29 | return true; |
30 | } | 30 | } |
31 | 31 | ||
32 | static struct xt_match xt_comment_match[] = { | 32 | static struct xt_match xt_comment_match[] __read_mostly = { |
33 | { | 33 | { |
34 | .name = "comment", | 34 | .name = "comment", |
35 | .family = AF_INET, | 35 | .family = AF_INET, |
diff --git a/net/netfilter/xt_connbytes.c b/net/netfilter/xt_connbytes.c index d9b2e75fbab2..dd4d79b8fc9d 100644 --- a/net/netfilter/xt_connbytes.c +++ b/net/netfilter/xt_connbytes.c | |||
@@ -128,7 +128,7 @@ destroy(const struct xt_match *match, void *matchinfo) | |||
128 | nf_ct_l3proto_module_put(match->family); | 128 | nf_ct_l3proto_module_put(match->family); |
129 | } | 129 | } |
130 | 130 | ||
131 | static struct xt_match xt_connbytes_match[] = { | 131 | static struct xt_match xt_connbytes_match[] __read_mostly = { |
132 | { | 132 | { |
133 | .name = "connbytes", | 133 | .name = "connbytes", |
134 | .family = AF_INET, | 134 | .family = AF_INET, |
diff --git a/net/netfilter/xt_connmark.c b/net/netfilter/xt_connmark.c index 3a6e16d4edcd..e73fa9b46cf7 100644 --- a/net/netfilter/xt_connmark.c +++ b/net/netfilter/xt_connmark.c | |||
@@ -109,7 +109,7 @@ static int compat_to_user(void __user *dst, void *src) | |||
109 | } | 109 | } |
110 | #endif /* CONFIG_COMPAT */ | 110 | #endif /* CONFIG_COMPAT */ |
111 | 111 | ||
112 | static struct xt_match xt_connmark_match[] = { | 112 | static struct xt_match xt_connmark_match[] __read_mostly = { |
113 | { | 113 | { |
114 | .name = "connmark", | 114 | .name = "connmark", |
115 | .family = AF_INET, | 115 | .family = AF_INET, |
diff --git a/net/netfilter/xt_conntrack.c b/net/netfilter/xt_conntrack.c index 9e3ec31f2016..ca4b69f020a8 100644 --- a/net/netfilter/xt_conntrack.c +++ b/net/netfilter/xt_conntrack.c | |||
@@ -183,7 +183,7 @@ static int compat_to_user(void __user *dst, void *src) | |||
183 | } | 183 | } |
184 | #endif | 184 | #endif |
185 | 185 | ||
186 | static struct xt_match conntrack_match = { | 186 | static struct xt_match conntrack_match __read_mostly = { |
187 | .name = "conntrack", | 187 | .name = "conntrack", |
188 | .match = match, | 188 | .match = match, |
189 | .checkentry = checkentry, | 189 | .checkentry = checkentry, |
diff --git a/net/netfilter/xt_dccp.c b/net/netfilter/xt_dccp.c index f07a68d445ca..83224ec89cc0 100644 --- a/net/netfilter/xt_dccp.c +++ b/net/netfilter/xt_dccp.c | |||
@@ -140,7 +140,7 @@ checkentry(const char *tablename, | |||
140 | && !(info->invflags & ~info->flags); | 140 | && !(info->invflags & ~info->flags); |
141 | } | 141 | } |
142 | 142 | ||
143 | static struct xt_match xt_dccp_match[] = { | 143 | static struct xt_match xt_dccp_match[] __read_mostly = { |
144 | { | 144 | { |
145 | .name = "dccp", | 145 | .name = "dccp", |
146 | .family = AF_INET, | 146 | .family = AF_INET, |
diff --git a/net/netfilter/xt_dscp.c b/net/netfilter/xt_dscp.c index 35cabca28eff..dde6d66e0d33 100644 --- a/net/netfilter/xt_dscp.c +++ b/net/netfilter/xt_dscp.c | |||
@@ -68,7 +68,7 @@ static bool checkentry(const char *tablename, | |||
68 | return true; | 68 | return true; |
69 | } | 69 | } |
70 | 70 | ||
71 | static struct xt_match xt_dscp_match[] = { | 71 | static struct xt_match xt_dscp_match[] __read_mostly = { |
72 | { | 72 | { |
73 | .name = "dscp", | 73 | .name = "dscp", |
74 | .family = AF_INET, | 74 | .family = AF_INET, |
diff --git a/net/netfilter/xt_esp.c b/net/netfilter/xt_esp.c index 1a6ae8a047c7..b11378e001b6 100644 --- a/net/netfilter/xt_esp.c +++ b/net/netfilter/xt_esp.c | |||
@@ -91,7 +91,7 @@ checkentry(const char *tablename, | |||
91 | return true; | 91 | return true; |
92 | } | 92 | } |
93 | 93 | ||
94 | static struct xt_match xt_esp_match[] = { | 94 | static struct xt_match xt_esp_match[] __read_mostly = { |
95 | { | 95 | { |
96 | .name = "esp", | 96 | .name = "esp", |
97 | .family = AF_INET, | 97 | .family = AF_INET, |
diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c index 094da6e066b8..5a6ea9b9108c 100644 --- a/net/netfilter/xt_hashlimit.c +++ b/net/netfilter/xt_hashlimit.c | |||
@@ -578,7 +578,7 @@ static int compat_to_user(void __user *dst, void *src) | |||
578 | } | 578 | } |
579 | #endif | 579 | #endif |
580 | 580 | ||
581 | static struct xt_match xt_hashlimit[] = { | 581 | static struct xt_match xt_hashlimit[] __read_mostly = { |
582 | { | 582 | { |
583 | .name = "hashlimit", | 583 | .name = "hashlimit", |
584 | .family = AF_INET, | 584 | .family = AF_INET, |
diff --git a/net/netfilter/xt_helper.c b/net/netfilter/xt_helper.c index 047d0046b28c..d03acb032cc8 100644 --- a/net/netfilter/xt_helper.c +++ b/net/netfilter/xt_helper.c | |||
@@ -99,7 +99,7 @@ destroy(const struct xt_match *match, void *matchinfo) | |||
99 | nf_ct_l3proto_module_put(match->family); | 99 | nf_ct_l3proto_module_put(match->family); |
100 | } | 100 | } |
101 | 101 | ||
102 | static struct xt_match xt_helper_match[] = { | 102 | static struct xt_match xt_helper_match[] __read_mostly = { |
103 | { | 103 | { |
104 | .name = "helper", | 104 | .name = "helper", |
105 | .family = AF_INET, | 105 | .family = AF_INET, |
diff --git a/net/netfilter/xt_length.c b/net/netfilter/xt_length.c index ea4880bd31ea..3dad173d9735 100644 --- a/net/netfilter/xt_length.c +++ b/net/netfilter/xt_length.c | |||
@@ -53,7 +53,7 @@ match6(const struct sk_buff *skb, | |||
53 | return (pktlen >= info->min && pktlen <= info->max) ^ info->invert; | 53 | return (pktlen >= info->min && pktlen <= info->max) ^ info->invert; |
54 | } | 54 | } |
55 | 55 | ||
56 | static struct xt_match xt_length_match[] = { | 56 | static struct xt_match xt_length_match[] __read_mostly = { |
57 | { | 57 | { |
58 | .name = "length", | 58 | .name = "length", |
59 | .family = AF_INET, | 59 | .family = AF_INET, |
diff --git a/net/netfilter/xt_limit.c b/net/netfilter/xt_limit.c index b042419462af..4fcca797150f 100644 --- a/net/netfilter/xt_limit.c +++ b/net/netfilter/xt_limit.c | |||
@@ -173,7 +173,7 @@ static int compat_to_user(void __user *dst, void *src) | |||
173 | } | 173 | } |
174 | #endif /* CONFIG_COMPAT */ | 174 | #endif /* CONFIG_COMPAT */ |
175 | 175 | ||
176 | static struct xt_match xt_limit_match[] = { | 176 | static struct xt_match xt_limit_match[] __read_mostly = { |
177 | { | 177 | { |
178 | .name = "limit", | 178 | .name = "limit", |
179 | .family = AF_INET, | 179 | .family = AF_INET, |
diff --git a/net/netfilter/xt_mac.c b/net/netfilter/xt_mac.c index 28ec08e7511b..00490d777a0f 100644 --- a/net/netfilter/xt_mac.c +++ b/net/netfilter/xt_mac.c | |||
@@ -44,7 +44,7 @@ match(const struct sk_buff *skb, | |||
44 | ^ info->invert); | 44 | ^ info->invert); |
45 | } | 45 | } |
46 | 46 | ||
47 | static struct xt_match xt_mac_match[] = { | 47 | static struct xt_match xt_mac_match[] __read_mostly = { |
48 | { | 48 | { |
49 | .name = "mac", | 49 | .name = "mac", |
50 | .family = AF_INET, | 50 | .family = AF_INET, |
diff --git a/net/netfilter/xt_mark.c b/net/netfilter/xt_mark.c index b8ab79452f08..c02a7f8f3925 100644 --- a/net/netfilter/xt_mark.c +++ b/net/netfilter/xt_mark.c | |||
@@ -81,7 +81,7 @@ static int compat_to_user(void __user *dst, void *src) | |||
81 | } | 81 | } |
82 | #endif /* CONFIG_COMPAT */ | 82 | #endif /* CONFIG_COMPAT */ |
83 | 83 | ||
84 | static struct xt_match xt_mark_match[] = { | 84 | static struct xt_match xt_mark_match[] __read_mostly = { |
85 | { | 85 | { |
86 | .name = "mark", | 86 | .name = "mark", |
87 | .family = AF_INET, | 87 | .family = AF_INET, |
diff --git a/net/netfilter/xt_multiport.c b/net/netfilter/xt_multiport.c index 3d69d6208965..e8ae10284acd 100644 --- a/net/netfilter/xt_multiport.c +++ b/net/netfilter/xt_multiport.c | |||
@@ -228,7 +228,7 @@ checkentry6_v1(const char *tablename, | |||
228 | multiinfo->count); | 228 | multiinfo->count); |
229 | } | 229 | } |
230 | 230 | ||
231 | static struct xt_match xt_multiport_match[] = { | 231 | static struct xt_match xt_multiport_match[] __read_mostly = { |
232 | { | 232 | { |
233 | .name = "multiport", | 233 | .name = "multiport", |
234 | .family = AF_INET, | 234 | .family = AF_INET, |
diff --git a/net/netfilter/xt_physdev.c b/net/netfilter/xt_physdev.c index 467b2dcf7e6b..f47cab7a696d 100644 --- a/net/netfilter/xt_physdev.c +++ b/net/netfilter/xt_physdev.c | |||
@@ -125,7 +125,7 @@ checkentry(const char *tablename, | |||
125 | return true; | 125 | return true; |
126 | } | 126 | } |
127 | 127 | ||
128 | static struct xt_match xt_physdev_match[] = { | 128 | static struct xt_match xt_physdev_match[] __read_mostly = { |
129 | { | 129 | { |
130 | .name = "physdev", | 130 | .name = "physdev", |
131 | .family = AF_INET, | 131 | .family = AF_INET, |
diff --git a/net/netfilter/xt_pkttype.c b/net/netfilter/xt_pkttype.c index e4c420b5713b..a52925f12f35 100644 --- a/net/netfilter/xt_pkttype.c +++ b/net/netfilter/xt_pkttype.c | |||
@@ -43,7 +43,7 @@ static bool match(const struct sk_buff *skb, | |||
43 | return (type == info->pkttype) ^ info->invert; | 43 | return (type == info->pkttype) ^ info->invert; |
44 | } | 44 | } |
45 | 45 | ||
46 | static struct xt_match xt_pkttype_match[] = { | 46 | static struct xt_match xt_pkttype_match[] __read_mostly = { |
47 | { | 47 | { |
48 | .name = "pkttype", | 48 | .name = "pkttype", |
49 | .family = AF_INET, | 49 | .family = AF_INET, |
diff --git a/net/netfilter/xt_policy.c b/net/netfilter/xt_policy.c index 5ab6d71f8d05..6d6d3b7fcbb5 100644 --- a/net/netfilter/xt_policy.c +++ b/net/netfilter/xt_policy.c | |||
@@ -164,7 +164,7 @@ static bool checkentry(const char *tablename, const void *ip_void, | |||
164 | return true; | 164 | return true; |
165 | } | 165 | } |
166 | 166 | ||
167 | static struct xt_match xt_policy_match[] = { | 167 | static struct xt_match xt_policy_match[] __read_mostly = { |
168 | { | 168 | { |
169 | .name = "policy", | 169 | .name = "policy", |
170 | .family = AF_INET, | 170 | .family = AF_INET, |
diff --git a/net/netfilter/xt_quota.c b/net/netfilter/xt_quota.c index feb130d14f2c..dae97445b87b 100644 --- a/net/netfilter/xt_quota.c +++ b/net/netfilter/xt_quota.c | |||
@@ -53,7 +53,7 @@ checkentry(const char *tablename, const void *entry, | |||
53 | return true; | 53 | return true; |
54 | } | 54 | } |
55 | 55 | ||
56 | static struct xt_match xt_quota_match[] = { | 56 | static struct xt_match xt_quota_match[] __read_mostly = { |
57 | { | 57 | { |
58 | .name = "quota", | 58 | .name = "quota", |
59 | .family = AF_INET, | 59 | .family = AF_INET, |
diff --git a/net/netfilter/xt_realm.c b/net/netfilter/xt_realm.c index 44b807d279ad..cc3e76d77a99 100644 --- a/net/netfilter/xt_realm.c +++ b/net/netfilter/xt_realm.c | |||
@@ -37,7 +37,7 @@ match(const struct sk_buff *skb, | |||
37 | return (info->id == (dst->tclassid & info->mask)) ^ info->invert; | 37 | return (info->id == (dst->tclassid & info->mask)) ^ info->invert; |
38 | } | 38 | } |
39 | 39 | ||
40 | static struct xt_match realm_match = { | 40 | static struct xt_match realm_match __read_mostly = { |
41 | .name = "realm", | 41 | .name = "realm", |
42 | .match = match, | 42 | .match = match, |
43 | .matchsize = sizeof(struct xt_realm_info), | 43 | .matchsize = sizeof(struct xt_realm_info), |
diff --git a/net/netfilter/xt_sctp.c b/net/netfilter/xt_sctp.c index fefc846188f3..c002153b80ab 100644 --- a/net/netfilter/xt_sctp.c +++ b/net/netfilter/xt_sctp.c | |||
@@ -172,7 +172,7 @@ checkentry(const char *tablename, | |||
172 | | SCTP_CHUNK_MATCH_ONLY))); | 172 | | SCTP_CHUNK_MATCH_ONLY))); |
173 | } | 173 | } |
174 | 174 | ||
175 | static struct xt_match xt_sctp_match[] = { | 175 | static struct xt_match xt_sctp_match[] __read_mostly = { |
176 | { | 176 | { |
177 | .name = "sctp", | 177 | .name = "sctp", |
178 | .family = AF_INET, | 178 | .family = AF_INET, |
diff --git a/net/netfilter/xt_state.c b/net/netfilter/xt_state.c index 5b9c59aa14d3..e0a528df19a7 100644 --- a/net/netfilter/xt_state.c +++ b/net/netfilter/xt_state.c | |||
@@ -64,7 +64,7 @@ destroy(const struct xt_match *match, void *matchinfo) | |||
64 | nf_ct_l3proto_module_put(match->family); | 64 | nf_ct_l3proto_module_put(match->family); |
65 | } | 65 | } |
66 | 66 | ||
67 | static struct xt_match xt_state_match[] = { | 67 | static struct xt_match xt_state_match[] __read_mostly = { |
68 | { | 68 | { |
69 | .name = "state", | 69 | .name = "state", |
70 | .family = AF_INET, | 70 | .family = AF_INET, |
diff --git a/net/netfilter/xt_statistic.c b/net/netfilter/xt_statistic.c index 3da4978287f3..4089dae4e286 100644 --- a/net/netfilter/xt_statistic.c +++ b/net/netfilter/xt_statistic.c | |||
@@ -66,7 +66,7 @@ checkentry(const char *tablename, const void *entry, | |||
66 | return true; | 66 | return true; |
67 | } | 67 | } |
68 | 68 | ||
69 | static struct xt_match xt_statistic_match[] = { | 69 | static struct xt_match xt_statistic_match[] __read_mostly = { |
70 | { | 70 | { |
71 | .name = "statistic", | 71 | .name = "statistic", |
72 | .family = AF_INET, | 72 | .family = AF_INET, |
diff --git a/net/netfilter/xt_string.c b/net/netfilter/xt_string.c index ab761b17f811..864133442cda 100644 --- a/net/netfilter/xt_string.c +++ b/net/netfilter/xt_string.c | |||
@@ -73,7 +73,7 @@ static void destroy(const struct xt_match *match, void *matchinfo) | |||
73 | textsearch_destroy(STRING_TEXT_PRIV(matchinfo)->config); | 73 | textsearch_destroy(STRING_TEXT_PRIV(matchinfo)->config); |
74 | } | 74 | } |
75 | 75 | ||
76 | static struct xt_match xt_string_match[] = { | 76 | static struct xt_match xt_string_match[] __read_mostly = { |
77 | { | 77 | { |
78 | .name = "string", | 78 | .name = "string", |
79 | .family = AF_INET, | 79 | .family = AF_INET, |
diff --git a/net/netfilter/xt_tcpmss.c b/net/netfilter/xt_tcpmss.c index e9bfd3dd3c81..cd5f6d758c68 100644 --- a/net/netfilter/xt_tcpmss.c +++ b/net/netfilter/xt_tcpmss.c | |||
@@ -81,7 +81,7 @@ dropit: | |||
81 | return false; | 81 | return false; |
82 | } | 82 | } |
83 | 83 | ||
84 | static struct xt_match xt_tcpmss_match[] = { | 84 | static struct xt_match xt_tcpmss_match[] __read_mostly = { |
85 | { | 85 | { |
86 | .name = "tcpmss", | 86 | .name = "tcpmss", |
87 | .family = AF_INET, | 87 | .family = AF_INET, |
diff --git a/net/netfilter/xt_tcpudp.c b/net/netfilter/xt_tcpudp.c index 5cb345aeeca8..ab7d845224fc 100644 --- a/net/netfilter/xt_tcpudp.c +++ b/net/netfilter/xt_tcpudp.c | |||
@@ -194,7 +194,7 @@ udp_checkentry(const char *tablename, | |||
194 | return !(udpinfo->invflags & ~XT_UDP_INV_MASK); | 194 | return !(udpinfo->invflags & ~XT_UDP_INV_MASK); |
195 | } | 195 | } |
196 | 196 | ||
197 | static struct xt_match xt_tcpudp_match[] = { | 197 | static struct xt_match xt_tcpudp_match[] __read_mostly = { |
198 | { | 198 | { |
199 | .name = "tcp", | 199 | .name = "tcp", |
200 | .family = AF_INET, | 200 | .family = AF_INET, |
diff --git a/net/netfilter/xt_u32.c b/net/netfilter/xt_u32.c index 07068751a35c..04b677ae8dae 100644 --- a/net/netfilter/xt_u32.c +++ b/net/netfilter/xt_u32.c | |||
@@ -99,7 +99,7 @@ static bool u32_match(const struct sk_buff *skb, | |||
99 | return ret ^ data->invert; | 99 | return ret ^ data->invert; |
100 | } | 100 | } |
101 | 101 | ||
102 | static struct xt_match u32_reg[] = { | 102 | static struct xt_match u32_reg[] __read_mostly = { |
103 | { | 103 | { |
104 | .name = "u32", | 104 | .name = "u32", |
105 | .family = AF_INET, | 105 | .family = AF_INET, |