#include #define IPSTRLEN 20 int ip_str_to_ip_tuple(char ip_str[], int ip_tuple[]) { int retval; if (4!=(retval=sscanf(ip_str, "%d.%d.%d.%d", &ip_tuple[0], &ip_tuple[1], &ip_tuple[2], &ip_tuple[3]))) { fprintf(stderr, "Error: sscanf failed, retval was: %d\n", retval); return retval; } return 0; } int ip_tuple_to_ip_str(int ip_tuple[], char ip_str[], int ip_str_size) { int retval; if (IPSTRLEN<(retval=snprintf(ip_str, ip_str_size, "%d.%d.%d.%d", ip_tuple[3], ip_tuple[2], ip_tuple[1], ip_tuple[0]))) { return retval; } return 0; } unsigned long ip_tuple_to_addr(int ip_tuple[]) { unsigned long result=0; for (int i = 0; i < 4; i += 1) { result = result<<8; result = ip_tuple[i]|result; } return result; } int addr_to_ip_tuple(unsigned long addr, int ip_tuple[]) { for (int i = 0; i < 4; i += 1) { ip_tuple[i] = (addr>>i*8)&255; } return 0; } unsigned long compute_netmask_for_size(int net_size) { unsigned long netmask = 0xffffffff; netmask = netmask<