写入 ADDRESSTABLE 筛选器部分

地址筛选器通知网络监视器驱动程序接受具有各种指定 MAC 地址类型之一的帧, (以太网、令牌环和 FDDI) 。 最多可以指定八个地址对。 地址对可以指定源、目标、两者,或者两者都不指定。

筛选器的地址部分由两个结构组成: ADDRESSTABLEADDRESSPAIR

如果指定 NO 地址,则所有帧都将传递地址筛选器。 但是,如果指定任何地址,则只有那些通过给定地址筛选器的帧才会传递。

生成地址筛选器涉及分配 ADDRESSTABLE 结构和填充 ADDRESSPAIR 结构的成员。

生成捕获筛选器的地址部分

  1. 使用 CAPTUREFILTER 结构的 CAPTUREFILTER_FLAGS_LOCAL_ONLY 标志将捕获限制为传入和传出本地计算机的流量。

    设置此标志不会将 NIC 设置为混杂模式;捕获文件将仅捕获本地流量。

  2. 使用以下示例代码定义 ADDRESSTABLE 结构:

    typedef struct _ADDRESSTABLE
    {
        DWORD           nAddressPairs;
        DWORD           nNonMacAddressPairs;
        ADDRESSPAIR     AddressPair[MAX_ADDRESS_PAIRS];
    } ADDRESSTABLE;
    
    typedef ADDRESSTABLE *LPADDRESSTABLE;
    
    typedef struct _ADDRESSPAIR
    {
        WORD        AddressFlags;
        WORD        NalReserved;
        ADDRESS     DstAddress;
        ADDRESS     SrcAddress;
    } ADDRESSPAIR;
    
    typedef ADDRESSPAIR *LPADDRESSPAIR;
    
  3. 使用下表中列出的信息选择 ADDRESSPAIR 标志类型。

    标志 含义
    ADDRESS_FLAGS_MATCH_DST 匹配目标地址。
    ADDRESS_FLAGS_MATCH_SRC 匹配源地址
    ADDRESS_FLAGS_EXCLUDE 如果在定义的源或目标) (找到此地址,则排除该帧。
    ADDRESS_FLAGS_DST_GROUP_ADDR 仅匹配广播类型消息) 目标地址的组位 (。
    ADDRESS_FLAGS_MATCH_BOTH 匹配目标地址和源地址。

     

  4. 填写目标地址,该地址根据所选的 ADDRESSPAIR 标志进行评估。

  5. 填写源地址,该地址根据所选的 ADDRESSPAIR 标志进行评估。

  6. 使用 ADDRESSPAIR 结构的数组填充 ADDRESSTABLE 结构,其中包括驱动程序评估的地址对。 所有地址对都作为逻辑 OR 语句计算 (ADDRESSPAIR 1 ||ADDRESSPAIR 2) 。 捕获筛选器中最多可以包含八个地址对。