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