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