enum status anon_subnet_add(struct in_addr a, unsigned int netmasklen) { if (num_subnets >= MAX_ANON_SUBNETS) { return failure; } else { // fprintf(output, "adding subnet %u\n", num_subnets); anon_subnet[num_subnets].addr = a; anon_subnet[num_subnets].mask.s_addr = ipv4_mask(netmasklen); // fprintf(anon_info, "addr: %s\t", inet_ntoa(anon_subnet[num_subnets].addr)); // print_binary(anon_info, &anon_subnet[num_subnets].addr, 4); // fprintf(anon_info, "\t"); // print_binary(anon_info, &anon_subnet[num_subnets].mask.s_addr, 4); // fprintf(anon_info, "\n"); num_subnets++; } return ok; }
/** * \fn unsigned int addr_mask (unsigned int addr, unsigned int masklen) * \param addr ipv4 address * \param masklen length of the subnet mask * \return ipv4 address mask */ unsigned int addr_mask (unsigned int addr, unsigned int masklen) { struct in_addr mask; mask.s_addr = ipv4_mask(masklen); return mask.s_addr & addr; }