I think this: 1460 } else { 1461 if ((addr & 0x00ffffff) == 0) 1462 mask = 0xff000000; 1463 else if ((addr & 0x0000ffff) == 0) 1464 mask = 0xffff0000; 1465 else if ((addr & 0x000000ff) == 0) 1466 mask = 0xffffff00; 1467 else 1468 mask = 0xffffffff; 1469 }
reads better as: if (IN_CLASSA(addr)) mask = IN_CLASSA_NET; else if (IN_CLASSB(addr)) mask = IN_CLASSB_NET; else if (IN_CLASSC(addr)) mask = IN_CLASSC_NET; else mask = IP_HOST_MASK; it makes it quite obvious the code only supports class A, B or C for non CIDR defined networks. also just as an extra sanity check, should sin_family be verified to be AF_INET ? Robert.