xref: /aosp_15_r20/external/iproute2/include/libgenl.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker #ifndef __LIBGENL_H__
2*de1e4e89SAndroid Build Coastguard Worker #define __LIBGENL_H__
3*de1e4e89SAndroid Build Coastguard Worker 
4*de1e4e89SAndroid Build Coastguard Worker #include "libnetlink.h"
5*de1e4e89SAndroid Build Coastguard Worker 
6*de1e4e89SAndroid Build Coastguard Worker #define GENL_REQUEST(_req, _bufsiz, _family, _hdrsiz, _ver, _cmd, _flags) \
7*de1e4e89SAndroid Build Coastguard Worker struct {								\
8*de1e4e89SAndroid Build Coastguard Worker 	struct nlmsghdr		n;					\
9*de1e4e89SAndroid Build Coastguard Worker 	struct genlmsghdr	g;					\
10*de1e4e89SAndroid Build Coastguard Worker 	char			buf[NLMSG_ALIGN(_hdrsiz) + (_bufsiz)];	\
11*de1e4e89SAndroid Build Coastguard Worker } _req = {								\
12*de1e4e89SAndroid Build Coastguard Worker 	.n = {								\
13*de1e4e89SAndroid Build Coastguard Worker 		.nlmsg_type = (_family),				\
14*de1e4e89SAndroid Build Coastguard Worker 		.nlmsg_flags = (_flags),				\
15*de1e4e89SAndroid Build Coastguard Worker 		.nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN + (_hdrsiz)),	\
16*de1e4e89SAndroid Build Coastguard Worker 	},								\
17*de1e4e89SAndroid Build Coastguard Worker 	.g = {								\
18*de1e4e89SAndroid Build Coastguard Worker 		.cmd = (_cmd),						\
19*de1e4e89SAndroid Build Coastguard Worker 		.version = (_ver),					\
20*de1e4e89SAndroid Build Coastguard Worker 	},								\
21*de1e4e89SAndroid Build Coastguard Worker }
22*de1e4e89SAndroid Build Coastguard Worker 
23*de1e4e89SAndroid Build Coastguard Worker extern int genl_resolve_family(struct rtnl_handle *grth, const char *family);
24*de1e4e89SAndroid Build Coastguard Worker extern int genl_init_handle(struct rtnl_handle *grth, const char *family,
25*de1e4e89SAndroid Build Coastguard Worker 			    int *genl_family);
26*de1e4e89SAndroid Build Coastguard Worker 
27*de1e4e89SAndroid Build Coastguard Worker #endif /* __LIBGENL_H__ */
28