summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorThomas Graf <tgraf@suug.ch>2010-11-27 09:18:07 (GMT)
committerThomas Graf <tgraf@suug.ch>2010-11-27 09:18:07 (GMT)
commit5644578190c3364300128799967d4e7b5e920242 (patch)
tree9972036e0000c249cf776cb55e8340875c54cd5f /include
parent7105aea116208422812a3803ef1e58f08b45c75e (diff)
downloadlibnl-5644578190c3364300128799967d4e7b5e920242.zip
libnl-5644578190c3364300128799967d4e7b5e920242.tar.gz
libnl-5644578190c3364300128799967d4e7b5e920242.tar.bz2
Tons of documentation
Diffstat (limited to 'include')
-rw-r--r--include/linux/netlink.h94
-rw-r--r--include/netlink/netlink-kernel.h136
2 files changed, 112 insertions, 118 deletions
diff --git a/include/linux/netlink.h b/include/linux/netlink.h
index 893686f..971a94f 100644
--- a/include/linux/netlink.h
+++ b/include/linux/netlink.h
@@ -29,52 +29,6 @@
struct net;
-struct sockaddr_nl {
- sa_family_t nl_family; /* AF_NETLINK */
- unsigned short nl_pad; /* zero */
- __u32 nl_pid; /* port ID */
- __u32 nl_groups; /* multicast groups mask */
-};
-
-struct nlmsghdr {
- __u32 nlmsg_len; /* Length of message including header */
- __u16 nlmsg_type; /* Message content */
- __u16 nlmsg_flags; /* Additional flags */
- __u32 nlmsg_seq; /* Sequence number */
- __u32 nlmsg_pid; /* Sending process port ID */
-};
-
-/* Flags values */
-
-#define NLM_F_REQUEST 1 /* It is request message. */
-#define NLM_F_MULTI 2 /* Multipart message, terminated by NLMSG_DONE */
-#define NLM_F_ACK 4 /* Reply with ack, with zero or error code */
-#define NLM_F_ECHO 8 /* Echo this request */
-
-/* Modifiers to GET request */
-#define NLM_F_ROOT 0x100 /* specify tree root */
-#define NLM_F_MATCH 0x200 /* return all matching */
-#define NLM_F_ATOMIC 0x400 /* atomic GET */
-#define NLM_F_DUMP (NLM_F_ROOT|NLM_F_MATCH)
-
-/* Modifiers to NEW request */
-#define NLM_F_REPLACE 0x100 /* Override existing */
-#define NLM_F_EXCL 0x200 /* Do not touch, if it exists */
-#define NLM_F_CREATE 0x400 /* Create, if it does not exist */
-#define NLM_F_APPEND 0x800 /* Add to end of list */
-
-/*
- 4.4BSD ADD NLM_F_CREATE|NLM_F_EXCL
- 4.4BSD CHANGE NLM_F_REPLACE
-
- True CHANGE NLM_F_CREATE|NLM_F_REPLACE
- Append NLM_F_CREATE
- Check NLM_F_EXCL
- */
-
-#define NLMSG_ALIGNTO 4
-#define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
-#define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
#define NLMSG_LENGTH(len) ((len)+NLMSG_ALIGN(NLMSG_HDRLEN))
#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
#define NLMSG_DATA(nlh) ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))
@@ -85,28 +39,12 @@ struct nlmsghdr {
(nlh)->nlmsg_len <= (len))
#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
-#define NLMSG_NOOP 0x1 /* Nothing. */
-#define NLMSG_ERROR 0x2 /* Error */
-#define NLMSG_DONE 0x3 /* End of a dump */
-#define NLMSG_OVERRUN 0x4 /* Data lost */
-
-#define NLMSG_MIN_TYPE 0x10 /* < 0x10: reserved control messages */
-
-struct nlmsgerr {
- int error;
- struct nlmsghdr msg;
-};
-
#define NETLINK_ADD_MEMBERSHIP 1
#define NETLINK_DROP_MEMBERSHIP 2
#define NETLINK_PKTINFO 3
#define NETLINK_BROADCAST_ERROR 4
#define NETLINK_NO_ENOBUFS 5
-struct nl_pktinfo {
- __u32 group;
-};
-
#define NET_MAJOR 36 /* Major 36 is reserved for networking */
enum {
@@ -114,36 +52,4 @@ enum {
NETLINK_CONNECTED,
};
-/*
- * <------- NLA_HDRLEN ------> <-- NLA_ALIGN(payload)-->
- * +---------------------+- - -+- - - - - - - - - -+- - -+
- * | Header | Pad | Payload | Pad |
- * | (struct nlattr) | ing | | ing |
- * +---------------------+- - -+- - - - - - - - - -+- - -+
- * <-------------- nlattr->nla_len -------------->
- */
-
-struct nlattr {
- __u16 nla_len;
- __u16 nla_type;
-};
-
-/*
- * nla_type (16 bits)
- * +---+---+-------------------------------+
- * | N | O | Attribute Type |
- * +---+---+-------------------------------+
- * N := Carries nested attributes
- * O := Payload stored in network byte order
- *
- * Note: The N and O flag are mutually exclusive.
- */
-#define NLA_F_NESTED (1 << 15)
-#define NLA_F_NET_BYTEORDER (1 << 14)
-#define NLA_TYPE_MASK ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
-
-#define NLA_ALIGNTO 4
-#define NLA_ALIGN(len) (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
-#define NLA_HDRLEN ((int) NLA_ALIGN(sizeof(struct nlattr)))
-
#endif /* __LINUX_NETLINK_H */
diff --git a/include/netlink/netlink-kernel.h b/include/netlink/netlink-kernel.h
index a0f5535..d3a4128 100644
--- a/include/netlink/netlink-kernel.h
+++ b/include/netlink/netlink-kernel.h
@@ -1,5 +1,5 @@
-#ifndef __LINUX_NETLINK_H
-#define __LINUX_NETLINK_H
+#ifndef __NETLINK_KERNEL_H_
+#define __NETLINK_KERNEL_H_
/**
* Netlink socket address
@@ -21,34 +21,29 @@ struct sockaddr_nl
};
/**
+ * @addtogroup msg
+ * @{
+ */
+
+
+/**
* Netlink message header
- * @ingroup msg
*/
struct nlmsghdr
{
- /**
- * Length of message including header.
- */
+ /** Length of message including header and padding. */
uint32_t nlmsg_len;
- /**
- * Message type (content type)
- */
+ /** Message type (content type) */
uint16_t nlmsg_type;
- /**
- * Message flags
- */
+ /** Message flags */
uint16_t nlmsg_flags;
- /**
- * Sequence number
- */
+ /** Sequence number of message \see core_sk_seq_num. */
uint32_t nlmsg_seq;
- /**
- * Netlink PID of the proccess sending the message.
- */
+ /** Netlink port */
uint32_t nlmsg_pid;
};
@@ -60,7 +55,6 @@ struct nlmsghdr
/**
* Must be set on all request messages (typically from user space to
* kernel space).
- * @ingroup msg
*/
#define NLM_F_REQUEST 1
@@ -89,7 +83,6 @@ struct nlmsghdr
/**
* Return the complete table instead of a single entry.
- * @ingroup msg
*/
#define NLM_F_ROOT 0x100
@@ -119,7 +112,6 @@ struct nlmsghdr
/**
* Replace existing matching config object with this request.
- * @ingroup msg
*/
#define NLM_F_REPLACE 0x100
@@ -147,7 +139,6 @@ struct nlmsghdr
/**
* No operation, message must be ignored
- * @ingroup msg
*/
#define NLMSG_NOOP 0x1
@@ -176,8 +167,7 @@ struct nlmsghdr
/** @} */
/**
- * Netlink error message
- * @ingroup msg
+ * Netlink error message header
*/
struct nlmsgerr
{
@@ -193,4 +183,102 @@ struct nl_pktinfo
__u32 group;
};
+/**
+ * Netlink alignment constant, all boundries within messages must be align to this.
+ *
+ * See \ref core_msg_fmt_align for more information on message alignment.
+ */
+#define NLMSG_ALIGNTO 4
+
+/**
+ * Returns \p len properly aligned to NLMSG_ALIGNTO.
+ *
+ * See \ref core_msg_fmt_align for more information on message alignment.
+ */
+#define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
+
+/**
+ * Length of a netlink message header including padding.
+ *
+ * See \ref core_msg_fmt_align for more information on message alignment.
+ */
+#define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
+
+/** @} */
+
+/**
+ * @addtogroup attr
+ * @{
+ */
+
+/*
+ */
+
+/**
+ * Netlink attribute structure
+ *
+ * @code
+ * <------- NLA_HDRLEN ------> <-- NLA_ALIGN(payload)-->
+ * +---------------------+- - -+- - - - - - - - - -+- - -+
+ * | Header | Pad | Payload | Pad |
+ * | (struct nlattr) | ing | | ing |
+ * +---------------------+- - -+- - - - - - - - - -+- - -+
+ * <-------------- nlattr->nla_len -------------->
+ * @endcode
+ */
+struct nlattr {
+ /**
+ * Attribute length in bytes including header
+ */
+ __u16 nla_len;
+
+ /**
+ * Netlink attribute type
+ */
+ __u16 nla_type;
+};
+
+/**
+ * @name Attribute Type Flags
+ *
+ * @code
+ * nla_type (16 bits)
+ * +---+---+-------------------------------+
+ * | N | O | Attribute Type |
+ * +---+---+-------------------------------+
+ * N := Carries nested attributes
+ * O := Payload stored in network byte order
+ * @endcode
+ *
+ * @note The N and O flag are mutually exclusive.
+ *
+ * @{
+ */
+
+/*
+ */
+#define NLA_F_NESTED (1 << 15)
+#define NLA_F_NET_BYTEORDER (1 << 14)
+#define NLA_TYPE_MASK ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
+
+/** @} */
+
+#define NLA_ALIGNTO 4
+
+/**
+ * Returns \p len properly aligned to NLA_ALIGNTO.
+ *
+ * See \ref core_msg_fmt_align for more information on message alignment.
+ */
+#define NLA_ALIGN(len) (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
+
+/**
+ * Length of a netlink attribute header including padding.
+ *
+ * See \ref core_msg_fmt_align for more information on message alignment.
+ */
+#define NLA_HDRLEN ((int) NLA_ALIGN(sizeof(struct nlattr)))
+
+/** @} */
+
#endif /* __LINUX_NETLINK_H */