ntomask.c revision 145510
1145510Sdarrenr/* $NetBSD$ */ 2145510Sdarrenr 3145510Sdarrenr#include "ipf.h" 4145510Sdarrenr 5145510Sdarrenrint ntomask(v, nbits, ap) 6145510Sdarrenrint v, nbits; 7145510Sdarrenru_32_t *ap; 8145510Sdarrenr{ 9145510Sdarrenr u_32_t mask; 10145510Sdarrenr 11145510Sdarrenr if (nbits < 0) 12145510Sdarrenr return -1; 13145510Sdarrenr 14145510Sdarrenr switch (v) 15145510Sdarrenr { 16145510Sdarrenr case 4 : 17145510Sdarrenr if (nbits > 32 || use_inet6 != 0) 18145510Sdarrenr return -1; 19145510Sdarrenr if (nbits == 0) { 20145510Sdarrenr mask = 0; 21145510Sdarrenr } else { 22145510Sdarrenr mask = 0xffffffff; 23145510Sdarrenr mask <<= (32 - nbits); 24145510Sdarrenr } 25145510Sdarrenr *ap = htonl(mask); 26145510Sdarrenr break; 27145510Sdarrenr 28145510Sdarrenr case 6 : 29145510Sdarrenr if ((nbits > 128) || (use_inet6 == 0)) 30145510Sdarrenr return -1; 31145510Sdarrenr fill6bits(nbits, ap); 32145510Sdarrenr break; 33145510Sdarrenr 34145510Sdarrenr default : 35145510Sdarrenr return -1; 36145510Sdarrenr } 37145510Sdarrenr return 0; 38145510Sdarrenr} 39