diff options
Diffstat (limited to 'contrib/unbound/testcode/unitmain.c')
| -rw-r--r-- | contrib/unbound/testcode/unitmain.c | 24 | 
1 files changed, 24 insertions, 0 deletions
| diff --git a/contrib/unbound/testcode/unitmain.c b/contrib/unbound/testcode/unitmain.c index 334c1af93033..07c016d7ba74 100644 --- a/contrib/unbound/testcode/unitmain.c +++ b/contrib/unbound/testcode/unitmain.c @@ -205,6 +205,8 @@ net_test(void)  		unit_assert(memcmp(&a6.sin6_addr, "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\000", 16) == 0);  		addr_mask((struct sockaddr_storage*)&a6, l6, 64);  		unit_assert(memcmp(&a6.sin6_addr, "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000", 16) == 0); +		/* Check that negative value in net is not problematic. */ +		addr_mask((struct sockaddr_storage*)&a6, l6, -100);  		addr_mask((struct sockaddr_storage*)&a6, l6, 0);  		unit_assert(memcmp(&a6.sin6_addr, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", 16) == 0);  	} @@ -266,6 +268,28 @@ net_test(void)  				(struct sockaddr_storage*)&b6, i, l6) == i);  		}  	} +	/* test netblockstrtoaddr */ +	unit_show_func("util/net_help.c", "netblockstrtoaddr"); +	if(1) { +		struct sockaddr_storage a; +		socklen_t alen = 0; +		int net = 0, res; +		char astr[128]; +		memset(&a, 0, sizeof(a)); + +		res = netblockstrtoaddr("1.2.3.0/24", 53, &a, &alen, &net); +		unit_assert(res!=0 && net == 24); +		addr_to_str(&a, alen, astr, sizeof(astr)); +		unit_assert(strcmp(astr, "1.2.3.0") == 0); +		unit_assert(ntohs(((struct sockaddr_in*)&a)->sin_port)==53); + +		res = netblockstrtoaddr("2001:DB8:33:44::/64", 53, +			&a, &alen, &net); +		unit_assert(res!=0 && net == 64); +		addr_to_str(&a, alen, astr, sizeof(astr)); +		unit_assert(strcmp(astr, "2001:db8:33:44::") == 0); +		unit_assert(ntohs(((struct sockaddr_in6*)&a)->sin6_port)==53); +	}  	/* test sockaddr_cmp_addr */  	unit_show_func("util/net_help.c", "sockaddr_cmp_addr");  	if(1) { | 
