diff options
author | Jan Engelhardt <jengelh@medozas.de> | 2008-10-08 05:35:18 -0400 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2008-10-08 05:35:18 -0400 |
commit | f7108a20dee44e5bb037f9e48f6a207b42e6ae1c (patch) | |
tree | bfc741548cdf416a59a89d89a20ba2cbdc8e988e /net/ipv6/netfilter/ip6t_rt.c | |
parent | c2df73de246ae75705af8ceed4f385b261dea108 (diff) |
netfilter: xtables: move extension arguments into compound structure (1/6)
The function signatures for Xtables extensions have grown over time.
It involves a lot of typing/replication, and also a bit of stack space
even if they are not used. Realize an NFWS2008 idea and pack them into
structs. The skb remains outside of the struct so gcc can continue to
apply its optimizations.
This patch does this for match extensions' match functions.
A few ambiguities have also been addressed. The "offset" parameter for
example has been renamed to "fragoff" (there are so many different
offsets already) and "protoff" to "thoff" (there is more than just one
protocol here, so clarify).
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/ipv6/netfilter/ip6t_rt.c')
-rw-r--r-- | net/ipv6/netfilter/ip6t_rt.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/net/ipv6/netfilter/ip6t_rt.c b/net/ipv6/netfilter/ip6t_rt.c index 7c544ae591d..9cf4b8a37af 100644 --- a/net/ipv6/netfilter/ip6t_rt.c +++ b/net/ipv6/netfilter/ip6t_rt.c | |||
@@ -36,14 +36,11 @@ 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 | 39 | static bool rt_mt6(const struct sk_buff *skb, const struct xt_match_param *par) |
40 | rt_mt6(const struct sk_buff *skb, const struct net_device *in, | ||
41 | const struct net_device *out, const struct xt_match *match, | ||
42 | const void *matchinfo, int offset, unsigned int protoff, bool *hotdrop) | ||
43 | { | 40 | { |
44 | struct ipv6_rt_hdr _route; | 41 | struct ipv6_rt_hdr _route; |
45 | const struct ipv6_rt_hdr *rh; | 42 | const struct ipv6_rt_hdr *rh; |
46 | const struct ip6t_rt *rtinfo = matchinfo; | 43 | const struct ip6t_rt *rtinfo = par->matchinfo; |
47 | unsigned int temp; | 44 | unsigned int temp; |
48 | unsigned int ptr; | 45 | unsigned int ptr; |
49 | unsigned int hdrlen = 0; | 46 | unsigned int hdrlen = 0; |
@@ -55,13 +52,13 @@ rt_mt6(const struct sk_buff *skb, const struct net_device *in, | |||
55 | err = ipv6_find_hdr(skb, &ptr, NEXTHDR_ROUTING, NULL); | 52 | err = ipv6_find_hdr(skb, &ptr, NEXTHDR_ROUTING, NULL); |
56 | if (err < 0) { | 53 | if (err < 0) { |
57 | if (err != -ENOENT) | 54 | if (err != -ENOENT) |
58 | *hotdrop = true; | 55 | *par->hotdrop = true; |
59 | return false; | 56 | return false; |
60 | } | 57 | } |
61 | 58 | ||
62 | rh = skb_header_pointer(skb, ptr, sizeof(_route), &_route); | 59 | rh = skb_header_pointer(skb, ptr, sizeof(_route), &_route); |
63 | if (rh == NULL) { | 60 | if (rh == NULL) { |
64 | *hotdrop = true; | 61 | *par->hotdrop = true; |
65 | return false; | 62 | return false; |
66 | } | 63 | } |
67 | 64 | ||