Skip to content

KFunc bpf_xdp_metadata_rx_vlan_tag

v6.8

Get XDP packet outermost VLAN tag

Definition

In case of success, vlan_proto contains Tag protocol identifier (TPID), usually ETH_P_8021Q or ETH_P_8021AD, but some networks can use custom TPIDs. vlan_proto is stored in network byte order (BE) and should be used as follows: if (vlan_proto == bpf_htons(ETH_P_8021Q)) do_something();

vlan_tci contains the remaining 16 bits of a VLAN tag. Driver is expected to provide those in host byte order (usually LE), so the bpf program should not perform byte conversion. According to 802.1Q standard, VLAN TCI (Tag control information) is a bit field that contains: VLAN identifier (VID) that can be read with vlan_tci & 0xfff, Drop eligible indicator (DEI) - 1 bit, Priority code point (PCP) - 3 bits. For detailed meaning of DEI and PCP, please refer to other sources.

ctx: XDP context pointer. vlan_proto: Destination pointer for VLAN Tag protocol identifier (TPID). vlan_tci: Destination pointer for VLAN TCI (VID + DEI + PCP)

Return * Returns 0 on success or -errno on error. * -EOPNOTSUPP : device driver doesn't implement kfunc * -ENODATA : VLAN tag was not stripped or is not available

int bpf_xdp_metadata_rx_vlan_tag(const struct xdp_md *ctx, __be16 *vlan_proto, u16 *vlan_tci)

Usage

Docs could be improved

This part of the docs is incomplete, contributions are very welcome

Program types

The following program types can make use of this kfunc:

Example

Docs could be improved

This part of the docs is incomplete, contributions are very welcome