|
@@ -150,4 +150,24 @@ static inline int genlmsg_unicast(struct sk_buff *skb, u32 pid)
|
|
|
return nlmsg_unicast(genl_sock, skb, pid);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * gennlmsg_data - head of message payload
|
|
|
+ * @gnlh: genetlink messsage header
|
|
|
+ */
|
|
|
+static inline void *genlmsg_data(const struct genlmsghdr *gnlh)
|
|
|
+{
|
|
|
+ return ((unsigned char *) gnlh + GENL_HDRLEN);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * genlmsg_len - length of message payload
|
|
|
+ * @gnlh: genetlink message header
|
|
|
+ */
|
|
|
+static inline int genlmsg_len(const struct genlmsghdr *gnlh)
|
|
|
+{
|
|
|
+ struct nlmsghdr *nlh = (struct nlmsghdr *)((unsigned char *)gnlh -
|
|
|
+ NLMSG_HDRLEN);
|
|
|
+ return (nlh->nlmsg_len - GENL_HDRLEN - NLMSG_HDRLEN);
|
|
|
+}
|
|
|
+
|
|
|
#endif /* __NET_GENERIC_NETLINK_H */
|