@@ -254,9 +254,23 @@ START_TEST(test_127_0_0_1)
254254}
255255END_TEST
256256
257+ START_TEST (test_ipaddr_addr )
258+ {
259+ u32_t addr32 ;
260+ LWIP_UNUSED_ARG (_i );
261+
262+ addr32 = ipaddr_addr ("1.2.3.4" );
263+ fail_unless (addr32 == PP_HTONL (0x01020304UL ));
264+
265+ addr32 = ipaddr_addr ("foobar" );
266+ fail_unless (addr32 == PP_HTONL (0xffffffffUL ));
267+ }
268+ END_TEST
269+
257270START_TEST (test_ip4addr_aton )
258271{
259272 ip4_addr_t ip_addr ;
273+ u8_t ok ;
260274
261275 LWIP_UNUSED_ARG (_i );
262276
@@ -267,6 +281,211 @@ START_TEST(test_ip4addr_aton)
267281 fail_unless (ip4addr_aton ("192.168.0xd3" , & ip_addr ) == 1 );
268282 fail_unless (ip4addr_aton ("192.168.0xz5" , & ip_addr ) == 0 );
269283 fail_unless (ip4addr_aton ("192.168.095" , & ip_addr ) == 0 );
284+
285+ ok = ip4addr_aton ("foobar" , & ip_addr );
286+ fail_unless (ok == 0 );
287+
288+ ok = ip4addr_aton ("" , & ip_addr );
289+ fail_unless (ok == 0 );
290+
291+ ok = ip4addr_aton (" " , & ip_addr );
292+ fail_unless (ok == 0 );
293+
294+ ok = ip4addr_aton ("." , & ip_addr );
295+ fail_unless (ok == 0 );
296+
297+ ok = ip4addr_aton ("1" , & ip_addr );
298+ fail_unless (ok == 1 );
299+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x00000001UL ));
300+
301+ ok = ip4addr_aton ("01" , & ip_addr );
302+ fail_unless (ok == 1 );
303+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x00000001UL ));
304+
305+ ok = ip4addr_aton ("0y" , & ip_addr );
306+ fail_unless (ok == 0 );
307+
308+ ok = ip4addr_aton ("0x!" , & ip_addr );
309+ fail_unless (ok == 0 );
310+
311+ ok = ip4addr_aton ("0x?" , & ip_addr );
312+ fail_unless (ok == 0 );
313+
314+ ok = ip4addr_aton ("0x[" , & ip_addr );
315+ fail_unless (ok == 0 );
316+
317+ ok = ip4addr_aton ("0x{" , & ip_addr );
318+ fail_unless (ok == 0 );
319+
320+ ok = ip4addr_aton ("0x" , & ip_addr );
321+ fail_unless (ok == 1 );
322+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x00000000UL ));
323+
324+ ok = ip4addr_aton ("0x0102030405" , & ip_addr );
325+ fail_unless (ok == 1 );
326+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x02030405UL ));
327+
328+ ok = ip4addr_aton ("0x01000000 " , & ip_addr );
329+ fail_unless (ok == 1 );
330+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01000000UL ));
331+
332+ ok = ip4addr_aton ("0X01020000" , & ip_addr );
333+ fail_unless (ok == 1 );
334+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01020000UL ));
335+
336+ ok = ip4addr_aton ("0x01020300" , & ip_addr );
337+ fail_unless (ok == 1 );
338+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01020300UL ));
339+
340+ ok = ip4addr_aton ("0x0a0B0C0d" , & ip_addr );
341+ fail_unless (ok == 1 );
342+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x0a0b0c0dUL ));
343+
344+ ok = ip4addr_aton ("0x0F090c0x" , & ip_addr );
345+ fail_unless (ok == 0 );
346+
347+ ok = ip4addr_aton ("0x0a0b0c0[" , & ip_addr );
348+ fail_unless (ok == 0 );
349+
350+ ok = ip4addr_aton ("1.X" , & ip_addr );
351+ fail_unless (ok == 0 );
352+
353+ ok = ip4addr_aton ("999.2" , & ip_addr );
354+ fail_unless (ok == 0 );
355+
356+ ok = ip4addr_aton ("1.999999999" , & ip_addr );
357+ fail_unless (ok == 0 );
358+
359+ ok = ip4addr_aton ("1.2 " , & ip_addr );
360+ fail_unless (ok == 1 );
361+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01000002UL ));
362+
363+ ok = ip4addr_aton ("1.2.X" , & ip_addr );
364+ fail_unless (ok == 0 );
365+
366+ ok = ip4addr_aton ("1.999.3" , & ip_addr );
367+ fail_unless (ok == 0 );
368+
369+ ok = ip4addr_aton ("1.2.999999" , & ip_addr );
370+ fail_unless (ok == 0 );
371+
372+ ok = ip4addr_aton ("999.2.3" , & ip_addr );
373+ fail_unless (ok == 0 );
374+
375+ ok = ip4addr_aton ("1.2.3 " , & ip_addr );
376+ fail_unless (ok == 1 );
377+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01020003UL ));
378+
379+ ok = ip4addr_aton ("1.2.3.X" , & ip_addr );
380+ fail_unless (ok == 0 );
381+
382+ ok = ip4addr_aton ("1.2.999.X" , & ip_addr );
383+ fail_unless (ok == 0 );
384+
385+ ok = ip4addr_aton ("999.2.3.4" , & ip_addr );
386+ fail_unless (ok == 0 );
387+
388+ ok = ip4addr_aton ("1.999.3.4" , & ip_addr );
389+ fail_unless (ok == 0 );
390+
391+ ok = ip4addr_aton ("1.2.999.4" , & ip_addr );
392+ fail_unless (ok == 0 );
393+
394+ ok = ip4addr_aton ("1.2.3.999" , & ip_addr );
395+ fail_unless (ok == 0 );
396+
397+ ok = ip4addr_aton ("1.2.3.4" , & ip_addr );
398+ fail_unless (ok == 1 );
399+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01020304UL ));
400+
401+ ok = ip4addr_aton ("1.2.3.4 " , & ip_addr );
402+ fail_unless (ok == 1 );
403+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01020304UL ));
404+
405+ ok = ip4addr_aton ("1.2.3.4\f" , & ip_addr );
406+ fail_unless (ok == 1 );
407+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01020304UL ));
408+
409+ ok = ip4addr_aton ("1.2.3.4\n" , & ip_addr );
410+ fail_unless (ok == 1 );
411+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01020304UL ));
412+
413+ ok = ip4addr_aton ("1.2.3.4\r" , & ip_addr );
414+ fail_unless (ok == 1 );
415+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01020304UL ));
416+
417+ ok = ip4addr_aton ("1.2.3.4\t" , & ip_addr );
418+ fail_unless (ok == 1 );
419+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01020304UL ));
420+
421+ ok = ip4addr_aton ("1.2.3.4\v" , & ip_addr );
422+ fail_unless (ok == 1 );
423+ fail_unless (ip4_addr_get_u32 (& ip_addr ) == PP_HTONL (0x01020304UL ));
424+
425+ ok = ip4addr_aton ("1.2.3.4.5" , & ip_addr );
426+ fail_unless (ok == 0 );
427+
428+ ok = ip4addr_aton ("1.2.3.4" , NULL );
429+ fail_unless (ok == 1 );
430+ }
431+ END_TEST
432+
433+ START_TEST (test_ip4addr_ntoa )
434+ {
435+ u8_t ok ;
436+ ip4_addr_t addr ;
437+ char * s ;
438+ char buf [9 ];
439+ LWIP_UNUSED_ARG (_i );
440+
441+ ok = ip4addr_aton ("1.2.3.4" , & addr );
442+ fail_unless (ok == 1 );
443+
444+ s = ip4addr_ntoa (& addr );
445+ fail_unless (s != NULL );
446+
447+ if (s != NULL ) {
448+ fail_unless (strcmp ("1.2.3.4" , s ) == 0 );
449+ }
450+
451+ ok = ip4addr_aton ("1.2.3.45" , & addr );
452+ fail_unless (ok == 1 );
453+
454+ memset (buf , 0 , sizeof (buf ));
455+ s = ip4addr_ntoa_r (& addr , buf , (int )sizeof (buf ));
456+ fail_unless (s != NULL );
457+
458+ if (s != NULL ) {
459+ fail_unless (strcmp ("1.2.3.45" , s ) == 0 );
460+ }
461+
462+ s = ip4addr_ntoa_r (& addr , buf , 0 );
463+ fail_unless (s == NULL );
464+
465+ s = ip4addr_ntoa_r (& addr , buf , 1 );
466+ fail_unless (s == NULL );
467+
468+ s = ip4addr_ntoa_r (& addr , buf , 2 );
469+ fail_unless (s == NULL );
470+ }
471+ END_TEST
472+
473+ START_TEST (test_ip4_addr_netmask_valid )
474+ {
475+ u8_t ok ;
476+ LWIP_UNUSED_ARG (_i );
477+
478+ ok = ip4_addr_netmask_valid (PP_HTONL (0x00000000UL ));
479+ fail_unless (ok == 0 );
480+
481+ ok = ip4_addr_netmask_valid (PP_HTONL (0xffffffffUL ));
482+ fail_unless (ok == 1 );
483+
484+ ok = ip4_addr_netmask_valid (PP_HTONL (0x80000000UL ));
485+ fail_unless (ok == 1 );
486+
487+ ok = ip4_addr_netmask_valid (PP_HTONL (0x80000001UL ));
488+ fail_unless (ok == 0 );
270489}
271490END_TEST
272491
@@ -328,7 +547,10 @@ ip4_suite(void)
328547 TESTFUNC (test_ip4_frag ),
329548 TESTFUNC (test_ip4_reass ),
330549 TESTFUNC (test_127_0_0_1 ),
550+ TESTFUNC (test_ipaddr_addr ),
331551 TESTFUNC (test_ip4addr_aton ),
552+ TESTFUNC (test_ip4addr_ntoa ),
553+ TESTFUNC (test_ip4_addr_netmask_valid ),
332554 TESTFUNC (test_ip4_icmp_replylen_short ),
333555 TESTFUNC (test_ip4_icmp_replylen_first_8 ),
334556 };
0 commit comments