Changeset 1df069b in libbsdport


Ignore:
Timestamp:
Feb 20, 2009, 7:28:31 PM (10 years ago)
Author:
Till Straumann <strauman@…>
Branches:
master
Children:
e9cc6be
Parents:
22eccd1
Message:
  • compute hashes for multicast filtering (UNTESTED)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • bsd_eth_drivers/if_re/if_re.c

    r22eccd1 r1df069b  
    711711{
    712712        struct ifnet            *ifp;
     713        int                     h = 0;
    713714#ifndef __rtems__
    714         int                     h = 0;
    715715        struct ifmultiaddr      *ifma;
    716716#endif
     
    761761        }
    762762        IF_ADDR_UNLOCK(ifp);
     763#else
     764        {
     765        /* UNTESTED */
     766        struct ether_multi     *enm;
     767        struct ether_multistep step;
     768        ETHER_FIRST_MULTI(step, (struct arpcom*)ifp, enm);
     769        while ( enm != NULL ) {
     770                h = ether_crc32_be(enm->enm_addrlo, ETHER_ADDR_LEN) >> 26;
     771                if (h < 32)
     772                        hashes[0] |= (1 << h);
     773                else
     774                        hashes[1] |= (1 << (h - 32));
     775                mcnt++;
     776        }
     777        }
    763778#endif
    764779
Note: See TracChangeset for help on using the changeset viewer.