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