Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
/**
 * \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;
}