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