1 /* $FreeBSD$ */ 2 3 /* 4 * Copyright (C) 2012 by Darren Reed. 5 * 6 * See the IPFILTER.LICENCE file for details on licencing. 7 * 8 * $Id$ 9 */ 10 11 #include "ipf.h" 12 13 int ntomask(family, nbits, ap) 14 int family, nbits; 15 u_32_t *ap; 16 { 17 u_32_t mask; 18 19 if (nbits < 0) 20 return -1; 21 22 switch (family) 23 { 24 case AF_INET : 25 if (nbits > 32 || use_inet6 == 1) 26 return -1; 27 if (nbits == 0) { 28 mask = 0; 29 } else { 30 mask = 0xffffffff; 31 mask <<= (32 - nbits); 32 } 33 *ap = htonl(mask); 34 break; 35 36 case 0 : 37 case AF_INET6 : 38 if ((nbits > 128) || (use_inet6 == -1)) 39 return -1; 40 fill6bits(nbits, ap); 41 break; 42 43 default : 44 return -1; 45 } 46 return 0; 47 } 48