| /* |
| * Copyright (C) 2012 by Darren Reed. |
| * |
| * See the IPFILTER.LICENCE file for details on licencing. |
| * |
| * $Id$ |
| */ |
| |
| #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)); |
| } |
| } |