Exemplo n.º 1
0
/*
 * Description: Caculate multicast hash value by CRC32
 *
 * Parameters:
 *  In:
 *		pbyMultiAddr    - Multicast Address
 *  Out:
 *      none
 *
 * Return Value: Hash value
 *
 */
unsigned char ETHbyGetHashIndexByCrc32 (unsigned char *pbyMultiAddr)
{
    int     ii;
    unsigned char byTmpHash;
    unsigned char byHash = 0;

    // get the least 6-bits from CRC generator
    byTmpHash = (unsigned char)(CRCdwCrc32(pbyMultiAddr, ETH_ALEN,
            0xFFFFFFFFL) & 0x3F);
    // reverse most bit to least bit
    for (ii = 0; ii < (sizeof(byTmpHash) * 8); ii++) {
        byHash <<= 1;
        if (byTmpHash & 0x01)
            byHash |= 1;
        byTmpHash >>= 1;
    }

    // adjust 6-bits to the right most
    return (byHash >> 2);
}
Exemplo n.º 2
0
BYTE ETHbyGetHashIndexByCrc32(PBYTE pbyMultiAddr)
{
	int     ii;
	BYTE    byTmpHash;
	BYTE    byHash = 0;

	
	byTmpHash = (BYTE)(CRCdwCrc32(pbyMultiAddr, ETH_ALEN,
			0xFFFFFFFFL) & 0x3F);
	
	for (ii = 0; ii < (sizeof(byTmpHash) * 8); ii++) {
		byHash <<= 1;
		if (byTmpHash & 0x01)
			byHash |= 1;
		byTmpHash >>= 1;
	}

	
	return byHash >> 2;
}
Exemplo n.º 3
0
BYTE ETHbyGetHashIndexByCrc32(PBYTE pbyMultiAddr)
{
	int     ii;
	BYTE    byTmpHash;
	BYTE    byHash = 0;

	/* get the least 6-bits from CRC generator */
	byTmpHash = (BYTE)(CRCdwCrc32(pbyMultiAddr, ETH_ALEN,
			0xFFFFFFFFL) & 0x3F);
	/* reverse most bit to least bit */
	for (ii = 0; ii < (sizeof(byTmpHash) * 8); ii++) {
		byHash <<= 1;
		if (byTmpHash & 0x01)
			byHash |= 1;
		byTmpHash >>= 1;
	}

	/* adjust 6-bits to the right most */
	return byHash >> 2;
}