#include /* extern double pow __P((double, double)); */ #define MAXMASK 4294967296L unsigned int prefix_to_mask(int prefix) { unsigned int netmask; if((prefix/8) >= 4){ netmask = 0xffffffff; return netmask; } if((prefix/8 < 4) && (prefix/8 >= 3)){ netmask = 0xffffff00 + 256 - (int)pow((double)2,(double)(32 - prefix)); return netmask; } if((prefix/8 < 3) && (prefix/8 >= 2)){ netmask = 0xffff0000 + 65536 - (int)pow(2,(32 - prefix)); return netmask; } if((prefix/8 < 2) && (prefix/8 >= 1)){ netmask = 0xff000000 + 16777216 - (int)pow(2,(32 - prefix)); return netmask; } if((prefix/8 < 1)){ netmask = (MAXMASK - (int)pow(2,(32 - prefix))); return netmask; } netmask = 0xffffffff; return netmask; }