diff options
author | David S. Miller <davem@davemloft.net> | 2010-05-13 17:14:10 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-13 17:14:10 -0400 |
commit | e7874c996b8591f59d78efa519031dab5b58723b (patch) | |
tree | 14aa8dea0c33de9d22ef8177fb242c9d80d693de /net/ipv6 | |
parent | 4a6346d4ea63b5e1390babf22f1cc0f113d8082b (diff) | |
parent | 736d58e3a2245ac2779fe0f278f8735bcf33ca8d (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/netfilter/ip6_queue.c | 1 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6_tables.c | 127 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_LOG.c | 2 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_REJECT.c | 2 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_ah.c | 6 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_eui64.c | 4 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_frag.c | 6 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_hbh.c | 6 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_ipv6header.c | 2 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_mh.c | 6 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_rt.c | 6 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6table_filter.c | 2 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6table_mangle.c | 2 | ||||
-rw-r--r-- | net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c | 14 |
14 files changed, 81 insertions, 105 deletions
diff --git a/net/ipv6/netfilter/ip6_queue.c b/net/ipv6/netfilter/ip6_queue.c index 8656eb75520c..8c201743d96d 100644 --- a/net/ipv6/netfilter/ip6_queue.c +++ b/net/ipv6/netfilter/ip6_queue.c | |||
@@ -462,7 +462,6 @@ __ipq_rcv_skb(struct sk_buff *skb) | |||
462 | 462 | ||
463 | if (flags & NLM_F_ACK) | 463 | if (flags & NLM_F_ACK) |
464 | netlink_ack(skb, nlh, 0); | 464 | netlink_ack(skb, nlh, 0); |
465 | return; | ||
466 | } | 465 | } |
467 | 466 | ||
468 | static void | 467 | static void |
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c index 7afa11773164..6f517bd83692 100644 --- a/net/ipv6/netfilter/ip6_tables.c +++ b/net/ipv6/netfilter/ip6_tables.c | |||
@@ -52,12 +52,7 @@ MODULE_DESCRIPTION("IPv6 packet filter"); | |||
52 | #endif | 52 | #endif |
53 | 53 | ||
54 | #ifdef CONFIG_NETFILTER_DEBUG | 54 | #ifdef CONFIG_NETFILTER_DEBUG |
55 | #define IP_NF_ASSERT(x) \ | 55 | #define IP_NF_ASSERT(x) WARN_ON(!(x)) |
56 | do { \ | ||
57 | if (!(x)) \ | ||
58 | printk("IP_NF_ASSERT: %s:%s:%u\n", \ | ||
59 | __func__, __FILE__, __LINE__); \ | ||
60 | } while(0) | ||
61 | #else | 56 | #else |
62 | #define IP_NF_ASSERT(x) | 57 | #define IP_NF_ASSERT(x) |
63 | #endif | 58 | #endif |
@@ -197,7 +192,7 @@ ip6_checkentry(const struct ip6t_ip6 *ipv6) | |||
197 | } | 192 | } |
198 | 193 | ||
199 | static unsigned int | 194 | static unsigned int |
200 | ip6t_error(struct sk_buff *skb, const struct xt_target_param *par) | 195 | ip6t_error(struct sk_buff *skb, const struct xt_action_param *par) |
201 | { | 196 | { |
202 | if (net_ratelimit()) | 197 | if (net_ratelimit()) |
203 | pr_info("error: `%s'\n", (const char *)par->targinfo); | 198 | pr_info("error: `%s'\n", (const char *)par->targinfo); |
@@ -205,21 +200,6 @@ ip6t_error(struct sk_buff *skb, const struct xt_target_param *par) | |||
205 | return NF_DROP; | 200 | return NF_DROP; |
206 | } | 201 | } |
207 | 202 | ||
208 | /* Performance critical - called for every packet */ | ||
209 | static inline bool | ||
210 | do_match(const struct ip6t_entry_match *m, const struct sk_buff *skb, | ||
211 | struct xt_match_param *par) | ||
212 | { | ||
213 | par->match = m->u.kernel.match; | ||
214 | par->matchinfo = m->data; | ||
215 | |||
216 | /* Stop iteration if it doesn't match */ | ||
217 | if (!m->u.kernel.match->match(skb, par)) | ||
218 | return true; | ||
219 | else | ||
220 | return false; | ||
221 | } | ||
222 | |||
223 | static inline struct ip6t_entry * | 203 | static inline struct ip6t_entry * |
224 | get_entry(const void *base, unsigned int offset) | 204 | get_entry(const void *base, unsigned int offset) |
225 | { | 205 | { |
@@ -352,7 +332,6 @@ ip6t_do_table(struct sk_buff *skb, | |||
352 | struct xt_table *table) | 332 | struct xt_table *table) |
353 | { | 333 | { |
354 | static const char nulldevname[IFNAMSIZ] __attribute__((aligned(sizeof(long)))); | 334 | static const char nulldevname[IFNAMSIZ] __attribute__((aligned(sizeof(long)))); |
355 | bool hotdrop = false; | ||
356 | /* Initializing verdict to NF_DROP keeps gcc happy. */ | 335 | /* Initializing verdict to NF_DROP keeps gcc happy. */ |
357 | unsigned int verdict = NF_DROP; | 336 | unsigned int verdict = NF_DROP; |
358 | const char *indev, *outdev; | 337 | const char *indev, *outdev; |
@@ -360,8 +339,7 @@ ip6t_do_table(struct sk_buff *skb, | |||
360 | struct ip6t_entry *e, **jumpstack; | 339 | struct ip6t_entry *e, **jumpstack; |
361 | unsigned int *stackptr, origptr, cpu; | 340 | unsigned int *stackptr, origptr, cpu; |
362 | const struct xt_table_info *private; | 341 | const struct xt_table_info *private; |
363 | struct xt_match_param mtpar; | 342 | struct xt_action_param acpar; |
364 | struct xt_target_param tgpar; | ||
365 | 343 | ||
366 | /* Initialization */ | 344 | /* Initialization */ |
367 | indev = in ? in->name : nulldevname; | 345 | indev = in ? in->name : nulldevname; |
@@ -372,11 +350,11 @@ ip6t_do_table(struct sk_buff *skb, | |||
372 | * things we don't know, ie. tcp syn flag or ports). If the | 350 | * things we don't know, ie. tcp syn flag or ports). If the |
373 | * rule is also a fragment-specific rule, non-fragments won't | 351 | * rule is also a fragment-specific rule, non-fragments won't |
374 | * match it. */ | 352 | * match it. */ |
375 | mtpar.hotdrop = &hotdrop; | 353 | acpar.hotdrop = false; |
376 | mtpar.in = tgpar.in = in; | 354 | acpar.in = in; |
377 | mtpar.out = tgpar.out = out; | 355 | acpar.out = out; |
378 | mtpar.family = tgpar.family = NFPROTO_IPV6; | 356 | acpar.family = NFPROTO_IPV6; |
379 | mtpar.hooknum = tgpar.hooknum = hook; | 357 | acpar.hooknum = hook; |
380 | 358 | ||
381 | IP_NF_ASSERT(table->valid_hooks & (1 << hook)); | 359 | IP_NF_ASSERT(table->valid_hooks & (1 << hook)); |
382 | 360 | ||
@@ -396,15 +374,18 @@ ip6t_do_table(struct sk_buff *skb, | |||
396 | 374 | ||
397 | IP_NF_ASSERT(e); | 375 | IP_NF_ASSERT(e); |
398 | if (!ip6_packet_match(skb, indev, outdev, &e->ipv6, | 376 | if (!ip6_packet_match(skb, indev, outdev, &e->ipv6, |
399 | &mtpar.thoff, &mtpar.fragoff, &hotdrop)) { | 377 | &acpar.thoff, &acpar.fragoff, &acpar.hotdrop)) { |
400 | no_match: | 378 | no_match: |
401 | e = ip6t_next_entry(e); | 379 | e = ip6t_next_entry(e); |
402 | continue; | 380 | continue; |
403 | } | 381 | } |
404 | 382 | ||
405 | xt_ematch_foreach(ematch, e) | 383 | xt_ematch_foreach(ematch, e) { |
406 | if (do_match(ematch, skb, &mtpar) != 0) | 384 | acpar.match = ematch->u.kernel.match; |
385 | acpar.matchinfo = ematch->data; | ||
386 | if (!acpar.match->match(skb, &acpar)) | ||
407 | goto no_match; | 387 | goto no_match; |
388 | } | ||
408 | 389 | ||
409 | ADD_COUNTER(e->counters, | 390 | ADD_COUNTER(e->counters, |
410 | ntohs(ipv6_hdr(skb)->payload_len) + | 391 | ntohs(ipv6_hdr(skb)->payload_len) + |
@@ -451,16 +432,16 @@ ip6t_do_table(struct sk_buff *skb, | |||
451 | continue; | 432 | continue; |
452 | } | 433 | } |
453 | 434 | ||
454 | tgpar.target = t->u.kernel.target; | 435 | acpar.target = t->u.kernel.target; |
455 | tgpar.targinfo = t->data; | 436 | acpar.targinfo = t->data; |
456 | 437 | ||
457 | verdict = t->u.kernel.target->target(skb, &tgpar); | 438 | verdict = t->u.kernel.target->target(skb, &acpar); |
458 | if (verdict == IP6T_CONTINUE) | 439 | if (verdict == IP6T_CONTINUE) |
459 | e = ip6t_next_entry(e); | 440 | e = ip6t_next_entry(e); |
460 | else | 441 | else |
461 | /* Verdict */ | 442 | /* Verdict */ |
462 | break; | 443 | break; |
463 | } while (!hotdrop); | 444 | } while (!acpar.hotdrop); |
464 | 445 | ||
465 | xt_info_rdunlock_bh(); | 446 | xt_info_rdunlock_bh(); |
466 | *stackptr = origptr; | 447 | *stackptr = origptr; |
@@ -468,7 +449,7 @@ ip6t_do_table(struct sk_buff *skb, | |||
468 | #ifdef DEBUG_ALLOW_ALL | 449 | #ifdef DEBUG_ALLOW_ALL |
469 | return NF_ACCEPT; | 450 | return NF_ACCEPT; |
470 | #else | 451 | #else |
471 | if (hotdrop) | 452 | if (acpar.hotdrop) |
472 | return NF_DROP; | 453 | return NF_DROP; |
473 | else return verdict; | 454 | else return verdict; |
474 | #endif | 455 | #endif |
@@ -500,7 +481,7 @@ mark_source_chains(const struct xt_table_info *newinfo, | |||
500 | int visited = e->comefrom & (1 << hook); | 481 | int visited = e->comefrom & (1 << hook); |
501 | 482 | ||
502 | if (e->comefrom & (1 << NF_INET_NUMHOOKS)) { | 483 | if (e->comefrom & (1 << NF_INET_NUMHOOKS)) { |
503 | printk("iptables: loop hook %u pos %u %08X.\n", | 484 | pr_err("iptables: loop hook %u pos %u %08X.\n", |
504 | hook, pos, e->comefrom); | 485 | hook, pos, e->comefrom); |
505 | return 0; | 486 | return 0; |
506 | } | 487 | } |
@@ -2167,7 +2148,7 @@ icmp6_type_code_match(u_int8_t test_type, u_int8_t min_code, u_int8_t max_code, | |||
2167 | } | 2148 | } |
2168 | 2149 | ||
2169 | static bool | 2150 | static bool |
2170 | icmp6_match(const struct sk_buff *skb, const struct xt_match_param *par) | 2151 | icmp6_match(const struct sk_buff *skb, struct xt_action_param *par) |
2171 | { | 2152 | { |
2172 | const struct icmp6hdr *ic; | 2153 | const struct icmp6hdr *ic; |
2173 | struct icmp6hdr _icmph; | 2154 | struct icmp6hdr _icmph; |
@@ -2183,7 +2164,7 @@ icmp6_match(const struct sk_buff *skb, const struct xt_match_param *par) | |||
2183 | * can't. Hence, no choice but to drop. | 2164 | * can't. Hence, no choice but to drop. |
2184 | */ | 2165 | */ |
2185 | duprintf("Dropping evil ICMP tinygram.\n"); | 2166 | duprintf("Dropping evil ICMP tinygram.\n"); |
2186 | *par->hotdrop = true; | 2167 | par->hotdrop = true; |
2187 | return false; | 2168 | return false; |
2188 | } | 2169 | } |
2189 | 2170 | ||
@@ -2204,22 +2185,23 @@ static int icmp6_checkentry(const struct xt_mtchk_param *par) | |||
2204 | } | 2185 | } |
2205 | 2186 | ||
2206 | /* The built-in targets: standard (NULL) and error. */ | 2187 | /* The built-in targets: standard (NULL) and error. */ |
2207 | static struct xt_target ip6t_standard_target __read_mostly = { | 2188 | static struct xt_target ip6t_builtin_tg[] __read_mostly = { |
2208 | .name = IP6T_STANDARD_TARGET, | 2189 | { |
2209 | .targetsize = sizeof(int), | 2190 | .name = IP6T_STANDARD_TARGET, |
2210 | .family = NFPROTO_IPV6, | 2191 | .targetsize = sizeof(int), |
2192 | .family = NFPROTO_IPV6, | ||
2211 | #ifdef CONFIG_COMPAT | 2193 | #ifdef CONFIG_COMPAT |
2212 | .compatsize = sizeof(compat_int_t), | 2194 | .compatsize = sizeof(compat_int_t), |
2213 | .compat_from_user = compat_standard_from_user, | 2195 | .compat_from_user = compat_standard_from_user, |
2214 | .compat_to_user = compat_standard_to_user, | 2196 | .compat_to_user = compat_standard_to_user, |
2215 | #endif | 2197 | #endif |
2216 | }; | 2198 | }, |
2217 | 2199 | { | |
2218 | static struct xt_target ip6t_error_target __read_mostly = { | 2200 | .name = IP6T_ERROR_TARGET, |
2219 | .name = IP6T_ERROR_TARGET, | 2201 | .target = ip6t_error, |
2220 | .target = ip6t_error, | 2202 | .targetsize = IP6T_FUNCTION_MAXNAMELEN, |
2221 | .targetsize = IP6T_FUNCTION_MAXNAMELEN, | 2203 | .family = NFPROTO_IPV6, |
2222 | .family = NFPROTO_IPV6, | 2204 | }, |
2223 | }; | 2205 | }; |
2224 | 2206 | ||
2225 | static struct nf_sockopt_ops ip6t_sockopts = { | 2207 | static struct nf_sockopt_ops ip6t_sockopts = { |
@@ -2239,13 +2221,15 @@ static struct nf_sockopt_ops ip6t_sockopts = { | |||
2239 | .owner = THIS_MODULE, | 2221 | .owner = THIS_MODULE, |
2240 | }; | 2222 | }; |
2241 | 2223 | ||
2242 | static struct xt_match icmp6_matchstruct __read_mostly = { | 2224 | static struct xt_match ip6t_builtin_mt[] __read_mostly = { |
2243 | .name = "icmp6", | 2225 | { |
2244 | .match = icmp6_match, | 2226 | .name = "icmp6", |
2245 | .matchsize = sizeof(struct ip6t_icmp), | 2227 | .match = icmp6_match, |
2246 | .checkentry = icmp6_checkentry, | 2228 | .matchsize = sizeof(struct ip6t_icmp), |
2247 | .proto = IPPROTO_ICMPV6, | 2229 | .checkentry = icmp6_checkentry, |
2248 | .family = NFPROTO_IPV6, | 2230 | .proto = IPPROTO_ICMPV6, |
2231 | .family = NFPROTO_IPV6, | ||
2232 | }, | ||
2249 | }; | 2233 | }; |
2250 | 2234 | ||
2251 | static int __net_init ip6_tables_net_init(struct net *net) | 2235 | static int __net_init ip6_tables_net_init(struct net *net) |
@@ -2272,13 +2256,10 @@ static int __init ip6_tables_init(void) | |||
2272 | goto err1; | 2256 | goto err1; |
2273 | 2257 | ||
2274 | /* Noone else will be downing sem now, so we won't sleep */ | 2258 | /* Noone else will be downing sem now, so we won't sleep */ |
2275 | ret = xt_register_target(&ip6t_standard_target); | 2259 | ret = xt_register_targets(ip6t_builtin_tg, ARRAY_SIZE(ip6t_builtin_tg)); |
2276 | if (ret < 0) | 2260 | if (ret < 0) |
2277 | goto err2; | 2261 | goto err2; |
2278 | ret = xt_register_target(&ip6t_error_target); | 2262 | ret = xt_register_matches(ip6t_builtin_mt, ARRAY_SIZE(ip6t_builtin_mt)); |
2279 | if (ret < 0) | ||
2280 | goto err3; | ||
2281 | ret = xt_register_match(&icmp6_matchstruct); | ||
2282 | if (ret < 0) | 2263 | if (ret < 0) |
2283 | goto err4; | 2264 | goto err4; |
2284 | 2265 | ||
@@ -2291,11 +2272,9 @@ static int __init ip6_tables_init(void) | |||
2291 | return 0; | 2272 | return 0; |
2292 | 2273 | ||
2293 | err5: | 2274 | err5: |
2294 | xt_unregister_match(&icmp6_matchstruct); | 2275 | xt_unregister_matches(ip6t_builtin_mt, ARRAY_SIZE(ip6t_builtin_mt)); |
2295 | err4: | 2276 | err4: |
2296 | xt_unregister_target(&ip6t_error_target); | 2277 | xt_unregister_targets(ip6t_builtin_tg, ARRAY_SIZE(ip6t_builtin_tg)); |
2297 | err3: | ||
2298 | xt_unregister_target(&ip6t_standard_target); | ||
2299 | err2: | 2278 | err2: |
2300 | unregister_pernet_subsys(&ip6_tables_net_ops); | 2279 | unregister_pernet_subsys(&ip6_tables_net_ops); |
2301 | err1: | 2280 | err1: |
@@ -2306,10 +2285,8 @@ static void __exit ip6_tables_fini(void) | |||
2306 | { | 2285 | { |
2307 | nf_unregister_sockopt(&ip6t_sockopts); | 2286 | nf_unregister_sockopt(&ip6t_sockopts); |
2308 | 2287 | ||
2309 | xt_unregister_match(&icmp6_matchstruct); | 2288 | xt_unregister_matches(ip6t_builtin_mt, ARRAY_SIZE(ip6t_builtin_mt)); |
2310 | xt_unregister_target(&ip6t_error_target); | 2289 | xt_unregister_targets(ip6t_builtin_tg, ARRAY_SIZE(ip6t_builtin_tg)); |
2311 | xt_unregister_target(&ip6t_standard_target); | ||
2312 | |||
2313 | unregister_pernet_subsys(&ip6_tables_net_ops); | 2290 | unregister_pernet_subsys(&ip6_tables_net_ops); |
2314 | } | 2291 | } |
2315 | 2292 | ||
diff --git a/net/ipv6/netfilter/ip6t_LOG.c b/net/ipv6/netfilter/ip6t_LOG.c index 1f47a525f484..af4ee11f2066 100644 --- a/net/ipv6/netfilter/ip6t_LOG.c +++ b/net/ipv6/netfilter/ip6t_LOG.c | |||
@@ -436,7 +436,7 @@ ip6t_log_packet(u_int8_t pf, | |||
436 | } | 436 | } |
437 | 437 | ||
438 | static unsigned int | 438 | static unsigned int |
439 | log_tg6(struct sk_buff *skb, const struct xt_target_param *par) | 439 | log_tg6(struct sk_buff *skb, const struct xt_action_param *par) |
440 | { | 440 | { |
441 | const struct ip6t_log_info *loginfo = par->targinfo; | 441 | const struct ip6t_log_info *loginfo = par->targinfo; |
442 | struct nf_loginfo li; | 442 | struct nf_loginfo li; |
diff --git a/net/ipv6/netfilter/ip6t_REJECT.c b/net/ipv6/netfilter/ip6t_REJECT.c index af1d6494ac39..47d227713758 100644 --- a/net/ipv6/netfilter/ip6t_REJECT.c +++ b/net/ipv6/netfilter/ip6t_REJECT.c | |||
@@ -175,7 +175,7 @@ send_unreach(struct net *net, struct sk_buff *skb_in, unsigned char code, | |||
175 | } | 175 | } |
176 | 176 | ||
177 | static unsigned int | 177 | static unsigned int |
178 | reject_tg6(struct sk_buff *skb, const struct xt_target_param *par) | 178 | reject_tg6(struct sk_buff *skb, const struct xt_action_param *par) |
179 | { | 179 | { |
180 | const struct ip6t_reject_info *reject = par->targinfo; | 180 | const struct ip6t_reject_info *reject = par->targinfo; |
181 | struct net *net = dev_net((par->in != NULL) ? par->in : par->out); | 181 | struct net *net = dev_net((par->in != NULL) ? par->in : par->out); |
diff --git a/net/ipv6/netfilter/ip6t_ah.c b/net/ipv6/netfilter/ip6t_ah.c index 1580693c86c1..89cccc5a9c92 100644 --- a/net/ipv6/netfilter/ip6t_ah.c +++ b/net/ipv6/netfilter/ip6t_ah.c | |||
@@ -36,7 +36,7 @@ spi_match(u_int32_t min, u_int32_t max, u_int32_t spi, bool invert) | |||
36 | return r; | 36 | return r; |
37 | } | 37 | } |
38 | 38 | ||
39 | static bool ah_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | 39 | static bool ah_mt6(const struct sk_buff *skb, struct xt_action_param *par) |
40 | { | 40 | { |
41 | struct ip_auth_hdr _ah; | 41 | struct ip_auth_hdr _ah; |
42 | const struct ip_auth_hdr *ah; | 42 | const struct ip_auth_hdr *ah; |
@@ -48,13 +48,13 @@ static bool ah_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | |||
48 | err = ipv6_find_hdr(skb, &ptr, NEXTHDR_AUTH, NULL); | 48 | err = ipv6_find_hdr(skb, &ptr, NEXTHDR_AUTH, NULL); |
49 | if (err < 0) { | 49 | if (err < 0) { |
50 | if (err != -ENOENT) | 50 | if (err != -ENOENT) |
51 | *par->hotdrop = true; | 51 | par->hotdrop = true; |
52 | return false; | 52 | return false; |
53 | } | 53 | } |
54 | 54 | ||
55 | ah = skb_header_pointer(skb, ptr, sizeof(_ah), &_ah); | 55 | ah = skb_header_pointer(skb, ptr, sizeof(_ah), &_ah); |
56 | if (ah == NULL) { | 56 | if (ah == NULL) { |
57 | *par->hotdrop = true; | 57 | par->hotdrop = true; |
58 | return false; | 58 | return false; |
59 | } | 59 | } |
60 | 60 | ||
diff --git a/net/ipv6/netfilter/ip6t_eui64.c b/net/ipv6/netfilter/ip6t_eui64.c index ca287f6d2bce..aab0706908c5 100644 --- a/net/ipv6/netfilter/ip6t_eui64.c +++ b/net/ipv6/netfilter/ip6t_eui64.c | |||
@@ -20,14 +20,14 @@ MODULE_LICENSE("GPL"); | |||
20 | MODULE_AUTHOR("Andras Kis-Szabo <kisza@sch.bme.hu>"); | 20 | MODULE_AUTHOR("Andras Kis-Szabo <kisza@sch.bme.hu>"); |
21 | 21 | ||
22 | static bool | 22 | static bool |
23 | eui64_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | 23 | eui64_mt6(const struct sk_buff *skb, struct xt_action_param *par) |
24 | { | 24 | { |
25 | unsigned char eui64[8]; | 25 | unsigned char eui64[8]; |
26 | 26 | ||
27 | if (!(skb_mac_header(skb) >= skb->head && | 27 | if (!(skb_mac_header(skb) >= skb->head && |
28 | skb_mac_header(skb) + ETH_HLEN <= skb->data) && | 28 | skb_mac_header(skb) + ETH_HLEN <= skb->data) && |
29 | par->fragoff != 0) { | 29 | par->fragoff != 0) { |
30 | *par->hotdrop = true; | 30 | par->hotdrop = true; |
31 | return false; | 31 | return false; |
32 | } | 32 | } |
33 | 33 | ||
diff --git a/net/ipv6/netfilter/ip6t_frag.c b/net/ipv6/netfilter/ip6t_frag.c index a5daf0ffb4ec..eda898fda6ca 100644 --- a/net/ipv6/netfilter/ip6t_frag.c +++ b/net/ipv6/netfilter/ip6t_frag.c | |||
@@ -35,7 +35,7 @@ id_match(u_int32_t min, u_int32_t max, u_int32_t id, bool invert) | |||
35 | } | 35 | } |
36 | 36 | ||
37 | static bool | 37 | static bool |
38 | frag_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | 38 | frag_mt6(const struct sk_buff *skb, struct xt_action_param *par) |
39 | { | 39 | { |
40 | struct frag_hdr _frag; | 40 | struct frag_hdr _frag; |
41 | const struct frag_hdr *fh; | 41 | const struct frag_hdr *fh; |
@@ -46,13 +46,13 @@ frag_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | |||
46 | err = ipv6_find_hdr(skb, &ptr, NEXTHDR_FRAGMENT, NULL); | 46 | err = ipv6_find_hdr(skb, &ptr, NEXTHDR_FRAGMENT, NULL); |
47 | if (err < 0) { | 47 | if (err < 0) { |
48 | if (err != -ENOENT) | 48 | if (err != -ENOENT) |
49 | *par->hotdrop = true; | 49 | par->hotdrop = true; |
50 | return false; | 50 | return false; |
51 | } | 51 | } |
52 | 52 | ||
53 | fh = skb_header_pointer(skb, ptr, sizeof(_frag), &_frag); | 53 | fh = skb_header_pointer(skb, ptr, sizeof(_frag), &_frag); |
54 | if (fh == NULL) { | 54 | if (fh == NULL) { |
55 | *par->hotdrop = true; | 55 | par->hotdrop = true; |
56 | return false; | 56 | return false; |
57 | } | 57 | } |
58 | 58 | ||
diff --git a/net/ipv6/netfilter/ip6t_hbh.c b/net/ipv6/netfilter/ip6t_hbh.c index e424e7c8f824..59df051eaef6 100644 --- a/net/ipv6/netfilter/ip6t_hbh.c +++ b/net/ipv6/netfilter/ip6t_hbh.c | |||
@@ -44,7 +44,7 @@ MODULE_ALIAS("ip6t_dst"); | |||
44 | static struct xt_match hbh_mt6_reg[] __read_mostly; | 44 | static struct xt_match hbh_mt6_reg[] __read_mostly; |
45 | 45 | ||
46 | static bool | 46 | static bool |
47 | hbh_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | 47 | hbh_mt6(const struct sk_buff *skb, struct xt_action_param *par) |
48 | { | 48 | { |
49 | struct ipv6_opt_hdr _optsh; | 49 | struct ipv6_opt_hdr _optsh; |
50 | const struct ipv6_opt_hdr *oh; | 50 | const struct ipv6_opt_hdr *oh; |
@@ -65,13 +65,13 @@ hbh_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | |||
65 | NEXTHDR_HOP : NEXTHDR_DEST, NULL); | 65 | NEXTHDR_HOP : NEXTHDR_DEST, NULL); |
66 | if (err < 0) { | 66 | if (err < 0) { |
67 | if (err != -ENOENT) | 67 | if (err != -ENOENT) |
68 | *par->hotdrop = true; | 68 | par->hotdrop = true; |
69 | return false; | 69 | return false; |
70 | } | 70 | } |
71 | 71 | ||
72 | oh = skb_header_pointer(skb, ptr, sizeof(_optsh), &_optsh); | 72 | oh = skb_header_pointer(skb, ptr, sizeof(_optsh), &_optsh); |
73 | if (oh == NULL) { | 73 | if (oh == NULL) { |
74 | *par->hotdrop = true; | 74 | par->hotdrop = true; |
75 | return false; | 75 | return false; |
76 | } | 76 | } |
77 | 77 | ||
diff --git a/net/ipv6/netfilter/ip6t_ipv6header.c b/net/ipv6/netfilter/ip6t_ipv6header.c index 46fbabb493fa..54bd9790603f 100644 --- a/net/ipv6/netfilter/ip6t_ipv6header.c +++ b/net/ipv6/netfilter/ip6t_ipv6header.c | |||
@@ -27,7 +27,7 @@ MODULE_DESCRIPTION("Xtables: IPv6 header types match"); | |||
27 | MODULE_AUTHOR("Andras Kis-Szabo <kisza@sch.bme.hu>"); | 27 | MODULE_AUTHOR("Andras Kis-Szabo <kisza@sch.bme.hu>"); |
28 | 28 | ||
29 | static bool | 29 | static bool |
30 | ipv6header_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | 30 | ipv6header_mt6(const struct sk_buff *skb, struct xt_action_param *par) |
31 | { | 31 | { |
32 | const struct ip6t_ipv6header_info *info = par->matchinfo; | 32 | const struct ip6t_ipv6header_info *info = par->matchinfo; |
33 | unsigned int temp; | 33 | unsigned int temp; |
diff --git a/net/ipv6/netfilter/ip6t_mh.c b/net/ipv6/netfilter/ip6t_mh.c index c9f443e0138f..0c90c66b1992 100644 --- a/net/ipv6/netfilter/ip6t_mh.c +++ b/net/ipv6/netfilter/ip6t_mh.c | |||
@@ -32,7 +32,7 @@ type_match(u_int8_t min, u_int8_t max, u_int8_t type, bool invert) | |||
32 | return (type >= min && type <= max) ^ invert; | 32 | return (type >= min && type <= max) ^ invert; |
33 | } | 33 | } |
34 | 34 | ||
35 | static bool mh_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | 35 | static bool mh_mt6(const struct sk_buff *skb, struct xt_action_param *par) |
36 | { | 36 | { |
37 | struct ip6_mh _mh; | 37 | struct ip6_mh _mh; |
38 | const struct ip6_mh *mh; | 38 | const struct ip6_mh *mh; |
@@ -47,14 +47,14 @@ static bool mh_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | |||
47 | /* We've been asked to examine this packet, and we | 47 | /* We've been asked to examine this packet, and we |
48 | can't. Hence, no choice but to drop. */ | 48 | can't. Hence, no choice but to drop. */ |
49 | pr_debug("Dropping evil MH tinygram.\n"); | 49 | pr_debug("Dropping evil MH tinygram.\n"); |
50 | *par->hotdrop = true; | 50 | par->hotdrop = true; |
51 | return false; | 51 | return false; |
52 | } | 52 | } |
53 | 53 | ||
54 | if (mh->ip6mh_proto != IPPROTO_NONE) { | 54 | if (mh->ip6mh_proto != IPPROTO_NONE) { |
55 | pr_debug("Dropping invalid MH Payload Proto: %u\n", | 55 | pr_debug("Dropping invalid MH Payload Proto: %u\n", |
56 | mh->ip6mh_proto); | 56 | mh->ip6mh_proto); |
57 | *par->hotdrop = true; | 57 | par->hotdrop = true; |
58 | return false; | 58 | return false; |
59 | } | 59 | } |
60 | 60 | ||
diff --git a/net/ipv6/netfilter/ip6t_rt.c b/net/ipv6/netfilter/ip6t_rt.c index 09322720d2a6..d8488c50a8e0 100644 --- a/net/ipv6/netfilter/ip6t_rt.c +++ b/net/ipv6/netfilter/ip6t_rt.c | |||
@@ -36,7 +36,7 @@ segsleft_match(u_int32_t min, u_int32_t max, u_int32_t id, bool invert) | |||
36 | return r; | 36 | return r; |
37 | } | 37 | } |
38 | 38 | ||
39 | static bool rt_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | 39 | static bool rt_mt6(const struct sk_buff *skb, struct xt_action_param *par) |
40 | { | 40 | { |
41 | struct ipv6_rt_hdr _route; | 41 | struct ipv6_rt_hdr _route; |
42 | const struct ipv6_rt_hdr *rh; | 42 | const struct ipv6_rt_hdr *rh; |
@@ -52,13 +52,13 @@ static bool rt_mt6(const struct sk_buff *skb, const struct xt_match_param *par) | |||
52 | err = ipv6_find_hdr(skb, &ptr, NEXTHDR_ROUTING, NULL); | 52 | err = ipv6_find_hdr(skb, &ptr, NEXTHDR_ROUTING, NULL); |
53 | if (err < 0) { | 53 | if (err < 0) { |
54 | if (err != -ENOENT) | 54 | if (err != -ENOENT) |
55 | *par->hotdrop = true; | 55 | par->hotdrop = true; |
56 | return false; | 56 | return false; |
57 | } | 57 | } |
58 | 58 | ||
59 | rh = skb_header_pointer(skb, ptr, sizeof(_route), &_route); | 59 | rh = skb_header_pointer(skb, ptr, sizeof(_route), &_route); |
60 | if (rh == NULL) { | 60 | if (rh == NULL) { |
61 | *par->hotdrop = true; | 61 | par->hotdrop = true; |
62 | return false; | 62 | return false; |
63 | } | 63 | } |
64 | 64 | ||
diff --git a/net/ipv6/netfilter/ip6table_filter.c b/net/ipv6/netfilter/ip6table_filter.c index d6fc9aff3163..c9e37c8fd62c 100644 --- a/net/ipv6/netfilter/ip6table_filter.c +++ b/net/ipv6/netfilter/ip6table_filter.c | |||
@@ -81,7 +81,7 @@ static int __init ip6table_filter_init(void) | |||
81 | int ret; | 81 | int ret; |
82 | 82 | ||
83 | if (forward < 0 || forward > NF_MAX_VERDICT) { | 83 | if (forward < 0 || forward > NF_MAX_VERDICT) { |
84 | printk("iptables forward must be 0 or 1\n"); | 84 | pr_err("iptables forward must be 0 or 1\n"); |
85 | return -EINVAL; | 85 | return -EINVAL; |
86 | } | 86 | } |
87 | 87 | ||
diff --git a/net/ipv6/netfilter/ip6table_mangle.c b/net/ipv6/netfilter/ip6table_mangle.c index 6a102b57f356..679a0a3b7b3c 100644 --- a/net/ipv6/netfilter/ip6table_mangle.c +++ b/net/ipv6/netfilter/ip6table_mangle.c | |||
@@ -43,7 +43,7 @@ ip6t_mangle_out(struct sk_buff *skb, const struct net_device *out) | |||
43 | if (skb->len < sizeof(struct iphdr) || | 43 | if (skb->len < sizeof(struct iphdr) || |
44 | ip_hdrlen(skb) < sizeof(struct iphdr)) { | 44 | ip_hdrlen(skb) < sizeof(struct iphdr)) { |
45 | if (net_ratelimit()) | 45 | if (net_ratelimit()) |
46 | printk("ip6t_hook: happy cracking.\n"); | 46 | pr_warning("ip6t_hook: happy cracking.\n"); |
47 | return NF_ACCEPT; | 47 | return NF_ACCEPT; |
48 | } | 48 | } |
49 | #endif | 49 | #endif |
diff --git a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c index 996c3f41fecd..ff43461704be 100644 --- a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c +++ b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c | |||
@@ -280,7 +280,7 @@ static unsigned int ipv6_conntrack_local(unsigned int hooknum, | |||
280 | /* root is playing with raw sockets. */ | 280 | /* root is playing with raw sockets. */ |
281 | if (skb->len < sizeof(struct ipv6hdr)) { | 281 | if (skb->len < sizeof(struct ipv6hdr)) { |
282 | if (net_ratelimit()) | 282 | if (net_ratelimit()) |
283 | printk("ipv6_conntrack_local: packet too short\n"); | 283 | pr_notice("ipv6_conntrack_local: packet too short\n"); |
284 | return NF_ACCEPT; | 284 | return NF_ACCEPT; |
285 | } | 285 | } |
286 | return __ipv6_conntrack_in(dev_net(out), hooknum, skb, okfn); | 286 | return __ipv6_conntrack_in(dev_net(out), hooknum, skb, okfn); |
@@ -406,37 +406,37 @@ static int __init nf_conntrack_l3proto_ipv6_init(void) | |||
406 | 406 | ||
407 | ret = nf_ct_frag6_init(); | 407 | ret = nf_ct_frag6_init(); |
408 | if (ret < 0) { | 408 | if (ret < 0) { |
409 | printk("nf_conntrack_ipv6: can't initialize frag6.\n"); | 409 | pr_err("nf_conntrack_ipv6: can't initialize frag6.\n"); |
410 | return ret; | 410 | return ret; |
411 | } | 411 | } |
412 | ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_tcp6); | 412 | ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_tcp6); |
413 | if (ret < 0) { | 413 | if (ret < 0) { |
414 | printk("nf_conntrack_ipv6: can't register tcp.\n"); | 414 | pr_err("nf_conntrack_ipv6: can't register tcp.\n"); |
415 | goto cleanup_frag6; | 415 | goto cleanup_frag6; |
416 | } | 416 | } |
417 | 417 | ||
418 | ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_udp6); | 418 | ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_udp6); |
419 | if (ret < 0) { | 419 | if (ret < 0) { |
420 | printk("nf_conntrack_ipv6: can't register udp.\n"); | 420 | pr_err("nf_conntrack_ipv6: can't register udp.\n"); |
421 | goto cleanup_tcp; | 421 | goto cleanup_tcp; |
422 | } | 422 | } |
423 | 423 | ||
424 | ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_icmpv6); | 424 | ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_icmpv6); |
425 | if (ret < 0) { | 425 | if (ret < 0) { |
426 | printk("nf_conntrack_ipv6: can't register icmpv6.\n"); | 426 | pr_err("nf_conntrack_ipv6: can't register icmpv6.\n"); |
427 | goto cleanup_udp; | 427 | goto cleanup_udp; |
428 | } | 428 | } |
429 | 429 | ||
430 | ret = nf_conntrack_l3proto_register(&nf_conntrack_l3proto_ipv6); | 430 | ret = nf_conntrack_l3proto_register(&nf_conntrack_l3proto_ipv6); |
431 | if (ret < 0) { | 431 | if (ret < 0) { |
432 | printk("nf_conntrack_ipv6: can't register ipv6\n"); | 432 | pr_err("nf_conntrack_ipv6: can't register ipv6\n"); |
433 | goto cleanup_icmpv6; | 433 | goto cleanup_icmpv6; |
434 | } | 434 | } |
435 | 435 | ||
436 | ret = nf_register_hooks(ipv6_conntrack_ops, | 436 | ret = nf_register_hooks(ipv6_conntrack_ops, |
437 | ARRAY_SIZE(ipv6_conntrack_ops)); | 437 | ARRAY_SIZE(ipv6_conntrack_ops)); |
438 | if (ret < 0) { | 438 | if (ret < 0) { |
439 | printk("nf_conntrack_ipv6: can't register pre-routing defrag " | 439 | pr_err("nf_conntrack_ipv6: can't register pre-routing defrag " |
440 | "hook.\n"); | 440 | "hook.\n"); |
441 | goto cleanup_ipv6; | 441 | goto cleanup_ipv6; |
442 | } | 442 | } |