xref: /aosp_15_r20/external/musl/src/network/netlink.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <stdint.h>
2*c9945492SAndroid Build Coastguard Worker 
3*c9945492SAndroid Build Coastguard Worker /* linux/netlink.h */
4*c9945492SAndroid Build Coastguard Worker 
5*c9945492SAndroid Build Coastguard Worker #define NETLINK_ROUTE 0
6*c9945492SAndroid Build Coastguard Worker 
7*c9945492SAndroid Build Coastguard Worker struct nlmsghdr {
8*c9945492SAndroid Build Coastguard Worker 	uint32_t	nlmsg_len;
9*c9945492SAndroid Build Coastguard Worker 	uint16_t	nlmsg_type;
10*c9945492SAndroid Build Coastguard Worker 	uint16_t	nlmsg_flags;
11*c9945492SAndroid Build Coastguard Worker 	uint32_t	nlmsg_seq;
12*c9945492SAndroid Build Coastguard Worker 	uint32_t	nlmsg_pid;
13*c9945492SAndroid Build Coastguard Worker };
14*c9945492SAndroid Build Coastguard Worker 
15*c9945492SAndroid Build Coastguard Worker #define NLM_F_REQUEST	1
16*c9945492SAndroid Build Coastguard Worker #define NLM_F_MULTI	2
17*c9945492SAndroid Build Coastguard Worker #define NLM_F_ACK	4
18*c9945492SAndroid Build Coastguard Worker 
19*c9945492SAndroid Build Coastguard Worker #define NLM_F_ROOT	0x100
20*c9945492SAndroid Build Coastguard Worker #define NLM_F_MATCH	0x200
21*c9945492SAndroid Build Coastguard Worker #define NLM_F_ATOMIC	0x400
22*c9945492SAndroid Build Coastguard Worker #define NLM_F_DUMP	(NLM_F_ROOT|NLM_F_MATCH)
23*c9945492SAndroid Build Coastguard Worker 
24*c9945492SAndroid Build Coastguard Worker #define NLMSG_NOOP	0x1
25*c9945492SAndroid Build Coastguard Worker #define NLMSG_ERROR	0x2
26*c9945492SAndroid Build Coastguard Worker #define NLMSG_DONE	0x3
27*c9945492SAndroid Build Coastguard Worker #define NLMSG_OVERRUN	0x4
28*c9945492SAndroid Build Coastguard Worker 
29*c9945492SAndroid Build Coastguard Worker /* linux/rtnetlink.h */
30*c9945492SAndroid Build Coastguard Worker 
31*c9945492SAndroid Build Coastguard Worker #define RTM_NEWLINK	16
32*c9945492SAndroid Build Coastguard Worker #define RTM_GETLINK	18
33*c9945492SAndroid Build Coastguard Worker #define RTM_NEWADDR	20
34*c9945492SAndroid Build Coastguard Worker #define RTM_GETADDR	22
35*c9945492SAndroid Build Coastguard Worker 
36*c9945492SAndroid Build Coastguard Worker struct rtattr {
37*c9945492SAndroid Build Coastguard Worker 	unsigned short	rta_len;
38*c9945492SAndroid Build Coastguard Worker 	unsigned short	rta_type;
39*c9945492SAndroid Build Coastguard Worker };
40*c9945492SAndroid Build Coastguard Worker 
41*c9945492SAndroid Build Coastguard Worker struct rtgenmsg {
42*c9945492SAndroid Build Coastguard Worker 	unsigned char	rtgen_family;
43*c9945492SAndroid Build Coastguard Worker };
44*c9945492SAndroid Build Coastguard Worker 
45*c9945492SAndroid Build Coastguard Worker struct ifinfomsg {
46*c9945492SAndroid Build Coastguard Worker 	unsigned char	ifi_family;
47*c9945492SAndroid Build Coastguard Worker 	unsigned char	__ifi_pad;
48*c9945492SAndroid Build Coastguard Worker 	unsigned short	ifi_type;
49*c9945492SAndroid Build Coastguard Worker 	int		ifi_index;
50*c9945492SAndroid Build Coastguard Worker 	unsigned	ifi_flags;
51*c9945492SAndroid Build Coastguard Worker 	unsigned	ifi_change;
52*c9945492SAndroid Build Coastguard Worker };
53*c9945492SAndroid Build Coastguard Worker 
54*c9945492SAndroid Build Coastguard Worker /* linux/if_link.h */
55*c9945492SAndroid Build Coastguard Worker 
56*c9945492SAndroid Build Coastguard Worker #define IFLA_ADDRESS	1
57*c9945492SAndroid Build Coastguard Worker #define IFLA_BROADCAST	2
58*c9945492SAndroid Build Coastguard Worker #define IFLA_IFNAME	3
59*c9945492SAndroid Build Coastguard Worker #define IFLA_STATS	7
60*c9945492SAndroid Build Coastguard Worker 
61*c9945492SAndroid Build Coastguard Worker /* linux/if_addr.h */
62*c9945492SAndroid Build Coastguard Worker 
63*c9945492SAndroid Build Coastguard Worker struct ifaddrmsg {
64*c9945492SAndroid Build Coastguard Worker 	uint8_t		ifa_family;
65*c9945492SAndroid Build Coastguard Worker 	uint8_t		ifa_prefixlen;
66*c9945492SAndroid Build Coastguard Worker 	uint8_t		ifa_flags;
67*c9945492SAndroid Build Coastguard Worker 	uint8_t		ifa_scope;
68*c9945492SAndroid Build Coastguard Worker 	uint32_t	ifa_index;
69*c9945492SAndroid Build Coastguard Worker };
70*c9945492SAndroid Build Coastguard Worker 
71*c9945492SAndroid Build Coastguard Worker #define IFA_ADDRESS	1
72*c9945492SAndroid Build Coastguard Worker #define IFA_LOCAL	2
73*c9945492SAndroid Build Coastguard Worker #define IFA_LABEL	3
74*c9945492SAndroid Build Coastguard Worker #define IFA_BROADCAST	4
75*c9945492SAndroid Build Coastguard Worker 
76*c9945492SAndroid Build Coastguard Worker /* musl */
77*c9945492SAndroid Build Coastguard Worker 
78*c9945492SAndroid Build Coastguard Worker #define NETLINK_ALIGN(len)	(((len)+3) & ~3)
79*c9945492SAndroid Build Coastguard Worker #define NLMSG_DATA(nlh)		((void*)((char*)(nlh)+sizeof(struct nlmsghdr)))
80*c9945492SAndroid Build Coastguard Worker #define NLMSG_DATALEN(nlh)	((nlh)->nlmsg_len-sizeof(struct nlmsghdr))
81*c9945492SAndroid Build Coastguard Worker #define NLMSG_DATAEND(nlh)	((char*)(nlh)+(nlh)->nlmsg_len)
82*c9945492SAndroid Build Coastguard Worker #define NLMSG_NEXT(nlh)		(struct nlmsghdr*)((char*)(nlh)+NETLINK_ALIGN((nlh)->nlmsg_len))
83*c9945492SAndroid Build Coastguard Worker #define NLMSG_OK(nlh,end)	((char*)(end)-(char*)(nlh) >= sizeof(struct nlmsghdr))
84*c9945492SAndroid Build Coastguard Worker 
85*c9945492SAndroid Build Coastguard Worker #define RTA_DATA(rta)		((void*)((char*)(rta)+sizeof(struct rtattr)))
86*c9945492SAndroid Build Coastguard Worker #define RTA_DATALEN(rta)	((rta)->rta_len-sizeof(struct rtattr))
87*c9945492SAndroid Build Coastguard Worker #define RTA_DATAEND(rta)	((char*)(rta)+(rta)->rta_len)
88*c9945492SAndroid Build Coastguard Worker #define RTA_NEXT(rta)		(struct rtattr*)((char*)(rta)+NETLINK_ALIGN((rta)->rta_len))
89*c9945492SAndroid Build Coastguard Worker #define RTA_OK(rta,end)		((char*)(end)-(char*)(rta) >= sizeof(struct rtattr))
90*c9945492SAndroid Build Coastguard Worker 
91*c9945492SAndroid Build Coastguard Worker #define NLMSG_RTA(nlh,len)	((void*)((char*)(nlh)+sizeof(struct nlmsghdr)+NETLINK_ALIGN(len)))
92*c9945492SAndroid Build Coastguard Worker #define NLMSG_RTAOK(rta,nlh)	RTA_OK(rta,NLMSG_DATAEND(nlh))
93*c9945492SAndroid Build Coastguard Worker 
94*c9945492SAndroid Build Coastguard Worker hidden int __rtnetlink_enumerate(int link_af, int addr_af, int (*cb)(void *ctx, struct nlmsghdr *h), void *ctx);
95