diff options
| author | Jesper Dangaard Brouer <brouer@redhat.com> | 2017-05-01 05:26:15 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2017-05-01 10:42:37 -0400 |
| commit | 6387d0111ca4740b69a082a92fc373185af11133 (patch) | |
| tree | ac6e2a31dc6650b92de059ce1c6261f7fd33a65a /samples | |
| parent | d74a32acd59a8ccd8e209af3f4cf533e0359d355 (diff) | |
samples/bpf: fix SKB_MODE flag to be a 32-bit unsigned int
The kernel side of XDP_FLAGS_SKB_MODE is unsigned, and the rtnetlink
IFLA_XDP_FLAGS is defined as NLA_U32. Thus, userspace programs under
samples/bpf/ should use the correct type.
Fixes: 3993f2cb983b ("samples/bpf: Add support for SKB_MODE to xdp1 and xdp_tx_iptunnel")
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'samples')
| -rw-r--r-- | samples/bpf/bpf_load.c | 3 | ||||
| -rw-r--r-- | samples/bpf/bpf_load.h | 2 | ||||
| -rw-r--r-- | samples/bpf/xdp1_user.c | 8 | ||||
| -rw-r--r-- | samples/bpf/xdp_tx_iptunnel_user.c | 8 |
4 files changed, 11 insertions, 10 deletions
diff --git a/samples/bpf/bpf_load.c b/samples/bpf/bpf_load.c index 0ec0dea3c41e..4221dc359453 100644 --- a/samples/bpf/bpf_load.c +++ b/samples/bpf/bpf_load.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/perf_event.h> | 14 | #include <linux/perf_event.h> |
| 15 | #include <linux/netlink.h> | 15 | #include <linux/netlink.h> |
| 16 | #include <linux/rtnetlink.h> | 16 | #include <linux/rtnetlink.h> |
| 17 | #include <linux/types.h> | ||
| 17 | #include <sys/types.h> | 18 | #include <sys/types.h> |
| 18 | #include <sys/socket.h> | 19 | #include <sys/socket.h> |
| 19 | #include <sys/syscall.h> | 20 | #include <sys/syscall.h> |
| @@ -585,7 +586,7 @@ struct ksym *ksym_search(long key) | |||
| 585 | return &syms[0]; | 586 | return &syms[0]; |
| 586 | } | 587 | } |
| 587 | 588 | ||
| 588 | int set_link_xdp_fd(int ifindex, int fd, int flags) | 589 | int set_link_xdp_fd(int ifindex, int fd, __u32 flags) |
| 589 | { | 590 | { |
| 590 | struct sockaddr_nl sa; | 591 | struct sockaddr_nl sa; |
| 591 | int sock, seq = 0, len, ret = -1; | 592 | int sock, seq = 0, len, ret = -1; |
diff --git a/samples/bpf/bpf_load.h b/samples/bpf/bpf_load.h index 6bfd75ec6a16..05822f83173a 100644 --- a/samples/bpf/bpf_load.h +++ b/samples/bpf/bpf_load.h | |||
| @@ -47,5 +47,5 @@ struct ksym { | |||
| 47 | 47 | ||
| 48 | int load_kallsyms(void); | 48 | int load_kallsyms(void); |
| 49 | struct ksym *ksym_search(long key); | 49 | struct ksym *ksym_search(long key); |
| 50 | int set_link_xdp_fd(int ifindex, int fd, int flags); | 50 | int set_link_xdp_fd(int ifindex, int fd, __u32 flags); |
| 51 | #endif | 51 | #endif |
diff --git a/samples/bpf/xdp1_user.c b/samples/bpf/xdp1_user.c index deb05e630d84..378850c70eb8 100644 --- a/samples/bpf/xdp1_user.c +++ b/samples/bpf/xdp1_user.c | |||
| @@ -20,11 +20,11 @@ | |||
| 20 | #include "libbpf.h" | 20 | #include "libbpf.h" |
| 21 | 21 | ||
| 22 | static int ifindex; | 22 | static int ifindex; |
| 23 | static int flags; | 23 | static __u32 xdp_flags; |
| 24 | 24 | ||
| 25 | static void int_exit(int sig) | 25 | static void int_exit(int sig) |
| 26 | { | 26 | { |
| 27 | set_link_xdp_fd(ifindex, -1, flags); | 27 | set_link_xdp_fd(ifindex, -1, xdp_flags); |
| 28 | exit(0); | 28 | exit(0); |
| 29 | } | 29 | } |
| 30 | 30 | ||
| @@ -75,7 +75,7 @@ int main(int argc, char **argv) | |||
| 75 | while ((opt = getopt(argc, argv, optstr)) != -1) { | 75 | while ((opt = getopt(argc, argv, optstr)) != -1) { |
| 76 | switch (opt) { | 76 | switch (opt) { |
| 77 | case 'S': | 77 | case 'S': |
| 78 | flags |= XDP_FLAGS_SKB_MODE; | 78 | xdp_flags |= XDP_FLAGS_SKB_MODE; |
| 79 | break; | 79 | break; |
| 80 | default: | 80 | default: |
| 81 | usage(basename(argv[0])); | 81 | usage(basename(argv[0])); |
| @@ -103,7 +103,7 @@ int main(int argc, char **argv) | |||
| 103 | 103 | ||
| 104 | signal(SIGINT, int_exit); | 104 | signal(SIGINT, int_exit); |
| 105 | 105 | ||
| 106 | if (set_link_xdp_fd(ifindex, prog_fd[0], flags) < 0) { | 106 | if (set_link_xdp_fd(ifindex, prog_fd[0], xdp_flags) < 0) { |
| 107 | printf("link set xdp fd failed\n"); | 107 | printf("link set xdp fd failed\n"); |
| 108 | return 1; | 108 | return 1; |
| 109 | } | 109 | } |
diff --git a/samples/bpf/xdp_tx_iptunnel_user.c b/samples/bpf/xdp_tx_iptunnel_user.c index cb2bda7b5346..880dd4aebfa4 100644 --- a/samples/bpf/xdp_tx_iptunnel_user.c +++ b/samples/bpf/xdp_tx_iptunnel_user.c | |||
| @@ -142,8 +142,8 @@ int main(int argc, char **argv) | |||
| 142 | struct iptnl_info tnl = {}; | 142 | struct iptnl_info tnl = {}; |
| 143 | struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; | 143 | struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; |
| 144 | struct vip vip = {}; | 144 | struct vip vip = {}; |
| 145 | __u32 xdp_flags = 0; | ||
| 145 | char filename[256]; | 146 | char filename[256]; |
| 146 | int flags = 0; | ||
| 147 | int opt; | 147 | int opt; |
| 148 | int i; | 148 | int i; |
| 149 | 149 | ||
| @@ -204,7 +204,7 @@ int main(int argc, char **argv) | |||
| 204 | kill_after_s = atoi(optarg); | 204 | kill_after_s = atoi(optarg); |
| 205 | break; | 205 | break; |
| 206 | case 'S': | 206 | case 'S': |
| 207 | flags |= XDP_FLAGS_SKB_MODE; | 207 | xdp_flags |= XDP_FLAGS_SKB_MODE; |
| 208 | break; | 208 | break; |
| 209 | default: | 209 | default: |
| 210 | usage(argv[0]); | 210 | usage(argv[0]); |
| @@ -248,14 +248,14 @@ int main(int argc, char **argv) | |||
| 248 | } | 248 | } |
| 249 | } | 249 | } |
| 250 | 250 | ||
| 251 | if (set_link_xdp_fd(ifindex, prog_fd[0], flags) < 0) { | 251 | if (set_link_xdp_fd(ifindex, prog_fd[0], xdp_flags) < 0) { |
| 252 | printf("link set xdp fd failed\n"); | 252 | printf("link set xdp fd failed\n"); |
| 253 | return 1; | 253 | return 1; |
| 254 | } | 254 | } |
| 255 | 255 | ||
| 256 | poll_stats(kill_after_s); | 256 | poll_stats(kill_after_s); |
| 257 | 257 | ||
| 258 | set_link_xdp_fd(ifindex, -1, flags); | 258 | set_link_xdp_fd(ifindex, -1, xdp_flags); |
| 259 | 259 | ||
| 260 | return 0; | 260 | return 0; |
| 261 | } | 261 | } |
