1b53483949
Fixed return value for nla_put. Change-Id: If1ae33bb38c0e88ca7a9220e90ae35dfb0b44b86 |
||
---|---|---|
.. | ||
genl | ||
include | ||
.gitignore | ||
Android.mk | ||
attr.c | ||
cache.c | ||
handlers.c | ||
msg.c | ||
netlink.c | ||
object.c | ||
README | ||
socket.c |
Netlink Protocol Format (RFC3549) +-----------------+-+-------------------+-+ |Netlink Message |P| Generic Netlink |P| | Header |A| Message Header |A| |(struct nlmsghdr)|D|(struct genlmsghdr)|D| +-----------------+-+-------------------+-+ +-----------------+-+-----------------+-+-----------------+-+-----------------+-+---+ |Netlink Attribute|P|Netlink Attribute|P|Netlink Attribute|P|Netlink Attribute|P|...| | #0 Header |A| #0 Payload |A| #1 Header |A| #1 Payload |A| | | (struct nlattr) |D| (void) |D| (struct nlattr) |D| (void) |D| | +-----------------+-+-----------------+-+-----------------+-+-----------------+-+---+ * Each netlink message consists of a bitstream with a netlink header. * After this header a second header *can* be used specific to the netlink family in use. This library was tested using the generic netlink protocol defined by struct genlmsghdr to support nl80211. * After the header(s) netlink attributes can be appended to the message which hold can hold basic types such as unsigned integers and strings. * All data structures in this implementation are byte-aligned (Currently 4 bytes). * Acknowledgements (ACKs) are sent as NLMSG_ERROR netlink message types (0x2) and have an error value of 0. KNOWN BUGS * NOT THREAD SAFE!!! * nla_parse - does not use nla_policy argument * nl_recvmsgs - does not support nl_cb_overwrite_recv() * nl_recv - sets/unsets async. flag * genl_ctrl_alloc_cache - netlink send/recv funcs should be used REFERENCES * nl80211.h * netlink_types.h * $LINUX_KERNEL/net/wireless/nl80211.c * http://www.infradead.org/~tgr/libnl/doc-3.0/index.html * http://www.netfilter.org/projects/libmnl/doxygen/index.html