/* $NetBSD: ntomask.c,v 1.2 2012/07/22 14:27:36 darrenr Exp $ */ /* * Copyright (C) 2012 by Darren Reed. * * See the IPFILTER.LICENCE file for details on licencing. * * Id: ntomask.c,v 1.1.1.2 2012/07/22 13:44:39 darrenr Exp $ */ #include "ipf.h" int ntomask(family, nbits, ap) int family, nbits; u_32_t *ap; { u_32_t mask; if (nbits < 0) return -1; switch (family) { case AF_INET : if (nbits > 32 || use_inet6 == 1) return -1; if (nbits == 0) { mask = 0; } else { mask = 0xffffffff; mask <<= (32 - nbits); } *ap = htonl(mask); break; case 0 : case AF_INET6 : if ((nbits > 128) || (use_inet6 == -1)) return -1; fill6bits(nbits, ap); break; default : return -1; } return 0; }