ChangeLog discontinued, git history can be found here: https://github.com/thom311/libnl Summary of Changes from 1.0-pre6 to 1.0-pre7 ================================================ Thomas Graf o Generic netlink support o Route Addition/Deletion o Added nl_cache_subset() o Have nl_object_clone() make real clones without sharing any data. o Remove old nl_object_alloc() not based on a object operations to avoid bugs due to missing init. o Added nl-list-caches utility o Removed nlmsg_build_no_hdr(), duplicate o Reworked message interface o Fixed nlmsg_put() and genlmsg_put() to correctly reserve tail room for user specific headers. o Added nl_cache_move() o Renamed nl_cache_delete() to nl_cache_remove() (no API break) o Fixed reference counting while objects stay in caches. o Object marking o Moved attribute mask for objects into generic structure o nl-list-caches: List available dump procedures o Use PAGE_SIZE as initial buffer size when reading from netlink socket o Double buffer size when recv() returns MSG_TRUNC o Replaced filter object operation with new compare operation capable of listing differences between two objects o Added nl_object_identical() to check if two objects are identical from a uniqueness point of view o Added nl_object_diff() returning a bitmask of differences in attributes o Added nl_object_attr_list() generating a list of attribute name the object has assigned o Cache updates based on event notifications, code based on Patrick McHardy's patches o Cache Manager o Added NL_AUTO_PID, NL_AUTO_SEQ for convenience o Disable MSG_PEEK by default and provide nl_socket_enable_msg_peek() o Fixed nl_recvmsgs() to return 0 when interrupted via NL_STOP or NL_SKIP o Fixed nl_recvmsgs() to stop reading after parsing if not in the middle of a multipart message. o Fixed nl_recvmsgs() to not stop after receiving an ACK o Fixed nl_recvmsgs() to not blindly discard remaining messages if a NLMSG_DONE message is received. Petr Gotthard Siemens AG Oesterreich o Fix u32 to properly handle multiple keys o rtnl_htb_set_(r|c)buffer() o Fixed MTU handling in HTB class, problem pointed out by Edouard Thuleau Zilvinas Valinskas o Fix wrong msg_namelen in nl_recv() o Fix memory leak in flnl_request_put() Helmut Schaa o Fix for using libnl from within C++ Patrick McHardy o *_alloc_cache(): Only refill cache if handle is provided James Oakley o Fix rtnl_link_set_arptype() typo Philip Craig o Change address family type from char to int o Fix the error handling when the build fails. o add nl_cache_mngr_get_fd() o add netfilter support o add netfilter conntrack support o add netfilter log support Summary of Changes from 1.0-pre5 to 1.0-pre6 ================================================ Christopher Aillon o Use $(libdir) instead of $(prefix)/lib for 64bit awesomeness. Thomas Graf o Extend nl_msg to include source address, destination address and the protocol being used. o Make nl_send*() take a nl_msg instead of a nlmsghdr (API BREAK) o Change callbacks to take a nl_msg instead of source address and nlmsghdr (API BREAK) o caches must specify the protocol they're hooked up from now on if they intend to be associated with message types. o cache_mngt_associate now takes the protocol besides the message type to allow for multiple protocols to be supported (API BREAK) o overwrite destination address in nl_send() when specified in the message itself, allows for unbound addressing. o Support for netlink based fib_lookup() o Documentation fixes o Fix double nlmsg_free() in nl_recvmsgs() while receiving a multipart message and the read was interrupted. o Change cache operations to store names for message types. o Provide interface to convert message type to character string. o Add dp_dump_msgtype to prefix each dumped element with a pretty printed message type. o netlink fib lookup support o nl_recvmsgs() debugging o use nl_cachemngt_type2name() when pretty printing netlink header o Routing protocol translations. o Routing metric translations. o Revised route dumping o Nexthop flag translations. o Add support for IFF_DORMANT Petr Gotthard Siemens AG Oesterreich o Fix access to obj after freeing it o Fix u32 selector access after realloc() o Fix missing out-of-memory error handling in various places o Enhance nl-monitor to have group selection selectable and demonstrate usage of select() o Don't ignore IFF_RUNNING any longer o fw classifier support Patrick McHardy o Fix conflicting types for __u64 o Fix printf format string warnings o Fix object cloning o Deal with structure padding in nl_object_clone o Fix nl_addr leak o Set ce_msgtype in all parsed objects o Fix addr flag filter o Fix RTNLGRP definitions (was based on broken kernel version) o Export nl_get_errno() o Add function to get/set peer pid o Add IFF_LOWER_UP o Add/export some missing accessor functions o print /0 prefix in nl_addr2str() o Fix invalid free in nl_addr_parse for AF_UNSPEC addresses o Use __str2flags instead of __str2type in rtnl_link_str2flags() o Make sure object and filter types match in nl_object_match() o Add support for credential passing over netlink sockets (API BREAK) o Add support for custom dump callbacks o Add NL_DUMP_ENV format Michael Biebl "Alex V. Myltsev" o Makefile fixes Summary of Changes from 1.0-pre4 to 1.0-pre5 ================================================ Thomas Graf o Use minimized local copies for , , and to avoid compile troubles with applications including Reported by Christopher Aillon. Summary of Changes from 1.0-pre3 to 1.0-pre4 ================================================ Thomas Graf o Fix wrong rtnl_addr_set_prefixlen() external declaration, reported by Dan Williams. o Fix nl_addr_parse() to not change the original string for prefixes. o Do not build documentation per default, but have the user issue 'make gendoc' o Assume neighbours to be permanent, set NUD_PERMANENT if not specified otherwise. Summary of Changes from 1.0-pre2 to 1.0-pre3 ================================================ Thomas Graf o Fix SFQ parser to allocate qdisc options. o Fix rule statistics dumping to not call itself. o Complete Netem qdisc interface. o Add rtnl_*_put() and rtnl_*_free() to increase readability. o Cleanup of nl-* tools o Fix inclusion guards of route/neightbl.h o Fix nl_connect() to only modify rx/tx socket buffers if not already modified by the user. o Fix wrong nl_handle_alloc() prototype. o Fix typo in route/addr.c causing label to be marked as local address. o Use ~0UL as default prefix length instead of 0. o Fix neighbour message parser to correctly store core. attributes and provide them again. o Fix neighbour message parser to correctly guess address family. to make it compatible with nl_addr_parse() and ether llc addresses. o Add rtnl_route_table2str(), rtnl_route_str2table(). o Add nl_cache_nitems_filter() to find out if a filter produces any matches. o Remove rtnl_rule_set_(dst|src)_str() (obsolete). o Remove scope and protocol field of routing rule. o Complete routing rules module. o Move realms translations from route to rtnl module. Summary of Changes from 1.0-pre1 to 1.0-pre2 ================================================ Thomas Graf o More API documentation o Added flags argument to rtnl_addr_(add|build_add_request)(). o Added rtnl_addr_(set|get)_multicast(). o Moved scope translations routines from route/route.c to route/rtnl.c, required by other modules as well. o Removed old rtattr bits from rtnetlink-kernel.h o Customized libnl.css for doxygen documentation o Removed non-reentrant translation routines, only bloating the code and too risky. o Fixed wrong version number from 1.0-pre1. o Re-enabled unfinished policer module. o Reworked TBF module, automatic caluclation of transmit times, limit setable via latency, automatic cell size calculation, options TLV generation. (untested) o Renamed nl_xmittime() to rtnl_tc_calc_txtime(). o Renamde nl_build_rtable() to rtnl_tc_build_rate_table() Petr Gotthard , Siemens AG Oesterreich o Fix symlinks to libnl library files to be moveable o Fix extern struct prototypes meant to be static. o Add empty install target to src/Makefile Simon Stelling o Use LIBDIR instead of $(prefix)/lib for users to allow librariers into $(prefix)/lib64. Summary of Changes from 0.5.0 to 1.0-pre1 ================================================ Thomas Graf o Uncountable number of changes, rewrite of certain modules, several major API breakages Petr Gotthard , Siemens AG Oesterreich o added class_build, rtnl_class_build_add_request, rtnl_class_add o added HTB (Hierarchical Token Bucket) class support o added nl_xmittime, nl_build_rtable o added nl_data_append to realloc a nl_data structure o added rtnl_rcopy_ratespec as reverse to rtnl_copy_ratespec o fixed byte order conversion of rtnl_filter.protocol o SuSE and Fedora Linux compile fixes o fixed u32 classifier support o added rtnl_u32_set_handle, rtnl_u32_set_classid, rtnl_u32_set_flags and several rtnl_u32_add_key_... operations to u32 classifier Summary of Changes from 0.4.4 to 0.5.0 ================================================ Thomas Graf o API documentation o nl_cache_filter to manually filter on a object o partial routing support o routing rules support o Properly set address family when setting addresses o debug flag and some rare messages, more to come o make error message verboseness configurable o tc fixes to wait for ack o cleanup and adaption of address code to latest internal API o various cleanups o dozens of API breakages (better now than later) Daniel Hottinger o arch 64bit printf length modifier fixes Baruch Even , Mediatrix Telecom, inc. o address support Summary of changes from 0.4.3 to 0.4.4 ================================================ Thomas Graf : o overall cleanups for better code quality o replace dump_(brief|full|with_stats) ops with dump[NL_DUMP_MAX] array to allow further additions without breaking the ABI. o add of send_ack callback, called whenever when oppenent asks for an ACK. o make nl_parse_rtattr initialize the tb buffer like in the kernel, caller must no longer take care of it. o remove nl_addrnattr (obsolete) o fixed nl_msg_append_raw to correctly calculate length for raw data not aligned to NLMSG_ALIGN o fix memory leak in nl_recv in case of errors o correctly check sequence numbers if more than one message was sent out before the answer is being received. o add workaround for buggy netlink applications not properly setting NLM_F_MULTI. Summary of changes from 0.4.2 to 0.4.3 ================================================ Thomas Graf : o use parser_param in nl_cache_parse o EGP: dump nfilters attribute o allow retrieving of filters attached to classes via FILTER_CACHE_PARENT(C) cache argument o filter message building API Summary of changes from 0.4.1 to 0.4.2 ================================================ Baruch Even : o memory leak fix in nl_parse_rtattr o reset padding to 0 when appending raw data to a nl_msg o avoid overwriting nlmsg ptr when buffer extending fails o typo fixes o create symlinks libnl.so.0 and libnl.so Thomas Graf : o EGP classifier support o avoid null pointer in printf call o added nl_cache_parse to put nl_msg's into a cache o added rtnl_filter_build to build a nl_msg filter message o correctly install header files o nl_msg_payload/nl_msg_payloadlen to access nl_msg payload o nl_parse_nested macro to simplify nested TLV parsing o NL_ERROR_ASSERT compile flag to assert(0) on errors o rta alignment fix in nl_msg_append_tlv o added nl_msg_parse_rtattr as shortcut for nl_parse_rtattr for nl_msg API o added nl_parse_nested for nested TLVs o added RTA_ARRAY_ELEMS macro to calculate array length for array TLVs o added nl_wait_for_ack to wait for the next ack o added rtnl_link_build_change_request(...) o added rtnl_neigh_build_*_request o converted neighbour code to use nl_wait_for_ack o cb_recvmsgs_ow callback to overwrite internal calls to nl_recvmsgs_def o cb_seq_check callback to overwrite default sequence checking o added nl_parser_param as argument for message parsers including a callback to be called upon successful parsing of a message. Removes the requirement of having all parsed messages to be added to a cache. o added cb_recv_ow and nl_send_ow callbacks to overwrite internal calls to nl_recv and nl_send. Jamal Hadi Salim o Linux 2.4 compile fixes