brintos

brintos / linux-shallow public Read only

0
0
Text · 1.5 KiB · dd41b82 Raw
61 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <test_progs.h>3#include <linux/btf.h>4#include "netif_receive_skb.skel.h"5 6/* Demonstrate that bpf_snprintf_btf succeeds and that various data types7 * are formatted correctly.8 */9void serial_test_snprintf_btf(void)10{11	struct netif_receive_skb *skel;12	struct netif_receive_skb__bss *bss;13	int err, duration = 0;14 15	skel = netif_receive_skb__open();16	if (CHECK(!skel, "skel_open", "failed to open skeleton\n"))17		return;18 19	err = netif_receive_skb__load(skel);20	if (CHECK(err, "skel_load", "failed to load skeleton: %d\n", err))21		goto cleanup;22 23	bss = skel->bss;24 25	err = netif_receive_skb__attach(skel);26	if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err))27		goto cleanup;28 29	/* generate receive event */30	err = system("ping -c 1 127.0.0.1 > /dev/null");31	if (CHECK(err, "system", "ping failed: %d\n", err))32		goto cleanup;33 34	if (bss->skip) {35		printf("%s:SKIP:no __builtin_btf_type_id\n", __func__);36		test__skip();37		goto cleanup;38	}39 40	/*41	 * Make sure netif_receive_skb program was triggered42	 * and it set expected return values from bpf_trace_printk()s43	 * and all tests ran.44	 */45	if (!ASSERT_GT(bss->ret, 0, "bpf_snprintf_ret"))46		goto cleanup;47 48	if (CHECK(bss->ran_subtests == 0, "check if subtests ran",49		  "no subtests ran, did BPF program run?"))50		goto cleanup;51 52	if (CHECK(bss->num_subtests != bss->ran_subtests,53		  "check all subtests ran",54		  "only ran %d of %d tests\n", bss->num_subtests,55		  bss->ran_subtests))56		goto cleanup;57 58cleanup:59	netif_receive_skb__destroy(skel);60}61