xref: /f-stack/dpdk/examples/bpf/t2.c (revision 2d9fd380)
14418919fSjohnjiang /* SPDX-License-Identifier: BSD-3-Clause
24418919fSjohnjiang  * Copyright(c) 2018 Intel Corporation
34418919fSjohnjiang  */
44418919fSjohnjiang 
54418919fSjohnjiang /*
64418919fSjohnjiang  * eBPF program sample.
74418919fSjohnjiang  * Accepts pointer to struct rte_mbuf as an input parameter.
84418919fSjohnjiang  * cleanup mbuf's vlan_tci and all related RX flags
94418919fSjohnjiang  * (PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED).
104418919fSjohnjiang  * Doesn't touch contents of packet data.
114418919fSjohnjiang  * To compile:
12*2d9fd380Sjfb8856606  * clang -O2 -target bpf -Wno-int-to-void-pointer-cast -c t2.c
13*2d9fd380Sjfb8856606  *
14*2d9fd380Sjfb8856606  * NOTE: if DPDK is not installed system-wide, add compiler flag with path
15*2d9fd380Sjfb8856606  * to DPDK rte_mbuf.h file, e.g. "clang -I/path/to/dpdk/headers -O2 ..."
164418919fSjohnjiang  */
174418919fSjohnjiang 
184418919fSjohnjiang #include <stdint.h>
194418919fSjohnjiang #include <stddef.h>
204418919fSjohnjiang #include <rte_config.h>
214418919fSjohnjiang #include <rte_mbuf_core.h>
224418919fSjohnjiang 
234418919fSjohnjiang uint64_t
entry(void * pkt)244418919fSjohnjiang entry(void *pkt)
254418919fSjohnjiang {
264418919fSjohnjiang 	struct rte_mbuf *mb;
274418919fSjohnjiang 
284418919fSjohnjiang 	mb = pkt;
294418919fSjohnjiang 	mb->vlan_tci = 0;
304418919fSjohnjiang 	mb->ol_flags &= ~(PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED);
314418919fSjohnjiang 
324418919fSjohnjiang 	return 1;
334418919fSjohnjiang }
34