Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/bpf: fix compilation error for flow_dissector.c

When building the tools/testing/selftest/bpf subdirectory,
(running both a local directory "make" and a
"make -C tools/testing/selftests/bpf") I keep hitting the
following compilation error:

prog_tests/flow_dissector.c: In function ‘create_tap’:
prog_tests/flow_dissector.c:150:38: error: ‘IFF_NAPI’ undeclared (first
use in this function)
.ifr_flags = IFF_TAP | IFF_NO_PI | IFF_NAPI | IFF_NAPI_FRAGS,
^
prog_tests/flow_dissector.c:150:38: note: each undeclared identifier is
reported only once for each function it appears in
prog_tests/flow_dissector.c:150:49: error: ‘IFF_NAPI_FRAGS’ undeclared

Adding include/uapi/linux/if_tun.h to tools/include/uapi/linux
resolves the problem and ensures the compilation of the file
does not depend on having up-to-date kernel headers locally.

Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>

authored by

Alan Maguire and committed by
Daniel Borkmann
fe937ea1 d0a3a4b2

+114
+114
tools/include/uapi/linux/if_tun.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2 + /* 3 + * Universal TUN/TAP device driver. 4 + * Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com> 5 + * 6 + * This program is free software; you can redistribute it and/or modify 7 + * it under the terms of the GNU General Public License as published by 8 + * the Free Software Foundation; either version 2 of the License, or 9 + * (at your option) any later version. 10 + * 11 + * This program is distributed in the hope that it will be useful, 12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + * GNU General Public License for more details. 15 + */ 16 + 17 + #ifndef _UAPI__IF_TUN_H 18 + #define _UAPI__IF_TUN_H 19 + 20 + #include <linux/types.h> 21 + #include <linux/if_ether.h> 22 + #include <linux/filter.h> 23 + 24 + /* Read queue size */ 25 + #define TUN_READQ_SIZE 500 26 + /* TUN device type flags: deprecated. Use IFF_TUN/IFF_TAP instead. */ 27 + #define TUN_TUN_DEV IFF_TUN 28 + #define TUN_TAP_DEV IFF_TAP 29 + #define TUN_TYPE_MASK 0x000f 30 + 31 + /* Ioctl defines */ 32 + #define TUNSETNOCSUM _IOW('T', 200, int) 33 + #define TUNSETDEBUG _IOW('T', 201, int) 34 + #define TUNSETIFF _IOW('T', 202, int) 35 + #define TUNSETPERSIST _IOW('T', 203, int) 36 + #define TUNSETOWNER _IOW('T', 204, int) 37 + #define TUNSETLINK _IOW('T', 205, int) 38 + #define TUNSETGROUP _IOW('T', 206, int) 39 + #define TUNGETFEATURES _IOR('T', 207, unsigned int) 40 + #define TUNSETOFFLOAD _IOW('T', 208, unsigned int) 41 + #define TUNSETTXFILTER _IOW('T', 209, unsigned int) 42 + #define TUNGETIFF _IOR('T', 210, unsigned int) 43 + #define TUNGETSNDBUF _IOR('T', 211, int) 44 + #define TUNSETSNDBUF _IOW('T', 212, int) 45 + #define TUNATTACHFILTER _IOW('T', 213, struct sock_fprog) 46 + #define TUNDETACHFILTER _IOW('T', 214, struct sock_fprog) 47 + #define TUNGETVNETHDRSZ _IOR('T', 215, int) 48 + #define TUNSETVNETHDRSZ _IOW('T', 216, int) 49 + #define TUNSETQUEUE _IOW('T', 217, int) 50 + #define TUNSETIFINDEX _IOW('T', 218, unsigned int) 51 + #define TUNGETFILTER _IOR('T', 219, struct sock_fprog) 52 + #define TUNSETVNETLE _IOW('T', 220, int) 53 + #define TUNGETVNETLE _IOR('T', 221, int) 54 + /* The TUNSETVNETBE and TUNGETVNETBE ioctls are for cross-endian support on 55 + * little-endian hosts. Not all kernel configurations support them, but all 56 + * configurations that support SET also support GET. 57 + */ 58 + #define TUNSETVNETBE _IOW('T', 222, int) 59 + #define TUNGETVNETBE _IOR('T', 223, int) 60 + #define TUNSETSTEERINGEBPF _IOR('T', 224, int) 61 + #define TUNSETFILTEREBPF _IOR('T', 225, int) 62 + #define TUNSETCARRIER _IOW('T', 226, int) 63 + #define TUNGETDEVNETNS _IO('T', 227) 64 + 65 + /* TUNSETIFF ifr flags */ 66 + #define IFF_TUN 0x0001 67 + #define IFF_TAP 0x0002 68 + #define IFF_NAPI 0x0010 69 + #define IFF_NAPI_FRAGS 0x0020 70 + #define IFF_NO_PI 0x1000 71 + /* This flag has no real effect */ 72 + #define IFF_ONE_QUEUE 0x2000 73 + #define IFF_VNET_HDR 0x4000 74 + #define IFF_TUN_EXCL 0x8000 75 + #define IFF_MULTI_QUEUE 0x0100 76 + #define IFF_ATTACH_QUEUE 0x0200 77 + #define IFF_DETACH_QUEUE 0x0400 78 + /* read-only flag */ 79 + #define IFF_PERSIST 0x0800 80 + #define IFF_NOFILTER 0x1000 81 + 82 + /* Socket options */ 83 + #define TUN_TX_TIMESTAMP 1 84 + 85 + /* Features for GSO (TUNSETOFFLOAD). */ 86 + #define TUN_F_CSUM 0x01 /* You can hand me unchecksummed packets. */ 87 + #define TUN_F_TSO4 0x02 /* I can handle TSO for IPv4 packets */ 88 + #define TUN_F_TSO6 0x04 /* I can handle TSO for IPv6 packets */ 89 + #define TUN_F_TSO_ECN 0x08 /* I can handle TSO with ECN bits. */ 90 + #define TUN_F_UFO 0x10 /* I can handle UFO packets */ 91 + 92 + /* Protocol info prepended to the packets (when IFF_NO_PI is not set) */ 93 + #define TUN_PKT_STRIP 0x0001 94 + struct tun_pi { 95 + __u16 flags; 96 + __be16 proto; 97 + }; 98 + 99 + /* 100 + * Filter spec (used for SETXXFILTER ioctls) 101 + * This stuff is applicable only to the TAP (Ethernet) devices. 102 + * If the count is zero the filter is disabled and the driver accepts 103 + * all packets (promisc mode). 104 + * If the filter is enabled in order to accept broadcast packets 105 + * broadcast addr must be explicitly included in the addr list. 106 + */ 107 + #define TUN_FLT_ALLMULTI 0x0001 /* Accept all multicast packets */ 108 + struct tun_filter { 109 + __u16 flags; /* TUN_FLT_ flags see above */ 110 + __u16 count; /* Number of addresses */ 111 + __u8 addr[0][ETH_ALEN]; 112 + }; 113 + 114 + #endif /* _UAPI__IF_TUN_H */