add libnl-tiny as a small replacement for libnl with only genl support included
[openwrt/staging/florian.git] / package / libnl-tiny / src / include / netlink / netlink-kernel.h
diff --git a/package/libnl-tiny/src/include/netlink/netlink-kernel.h b/package/libnl-tiny/src/include/netlink/netlink-kernel.h
new file mode 100644 (file)
index 0000000..a0f5535
--- /dev/null
@@ -0,0 +1,196 @@
+#ifndef __LINUX_NETLINK_H
+#define __LINUX_NETLINK_H
+
+/**
+ * Netlink socket address
+ * @ingroup nl
+ */
+struct sockaddr_nl
+{
+       /** socket family (AF_NETLINK) */
+       sa_family_t     nl_family;
+
+       /** Padding (unused) */
+       unsigned short  nl_pad;
+
+       /** Unique process ID  */
+       uint32_t        nl_pid;
+
+       /** Multicast group subscriptions */
+       uint32_t        nl_groups;
+};
+
+/**
+ * Netlink message header
+ * @ingroup msg
+ */
+struct nlmsghdr
+{
+       /**
+        * Length of message including header.
+        */
+       uint32_t        nlmsg_len;
+
+       /**
+        * Message type (content type)
+        */
+       uint16_t        nlmsg_type;
+
+       /**
+        * Message flags
+        */
+       uint16_t        nlmsg_flags;
+
+       /**
+        * Sequence number
+        */
+       uint32_t        nlmsg_seq;
+
+       /**
+        * Netlink PID of the proccess sending the message.
+        */
+       uint32_t        nlmsg_pid;
+};
+
+/**
+ * @name Standard message flags
+ * @{
+ */
+
+/**
+ * Must be set on all request messages (typically from user space to
+ * kernel space).
+ * @ingroup msg
+ */
+#define NLM_F_REQUEST          1
+
+/**
+ * Indicates the message is part of a multipart message terminated
+ * by NLMSG_DONE.
+ */
+#define NLM_F_MULTI            2
+
+/**
+ * Request for an acknowledgment on success.
+ */
+#define NLM_F_ACK              4
+
+/**
+ * Echo this request
+ */
+#define NLM_F_ECHO             8
+
+/** @} */
+
+/**
+ * @name Additional message flags for GET requests
+ * @{
+ */
+
+/**
+ * Return the complete table instead of a single entry.
+ * @ingroup msg
+ */
+#define NLM_F_ROOT     0x100
+
+/**
+ * Return all entries matching criteria passed in message content.
+ */
+#define NLM_F_MATCH    0x200
+
+/**
+ * Return an atomic snapshot of the table being referenced. This
+ * may require special privileges because it has the potential to
+ * interrupt service in the FE for a longer time.
+ */
+#define NLM_F_ATOMIC   0x400
+
+/**
+ * Dump all entries
+ */
+#define NLM_F_DUMP     (NLM_F_ROOT|NLM_F_MATCH)
+
+/** @} */
+
+/**
+ * @name Additional messsage flags for NEW requests
+ * @{
+ */
+
+/**
+ * Replace existing matching config object with this request.
+ * @ingroup msg
+ */
+#define NLM_F_REPLACE  0x100
+
+/**
+ * Don't replace the config object if it already exists.
+ */
+#define NLM_F_EXCL     0x200
+
+/**
+ * Create config object if it doesn't already exist.
+ */
+#define NLM_F_CREATE   0x400
+
+/**
+ * Add to the end of the object list.
+ */
+#define NLM_F_APPEND   0x800
+
+/** @} */
+
+/**
+ * @name Standard Message types
+ * @{
+ */
+
+/**
+ * No operation, message must be ignored
+ * @ingroup msg
+ */
+#define NLMSG_NOOP             0x1
+
+/**
+ * The message signals an error and the payload contains a nlmsgerr
+ * structure. This can be looked at as a NACK and typically it is
+ * from FEC to CPC.
+ */
+#define NLMSG_ERROR            0x2
+
+/**
+ * Message terminates a multipart message.
+ */
+#define NLMSG_DONE             0x3
+
+/**
+ * The message signals that data got lost
+ */
+#define NLMSG_OVERRUN          0x4
+
+/**
+ * Lower limit of reserved message types
+ */
+#define NLMSG_MIN_TYPE         0x10
+
+/** @} */
+
+/**
+ * Netlink error message
+ * @ingroup msg
+ */
+struct nlmsgerr
+{
+       /** Error code (errno number) */
+       int             error;
+
+       /** Original netlink message causing the error */
+       struct nlmsghdr msg;
+};
+
+struct nl_pktinfo
+{
+       __u32   group;
+};
+
+#endif /* __LINUX_NETLINK_H */