Lines Matching +full:pre +full:- +full:programs
1 .. SPDX-License-Identifier: GPL-2.0
13 BPF flow dissector is an attempt to reimplement C-based flow dissector logic
20 BPF flow dissector programs operate on an ``__sk_buff``. However, only the
26 * ``nhoff`` - initial offset of the networking header
27 * ``thoff`` - initial offset of the transport header, initialized to nhoff
28 * ``n_proto`` - L3 protocol type, parsed out of L2 header
29 * ``flags`` - optional flags
38 __sk_buff->data
41 In the VLAN-less case, this is what the initial state of the BPF flow
44 +------+------+------------+-----------+
46 +------+------+------------+-----------+
49 +-- flow dissector starts here
54 skb->data + flow_keys->nhoff point to the first byte of L3_HEADER
55 flow_keys->thoff = nhoff
56 flow_keys->n_proto = ETHER_TYPE
60 Pre-VLAN parsing::
62 +------+------+------+-----+-----------+-----------+
64 +------+------+------+-----+-----------+-----------+
67 +-- flow dissector starts here
71 skb->data + flow_keys->nhoff point the to first byte of TCI
72 flow_keys->thoff = nhoff
73 flow_keys->n_proto = TPID
79 Post-VLAN parsing::
81 +------+------+------+-----+-----------+-----------+
83 +------+------+------+-----+-----------+-----------+
86 +-- flow dissector starts here
90 skb->data + flow_keys->nhoff point the to first byte of L3_HEADER
91 flow_keys->thoff = nhoff
92 flow_keys->n_proto = ETHER_TYPE
108 ``flow_keys->flags`` might contain optional input flags that work as follows:
110 * ``BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG`` - tells BPF flow dissector to
114 * ``BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL`` - tells BPF flow dissector to
117 * ``BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP`` - tells BPF flow dissector to stop
130 * ``jmp_table`` map that contains sub-programs for each supported L3 protocol
131 * ``_dissect`` routine - entry point; it does input ``n_proto`` parsing and
141 BPF flow dissector doesn't support exporting all the metadata that in-kernel
142 C-based implementation can export. Notable example is single VLAN (802.1Q)
146 When BPF flow dissector is attached to the root network namespace (machine-wide