Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 #include <test_progs.h>
0003 #include <linux/btf.h>
0004 #include "netif_receive_skb.skel.h"
0005 
0006 /* Demonstrate that bpf_snprintf_btf succeeds and that various data types
0007  * are formatted correctly.
0008  */
0009 void serial_test_snprintf_btf(void)
0010 {
0011     struct netif_receive_skb *skel;
0012     struct netif_receive_skb__bss *bss;
0013     int err, duration = 0;
0014 
0015     skel = netif_receive_skb__open();
0016     if (CHECK(!skel, "skel_open", "failed to open skeleton\n"))
0017         return;
0018 
0019     err = netif_receive_skb__load(skel);
0020     if (CHECK(err, "skel_load", "failed to load skeleton: %d\n", err))
0021         goto cleanup;
0022 
0023     bss = skel->bss;
0024 
0025     err = netif_receive_skb__attach(skel);
0026     if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err))
0027         goto cleanup;
0028 
0029     /* generate receive event */
0030     err = system("ping -c 1 127.0.0.1 > /dev/null");
0031     if (CHECK(err, "system", "ping failed: %d\n", err))
0032         goto cleanup;
0033 
0034     if (bss->skip) {
0035         printf("%s:SKIP:no __builtin_btf_type_id\n", __func__);
0036         test__skip();
0037         goto cleanup;
0038     }
0039 
0040     /*
0041      * Make sure netif_receive_skb program was triggered
0042      * and it set expected return values from bpf_trace_printk()s
0043      * and all tests ran.
0044      */
0045     if (!ASSERT_GT(bss->ret, 0, "bpf_snprintf_ret"))
0046         goto cleanup;
0047 
0048     if (CHECK(bss->ran_subtests == 0, "check if subtests ran",
0049           "no subtests ran, did BPF program run?"))
0050         goto cleanup;
0051 
0052     if (CHECK(bss->num_subtests != bss->ran_subtests,
0053           "check all subtests ran",
0054           "only ran %d of %d tests\n", bss->num_subtests,
0055           bss->ran_subtests))
0056         goto cleanup;
0057 
0058 cleanup:
0059     netif_receive_skb__destroy(skel);
0060 }