/* Get the first host in a CIDR block */ CIDR * cidr_addr_hostmin(const CIDR *addr) { CIDR *toret; toret = cidr_addr_network(addr); if(toret==NULL) return(NULL); /* Preserve errno */ toret->addr[15] |= 1; return(toret); }
/* Is it a correct IPv6 network address? */ int is_ipv6_net(CIDR *address) { int result; if( (cidr_get_proto(address) == CIDR_IPV6) && (cidr_equals(address, cidr_addr_network(address)) == 0) ) { result = RESULT_SUCCESS; } else { result = RESULT_FAILURE; } return(result); }
/* Is it a correct IPv4 host (i.e. not network) address? */ int is_ipv4_host(CIDR *address) { int result; if( (cidr_get_proto(address) == CIDR_IPV4) && ((cidr_equals(address, cidr_addr_network(address)) < 0) || (cidr_get_pflen(address) == 32)) ) { result = RESULT_SUCCESS; } else { result = RESULT_FAILURE; } return(result); }