92 #include <netlink-generic.h>
93 #include <netlink/netlink.h>
94 #include <netlink/genl/genl.h>
95 #include <netlink/utils.h>
102 int genl_connect(
struct nl_sock *sk)
128 int version,
int flags)
130 struct genlmsghdr hdr = {
146 int genlmsg_valid_hdr(
struct nlmsghdr *nlh,
int hdrlen)
148 struct genlmsghdr *ghdr;
150 if (!nlmsg_valid_hdr(nlh, GENL_HDRLEN))
160 int genlmsg_validate(
struct nlmsghdr *nlh,
int hdrlen,
int maxtype,
163 struct genlmsghdr *ghdr;
165 if (!genlmsg_valid_hdr(nlh, hdrlen))
166 return -NLE_MSG_TOOSHORT;
173 int genlmsg_parse(
struct nlmsghdr *nlh,
int hdrlen,
struct nlattr *tb[],
176 struct genlmsghdr *ghdr;
178 if (!genlmsg_valid_hdr(nlh, hdrlen))
179 return -NLE_MSG_TOOSHORT;
192 return ((
unsigned char *) gnlh + GENL_HDRLEN);
201 struct nlmsghdr *nlh = (
struct nlmsghdr *)((
unsigned char *)gnlh -
203 return (nlh->nlmsg_len - GENL_HDRLEN - NLMSG_HDRLEN);
246 void *
genlmsg_put(
struct nl_msg *msg, uint32_t pid, uint32_t seq,
int family,
247 int hdrlen,
int flags, uint8_t cmd, uint8_t version)
249 struct nlmsghdr *nlh;
250 struct genlmsghdr hdr = {
255 nlh =
nlmsg_put(msg, pid, seq, family, GENL_HDRLEN + hdrlen, flags);
260 NL_DBG(2,
"msg %p: Added generic netlink header cmd=%d version=%d\n",