xref: /kernel/linux/linux-6.6/tools/testing/selftests/bpf/progs/verifier_xdp.c
  • Home
  • History
  • Annotate Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /kernel/linux/linux-6.6/tools/testing/selftests/bpf/progs/
162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/* Converted from tools/testing/selftests/bpf/verifier/xdp.c */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#include <linux/bpf.h>
562306a36Sopenharmony_ci#include <bpf/bpf_helpers.h>
662306a36Sopenharmony_ci#include "bpf_misc.h"
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciSEC("xdp")
962306a36Sopenharmony_ci__description("XDP, using ifindex from netdev")
1062306a36Sopenharmony_ci__success __retval(1)
1162306a36Sopenharmony_ci__naked void xdp_using_ifindex_from_netdev(void)
1262306a36Sopenharmony_ci{
1362306a36Sopenharmony_ci	asm volatile ("					\
1462306a36Sopenharmony_ci	r0 = 0;						\
1562306a36Sopenharmony_ci	r2 = *(u32*)(r1 + %[xdp_md_ingress_ifindex]);	\
1662306a36Sopenharmony_ci	if r2 < 1 goto l0_%=;				\
1762306a36Sopenharmony_ci	r0 = 1;						\
1862306a36Sopenharmony_cil0_%=:	exit;						\
1962306a36Sopenharmony_ci"	:
2062306a36Sopenharmony_ci	: __imm_const(xdp_md_ingress_ifindex, offsetof(struct xdp_md, ingress_ifindex))
2162306a36Sopenharmony_ci	: __clobber_all);
2262306a36Sopenharmony_ci}
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cichar _license[] SEC("license") = "GPL";
25

Indexes created Thu Nov 07 10:32:03 CST 2024