WFP Callout Driver Data Offset Positions (Compact 2013)
3/26/2014
When the filter engine calls a callout's classifyFn function, the data offset in the NET_BUFFER_LIST structure that was passed to the classifyFn function points to a specific position in the packet data. The position that the data offset points to depends on the filtering layer at which the filter engine calls the callout's classifyFn function. The position at each filtering layer is described in the following table:
Run-time Filtering Layer Identifier |
Position in the Packet Data |
---|---|
FWPS_LAYER_INBOUND_IPPACKET_V4 FWPS_LAYER_INBOUND_IPPACKET_V6 |
The beginning of the transport header |
FWPS_LAYER_INBOUND_IPPACKET_V4_DISCARD FWPS_LAYER_INBOUND_IPPACKET_V6_DISCARD |
Varies depending on the discard reason |
FWPS_LAYER_OUTBOUND_IPPACKET_V4 FWPS_LAYER_OUTBOUND_IPPACKET_V6 |
The beginning of the IP header |
FWPS_LAYER_OUTBOUND_IPPACKET_V4_DISCARD FWPS_LAYER_OUTBOUND_IPPACKET_V6_DISCARD |
Varies depending on the discard reason |
FWPS_LAYER_IPFORWARD_V4 FWPS_LAYER_IPFORWARD_V6 |
The beginning of the IP header |
FWPS_LAYER_IPFORWARD_V4_DISCARD FWPS_LAYER_IPFORWARD_V6_DISCARD |
The beginning of the IP header |
FWPS_LAYER_INBOUND_TRANSPORT_V4 FWPS_LAYER_INBOUND_TRANSPORT_V6 |
The beginning of the data |
FWPS_LAYER_INBOUND_TRANSPORT_V4_DISCARD FWPS_LAYER_INBOUND_TRANSPORT_V6_DISCARD |
The beginning of the data |
FWPS_LAYER_OUTBOUND_TRANSPORT_V4 FWPS_LAYER_OUTBOUND_TRANSPORT_V6 |
The beginning of the transport header |
FWPS_LAYER_OUTBOUND_TRANSPORT_V4_DISCARD FWPS_LAYER_OUTBOUND_TRANSPORT_V6_DISCARD |
The beginning of the transport header |
FWPS_LAYER_STREAM_V4 FWPS_LAYER_STREAM_V6 |
The beginning of the data |
FWPS_LAYER_STREAM_V4_DISCARD FWPS_LAYER_STREAM_V6_DISCARD |
The beginning of the data |
FWPS_LAYER_DATAGRAM_DATA_V4 FWPS_LAYER_DATAGRAM_DATA_V6 |
For incoming datagrams, the beginning of the data For outgoing datagrams, the beginning of the transport header |
FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD |
For incoming datagrams, the beginning of the data For outgoing datagrams, the beginning of the transport header |
FWPS_LAYER_INBOUND_ICMP_ERROR_V4 FWPS_LAYER_INBOUND_ICMP_ERROR_V6 |
The beginning of the inner IP header |
FWPS_LAYER_INBOUND_ICMP_ERROR_V4_DISCARD FWPS_LAYER_INBOUND_ICMP_ERROR_V6_DISCARD |
The beginning of the inner IP header |
FWPS_LAYER_OUTBOUND_ICMP_ERROR_V4 FWPS_LAYER_OUTBOUND_ICMP_ERROR_V6 |
The beginning of the ICMP header |
FWPS_LAYER_OUTBOUND_ICMP_ERROR_V4_DISCARD FWPS_LAYER_OUTBOUND_ICMP_ERROR_V6_DISCARD |
The beginning of the ICMP header |
FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V4 FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V6 |
Not applicable |
FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V4_DISCARD FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V6_DISCARD |
Not applicable |
FWPS_LAYER_ALE_AUTH_LISTEN_V4 FWPS_LAYER_ALE_AUTH_LISTEN_V6 |
Not applicable |
FWPS_LAYER_ALE_AUTH_LISTEN_V4_DISCARD FWPS_LAYER_ALE_AUTH_LISTEN_V6_DISCARD |
Not applicable |
FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V4 FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V6 |
For incoming packet direction, the beginning of the data For outgoing packet direction, the beginning of the transport header |
FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V4_DISCARD FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V6_DISCARD |
For incoming packet direction, the beginning of the data For outgoing packet direction, the beginning of the transport header |
FWPS_LAYER_ALE_AUTH_CONNECT_V4 FWPS_LAYER_ALE_AUTH_CONNECT_V6 |
For non-TCP traffic, the beginning of the data For TCP traffic, not applicable |
FWPS_LAYER_ALE_AUTH_CONNECT_V4_DISCARD FWPS_LAYER_ALE_AUTH_CONNECT_V6_DISCARD |
For non-TCP traffic, the beginning of the data For TCP traffic, not applicable |
FWPS_LAYER_ALE_FLOW_ESTABLISHED_V4 FWPS_LAYER_ALE_FLOW_ESTABLISHED_V6 |
Not applicable |
FWPS_LAYER_ALE_FLOW_ESTABLISHED_V4_DISCARD FWPS_LAYER_ALE_FLOW_ESTABLISHED_V6_DISCARD |
Not applicable |
FWPS_LAYER_IPSEC_KM_DEMUX_V4 FWPS_LAYER_IPSEC_KM_DEMUX_V6 |
Not applicable |
FWPS_LAYER_IPSEC_V4 FWPS_LAYER_IPSEC_V6 |
Not applicable |
FWPS_LAYER_IKEEXT_V4 FWPS_LAYER_IKEEXT_V6 |
Not applicable |
FWPS_LAYER_RPC_UM |
Not applicable |
FWPS_LAYER_RPC_EPMAP |
Not applicable |
FWPS_LAYER_RPC_EP_ADD |
Not applicable |
FWPS_LAYER_RPC_PROXY_CONN |
Not applicable |
FWPS_LAYER_RPC_PROXY_IF |
Not applicable |
See Also
Reference
WFP Callout Driver Constants
classifyFn
NET_BUFFER_LIST
WFP Callout Driver Built-in Callout Identifiers
WFP Callout Driver Filtering Layer Identifiers
WFP Callout Driver Filtering Conditions
WFP Callout Driver Data Field Identifiers
WFP Callout Driver Metadata Fields
WFP Callout Driver Discard Reason Identifiers
WFP Callout Driver Reference