Name |
Date |
Size |
#Lines |
LOC |
||
---|---|---|---|---|---|---|
.. | - | - | ||||
genl/ | 03-May-2024 | - | 348 | 211 | ||
.gitignore | D | 03-May-2024 | 38 | 3 | 2 | |
Android.mk | D | 03-May-2024 | 768 | 38 | 25 | |
README | D | 03-May-2024 | 3.4 KiB | 89 | 71 | |
attr.c | D | 03-May-2024 | 6.1 KiB | 240 | 150 | |
cache.c | D | 03-May-2024 | 890 | 38 | 11 | |
dbg.c | D | 03-May-2024 | 238 | 13 | 10 | |
handlers.c | D | 03-May-2024 | 1.9 KiB | 91 | 53 | |
msg.c | D | 03-May-2024 | 3.5 KiB | 151 | 92 | |
netlink.c | D | 03-May-2024 | 6.2 KiB | 274 | 179 | |
object.c | D | 03-May-2024 | 890 | 34 | 11 | |
socket.c | D | 03-May-2024 | 2.9 KiB | 142 | 91 |
README
1Netlink Protocol Library 2 3This library is a clean room re-implementation of libnl 2.0 and 4re-licensed under Apache 2.0. It was developed primarily to support 5wpa_supplicant. However, with additional development can be extended 6to support other netlink applications. 7 8Netlink Protocol Format (RFC3549) 9 10+-----------------+-+-------------------+-+ 11|Netlink Message |P| Generic Netlink |P| 12| Header |A| Message Header |A| 13|(struct nlmsghdr)|D|(struct genlmsghdr)|D| 14+-----------------+-+-------------------+-+-------------+ 15|len:4|type:2|flags:2|seq:4 pid:4|cmd:1|ver:1|reserved:2| 16+--------------------------------+----------------------+ 17+-----------------+-+-----------------+-+-----------------+-+-----------------+-+---+ 18|Netlink Attribute|P|Netlink Attribute|P|Netlink Attribute|P|Netlink Attribute|P|...| 19| #0 Header |A| #0 Payload |A| #1 Header |A| #1 Payload |A| | 20| (struct nlattr) |D| (void) |D| (struct nlattr) |D| (void) |D| | 21+-----------------+-+-----------------+-+-----------------+-+-----------------+-+---+ 22|len:2(==4+payload)|type:2|payload|pad| 23+-------------------------+-------+---+ 24 25NETLINK OVERVIEW 26 27* Each netlink message consists of a bitstream with a netlink header. 28* After this header a second header *can* be used specific to the netlink 29 family in use. This library was tested using the generic netlink 30 protocol defined by struct genlmsghdr to support nl80211. 31* After the header(s) netlink attributes can be appended to the message 32 which hold can hold basic types such as unsigned integers and strings. 33* Attributes can also be nested. This is accomplished by calling "nla_nest_start" 34 which creates an empty attribute with nest attributes as its payload. Then to 35 close the nest, "nla_nest_end" is called. 36* All data structures in this implementation are byte-aligned (Currently 4 bytes). 37* Acknowledgements (ACKs) are sent as NLMSG_ERROR netlink message types (0x2) and 38 have an error value of 0. 39 40KNOWN ISSUES 41 42 GENERAL 43 * Not tested for thread safety 44 45 Android.mk 46 * No dynamic library because of netlink cache not implemented and 47 not tested for thread safety 48 49 attr.c 50 * nla_parse - does not use nla_policy argument 51 52 cache.c 53 * netlink cache not implemented and only supports one netlink family id 54 which is stored in the nl_cache pointer instead of an actual cache 55 56 netlink.c 57 * nl_recvmsgs - does not support nl_cb_overwrite_recv() 58 * nl_recv - sets/unsets asynchronous socket flag 59 60SOURCE FILES 61 62* Android.mk - Android makefile 63* README - This file 64* attr.c - Netlink attributes 65* cache.c - Netlink cache 66* genl/family.c - Generic netlink family id 67* genl/genl.c - Generic netlink 68* handlers.c - Netlink callbacks 69* msg.c - Netlink messages construction 70* netlink.c - Netlink socket communication 71* object.c - libnl object wrapper 72* socket.c - Netlink kernel socket utils 73 74IMPORTANT HEADER FILES - NOTE: These are based on the the origin GPL libnl headers 75 76* netlink-types.h - Contains many important structs for libnl 77 to represent netlink objects 78* netlink/netlink-kernel.h - Netlink kernel headers and field constants. 79* netlink/msg.h - macros for iterating over netlink messages 80* netlink/attr.h - netlink attribute constants, iteration macros and setters 81 82REFERENCES 83 84* nl80211.h 85* netlink_types.h 86* $LINUX_KERNEL/net/wireless/nl80211.c 87* http://www.infradead.org/~tgr/libnl/doc-3.0/index.html 88* http://www.netfilter.org/projects/libmnl/doxygen/index.html 89