Skip to content

Commit e36b31a

Browse files
captain5050kernel-patches-bot
authored andcommitted
tools/include: Add rtnetlink.h, id_addr.h and neighbour.h
tools/lib/bpf/netlink.c depends on rtnetlink.h and netlink.h (via nlattr.h). Older versions of rtnetlink.h and netlink.h can cause duplicate conflicting definitions to occur, as things like header guards don't agree. To avoid these mismatches add rtnetlink.h, if_addr.h and neighbour.h to tools/include with the standard difference check. Signed-off-by: Ian Rogers <[email protected]>
1 parent dec143b commit e36b31a

File tree

4 files changed

+1067
-0
lines changed

4 files changed

+1067
-0
lines changed

tools/include/uapi/linux/if_addr.h

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2+
#ifndef __LINUX_IF_ADDR_H
3+
#define __LINUX_IF_ADDR_H
4+
5+
#include <linux/types.h>
6+
#include <linux/netlink.h>
7+
8+
struct ifaddrmsg {
9+
__u8 ifa_family;
10+
__u8 ifa_prefixlen; /* The prefix length */
11+
__u8 ifa_flags; /* Flags */
12+
__u8 ifa_scope; /* Address scope */
13+
__u32 ifa_index; /* Link index */
14+
};
15+
16+
/*
17+
* Important comment:
18+
* IFA_ADDRESS is prefix address, rather than local interface address.
19+
* It makes no difference for normally configured broadcast interfaces,
20+
* but for point-to-point IFA_ADDRESS is DESTINATION address,
21+
* local address is supplied in IFA_LOCAL attribute.
22+
*
23+
* IFA_FLAGS is a u32 attribute that extends the u8 field ifa_flags.
24+
* If present, the value from struct ifaddrmsg will be ignored.
25+
*/
26+
enum {
27+
IFA_UNSPEC,
28+
IFA_ADDRESS,
29+
IFA_LOCAL,
30+
IFA_LABEL,
31+
IFA_BROADCAST,
32+
IFA_ANYCAST,
33+
IFA_CACHEINFO,
34+
IFA_MULTICAST,
35+
IFA_FLAGS,
36+
IFA_RT_PRIORITY, /* u32, priority/metric for prefix route */
37+
IFA_TARGET_NETNSID,
38+
__IFA_MAX,
39+
};
40+
41+
#define IFA_MAX (__IFA_MAX - 1)
42+
43+
/* ifa_flags */
44+
#define IFA_F_SECONDARY 0x01
45+
#define IFA_F_TEMPORARY IFA_F_SECONDARY
46+
47+
#define IFA_F_NODAD 0x02
48+
#define IFA_F_OPTIMISTIC 0x04
49+
#define IFA_F_DADFAILED 0x08
50+
#define IFA_F_HOMEADDRESS 0x10
51+
#define IFA_F_DEPRECATED 0x20
52+
#define IFA_F_TENTATIVE 0x40
53+
#define IFA_F_PERMANENT 0x80
54+
#define IFA_F_MANAGETEMPADDR 0x100
55+
#define IFA_F_NOPREFIXROUTE 0x200
56+
#define IFA_F_MCAUTOJOIN 0x400
57+
#define IFA_F_STABLE_PRIVACY 0x800
58+
59+
struct ifa_cacheinfo {
60+
__u32 ifa_prefered;
61+
__u32 ifa_valid;
62+
__u32 cstamp; /* created timestamp, hundredths of seconds */
63+
__u32 tstamp; /* updated timestamp, hundredths of seconds */
64+
};
65+
66+
/* backwards compatibility for userspace */
67+
#ifndef __KERNEL__
68+
#define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
69+
#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
70+
#endif
71+
72+
#endif

tools/include/uapi/linux/neighbour.h

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2+
#ifndef __LINUX_NEIGHBOUR_H
3+
#define __LINUX_NEIGHBOUR_H
4+
5+
#include <linux/types.h>
6+
#include <linux/netlink.h>
7+
8+
struct ndmsg {
9+
__u8 ndm_family;
10+
__u8 ndm_pad1;
11+
__u16 ndm_pad2;
12+
__s32 ndm_ifindex;
13+
__u16 ndm_state;
14+
__u8 ndm_flags;
15+
__u8 ndm_type;
16+
};
17+
18+
enum {
19+
NDA_UNSPEC,
20+
NDA_DST,
21+
NDA_LLADDR,
22+
NDA_CACHEINFO,
23+
NDA_PROBES,
24+
NDA_VLAN,
25+
NDA_PORT,
26+
NDA_VNI,
27+
NDA_IFINDEX,
28+
NDA_MASTER,
29+
NDA_LINK_NETNSID,
30+
NDA_SRC_VNI,
31+
NDA_PROTOCOL, /* Originator of entry */
32+
NDA_NH_ID,
33+
NDA_FDB_EXT_ATTRS,
34+
__NDA_MAX
35+
};
36+
37+
#define NDA_MAX (__NDA_MAX - 1)
38+
39+
/*
40+
* Neighbor Cache Entry Flags
41+
*/
42+
43+
#define NTF_USE 0x01
44+
#define NTF_SELF 0x02
45+
#define NTF_MASTER 0x04
46+
#define NTF_PROXY 0x08 /* == ATF_PUBL */
47+
#define NTF_EXT_LEARNED 0x10
48+
#define NTF_OFFLOADED 0x20
49+
#define NTF_STICKY 0x40
50+
#define NTF_ROUTER 0x80
51+
52+
/*
53+
* Neighbor Cache Entry States.
54+
*/
55+
56+
#define NUD_INCOMPLETE 0x01
57+
#define NUD_REACHABLE 0x02
58+
#define NUD_STALE 0x04
59+
#define NUD_DELAY 0x08
60+
#define NUD_PROBE 0x10
61+
#define NUD_FAILED 0x20
62+
63+
/* Dummy states */
64+
#define NUD_NOARP 0x40
65+
#define NUD_PERMANENT 0x80
66+
#define NUD_NONE 0x00
67+
68+
/* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change
69+
and make no address resolution or NUD.
70+
NUD_PERMANENT also cannot be deleted by garbage collectors.
71+
*/
72+
73+
struct nda_cacheinfo {
74+
__u32 ndm_confirmed;
75+
__u32 ndm_used;
76+
__u32 ndm_updated;
77+
__u32 ndm_refcnt;
78+
};
79+
80+
/*****************************************************************
81+
* Neighbour tables specific messages.
82+
*
83+
* To retrieve the neighbour tables send RTM_GETNEIGHTBL with the
84+
* NLM_F_DUMP flag set. Every neighbour table configuration is
85+
* spread over multiple messages to avoid running into message
86+
* size limits on systems with many interfaces. The first message
87+
* in the sequence transports all not device specific data such as
88+
* statistics, configuration, and the default parameter set.
89+
* This message is followed by 0..n messages carrying device
90+
* specific parameter sets.
91+
* Although the ordering should be sufficient, NDTA_NAME can be
92+
* used to identify sequences. The initial message can be identified
93+
* by checking for NDTA_CONFIG. The device specific messages do
94+
* not contain this TLV but have NDTPA_IFINDEX set to the
95+
* corresponding interface index.
96+
*
97+
* To change neighbour table attributes, send RTM_SETNEIGHTBL
98+
* with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3],
99+
* NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked
100+
* otherwise. Device specific parameter sets can be changed by
101+
* setting NDTPA_IFINDEX to the interface index of the corresponding
102+
* device.
103+
****/
104+
105+
struct ndt_stats {
106+
__u64 ndts_allocs;
107+
__u64 ndts_destroys;
108+
__u64 ndts_hash_grows;
109+
__u64 ndts_res_failed;
110+
__u64 ndts_lookups;
111+
__u64 ndts_hits;
112+
__u64 ndts_rcv_probes_mcast;
113+
__u64 ndts_rcv_probes_ucast;
114+
__u64 ndts_periodic_gc_runs;
115+
__u64 ndts_forced_gc_runs;
116+
__u64 ndts_table_fulls;
117+
};
118+
119+
enum {
120+
NDTPA_UNSPEC,
121+
NDTPA_IFINDEX, /* u32, unchangeable */
122+
NDTPA_REFCNT, /* u32, read-only */
123+
NDTPA_REACHABLE_TIME, /* u64, read-only, msecs */
124+
NDTPA_BASE_REACHABLE_TIME, /* u64, msecs */
125+
NDTPA_RETRANS_TIME, /* u64, msecs */
126+
NDTPA_GC_STALETIME, /* u64, msecs */
127+
NDTPA_DELAY_PROBE_TIME, /* u64, msecs */
128+
NDTPA_QUEUE_LEN, /* u32 */
129+
NDTPA_APP_PROBES, /* u32 */
130+
NDTPA_UCAST_PROBES, /* u32 */
131+
NDTPA_MCAST_PROBES, /* u32 */
132+
NDTPA_ANYCAST_DELAY, /* u64, msecs */
133+
NDTPA_PROXY_DELAY, /* u64, msecs */
134+
NDTPA_PROXY_QLEN, /* u32 */
135+
NDTPA_LOCKTIME, /* u64, msecs */
136+
NDTPA_QUEUE_LENBYTES, /* u32 */
137+
NDTPA_MCAST_REPROBES, /* u32 */
138+
NDTPA_PAD,
139+
__NDTPA_MAX
140+
};
141+
#define NDTPA_MAX (__NDTPA_MAX - 1)
142+
143+
struct ndtmsg {
144+
__u8 ndtm_family;
145+
__u8 ndtm_pad1;
146+
__u16 ndtm_pad2;
147+
};
148+
149+
struct ndt_config {
150+
__u16 ndtc_key_len;
151+
__u16 ndtc_entry_size;
152+
__u32 ndtc_entries;
153+
__u32 ndtc_last_flush; /* delta to now in msecs */
154+
__u32 ndtc_last_rand; /* delta to now in msecs */
155+
__u32 ndtc_hash_rnd;
156+
__u32 ndtc_hash_mask;
157+
__u32 ndtc_hash_chain_gc;
158+
__u32 ndtc_proxy_qlen;
159+
};
160+
161+
enum {
162+
NDTA_UNSPEC,
163+
NDTA_NAME, /* char *, unchangeable */
164+
NDTA_THRESH1, /* u32 */
165+
NDTA_THRESH2, /* u32 */
166+
NDTA_THRESH3, /* u32 */
167+
NDTA_CONFIG, /* struct ndt_config, read-only */
168+
NDTA_PARMS, /* nested TLV NDTPA_* */
169+
NDTA_STATS, /* struct ndt_stats, read-only */
170+
NDTA_GC_INTERVAL, /* u64, msecs */
171+
NDTA_PAD,
172+
__NDTA_MAX
173+
};
174+
#define NDTA_MAX (__NDTA_MAX - 1)
175+
176+
/* FDB activity notification bits used in NFEA_ACTIVITY_NOTIFY:
177+
* - FDB_NOTIFY_BIT - notify on activity/expire for any entry
178+
* - FDB_NOTIFY_INACTIVE_BIT - mark as inactive to avoid multiple notifications
179+
*/
180+
enum {
181+
FDB_NOTIFY_BIT = (1 << 0),
182+
FDB_NOTIFY_INACTIVE_BIT = (1 << 1)
183+
};
184+
185+
/* embedded into NDA_FDB_EXT_ATTRS:
186+
* [NDA_FDB_EXT_ATTRS] = {
187+
* [NFEA_ACTIVITY_NOTIFY]
188+
* ...
189+
* }
190+
*/
191+
enum {
192+
NFEA_UNSPEC,
193+
NFEA_ACTIVITY_NOTIFY,
194+
NFEA_DONT_REFRESH,
195+
__NFEA_MAX
196+
};
197+
#define NFEA_MAX (__NFEA_MAX - 1)
198+
199+
#endif

0 commit comments

Comments
 (0)