写入 ADDRESSTABLE 筛选器部分

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

筛选器的地址部分由两个结构组成: 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) 。 在捕获筛选器中最多可以包含 8 个地址对。