root/sbin/ipf/libipf/count6bits.c

/*
 * Copyright (C) 2012 by Darren Reed.
 *
 * See the IPFILTER.LICENCE file for details on licencing.
 *
 * $Id$
 */

#include "ipf.h"


int
count6bits(u_32_t *msk)
{
        int i = 0, k;
        u_32_t j;

        for (k = 3; k >= 0; k--)
                if (msk[k] == 0xffffffff)
                        i += 32;
                else {
                        for (j = msk[k]; j; j <<= 1)
                                if (j & 0x80000000)
                                        i++;
                }
        return (i);
}