bd13d66220f154801b4b21662f25990b27d829b8
[pandora-kernel.git] / net / netfilter / ipset / pfxlen.c
1 #include <linux/netfilter/ipset/pfxlen.h>
2
3 /*
4  * Prefixlen maps for fast conversions, by Jan Engelhardt.
5  */
6
7 #define E(a, b, c, d) \
8         {.ip6 = { \
9                 __constant_htonl(a), __constant_htonl(b), \
10                 __constant_htonl(c), __constant_htonl(d), \
11         } }
12
13 /*
14  * This table works for both IPv4 and IPv6;
15  * just use prefixlen_netmask_map[prefixlength].ip.
16  */
17 const union nf_inet_addr ip_set_netmask_map[] = {
18         E(0x00000000, 0x00000000, 0x00000000, 0x00000000),
19         E(0x80000000, 0x00000000, 0x00000000, 0x00000000),
20         E(0xC0000000, 0x00000000, 0x00000000, 0x00000000),
21         E(0xE0000000, 0x00000000, 0x00000000, 0x00000000),
22         E(0xF0000000, 0x00000000, 0x00000000, 0x00000000),
23         E(0xF8000000, 0x00000000, 0x00000000, 0x00000000),
24         E(0xFC000000, 0x00000000, 0x00000000, 0x00000000),
25         E(0xFE000000, 0x00000000, 0x00000000, 0x00000000),
26         E(0xFF000000, 0x00000000, 0x00000000, 0x00000000),
27         E(0xFF800000, 0x00000000, 0x00000000, 0x00000000),
28         E(0xFFC00000, 0x00000000, 0x00000000, 0x00000000),
29         E(0xFFE00000, 0x00000000, 0x00000000, 0x00000000),
30         E(0xFFF00000, 0x00000000, 0x00000000, 0x00000000),
31         E(0xFFF80000, 0x00000000, 0x00000000, 0x00000000),
32         E(0xFFFC0000, 0x00000000, 0x00000000, 0x00000000),
33         E(0xFFFE0000, 0x00000000, 0x00000000, 0x00000000),
34         E(0xFFFF0000, 0x00000000, 0x00000000, 0x00000000),
35         E(0xFFFF8000, 0x00000000, 0x00000000, 0x00000000),
36         E(0xFFFFC000, 0x00000000, 0x00000000, 0x00000000),
37         E(0xFFFFE000, 0x00000000, 0x00000000, 0x00000000),
38         E(0xFFFFF000, 0x00000000, 0x00000000, 0x00000000),
39         E(0xFFFFF800, 0x00000000, 0x00000000, 0x00000000),
40         E(0xFFFFFC00, 0x00000000, 0x00000000, 0x00000000),
41         E(0xFFFFFE00, 0x00000000, 0x00000000, 0x00000000),
42         E(0xFFFFFF00, 0x00000000, 0x00000000, 0x00000000),
43         E(0xFFFFFF80, 0x00000000, 0x00000000, 0x00000000),
44         E(0xFFFFFFC0, 0x00000000, 0x00000000, 0x00000000),
45         E(0xFFFFFFE0, 0x00000000, 0x00000000, 0x00000000),
46         E(0xFFFFFFF0, 0x00000000, 0x00000000, 0x00000000),
47         E(0xFFFFFFF8, 0x00000000, 0x00000000, 0x00000000),
48         E(0xFFFFFFFC, 0x00000000, 0x00000000, 0x00000000),
49         E(0xFFFFFFFE, 0x00000000, 0x00000000, 0x00000000),
50         E(0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000),
51         E(0xFFFFFFFF, 0x80000000, 0x00000000, 0x00000000),
52         E(0xFFFFFFFF, 0xC0000000, 0x00000000, 0x00000000),
53         E(0xFFFFFFFF, 0xE0000000, 0x00000000, 0x00000000),
54         E(0xFFFFFFFF, 0xF0000000, 0x00000000, 0x00000000),
55         E(0xFFFFFFFF, 0xF8000000, 0x00000000, 0x00000000),
56         E(0xFFFFFFFF, 0xFC000000, 0x00000000, 0x00000000),
57         E(0xFFFFFFFF, 0xFE000000, 0x00000000, 0x00000000),
58         E(0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000),
59         E(0xFFFFFFFF, 0xFF800000, 0x00000000, 0x00000000),
60         E(0xFFFFFFFF, 0xFFC00000, 0x00000000, 0x00000000),
61         E(0xFFFFFFFF, 0xFFE00000, 0x00000000, 0x00000000),
62         E(0xFFFFFFFF, 0xFFF00000, 0x00000000, 0x00000000),
63         E(0xFFFFFFFF, 0xFFF80000, 0x00000000, 0x00000000),
64         E(0xFFFFFFFF, 0xFFFC0000, 0x00000000, 0x00000000),
65         E(0xFFFFFFFF, 0xFFFE0000, 0x00000000, 0x00000000),
66         E(0xFFFFFFFF, 0xFFFF0000, 0x00000000, 0x00000000),
67         E(0xFFFFFFFF, 0xFFFF8000, 0x00000000, 0x00000000),
68         E(0xFFFFFFFF, 0xFFFFC000, 0x00000000, 0x00000000),
69         E(0xFFFFFFFF, 0xFFFFE000, 0x00000000, 0x00000000),
70         E(0xFFFFFFFF, 0xFFFFF000, 0x00000000, 0x00000000),
71         E(0xFFFFFFFF, 0xFFFFF800, 0x00000000, 0x00000000),
72         E(0xFFFFFFFF, 0xFFFFFC00, 0x00000000, 0x00000000),
73         E(0xFFFFFFFF, 0xFFFFFE00, 0x00000000, 0x00000000),
74         E(0xFFFFFFFF, 0xFFFFFF00, 0x00000000, 0x00000000),
75         E(0xFFFFFFFF, 0xFFFFFF80, 0x00000000, 0x00000000),
76         E(0xFFFFFFFF, 0xFFFFFFC0, 0x00000000, 0x00000000),
77         E(0xFFFFFFFF, 0xFFFFFFE0, 0x00000000, 0x00000000),
78         E(0xFFFFFFFF, 0xFFFFFFF0, 0x00000000, 0x00000000),
79         E(0xFFFFFFFF, 0xFFFFFFF8, 0x00000000, 0x00000000),
80         E(0xFFFFFFFF, 0xFFFFFFFC, 0x00000000, 0x00000000),
81         E(0xFFFFFFFF, 0xFFFFFFFE, 0x00000000, 0x00000000),
82         E(0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000),
83         E(0xFFFFFFFF, 0xFFFFFFFF, 0x80000000, 0x00000000),
84         E(0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000, 0x00000000),
85         E(0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000, 0x00000000),
86         E(0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000, 0x00000000),
87         E(0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000, 0x00000000),
88         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000, 0x00000000),
89         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000, 0x00000000),
90         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000),
91         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000, 0x00000000),
92         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000, 0x00000000),
93         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000, 0x00000000),
94         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000, 0x00000000),
95         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000, 0x00000000),
96         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000, 0x00000000),
97         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000, 0x00000000),
98         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000, 0x00000000),
99         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000, 0x00000000),
100         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000, 0x00000000),
101         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000, 0x00000000),
102         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000, 0x00000000),
103         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800, 0x00000000),
104         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00, 0x00000000),
105         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00, 0x00000000),
106         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00, 0x00000000),
107         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80, 0x00000000),
108         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0, 0x00000000),
109         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0, 0x00000000),
110         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0, 0x00000000),
111         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8, 0x00000000),
112         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC, 0x00000000),
113         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0x00000000),
114         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000),
115         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x80000000),
116         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000),
117         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000),
118         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000),
119         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000),
120         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000),
121         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000),
122         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000),
123         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000),
124         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000),
125         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000),
126         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000),
127         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000),
128         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000),
129         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000),
130         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000),
131         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000),
132         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000),
133         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000),
134         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000),
135         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800),
136         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00),
137         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00),
138         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00),
139         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80),
140         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0),
141         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0),
142         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0),
143         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8),
144         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC),
145         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE),
146         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF),
147 };
148 EXPORT_SYMBOL_GPL(ip_set_netmask_map);
149
150 #undef  E
151 #define E(a, b, c, d)                                           \
152         {.ip6 = { (__force __be32) a, (__force __be32) b,       \
153                   (__force __be32) c, (__force __be32) d,       \
154         } }
155
156 /*
157  * This table works for both IPv4 and IPv6;
158  * just use prefixlen_hostmask_map[prefixlength].ip.
159  */
160 const union nf_inet_addr ip_set_hostmask_map[] = {
161         E(0x00000000, 0x00000000, 0x00000000, 0x00000000),
162         E(0x80000000, 0x00000000, 0x00000000, 0x00000000),
163         E(0xC0000000, 0x00000000, 0x00000000, 0x00000000),
164         E(0xE0000000, 0x00000000, 0x00000000, 0x00000000),
165         E(0xF0000000, 0x00000000, 0x00000000, 0x00000000),
166         E(0xF8000000, 0x00000000, 0x00000000, 0x00000000),
167         E(0xFC000000, 0x00000000, 0x00000000, 0x00000000),
168         E(0xFE000000, 0x00000000, 0x00000000, 0x00000000),
169         E(0xFF000000, 0x00000000, 0x00000000, 0x00000000),
170         E(0xFF800000, 0x00000000, 0x00000000, 0x00000000),
171         E(0xFFC00000, 0x00000000, 0x00000000, 0x00000000),
172         E(0xFFE00000, 0x00000000, 0x00000000, 0x00000000),
173         E(0xFFF00000, 0x00000000, 0x00000000, 0x00000000),
174         E(0xFFF80000, 0x00000000, 0x00000000, 0x00000000),
175         E(0xFFFC0000, 0x00000000, 0x00000000, 0x00000000),
176         E(0xFFFE0000, 0x00000000, 0x00000000, 0x00000000),
177         E(0xFFFF0000, 0x00000000, 0x00000000, 0x00000000),
178         E(0xFFFF8000, 0x00000000, 0x00000000, 0x00000000),
179         E(0xFFFFC000, 0x00000000, 0x00000000, 0x00000000),
180         E(0xFFFFE000, 0x00000000, 0x00000000, 0x00000000),
181         E(0xFFFFF000, 0x00000000, 0x00000000, 0x00000000),
182         E(0xFFFFF800, 0x00000000, 0x00000000, 0x00000000),
183         E(0xFFFFFC00, 0x00000000, 0x00000000, 0x00000000),
184         E(0xFFFFFE00, 0x00000000, 0x00000000, 0x00000000),
185         E(0xFFFFFF00, 0x00000000, 0x00000000, 0x00000000),
186         E(0xFFFFFF80, 0x00000000, 0x00000000, 0x00000000),
187         E(0xFFFFFFC0, 0x00000000, 0x00000000, 0x00000000),
188         E(0xFFFFFFE0, 0x00000000, 0x00000000, 0x00000000),
189         E(0xFFFFFFF0, 0x00000000, 0x00000000, 0x00000000),
190         E(0xFFFFFFF8, 0x00000000, 0x00000000, 0x00000000),
191         E(0xFFFFFFFC, 0x00000000, 0x00000000, 0x00000000),
192         E(0xFFFFFFFE, 0x00000000, 0x00000000, 0x00000000),
193         E(0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000),
194         E(0xFFFFFFFF, 0x80000000, 0x00000000, 0x00000000),
195         E(0xFFFFFFFF, 0xC0000000, 0x00000000, 0x00000000),
196         E(0xFFFFFFFF, 0xE0000000, 0x00000000, 0x00000000),
197         E(0xFFFFFFFF, 0xF0000000, 0x00000000, 0x00000000),
198         E(0xFFFFFFFF, 0xF8000000, 0x00000000, 0x00000000),
199         E(0xFFFFFFFF, 0xFC000000, 0x00000000, 0x00000000),
200         E(0xFFFFFFFF, 0xFE000000, 0x00000000, 0x00000000),
201         E(0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000),
202         E(0xFFFFFFFF, 0xFF800000, 0x00000000, 0x00000000),
203         E(0xFFFFFFFF, 0xFFC00000, 0x00000000, 0x00000000),
204         E(0xFFFFFFFF, 0xFFE00000, 0x00000000, 0x00000000),
205         E(0xFFFFFFFF, 0xFFF00000, 0x00000000, 0x00000000),
206         E(0xFFFFFFFF, 0xFFF80000, 0x00000000, 0x00000000),
207         E(0xFFFFFFFF, 0xFFFC0000, 0x00000000, 0x00000000),
208         E(0xFFFFFFFF, 0xFFFE0000, 0x00000000, 0x00000000),
209         E(0xFFFFFFFF, 0xFFFF0000, 0x00000000, 0x00000000),
210         E(0xFFFFFFFF, 0xFFFF8000, 0x00000000, 0x00000000),
211         E(0xFFFFFFFF, 0xFFFFC000, 0x00000000, 0x00000000),
212         E(0xFFFFFFFF, 0xFFFFE000, 0x00000000, 0x00000000),
213         E(0xFFFFFFFF, 0xFFFFF000, 0x00000000, 0x00000000),
214         E(0xFFFFFFFF, 0xFFFFF800, 0x00000000, 0x00000000),
215         E(0xFFFFFFFF, 0xFFFFFC00, 0x00000000, 0x00000000),
216         E(0xFFFFFFFF, 0xFFFFFE00, 0x00000000, 0x00000000),
217         E(0xFFFFFFFF, 0xFFFFFF00, 0x00000000, 0x00000000),
218         E(0xFFFFFFFF, 0xFFFFFF80, 0x00000000, 0x00000000),
219         E(0xFFFFFFFF, 0xFFFFFFC0, 0x00000000, 0x00000000),
220         E(0xFFFFFFFF, 0xFFFFFFE0, 0x00000000, 0x00000000),
221         E(0xFFFFFFFF, 0xFFFFFFF0, 0x00000000, 0x00000000),
222         E(0xFFFFFFFF, 0xFFFFFFF8, 0x00000000, 0x00000000),
223         E(0xFFFFFFFF, 0xFFFFFFFC, 0x00000000, 0x00000000),
224         E(0xFFFFFFFF, 0xFFFFFFFE, 0x00000000, 0x00000000),
225         E(0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000),
226         E(0xFFFFFFFF, 0xFFFFFFFF, 0x80000000, 0x00000000),
227         E(0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000, 0x00000000),
228         E(0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000, 0x00000000),
229         E(0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000, 0x00000000),
230         E(0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000, 0x00000000),
231         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000, 0x00000000),
232         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000, 0x00000000),
233         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000),
234         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000, 0x00000000),
235         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000, 0x00000000),
236         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000, 0x00000000),
237         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000, 0x00000000),
238         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000, 0x00000000),
239         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000, 0x00000000),
240         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000, 0x00000000),
241         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000, 0x00000000),
242         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000, 0x00000000),
243         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000, 0x00000000),
244         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000, 0x00000000),
245         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000, 0x00000000),
246         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800, 0x00000000),
247         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00, 0x00000000),
248         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00, 0x00000000),
249         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00, 0x00000000),
250         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80, 0x00000000),
251         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0, 0x00000000),
252         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0, 0x00000000),
253         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0, 0x00000000),
254         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8, 0x00000000),
255         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC, 0x00000000),
256         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0x00000000),
257         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000),
258         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x80000000),
259         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000),
260         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000),
261         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000),
262         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000),
263         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000),
264         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000),
265         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000),
266         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000),
267         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000),
268         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000),
269         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000),
270         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000),
271         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000),
272         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000),
273         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000),
274         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000),
275         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000),
276         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000),
277         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000),
278         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800),
279         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00),
280         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00),
281         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00),
282         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80),
283         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0),
284         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0),
285         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0),
286         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8),
287         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC),
288         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE),
289         E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF),
290 };
291 EXPORT_SYMBOL_GPL(ip_set_hostmask_map);
292
293 /* Find the largest network which matches the range from left, in host order. */
294 u32
295 ip_set_range_to_cidr(u32 from, u32 to, u8 *cidr)
296 {
297         u32 last;
298         u8 i;
299
300         for (i = 1; i < 32; i++) {
301                 if ((from & ip_set_hostmask(i)) != from)
302                         continue;
303                 last = from | ~ip_set_hostmask(i);
304                 if (!after(last, to)) {
305                         *cidr = i;
306                         return last;
307                 }
308         }
309         *cidr = 32;
310         return from;
311 }
312 EXPORT_SYMBOL_GPL(ip_set_range_to_cidr);