|
19 | 19 | #include <linux/netfilter_ipv6/ip6_tables.h>
|
20 | 20 | #include <linux/netfilter_ipv6/ip6t_opts.h>
|
21 | 21 |
|
22 |
| -#define HOPBYHOP 1 |
23 |
| - |
24 | 22 | MODULE_LICENSE("GPL");
|
25 |
| -#if HOPBYHOP |
26 |
| -MODULE_DESCRIPTION("IPv6 HbH match"); |
27 |
| -#else |
28 |
| -MODULE_DESCRIPTION("IPv6 DST match"); |
29 |
| -#endif |
| 23 | +MODULE_DESCRIPTION("IPv6 opts match"); |
30 | 24 | MODULE_AUTHOR( "Andras Kis-Szabo <[email protected]>");
|
| 25 | +MODULE_ALIAS("ip6t_dst"); |
31 | 26 |
|
32 | 27 | #if 0
|
33 | 28 | #define DEBUGP printk
|
@@ -71,11 +66,7 @@ match(const struct sk_buff *skb,
|
71 | 66 | u8 _optlen, *lp = NULL;
|
72 | 67 | unsigned int optlen;
|
73 | 68 |
|
74 |
| -#if HOPBYHOP |
75 |
| - if (ipv6_find_hdr(skb, &ptr, NEXTHDR_HOP, NULL) < 0) |
76 |
| -#else |
77 |
| - if (ipv6_find_hdr(skb, &ptr, NEXTHDR_DEST, NULL) < 0) |
78 |
| -#endif |
| 69 | + if (ipv6_find_hdr(skb, &ptr, match->data, NULL) < 0) |
79 | 70 | return 0;
|
80 | 71 |
|
81 | 72 | oh = skb_header_pointer(skb, ptr, sizeof(_optsh), &_optsh);
|
@@ -193,26 +184,35 @@ checkentry(const char *tablename,
|
193 | 184 | return 1;
|
194 | 185 | }
|
195 | 186 |
|
196 |
| -static struct ip6t_match opts_match = { |
197 |
| -#if HOPBYHOP |
198 |
| - .name = "hbh", |
199 |
| -#else |
200 |
| - .name = "dst", |
201 |
| -#endif |
202 |
| - .match = match, |
203 |
| - .matchsize = sizeof(struct ip6t_opts), |
204 |
| - .checkentry = checkentry, |
205 |
| - .me = THIS_MODULE, |
| 187 | +static struct xt_match opts_match[] = { |
| 188 | + { |
| 189 | + .name = "hbh", |
| 190 | + .family = AF_INET6, |
| 191 | + .match = match, |
| 192 | + .matchsize = sizeof(struct ip6t_opts), |
| 193 | + .checkentry = checkentry, |
| 194 | + .me = THIS_MODULE, |
| 195 | + .data = NEXTHDR_HOP, |
| 196 | + }, |
| 197 | + { |
| 198 | + .name = "dst", |
| 199 | + .family = AF_INET6, |
| 200 | + .match = match, |
| 201 | + .matchsize = sizeof(struct ip6t_opts), |
| 202 | + .checkentry = checkentry, |
| 203 | + .me = THIS_MODULE, |
| 204 | + .data = NEXTHDR_DEST, |
| 205 | + }, |
206 | 206 | };
|
207 | 207 |
|
208 | 208 | static int __init ip6t_hbh_init(void)
|
209 | 209 | {
|
210 |
| - return ip6t_register_match(&opts_match); |
| 210 | + return xt_register_matches(opts_match, ARRAY_SIZE(opts_match)); |
211 | 211 | }
|
212 | 212 |
|
213 | 213 | static void __exit ip6t_hbh_fini(void)
|
214 | 214 | {
|
215 |
| - ip6t_unregister_match(&opts_match); |
| 215 | + xt_unregister_matches(opts_match, ARRAY_SIZE(opts_match)); |
216 | 216 | }
|
217 | 217 |
|
218 | 218 | module_init(ip6t_hbh_init);
|
|
0 commit comments