1*13885a66Sdarrenr /* $NetBSD: fill6bits.c,v 1.2 2012/07/22 14:27:36 darrenr Exp $ */ 2bc4097aaSchristos 3bc4097aaSchristos /* 4c9d5dc6cSdarrenr * Copyright (C) 2012 by Darren Reed. 5bc4097aaSchristos * 6bc4097aaSchristos * See the IPFILTER.LICENCE file for details on licencing. 7bc4097aaSchristos * 8*13885a66Sdarrenr * Id: fill6bits.c,v 1.1.1.2 2012/07/22 13:44:38 darrenr Exp $ 9bc4097aaSchristos */ 10bc4097aaSchristos 11bc4097aaSchristos #include "ipf.h" 12bc4097aaSchristos 13bc4097aaSchristos fill6bits(bits,msk)14bc4097aaSchristosvoid fill6bits(bits, msk) 15bc4097aaSchristos int bits; 16bc4097aaSchristos u_int *msk; 17bc4097aaSchristos { 18bc4097aaSchristos if (bits == 0) { 19bc4097aaSchristos msk[0] = 0; 20bc4097aaSchristos msk[1] = 0; 21bc4097aaSchristos msk[2] = 0; 22bc4097aaSchristos msk[3] = 0; 23bc4097aaSchristos return; 24bc4097aaSchristos } 25bc4097aaSchristos 26bc4097aaSchristos msk[0] = 0xffffffff; 27bc4097aaSchristos msk[1] = 0xffffffff; 28bc4097aaSchristos msk[2] = 0xffffffff; 29bc4097aaSchristos msk[3] = 0xffffffff; 30bc4097aaSchristos 31bc4097aaSchristos if (bits == 128) 32bc4097aaSchristos return; 33bc4097aaSchristos if (bits > 96) { 34bc4097aaSchristos msk[3] = htonl(msk[3] << (128 - bits)); 35bc4097aaSchristos } else if (bits > 64) { 36bc4097aaSchristos msk[3] = 0; 37bc4097aaSchristos msk[2] = htonl(msk[2] << (96 - bits)); 38bc4097aaSchristos } else if (bits > 32) { 39bc4097aaSchristos msk[3] = 0; 40bc4097aaSchristos msk[2] = 0; 41bc4097aaSchristos msk[1] = htonl(msk[1] << (64 - bits)); 42bc4097aaSchristos } else { 43bc4097aaSchristos msk[3] = 0; 44bc4097aaSchristos msk[2] = 0; 45bc4097aaSchristos msk[1] = 0; 46bc4097aaSchristos msk[0] = htonl(msk[0] << (32 - bits)); 47bc4097aaSchristos } 48bc4097aaSchristos } 49