1145519Sdarrenr/*	$FreeBSD$	*/
2145510Sdarrenr
3145510Sdarrenr/*
4255332Scy * Copyright (C) 2012 by Darren Reed.
5145510Sdarrenr *
6145510Sdarrenr * See the IPFILTER.LICENCE file for details on licencing.
7145510Sdarrenr *
8255332Scy * $Id$
9145510Sdarrenr */
10145510Sdarrenr
11145510Sdarrenr#include "ipf.h"
12145510Sdarrenr
13145510Sdarrenr
14145510Sdarrenrvoid fill6bits(bits, msk)
15255332Scy	int bits;
16255332Scy	u_int *msk;
17145510Sdarrenr{
18145510Sdarrenr	if (bits == 0) {
19145510Sdarrenr		msk[0] = 0;
20145510Sdarrenr		msk[1] = 0;
21145510Sdarrenr		msk[2] = 0;
22145510Sdarrenr		msk[3] = 0;
23145510Sdarrenr		return;
24145510Sdarrenr	}
25145510Sdarrenr
26145510Sdarrenr	msk[0] = 0xffffffff;
27145510Sdarrenr	msk[1] = 0xffffffff;
28145510Sdarrenr	msk[2] = 0xffffffff;
29145510Sdarrenr	msk[3] = 0xffffffff;
30145510Sdarrenr
31145510Sdarrenr	if (bits == 128)
32145510Sdarrenr		return;
33145510Sdarrenr	if (bits > 96) {
34145510Sdarrenr		msk[3] = htonl(msk[3] << (128 - bits));
35145510Sdarrenr	} else if (bits > 64) {
36145510Sdarrenr		msk[3] = 0;
37145510Sdarrenr		msk[2] = htonl(msk[2] << (96 - bits));
38145510Sdarrenr	} else if (bits > 32) {
39145510Sdarrenr		msk[3] = 0;
40145510Sdarrenr		msk[2] = 0;
41145510Sdarrenr		msk[1] = htonl(msk[1] << (64 - bits));
42145510Sdarrenr	} else {
43145510Sdarrenr		msk[3] = 0;
44145510Sdarrenr		msk[2] = 0;
45145510Sdarrenr		msk[1] = 0;
46145510Sdarrenr		msk[0] = htonl(msk[0] << (32 - bits));
47145510Sdarrenr	}
48145510Sdarrenr}
49