]> git.pld-linux.org Git - packages/xtables-addons.git/blob - xtables-addons-DNETMAP.patch
- rebuild for kernel-3.7.3-1
[packages/xtables-addons.git] / xtables-addons-DNETMAP.patch
1 diff -ruN xtables-addons-1.47.1/extensions/libxt_DNETMAP.c xtables-addons-2.0/extensions/libxt_DNETMAP.c
2 --- xtables-addons-1.47.1/extensions/libxt_DNETMAP.c    2012-10-15 21:29:22.000000000 +0200
3 +++ xtables-addons-2.0/extensions/libxt_DNETMAP.c       2012-11-12 19:03:51.000000000 +0100
4 @@ -69,19 +69,8 @@
5         return bits;
6  }
7  
8 -static void DNETMAP_init(struct xt_entry_target *t)
9 -{
10 -       struct xt_DNETMAP_tginfo *tginfo = (void *)&t->data;
11 -       struct nf_nat_ipv4_multi_range_compat *mr = &tginfo->prefix;
12 -
13 -       /* Actually, it's 0, but it's ignored at the moment. */
14 -       mr->rangesize = 1;
15 -       tginfo->ttl = 0;
16 -       tginfo->flags = 0;
17 -}
18 -
19  /* Parses network address */
20 -static void parse_prefix(char *arg, struct nf_nat_ipv4_range *range)
21 +static void parse_prefix(char *arg, struct nf_nat_range *range)
22  {
23         char *slash;
24         const struct in_addr *ip;
25 @@ -97,7 +86,7 @@
26         if (ip == NULL)
27                 xtables_error(PARAMETER_PROBLEM, "Bad IP address \"%s\"\n",
28                               arg);
29 -       range->min_ip = ip->s_addr;
30 +       range->min_addr.in = *ip;
31         if (slash) {
32                 if (strchr(slash + 1, '.')) {
33                         ip = xtables_numeric_to_ipmask(slash + 1);
34 @@ -123,20 +112,20 @@
35         } else
36                 netmask = ~0;
37  
38 -       if (range->min_ip & ~netmask) {
39 +       if (range->min_addr.ip & ~netmask) {
40                 if (slash)
41                         *slash = '/';
42                 xtables_error(PARAMETER_PROBLEM, "Bad network address \"%s\"\n",
43                               arg);
44         }
45 -       range->max_ip = range->min_ip | ~netmask;
46 +       range->max_addr.ip = range->min_addr.ip | ~netmask;
47  }
48  
49  static int DNETMAP_parse(int c, char **argv, int invert, unsigned int *flags,
50                          const void *entry, struct xt_entry_target **target)
51  {
52         struct xt_DNETMAP_tginfo *tginfo = (void *)(*target)->data;
53 -       struct nf_nat_ipv4_multi_range_compat *mr = &tginfo->prefix;
54 +       struct nf_nat_range *mr = &tginfo->prefix;
55         char *end;
56  
57         switch (c) {
58 @@ -147,7 +136,7 @@
59                                   invert);
60  
61                 /* TO-DO use xtables_ipparse_any instead? */
62 -               parse_prefix(optarg, &mr->range[0]);
63 +               parse_prefix(optarg, mr);
64                 *flags |= XT_DNETMAP_PREFIX;
65                 tginfo->flags |= XT_DNETMAP_PREFIX;
66                 return 1;
67 @@ -192,14 +181,13 @@
68                                int numeric)
69  {
70         struct xt_DNETMAP_tginfo *tginfo = (void *)&target->data;
71 -       const struct nf_nat_ipv4_multi_range_compat *mr = &tginfo->prefix;
72 -       const struct nf_nat_ipv4_range *r = &mr->range[0];
73 +       const struct nf_nat_range *r = &tginfo->prefix;
74         struct in_addr a;
75         int bits;
76  
77 -       a.s_addr = r->min_ip;
78 +       a = r->min_addr.in;
79         printf("%s", xtables_ipaddr_to_numeric(&a));
80 -       a.s_addr = ~(r->min_ip ^ r->max_ip);
81 +       a.s_addr = ~(r->min_addr.ip ^ r->max_addr.ip);
82         bits = netmask2bits(a.s_addr);
83         if (bits < 0)
84                 printf("/%s", xtables_ipaddr_to_numeric(&a));
85 @@ -265,7 +253,6 @@
86         .size          = XT_ALIGN(sizeof(struct xt_DNETMAP_tginfo)),
87         .userspacesize = XT_ALIGN(sizeof(struct xt_DNETMAP_tginfo)),
88         .help          = DNETMAP_help,
89 -       .init          = DNETMAP_init,
90         .parse         = DNETMAP_parse,
91         .print         = DNETMAP_print,
92         .save          = DNETMAP_save,
93 diff -ruN xtables-addons-1.47.1/extensions/xt_DNETMAP.c xtables-addons-2.0/extensions/xt_DNETMAP.c
94 --- xtables-addons-1.47.1/extensions/xt_DNETMAP.c       2012-10-15 21:29:22.000000000 +0200
95 +++ xtables-addons-2.0/extensions/xt_DNETMAP.c  2012-11-12 19:03:51.000000000 +0100
96 @@ -84,7 +78,7 @@
97  };
98  
99  struct dnetmap_prefix {
100 -       struct nf_nat_ipv4_multi_range_compat prefix;
101 +       struct nf_nat_range prefix;
102         char prefix_str[16];
103  #ifdef CONFIG_PROC_FS
104         char proc_str_data[20];
105 @@ -179,7 +168,7 @@
106  
107  static struct dnetmap_prefix *
108  dnetmap_prefix_lookup(struct dnetmap_net *dnetmap_net,
109 -                     const struct nf_nat_ipv4_multi_range_compat *mr)
110 +                     const struct nf_nat_range *mr)
111  {
112         struct dnetmap_prefix *p;
113  
114 @@ -258,7 +247,7 @@
115  {
116         struct dnetmap_net *dnetmap_net = dnetmap_pernet(par->net);
117         const struct xt_DNETMAP_tginfo *tginfo = par->targinfo;
118 -       const struct nf_nat_ipv4_multi_range_compat *mr = &tginfo->prefix;
119 +       const struct nf_nat_range *mr = &tginfo->prefix;
120         struct dnetmap_prefix *p;
121         struct dnetmap_entry *e;
122  #ifdef CONFIG_PROC_FS
123 @@ -274,14 +263,10 @@
124                 return ret;
125         }
126  
127 -       if (!(mr->range[0].flags & NF_NAT_RANGE_MAP_IPS)) {
128 +       if (!(mr->flags & NF_NAT_RANGE_MAP_IPS)) {
129                 pr_debug("DNETMAP:check: bad MAP_IPS.\n");
130                 return -EINVAL;
131         }
132 -       if (mr->rangesize != 1) {
133 -               pr_debug("DNETMAP:check: bad rangesize %u.\n", mr->rangesize);
134 -               return -EINVAL;
135 -       }
136  
137         mutex_lock(&dnetmap_mutex);
138         p = dnetmap_prefix_lookup(dnetmap_net, mr);
139 @@ -307,15 +292,15 @@
140         INIT_LIST_HEAD(&p->lru_list);
141         INIT_LIST_HEAD(&p->elist);
142  
143 -       ip_min = ntohl(mr->range[0].min_ip) + (whole_prefix == 0);
144 -       ip_max = ntohl(mr->range[0].max_ip) - (whole_prefix == 0);
145 +       ip_min = ntohl(mr->min_addr.ip) + (whole_prefix == 0);
146 +       ip_max = ntohl(mr->max_addr.ip) - (whole_prefix == 0);
147  
148 -       sprintf(p->prefix_str, NIPQUAD_FMT "/%u", NIPQUAD(mr->range[0].min_ip),
149 +       sprintf(p->prefix_str, NIPQUAD_FMT "/%u", NIPQUAD(mr->min_addr.ip),
150                 33 - ffs(~(ip_min ^ ip_max)));
151  #ifdef CONFIG_PROC_FS
152 -       sprintf(p->proc_str_data, NIPQUAD_FMT "_%u", NIPQUAD(mr->range[0].min_ip),
153 +       sprintf(p->proc_str_data, NIPQUAD_FMT "_%u", NIPQUAD(mr->min_addr.ip),
154                 33 - ffs(~(ip_min ^ ip_max)));
155 -       sprintf(p->proc_str_stat, NIPQUAD_FMT "_%u_stat", NIPQUAD(mr->range[0].min_ip),
156 +       sprintf(p->proc_str_stat, NIPQUAD_FMT "_%u_stat", NIPQUAD(mr->min_addr.ip),
157                 33 - ffs(~(ip_min ^ ip_max)));
158  #endif
159         printk(KERN_INFO KBUILD_MODNAME ": new prefix %s\n", p->prefix_str);
160 @@ -381,8 +366,8 @@
161         enum ip_conntrack_info ctinfo;
162         __be32 prenat_ip, postnat_ip, prenat_ip_prev;
163         const struct xt_DNETMAP_tginfo *tginfo = par->targinfo;
164 -       const struct nf_nat_ipv4_multi_range_compat *mr = &tginfo->prefix;
165 -       struct nf_nat_ipv4_range newrange;
166 +       const struct nf_nat_range *mr = &tginfo->prefix;
167 +       struct nf_nat_range newrange;
168         struct dnetmap_entry *e;
169         struct dnetmap_prefix *p;
170         __s32 jttl;
171 @@ -419,15 +404,14 @@
172  
173                 spin_unlock_bh(&dnetmap_lock);
174  
175 -               newrange = ((struct nf_nat_ipv4_range) {
176 -                           mr->range[0].flags | NF_NAT_RANGE_MAP_IPS,
177 -                           e->prenat_addr, e->prenat_addr,
178 -                           mr->range[0].min, mr->range[0].max});
179 -
180 -               /* Hand modified range to generic setup. */
181 +               memset(&newrange, 0, sizeof(newrange));
182 +               newrange.flags = mr->flags | NF_NAT_RANGE_MAP_IPS;
183 +               newrange.min_addr.ip = e->prenat_addr;
184 +               newrange.max_addr.ip = e->prenat_addr;
185 +               newrange.min_proto = mr->min_proto;
186 +               newrange.max_proto = mr->max_proto;
187                 return nf_nat_setup_info(ct, &newrange,
188                                          HOOK2MANIP(par->hooknum));
189 -
190         }
191  
192         prenat_ip = ip_hdr(skb)->saddr;
193 @@ -509,12 +493,12 @@
194  
195         spin_unlock_bh(&dnetmap_lock);
196  
197 -       newrange = ((struct nf_nat_ipv4_range) {
198 -                   mr->range[0].flags | NF_NAT_RANGE_MAP_IPS,
199 -                   postnat_ip, postnat_ip,
200 -                   mr->range[0].min, mr->range[0].max});
201 -
202 -       /* Hand modified range to generic setup. */
203 +       memset(&newrange, 0, sizeof(newrange));
204 +       newrange.flags = mr->flags | NF_NAT_RANGE_MAP_IPS;
205 +       newrange.min_addr.ip = postnat_ip;
206 +       newrange.max_addr.ip = postnat_ip;
207 +       newrange.min_proto = mr->min_proto;
208 +       newrange.max_proto = mr->max_proto;
209         return nf_nat_setup_info(ct, &newrange, HOOK2MANIP(par->hooknum));
210  
211  no_rev_map:
212 @@ -528,7 +512,7 @@
213  {
214         struct dnetmap_net *dnetmap_net = dnetmap_pernet(par->net);
215         const struct xt_DNETMAP_tginfo *tginfo = par->targinfo;
216 -       const struct nf_nat_ipv4_multi_range_compat *mr = &tginfo->prefix;
217 +       const struct nf_nat_range *mr = &tginfo->prefix;
218         struct dnetmap_prefix *p;
219  
220         if (!(tginfo->flags & XT_DNETMAP_PREFIX))
221 diff -ruN xtables-addons-1.47.1/extensions/xt_DNETMAP.h xtables-addons-2.0/extensions/xt_DNETMAP.h
222 --- xtables-addons-1.47.1/extensions/xt_DNETMAP.h       2012-10-15 21:29:22.000000000 +0200
223 +++ xtables-addons-2.0/extensions/xt_DNETMAP.h  2012-11-12 19:03:51.000000000 +0100
224 @@ -13,7 +13,7 @@
225  };
226  
227  struct xt_DNETMAP_tginfo {
228 -       struct nf_nat_ipv4_multi_range_compat prefix;
229 +       struct nf_nat_range prefix;
230         __u8 flags;
231         __s32 ttl;
232  };
233 diff -ruN xtables-addons-1.47.1/include/linux/netfilter/nf_nat.h xtables-addons-2.0/include/linux/netfilter/nf_nat.h
234 --- xtables-addons-1.47.1/include/linux/netfilter/nf_nat.h      2012-10-15 21:29:22.000000000 +0200
235 +++ xtables-addons-2.0/include/linux/netfilter/nf_nat.h 2012-11-12 19:03:51.000000000 +0100
236 @@ -22,4 +22,12 @@
237         struct nf_nat_ipv4_range        range[1];
238  };
239  
240 +struct nf_nat_range {
241 +       unsigned int                    flags;
242 +       union nf_inet_addr              min_addr;
243 +       union nf_inet_addr              max_addr;
244 +       union nf_conntrack_man_proto    min_proto;
245 +       union nf_conntrack_man_proto    max_proto;
246 +};
247 +
248  #endif /* _NETFILTER_NF_NAT_H */
249 diff -ruN xtables-addons-1.47.1/mconfig xtables-addons-2.0/mconfig
250 --- xtables-addons-1.47.1/mconfig       2012-10-15 21:29:22.000000000 +0200
251 +++ xtables-addons-2.0/mconfig  2012-11-12 19:03:51.000000000 +0100
252 @@ -2,10 +2,9 @@
253  #
254  build_ACCOUNT=m
255  build_CHAOS=m
256 -build_CHECKSUM=
257  build_DELUDE=m
258  build_DHCPMAC=m
259 -build_DNETMAP=m
260 +build_DNETMAP=
261  build_ECHO=m
262  build_IPMARK=m
263  build_LOGMARK=m
264 @@ -13,7 +12,6 @@
265  build_STEAL=m
266  build_SYSRQ=m
267  build_TARPIT=m
268 -build_TEE=
269  build_condition=m
270  build_fuzzy=m
271  build_geoip=m
This page took 0.06957 seconds and 3 git commands to generate.