void test_ip4_parsing(void) { unsigned host, mask, not_flag; PORTSET portset; char **curip; int ret; IPADDRESS *adp; char *ips[] = { "138.26.1.24:25", "1.1.1.1/255.255.255.0:444", "1.1.1.1/16:25-28", "1.1.1.1/255.255.255.255:25 27-29", "z/24", "0/0", "0.0.0.0/0.0.0.0:25-26 28-29 31", "0.0.0.0/0.0.2.0", NULL }; for(curip = ips; curip[0] != NULL; curip++) { portset_init(&portset); /* network byte order stuff */ if((ret = ip4_parse(curip[0], 1, ¬_flag, &host, &mask, &portset)) != 0) { fprintf(stderr, "Unable to parse %s with ret %d\n", curip[0], ret); } else { printf("%c", not_flag ? '!' : ' '); printf("%s/", inet_ntoa(*(struct in_addr *) &host)); printf("%s", inet_ntoa(*(struct in_addr *) &mask)); printf(" parsed successfully!\n"); } /* host byte order stuff */ if((ret = ip4_parse(curip[0], 0, ¬_flag, &host, &mask, &portset)) != 0) { fprintf(stderr, "Unable to parse %s with ret %d\n", curip[0], ret); } else { adp = ip_new(IPV4_FAMILY); ip_set(adp, &host, IPV4_FAMILY); ip_fprint(stdout, adp); fprintf(stdout, "*****************\n"); ip_free(adp); } } return; }
// ----------------------------- void test_ip() { int i,k; IPADDRESS * ipa[MAXIP]; unsigned ipaddress,ipx; unsigned short ipaddress6[8], ipx6[8]; printf("IPADDRESS testing\n"); srand( time(0) ); for(i=0;i<MAXIP;i++) { if( i % 2 ) { ipa[i]= ip_new(IPV4_FAMILY); ipaddress = rand() * rand(); ip_set( ipa[i], &ipaddress, IPV4_FAMILY ); if( !ip_equal(ipa[i],&ipaddress, IPV4_FAMILY ) ) printf("error with ip_equal\n"); ip_get( ipa[i], &ipx, IPV4_FAMILY ); if( ipx != ipaddress ) printf("error with ip_get\n"); } else { ipa[i]= ip_new(IPV6_FAMILY); for(k=0;k<8;k++) ipaddress6[k] = (char) (rand() % (1<<16)); ip_set( ipa[i], ipaddress6, IPV6_FAMILY ); if( !ip_equal(ipa[i],&ipaddress6, IPV6_FAMILY ) ) printf("error with ip6_equal\n"); ip_get( ipa[i], ipx6, IPV6_FAMILY ); for(k=0;k<8;k++) if( ipx6[k] != ipaddress6[k] ) printf("error with ip6_get\n"); } printf("[%d] ",i); ip_fprint(stdout,ipa[i]); printf("\n"); } printf("IP testing completed\n"); }