Lines Matching +full:data +full:- +full:out
1 .. SPDX-License-Identifier: GPL-2.0
10 Flow dissector is a routine that parses metadata out of the packets. It's
13 BPF flow dissector is an attempt to reimplement C-based flow dissector logic
21 limited set of fields is allowed: ``data``, ``data_end`` and ``flow_keys``.
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
31 Flow dissector BPF program should fill out the rest of the ``struct
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
112 flow dissector returns as soon as it finds out that the packet is fragmented;
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)