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