93 #include <netlink-generic.h>
94 #include <netlink/netlink.h>
95 #include <netlink/genl/genl.h>
96 #include <netlink/utils.h>
103 int genl_connect(
struct nl_handle *handle)
129 int version,
int flags)
131 struct genlmsghdr hdr = {
147 int genlmsg_valid_hdr(
struct nlmsghdr *nlh,
int hdrlen)
149 struct genlmsghdr *ghdr;
151 if (!nlmsg_valid_hdr(nlh, GENL_HDRLEN))
161 int genlmsg_validate(
struct nlmsghdr *nlh,
int hdrlen,
int maxtype,
164 struct genlmsghdr *ghdr;
166 if (!genlmsg_valid_hdr(nlh, hdrlen))
167 return nl_errno(EINVAL);
174 int genlmsg_parse(
struct nlmsghdr *nlh,
int hdrlen,
struct nlattr *tb[],
177 struct genlmsghdr *ghdr;
179 if (!genlmsg_valid_hdr(nlh, hdrlen))
180 return nl_errno(EINVAL);
193 return ((
unsigned char *) gnlh + GENL_HDRLEN);
204 return (nlh->
nlmsg_len - GENL_HDRLEN - NLMSG_HDRLEN);
247 void *
genlmsg_put(
struct nl_msg *msg, uint32_t pid, uint32_t seq,
int family,
248 int hdrlen,
int flags, uint8_t cmd, uint8_t version)
251 struct genlmsghdr hdr = {
256 nlh =
nlmsg_put(msg, pid, seq, family, GENL_HDRLEN + hdrlen, flags);
261 NL_DBG(2,
"msg %p: Added generic netlink header cmd=%d version=%d\n",