samples/bpf: adapt samples/bpf to bpf_xdp_xxx() APIs
authorAndrii Nakryiko <andrii@kernel.org>
Thu, 20 Jan 2022 06:14:22 +0000 (22:14 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 21 Jan 2022 05:22:02 +0000 (21:22 -0800)
Use new bpf_xdp_*() APIs across all XDP-related BPF samples.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20220120061422.2710637-5-andrii@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
samples/bpf/xdp1_user.c
samples/bpf/xdp_adjust_tail_user.c
samples/bpf/xdp_fwd_user.c
samples/bpf/xdp_router_ipv4_user.c
samples/bpf/xdp_rxq_info_user.c
samples/bpf/xdp_sample_pkts_user.c
samples/bpf/xdp_sample_user.c
samples/bpf/xdp_tx_iptunnel_user.c
samples/bpf/xdpsock_ctrl_proc.c
samples/bpf/xdpsock_user.c
samples/bpf/xsk_fwd.c

index 8675fa5273df8831cd7415f1ce9514f176c1fe55..3ec8ad9c175088abcfbef5c65106753c0c26213c 100644 (file)
@@ -26,12 +26,12 @@ static void int_exit(int sig)
 {
        __u32 curr_prog_id = 0;
 
-       if (bpf_get_link_xdp_id(ifindex, &curr_prog_id, xdp_flags)) {
-               printf("bpf_get_link_xdp_id failed\n");
+       if (bpf_xdp_query_id(ifindex, xdp_flags, &curr_prog_id)) {
+               printf("bpf_xdp_query_id failed\n");
                exit(1);
        }
        if (prog_id == curr_prog_id)
-               bpf_set_link_xdp_fd(ifindex, -1, xdp_flags);
+               bpf_xdp_detach(ifindex, xdp_flags, NULL);
        else if (!curr_prog_id)
                printf("couldn't find a prog id on a given interface\n");
        else
@@ -143,7 +143,7 @@ int main(int argc, char **argv)
        signal(SIGINT, int_exit);
        signal(SIGTERM, int_exit);
 
-       if (bpf_set_link_xdp_fd(ifindex, prog_fd, xdp_flags) < 0) {
+       if (bpf_xdp_attach(ifindex, prog_fd, xdp_flags, NULL) < 0) {
                printf("link set xdp fd failed\n");
                return 1;
        }
index a70b094c8ec57e0937def9965a1c3140e169fd4c..6c61d5f570fbfbc15aec06c9d4b6fa03d3f6fd09 100644 (file)
@@ -34,12 +34,12 @@ static void int_exit(int sig)
        __u32 curr_prog_id = 0;
 
        if (ifindex > -1) {
-               if (bpf_get_link_xdp_id(ifindex, &curr_prog_id, xdp_flags)) {
-                       printf("bpf_get_link_xdp_id failed\n");
+               if (bpf_xdp_query_id(ifindex, xdp_flags, &curr_prog_id)) {
+                       printf("bpf_xdp_query_id failed\n");
                        exit(1);
                }
                if (prog_id == curr_prog_id)
-                       bpf_set_link_xdp_fd(ifindex, -1, xdp_flags);
+                       bpf_xdp_detach(ifindex, xdp_flags, NULL);
                else if (!curr_prog_id)
                        printf("couldn't find a prog id on a given iface\n");
                else
@@ -173,7 +173,7 @@ int main(int argc, char **argv)
        signal(SIGINT, int_exit);
        signal(SIGTERM, int_exit);
 
-       if (bpf_set_link_xdp_fd(ifindex, prog_fd, xdp_flags) < 0) {
+       if (bpf_xdp_attach(ifindex, prog_fd, xdp_flags, NULL) < 0) {
                printf("link set xdp fd failed\n");
                return 1;
        }
index 4ad896782f77cade74585d929e0443051a68552a..79ccd9891924c77238cf31039dac6a573d6693b6 100644 (file)
@@ -33,7 +33,7 @@ static int do_attach(int idx, int prog_fd, int map_fd, const char *name)
 {
        int err;
 
-       err = bpf_set_link_xdp_fd(idx, prog_fd, xdp_flags);
+       err = bpf_xdp_attach(idx, prog_fd, xdp_flags, NULL);
        if (err < 0) {
                printf("ERROR: failed to attach program to %s\n", name);
                return err;
@@ -51,7 +51,7 @@ static int do_detach(int idx, const char *name)
 {
        int err;
 
-       err = bpf_set_link_xdp_fd(idx, -1, xdp_flags);
+       err = bpf_xdp_detach(idx, xdp_flags, NULL);
        if (err < 0)
                printf("ERROR: failed to detach program from %s\n", name);
 
index cfaf7e50e4316981595a2b5333bbda04498c45ea..2d565ba54b8caec908e12cccfb684dd5859820b0 100644 (file)
@@ -43,13 +43,13 @@ static void int_exit(int sig)
        int i = 0;
 
        for (i = 0; i < total_ifindex; i++) {
-               if (bpf_get_link_xdp_id(ifindex_list[i], &prog_id, flags)) {
-                       printf("bpf_get_link_xdp_id on iface %d failed\n",
+               if (bpf_xdp_query_id(ifindex_list[i], flags, &prog_id)) {
+                       printf("bpf_xdp_query_id on iface %d failed\n",
                               ifindex_list[i]);
                        exit(1);
                }
                if (prog_id_list[i] == prog_id)
-                       bpf_set_link_xdp_fd(ifindex_list[i], -1, flags);
+                       bpf_xdp_detach(ifindex_list[i], flags, NULL);
                else if (!prog_id)
                        printf("couldn't find a prog id on iface %d\n",
                               ifindex_list[i]);
@@ -716,12 +716,12 @@ int main(int ac, char **argv)
        }
        prog_id_list = (__u32 *)calloc(total_ifindex, sizeof(__u32 *));
        for (i = 0; i < total_ifindex; i++) {
-               if (bpf_set_link_xdp_fd(ifindex_list[i], prog_fd, flags) < 0) {
+               if (bpf_xdp_attach(ifindex_list[i], prog_fd, flags, NULL) < 0) {
                        printf("link set xdp fd failed\n");
                        int recovery_index = i;
 
                        for (i = 0; i < recovery_index; i++)
-                               bpf_set_link_xdp_fd(ifindex_list[i], -1, flags);
+                               bpf_xdp_detach(ifindex_list[i], flags, NULL);
 
                        return 1;
                }
index 4033f345aa291365629805f8fac5d24c18fc0329..fb2532d13aac0da9c96d6a9965052b4e734a04a9 100644 (file)
@@ -62,15 +62,15 @@ static void int_exit(int sig)
        __u32 curr_prog_id = 0;
 
        if (ifindex > -1) {
-               if (bpf_get_link_xdp_id(ifindex, &curr_prog_id, xdp_flags)) {
-                       printf("bpf_get_link_xdp_id failed\n");
+               if (bpf_xdp_query_id(ifindex, xdp_flags, &curr_prog_id)) {
+                       printf("bpf_xdp_query_id failed\n");
                        exit(EXIT_FAIL);
                }
                if (prog_id == curr_prog_id) {
                        fprintf(stderr,
                                "Interrupted: Removing XDP program on ifindex:%d device:%s\n",
                                ifindex, ifname);
-                       bpf_set_link_xdp_fd(ifindex, -1, xdp_flags);
+                       bpf_xdp_detach(ifindex, xdp_flags, NULL);
                } else if (!curr_prog_id) {
                        printf("couldn't find a prog id on a given iface\n");
                } else {
@@ -582,7 +582,7 @@ int main(int argc, char **argv)
        signal(SIGINT, int_exit);
        signal(SIGTERM, int_exit);
 
-       if (bpf_set_link_xdp_fd(ifindex, prog_fd, xdp_flags) < 0) {
+       if (bpf_xdp_attach(ifindex, prog_fd, xdp_flags, NULL) < 0) {
                fprintf(stderr, "link set xdp fd failed\n");
                return EXIT_FAIL_XDP;
        }
index 587eacb491037c099cebdea512fe9f57dd55e7ed..0a2b3e997aed06206982b0084ec251db3bb37480 100644 (file)
@@ -30,7 +30,7 @@ static int do_attach(int idx, int fd, const char *name)
        __u32 info_len = sizeof(info);
        int err;
 
-       err = bpf_set_link_xdp_fd(idx, fd, xdp_flags);
+       err = bpf_xdp_attach(idx, fd, xdp_flags, NULL);
        if (err < 0) {
                printf("ERROR: failed to attach program to %s\n", name);
                return err;
@@ -51,13 +51,13 @@ static int do_detach(int idx, const char *name)
        __u32 curr_prog_id = 0;
        int err = 0;
 
-       err = bpf_get_link_xdp_id(idx, &curr_prog_id, xdp_flags);
+       err = bpf_xdp_query_id(idx, xdp_flags, &curr_prog_id);
        if (err) {
-               printf("bpf_get_link_xdp_id failed\n");
+               printf("bpf_xdp_query_id failed\n");
                return err;
        }
        if (prog_id == curr_prog_id) {
-               err = bpf_set_link_xdp_fd(idx, -1, xdp_flags);
+               err = bpf_xdp_detach(idx, xdp_flags, NULL);
                if (err < 0)
                        printf("ERROR: failed to detach prog from %s\n", name);
        } else if (!curr_prog_id) {
index 8740838e7767929d0a9bcea961246113ba583914..ae70a7943d85f0e76014999eca5d5d31f123eef9 100644 (file)
@@ -1265,7 +1265,7 @@ static int __sample_remove_xdp(int ifindex, __u32 prog_id, int xdp_flags)
        int ret;
 
        if (prog_id) {
-               ret = bpf_get_link_xdp_id(ifindex, &cur_prog_id, xdp_flags);
+               ret = bpf_xdp_query_id(ifindex, xdp_flags, &cur_prog_id);
                if (ret < 0)
                        return -errno;
 
@@ -1278,7 +1278,7 @@ static int __sample_remove_xdp(int ifindex, __u32 prog_id, int xdp_flags)
                }
        }
 
-       return bpf_set_link_xdp_fd(ifindex, -1, xdp_flags);
+       return bpf_xdp_detach(ifindex, xdp_flags, NULL);
 }
 
 int sample_install_xdp(struct bpf_program *xdp_prog, int ifindex, bool generic,
@@ -1295,8 +1295,7 @@ int sample_install_xdp(struct bpf_program *xdp_prog, int ifindex, bool generic,
 
        xdp_flags |= !force ? XDP_FLAGS_UPDATE_IF_NOEXIST : 0;
        xdp_flags |= generic ? XDP_FLAGS_SKB_MODE : XDP_FLAGS_DRV_MODE;
-       ret = bpf_set_link_xdp_fd(ifindex, bpf_program__fd(xdp_prog),
-                                 xdp_flags);
+       ret = bpf_xdp_attach(ifindex, bpf_program__fd(xdp_prog), xdp_flags, NULL);
        if (ret < 0) {
                ret = -errno;
                fprintf(stderr,
@@ -1308,7 +1307,7 @@ int sample_install_xdp(struct bpf_program *xdp_prog, int ifindex, bool generic,
                return ret;
        }
 
-       ret = bpf_get_link_xdp_id(ifindex, &prog_id, xdp_flags);
+       ret = bpf_xdp_query_id(ifindex, xdp_flags, &prog_id);
        if (ret < 0) {
                ret = -errno;
                fprintf(stderr,
index 1d4f305d02aadc9d508313ba75586ed2df82b016..7370c03c96fc0bd0d9aaeb96584c60aaeefaaa34 100644 (file)
@@ -32,12 +32,12 @@ static void int_exit(int sig)
        __u32 curr_prog_id = 0;
 
        if (ifindex > -1) {
-               if (bpf_get_link_xdp_id(ifindex, &curr_prog_id, xdp_flags)) {
-                       printf("bpf_get_link_xdp_id failed\n");
+               if (bpf_xdp_query_id(ifindex, xdp_flags, &curr_prog_id)) {
+                       printf("bpf_xdp_query_id failed\n");
                        exit(1);
                }
                if (prog_id == curr_prog_id)
-                       bpf_set_link_xdp_fd(ifindex, -1, xdp_flags);
+                       bpf_xdp_detach(ifindex, xdp_flags, NULL);
                else if (!curr_prog_id)
                        printf("couldn't find a prog id on a given iface\n");
                else
@@ -288,7 +288,7 @@ int main(int argc, char **argv)
                }
        }
 
-       if (bpf_set_link_xdp_fd(ifindex, prog_fd, xdp_flags) < 0) {
+       if (bpf_xdp_attach(ifindex, prog_fd, xdp_flags, NULL) < 0) {
                printf("link set xdp fd failed\n");
                return 1;
        }
@@ -302,7 +302,7 @@ int main(int argc, char **argv)
 
        poll_stats(kill_after_s);
 
-       bpf_set_link_xdp_fd(ifindex, -1, xdp_flags);
+       bpf_xdp_detach(ifindex, xdp_flags, NULL);
 
        return 0;
 }
index cc4408797ab702a22cf546e1d6dd1bcac8caabc1..28b5f2a9fa080179a62d44c3407f6e095b3fe9c5 100644 (file)
@@ -173,7 +173,7 @@ main(int argc, char **argv)
        unlink(SOCKET_NAME);
 
        /* Unset fd for given ifindex */
-       err = bpf_set_link_xdp_fd(ifindex, -1, 0);
+       err = bpf_xdp_detach(ifindex, 0, NULL);
        if (err) {
                fprintf(stderr, "Error when unsetting bpf prog_fd for ifindex(%d)\n", ifindex);
                return err;
index aa50864e4415a508d96ca82aa1bd14dcbc066bf9..19288a2bbc756d3f17deca5a193743467680973e 100644 (file)
@@ -571,13 +571,13 @@ static void remove_xdp_program(void)
 {
        u32 curr_prog_id = 0;
 
-       if (bpf_get_link_xdp_id(opt_ifindex, &curr_prog_id, opt_xdp_flags)) {
-               printf("bpf_get_link_xdp_id failed\n");
+       if (bpf_xdp_query_id(opt_ifindex, opt_xdp_flags, &curr_prog_id)) {
+               printf("bpf_xdp_query_id failed\n");
                exit(EXIT_FAILURE);
        }
 
        if (prog_id == curr_prog_id)
-               bpf_set_link_xdp_fd(opt_ifindex, -1, opt_xdp_flags);
+               bpf_xdp_detach(opt_ifindex, opt_xdp_flags, NULL);
        else if (!curr_prog_id)
                printf("couldn't find a prog id on a given interface\n");
        else
@@ -1027,7 +1027,7 @@ static struct xsk_socket_info *xsk_configure_socket(struct xsk_umem_info *umem,
        if (ret)
                exit_with_error(-ret);
 
-       ret = bpf_get_link_xdp_id(opt_ifindex, &prog_id, opt_xdp_flags);
+       ret = bpf_xdp_query_id(opt_ifindex, opt_xdp_flags, &prog_id);
        if (ret)
                exit_with_error(-ret);
 
@@ -1760,7 +1760,7 @@ static void load_xdp_program(char **argv, struct bpf_object **obj)
                exit(EXIT_FAILURE);
        }
 
-       if (bpf_set_link_xdp_fd(opt_ifindex, prog_fd, opt_xdp_flags) < 0) {
+       if (bpf_xdp_attach(opt_ifindex, prog_fd, opt_xdp_flags, NULL) < 0) {
                fprintf(stderr, "ERROR: link set xdp fd failed\n");
                exit(EXIT_FAILURE);
        }
index 52e7c4ffd2282e7515fbefd6d519702a344113df..2220509588a0b15ae58b15f7e1a5def964cea48d 100644 (file)
@@ -974,8 +974,8 @@ static void remove_xdp_program(void)
        int i;
 
        for (i = 0 ; i < n_ports; i++)
-               bpf_set_link_xdp_fd(if_nametoindex(port_params[i].iface), -1,
-                                   port_params[i].xsk_cfg.xdp_flags);
+               bpf_xdp_detach(if_nametoindex(port_params[i].iface),
+                              port_params[i].xsk_cfg.xdp_flags, NULL);
 }
 
 int main(int argc, char **argv)