diff options
author | Cy Schubert <cy@FreeBSD.org> | 2013-07-19 05:41:57 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2013-07-19 05:41:57 +0000 |
commit | f27f47054d2675045dce8688b408aa9340a118f7 (patch) | |
tree | 225b5acf68c01bc6a260b386c2b2dbf4fa2839e3 /lib/fill6bits.c | |
parent | 39ff65a633dd44a40233913b84b347003c732868 (diff) |
Notes
Diffstat (limited to 'lib/fill6bits.c')
-rw-r--r-- | lib/fill6bits.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/fill6bits.c b/lib/fill6bits.c new file mode 100644 index 0000000000000..a5f459a28af0c --- /dev/null +++ b/lib/fill6bits.c @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2000-2002 by Darren Reed. + * + * See the IPFILTER.LICENCE file for details on licencing. + * + * $Id: fill6bits.c,v 1.5.4.1 2006/06/16 17:20:58 darrenr Exp $ + */ + +#include "ipf.h" + + +void fill6bits(bits, msk) +int bits; +u_int *msk; +{ + if (bits == 0) { + msk[0] = 0; + msk[1] = 0; + msk[2] = 0; + msk[3] = 0; + return; + } + + msk[0] = 0xffffffff; + msk[1] = 0xffffffff; + msk[2] = 0xffffffff; + msk[3] = 0xffffffff; + + if (bits == 128) + return; + if (bits > 96) { + msk[3] = htonl(msk[3] << (128 - bits)); + } else if (bits > 64) { + msk[3] = 0; + msk[2] = htonl(msk[2] << (96 - bits)); + } else if (bits > 32) { + msk[3] = 0; + msk[2] = 0; + msk[1] = htonl(msk[1] << (64 - bits)); + } else { + msk[3] = 0; + msk[2] = 0; + msk[1] = 0; + msk[0] = htonl(msk[0] << (32 - bits)); + } +} |