• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/ucode/tests/custom/18_lib_netaddr/01_cidr_parse

  1 The netaddr module provides CIDR address handling (IPv4, IPv6, MAC) as a
  2 port of the LuCI luci-lib-ip library. Addresses are represented by
  3 netaddr.range resource instances created through the netaddr.new(), netaddr.v4(),
  4 netaddr.v6() and netaddr.mac() constructors, which accept address strings,
  5 unsigned numbers, byte arrays (length 4 = IPv4, 6 = MAC, 16 = IPv6)
  6 or sockaddr-like objects ({ address, family, interface }) and raise a
  7 runtime exception on invalid input.
  8 
  9 -- Testcase --
 10 import * as netaddr from 'netaddr';
 11 
 12 print(netaddr.new("192.168.1.1"), "\n");
 13 print(netaddr.new("192.168.1.1/24"), "\n");
 14 print(netaddr.new("10.0.0.1/255.255.0.0"), "\n");
 15 print(netaddr.new("10.0.0.1", "255.255.0.0"), "\n");
 16 print(netaddr.new("10.0.0.1/16", 8), "\n");
 17 print(netaddr.new("2001:db8::1"), "\n");
 18 print(netaddr.new("2001:0db8:0000:0000:0000:0000:0000:0001"), "\n");
 19 print(netaddr.new("2001:db8::1/64"), "\n");
 20 print(netaddr.new("fe80::1%lo"), "\n");
 21 print(netaddr.new("ffff::192.168.1.1"), "\n");
 22 print(netaddr.new("::"), "\n");
 23 print(netaddr.new("::1"), "\n");
 24 print(netaddr.new("00:11:22:33:44:55"), "\n");
 25 print(netaddr.new("00:11:22:33:44:55/16"), "\n");
 26 print(netaddr.new(0x01020304), "\n");
 27 print(netaddr.v4(0x01020304), "\n");
 28 print(netaddr.v6(1), "\n");
 29 print(netaddr.mac(0x001122334455), "\n");
 30 print(netaddr.new(0x001122334455, 16), "\n");
 31 print(netaddr.new([ 10, 24, 0, 1 ]), "\n");
 32 print(netaddr.new([ 0, 0x11, 0x22, 0xcc, 0xdd, 0xee ]), "\n");
 33 print(netaddr.new([ 0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ]), "\n");
 34 print(netaddr.v4([ 192, 168, 1, 1 ]), "\n");
 35 print(netaddr.v6([ 0x20, 0x01, 0x0d, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ]), "\n");
 36 print(netaddr.mac([ 0xc0, 0xb6, 0xf9, 0, 0, 0 ]), "\n");
 37 print(netaddr.new([ 1, 2, 3, 4 ])[0], "\n");
 38 print(netaddr.new([ 1, 2, 3, 4 ]).family, "\n");
 39 print(netaddr.new([ 1, 2, 3, 4 ]).bits, "\n");
 40 print(netaddr.new([ 10, 0, 0, 1 ], 24).string(), "\n");
 41 print(netaddr.new({ address: "192.168.1.1" }), "\n");
 42 print(netaddr.new({ address: "2001:db8::1" }), "\n");
 43 print(netaddr.new({ family: 2, address: "10.0.0.1" }), "\n");
 44 print(netaddr.new({ family: 10, address: "fe80::1" }), "\n");
 45 print(netaddr.new({ family: 17, address: "00:11:22:33:44:55" }), "\n");
 46 print(netaddr.new({ family: 10, address: "fe80::1", interface: "lo" }), "\n");
 47 print(netaddr.new({ address: "fe80::1", interface: 1 }), "\n");
 48 print(netaddr.new({ address: "fe80::1", interface: 1 }).scope, "\n");
 49 print(netaddr.new({ address: "10.0.0.1/24" }), "\n");
 50 print(netaddr.new({ address: "fe80::1/64" }), "\n");
 51 print(netaddr.v4({ address: "1.2.3.4" }), "\n");
 52 print(netaddr.v6({ address: "fe80::2", interface: "lo" }), "\n");
 53 print(netaddr.mac({ family: 17, address: "aa:bb:cc:dd:ee:ff" }), "\n");
 54 print(netaddr.new({ family: 10, address: "fe80::1", interface: "lo" }).scope, "\n");
 55 print(netaddr.new({ address: "10.0.0.1" }, 24).string(), "\n");
 56 print(netaddr.v4("1.2.3.4", 24), "\n");
 57 print(netaddr.new("1.2.3.4").bits, "\n");
 58 print(netaddr.new("1.2.3.4/24").bits, "\n");
 59 print(netaddr.new("2001:db8::1/64").bits, "\n");
 60 print(netaddr.new("1.2.3.4").family, "\n");
 61 print(netaddr.new("2001:db8::1").family, "\n");
 62 print(netaddr.new("00:11:22:33:44:55").family, "\n");
 63 print(netaddr.new("fe80::1%lo").scope, "\n");
 64 print(netaddr.new("1.2.3.4").scope, "\n");
 65 print(netaddr.checkv4("1.2.3.4"), "\n");
 66 print(netaddr.checkv4("1.2.3.4/24"), "\n");
 67 print(netaddr.checkv4("999.1.1.1") == null, "\n");
 68 print(netaddr.checkv6("::1"), "\n");
 69 print(netaddr.checkv6("1.2.3.4") == null, "\n");
 70 print(netaddr.checkmac("00:11:22:33:44:55"), "\n");
 71 print(netaddr.checkmac("00:11:22:33:44") == null, "\n");
 72 
 73 a = netaddr.new("192.168.1.1/24");
 74 print(a.bits, ", ", a.family, ", ", a.netmask, "\n");
 75 print(a[0], ", ", a[-1], "\n");
 76 
 77 a = netaddr.v6("fe80::1%lo");
 78 print(a.scope, ", ", a.scopeid, ", ", a.bits, ", ", a.netmask, "\n");
 79 
 80 a = netaddr.mac("00:11:22:33:44:55");
 81 print(a.family, ", ", a.bits, ", ", a.netmask, ", ", a.scope, "\n");
 82 
 83 a.scope = 42;
 84 print(a.scope, ", ", a.scopeid, "\n");
 85 
 86 a.scope = 3;
 87 print(a.scope, "\n");
 88 
 89 a.scopeid = "lo";
 90 print(a.scopeid, ", ", a, "\n");
 91 
 92 a.scopeid = 1;
 93 print(a.scopeid, "\n");
 94 
 95 a.bits = 33;
 96 print(a.bits, "\n");
 97 
 98 a.bits = 16;
 99 print(a.bits, ", ", a[0], "\n");
100 
101 a[3] = 200;
102 print(a, "\n");
103 -- End --
104 
105 -- Args --
106 -R
107 -- End --
108 
109 -- Expect stdout --
110 192.168.1.1
111 192.168.1.1/24
112 10.0.0.1/16
113 10.0.0.1/16
114 10.0.0.1/8
115 2001:db8::1
116 2001:db8::1
117 2001:db8::1/64
118 fe80::1%lo
119 ffff::c0a8:101
120 ::
121 ::1
122 00:11:22:33:44:55
123 00:11:22:33:44:55/16
124 00:00:01:02:03:04
125 1.2.3.4
126 ::1
127 00:00:22:33:44:55
128 00:00:22:33:44:55
129 10.24.0.1
130 00:11:22:CC:DD:EE
131 fe80::1
132 192.168.1.1
133 2001:db8::1
134 C0:B6:F9:00:00:00
135 1
136 4
137 32
138 10.0.0.1
139 192.168.1.1
140 2001:db8::1
141 10.0.0.1
142 fe80::1
143 00:11:22:33:44:55
144 fe80::1%lo
145 fe80::1%lo
146 1
147 10.0.0.1/24
148 fe80::1/64
149 1.2.3.4
150 fe80::2%lo
151 AA:BB:CC:DD:EE:FF
152 1
153 10.0.0.1
154 1.2.3.4/24
155 32
156 24
157 64
158 4
159 6
160 1
161 1
162 0
163 1.2.3.4
164 1.2.3.4/24
165 true
166 ::1
167 true
168 00:11:22:33:44:55
169 true
170 24, 4, 255.255.255.0
171 192, 1
172 1, lo, 128, ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
173 1, 48, FF:FF:FF:FF:FF:FF, 0
174 42, 
175 3
176 lo, 00:11:22:33:44:55%lo
177 lo
178 33
179 16, 0
180 00:11:22:C8:44:55%lo/16
181 -- End --
182 
183 -- Testcase --
184 import * as netaddr from 'netaddr';
185 
186 try {
187         netaddr.new("bogus");
188         print("no error\n");
189 }
190 catch (e) {
191         print("new: ", e.message, "\n");
192 }
193 
194 try {
195         netaddr.v4("2001:db8::1");
196         print("no error\n");
197 }
198 catch (e) {
199         print("IPv4: ", e.message, "\n");
200 }
201 
202 try {
203         netaddr.v6("1.2.3.4");
204         print("no error\n");
205 }
206 catch (e) {
207         print("IPv6: ", e.message, "\n");
208 }
209 
210 try {
211         netaddr.mac("1.2.3.4");
212         print("no error\n");
213 }
214 catch (e) {
215         print("MAC: ", e.message, "\n");
216 }
217 
218 try {
219         netaddr.new("1.2.3.4", 99);
220         print("no error\n");
221 }
222 catch (e) {
223         print("mask: ", e.message, "\n");
224 }
225 
226 try {
227         netaddr.new("1.2.3.4", "bogus");
228         print("no error\n");
229 }
230 catch (e) {
231         print("maskstr: ", e.message, "\n");
232 }
233 
234 try {
235         netaddr.new([ 1, 2, 3, 4, 5 ]);
236         print("no error\n");
237 }
238 catch (e) {
239         print("arr5: ", e.message, "\n");
240 }
241 
242 try {
243         netaddr.new([]);
244         print("no error\n");
245 }
246 catch (e) {
247         print("arr0: ", e.message, "\n");
248 }
249 
250 try {
251         netaddr.v4([ 0, 11, 22, 33, 44, 55 ]);
252         print("no error\n");
253 }
254 catch (e) {
255         print("v4mac: ", e.message, "\n");
256 }
257 
258 try {
259         netaddr.v6([ 1, 2, 3, 4 ]);
260         print("no error\n");
261 }
262 catch (e) {
263         print("v6v4: ", e.message, "\n");
264 }
265 
266 try {
267         netaddr.v4([ 1, 2, 3, 256 ]);
268         print("no error\n");
269 }
270 catch (e) {
271         print("big: ", e.message, "\n");
272 }
273 
274 try {
275         netaddr.v4([ 1, 2, 3, -1 ]);
276         print("no error\n");
277 }
278 catch (e) {
279         print("neg: ", e.message, "\n");
280 }
281 
282 try {
283         netaddr.v4([ 1, 2, 3, "4" ]);
284         print("no error\n");
285 }
286 catch (e) {
287         print("str: ", e.message, "\n");
288 }
289 
290 try {
291         netaddr.new({ family: 2 });
292         print("no error\n");
293 }
294 catch (e) {
295         print("noaddr: ", e.message, "\n");
296 }
297 
298 try {
299         netaddr.new({ address: "bogus" });
300         print("no error\n");
301 }
302 catch (e) {
303         print("badaddr: ", e.message, "\n");
304 }
305 
306 try {
307         netaddr.v4({ family: 10, address: "2001:db8::1" });
308         print("no error\n");
309 }
310 catch (e) {
311         print("famv6: ", e.message, "\n");
312 }
313 
314 try {
315         netaddr.new({ family: 1, address: "1.2.3.4" });
316         print("no error\n");
317 }
318 catch (e) {
319         print("badfam: ", e.message, "\n");
320 }
321 
322 try {
323         netaddr.new({ family: 2, address: "1.2.3.4", interface: "lo" });
324         print("no error\n");
325 }
326 catch (e) {
327         print("ifacev4: ", e.message, "\n");
328 }
329 
330 try {
331         netaddr.new({ family: 10, address: "fe80::1", interface: "nosuchif99" });
332         print("no error\n");
333 }
334 catch (e) {
335         print("badiface: ", e.message, "\n");
336 }
337 
338 try {
339         netaddr.mac({ family: 2, address: "1.2.3.4" });
340         print("no error\n");
341 }
342 catch (e) {
343         print("macfam: ", e.message, "\n");
344 }
345 
346 try {
347         netaddr.new({ family: 10, address: "2001:db8::1", interface: "lo" });
348         print("no error\n");
349 }
350 catch (e) {
351         print("nonll: ", e.message, "\n");
352 }
353 
354 try {
355         netaddr.new({ address: "fe80::1", interface: -1 });
356         print("no error\n");
357 }
358 catch (e) {
359         print("negscope: ", e.message, "\n");
360 }
361 -- End --
362 
363 -- Args --
364 -R
365 -- End --
366 
367 -- Testcase --
368 import * as netaddr from 'netaddr';
369 
370 let a = netaddr.v6("fe80::221:63ff:fe75:aa17", 64, "lo");
371 print(a, "\n");
372 print(a.scope, ", ", a.scopeid, "\n");
373 
374 a = netaddr.v6("2001:db8::1", 128, "eth0");
375 print(a, ", ", a.scope, "\n");
376 
377 a = netaddr.new("fe80::1234%lo");
378 print(a.unscopename, "\n");
379 print(a.unscoped(), "\n");
380 
381 a.scopeid = 1;
382 print(a.scopeid, "\n");
383 
384 print(a.scoped(), "\n");
385 
386 -- Args --
387 -R
388 -- End --
389 
390 -- Expect stdout --
391 fe80::221:63ff:fe75:aa17%lo/64
392 1, lo
393 2001:db8::1, 0
394 lo
395 fe80::1234
396 lo
397 fe80::1234%lo
398 -- End --
399 
400 
401 -- Args --
402 -R
403 -- End --
404 
405 -- Expect stdout --
406 new: Invalid address
407 IPv4: Invalid IPv4 address
408 IPv6: Invalid IPv6 address
409 MAC: Invalid MAC address
410 mask: Invalid netmask
411 maskstr: Invalid netmask
412 arr5: Invalid address
413 arr0: Invalid address
414 v4mac: Invalid IPv4 address
415 v6v4: Invalid IPv6 address
416 big: Invalid IPv4 address
417 neg: Invalid IPv4 address
418 str: Invalid IPv4 address
419 noaddr: Invalid address
420 badaddr: Invalid address
421 famv6: Invalid IPv4 address
422 badfam: Invalid address
423 ifacev4: Invalid address
424 badiface: Invalid scope
425 macfam: Invalid MAC address
426 nonll: Invalid address
427 negscope: Invalid scope
428 -- End --

This page was automatically generated by LXR 0.3.1.  •  OpenWrt