count6bits.c revision 145519
1145519Sdarrenr/*	$FreeBSD: head/contrib/ipfilter/lib/count6bits.c 145519 2005-04-25 18:20:15Z darrenr $	*/
2145510Sdarrenr
3145510Sdarrenr/*
4145510Sdarrenr * Copyright (C) 1993-2001 by Darren Reed.
5145510Sdarrenr *
6145510Sdarrenr * See the IPFILTER.LICENCE file for details on licencing.
7145510Sdarrenr *
8145510Sdarrenr * Id: count6bits.c,v 1.4 2001/06/09 17:09:23 darrenr Exp
9145510Sdarrenr */
10145510Sdarrenr
11145510Sdarrenr#include "ipf.h"
12145510Sdarrenr
13145510Sdarrenr
14145510Sdarrenrint count6bits(msk)
15145510Sdarrenru_32_t *msk;
16145510Sdarrenr{
17145510Sdarrenr	int i = 0, k;
18145510Sdarrenr	u_32_t j;
19145510Sdarrenr
20145510Sdarrenr	for (k = 3; k >= 0; k--)
21145510Sdarrenr		if (msk[k] == 0xffffffff)
22145510Sdarrenr			i += 32;
23145510Sdarrenr		else {
24145510Sdarrenr			for (j = msk[k]; j; j <<= 1)
25145510Sdarrenr				if (j & 0x80000000)
26145510Sdarrenr					i++;
27145510Sdarrenr		}
28145510Sdarrenr	return i;
29145510Sdarrenr}
30