summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Move private header files to <netlink-private/*>Thomas Graf2013-01-2497-216/+196
| | | | | | | This clarifies the seperation between public and private header files. Signed-off-by: Thomas Graf <tgraf@suug.ch>
* fix includes after removing some headersJiri Pirko2013-01-236-12/+14
| | | | | | | | | | | | | | | commit f20bbe1f07fcff1509425884f5ed72ca8d5fb6ab Author: Thomas Graf <tgraf@suug.ch> Date: Tue Jan 22 19:10:38 2013 +0100 No longer install module API headers This commit causes a regression so no app using libnl can be compiled against it. This patch fixes it by removing includes of no-longe existing headers. Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* 3.2.20 releaselibnl3_2_20Thomas Graf2013-01-232-2/+2
|
* route cache: This patch adds route priority to route object oo_id_attrsroopa2013-01-231-2/+7
| | | | | | | | | | | | | | | | | The kernel allows multiple entries in the main table which differ in the priority value. In libnl currently, since priority is not part of the base netlink route message, it is not used as part of the key. This patch includes priority in the key/oo_id_attrs and defaults the value to zero for messages where priority is not included. One point to note is that the actual selection of route from multiple options is done implicitly in the kernel by storing the routes in sort priority order, but there is no explicit communication to a client of libnl of that. Signed-off-by: Shrijeet Mukherjee <shm@cumulusnetworks.com> Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Remove obsolete release notes at end of configureThomas Graf2013-01-231-4/+1
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* No longer install module API headersThomas Graf2013-01-231-6/+6
| | | | | | | | | | | | | | | Various header files providing an API to implement own cache and object types or implement link types have been available in the past. Their API is marked unstable in the documentation and nobody is using them so far. Technically they have been causing ABI breakages in at least two 3.2.x releases. In order to avoid future accidental breakage, no longer install these and require module developers to clone the git tree and build modules off the git tree directly to make sure that the API is unstable at this point. Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Undo soname bumpThomas Graf2013-01-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | The soname was bumped before 3.2.18 was released to reflect an ABI change in the cache and object API. This caused a discussion with various distribution maintainers involved as it prevented them from including the release in their stable branches. This is especially unfortunate as the corresponding API is unused outside of libnl as of now. For this reason, I have decided to undo the soname bump and instead remove the corresponding header files from the list of installable headers and thus remove them from the public API. This is a API break technically but since nobody is using them it should not matter. If you are in fact using any of the *-api.h headers please let me know and we are most likely to start a new development branch. If your application linked against 3.2.18 or 3.2.19 you will need to relink if you want it to use >= 3.2.20. Signed-off-by: Thomas Graf <tgraf@suug.ch>
* link: fix reference leak in rtnl_link_af_data_compare()Thomas Graf2013-01-181-5/+10
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* link: Add af data compare to link objectsroopa2013-01-181-2/+20
| | | | | | | | | | | | | | | | | | | | | | Today the link compare function does not compare af data of a link. We have found a need for this to get approriate change callbacks when af_data of a link changes. This patch adds support to compare af_data to link_compare function. This patch today only adds support to compare af_data set by PROTINFO attributes. It can be extended to support compares of af_data set by AF_SPEC attributes It has been tested for AF_BRIDGE objects. In case of AF_BRIDGE objects, this helps with bridge port change notification callbacks. Signed-off-by: Wilson Kok <wkok@cumulusnetworks.com> Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Add new rtnl_link_af_data_compare function to compare af_dataroopa2013-01-182-0/+35
| | | | | | | | This patch adds a new api rtnl_linl_af_data_compare to compare link af_data Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* 3.2.19 releaselibnl3_2_19Thomas Graf2013-01-172-5/+5
|
* Add ao_compare support to bridge family af_dataroopa2013-01-121-1/+21
| | | | | | | | | | | | | This patch adds support for ao_compare operation to bridge link af data operations. Adds field ce_mask to struct bridge_data to work with the ATTR attributes. I can submit separate patches to introduce mask field to ATTR macros. Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: Wilson Kok <wkok@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* link af ops: Add new ao_compare op to compare link af_dataroopa2013-01-121-0/+13
| | | | | | | | | | | | | | This patch adds new operation to compare link af_data. ao_compare is similar to object oo_compare operation. This op can be used when two links are compared for their af data. It takes two link objects in question, an object specific bitmask defining which attributes should be compared and flags to control the behaviour. The function must return a bitmask with the relevant bit set for each attribute that mismatches. Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: Add new nl_cache_find apiroopa2013-01-113-0/+62
| | | | | | | | | | | | | | | | | This patch adds new cache find api nl_cache_find api was suggested by Thomas. Unlike nl_cache_search, this patch uses nl_object_match_filter() to look for an object match. Am not sure this matches what was decided on the list few weeks back. I will be happy to make any changes. Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* link: add carrier supportFlavio Leitner2013-01-115-1/+73
| | | | | Signed-off-by: Flavio Leitner <fbl@redhat.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* 3.2.18 releaselibnl3_2_18Thomas Graf2013-01-082-4/+4
|
* fix include/Makefile.amThomas Graf2013-01-081-2/+3
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* build: Fix distribution to include 'nfnetlink_conntrack.h'Otavio Salvador2013-01-081-1/+2
| | | | | | | | The header has not been included in the headers list so it has been been distributed in the tarball making it fail to build in old kernels. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: make sure the user has specified a callbackmihai.dontu@gmail.com2013-01-061-1/+2
| | | | | | | | | | In cache_include(), the user callback is used even though one might not have been specified, leading to a crash. This happens, for example, when NetworkManager calls nl_cache_include() with the change_cb argument set to NULL. Fix it by making sure the callback points to a valid address. Signed-off-by: Mihai Dontu <mihai.dontu@gmail.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Add <netlink/route/link/can.h> to dist targetThomas Graf2013-01-041-0/+1
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* 3.2.17 releaselibnl3_2_17Thomas Graf2013-01-042-5/+5
|
* nlmsg_ok comparison between signed and unsignedEric Paris2013-01-031-1/+1
| | | | | | | | | | | | | | | | | The nlmsg_ok macro has a comparison between an int and a size_t (unsigned int). The C spec says the int is cast to unsigned int before the comparison. This is a problem as the audit system will send skb's with skb->len == nlhhdr->nlmsg_len which are NOT aligned. Thus you can end up with remaining being negative. So the comparison becomes (unsigned int)(-1) >= (unsigned int)16 Which turns out to be true! It should clearly be false. So if we cast the size_t to an int we get a signed comparison and it works. (This is what linux/netlink.h and all of the kernel netlink headers do) Signed-off-by: Eric Paris <eparis@redhat.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Fix file descriptor leak on errorThomas Jarosch2012-12-271-4/+12
| | | | | | | Detected by cppcheck Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: Take cache_ops lock when modifying cache ops flagsThomas Graf2012-12-271-0/+2
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache pickup: Avoid duplicates during cache pickuproopa2012-12-211-3/+23
| | | | | | | | | | | | | | This patch adds search and replace/update functionality to cache pickup_cb. This change is required to avoid duplicates getting into the cache during pickup. Also helps updating existing objects during cache pickup. We have seen this in cases of ipv6 equal cost multipath routes changes v1 to v2: - Updated documentation Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
* make: automake provides a cscope target these daysThomas Graf2012-12-211-4/+0
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Bug Fix: cache_include: Fix object ref release after successful object updateroopa2012-12-171-1/+1
| | | | | | | | The current code does a rtnl_link_put on new object instead of old object. This patch fixes it. None of the caches have support for object update, so this should not have affected anyone yet. Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
* route cache: Fix handling of ipv6 multipath routesroopa2012-12-171-0/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two ways kernel handles ipv6 equal cost multipath routes depending on which kernel version you are looking at. older kernels without ipv6 ECMP support, accept the below ECMP routes, #ip -6 route add 2001::/16 nexthop via fe80:2::2 dev swp1 #ip -6 route add 2001::/16 nexthop via fe80:2::3 dev swp1 store them as separate routes and pick the last one during lookup. Newer kernels, after the support for equal cost multipath routes was added http://patchwork.ozlabs.org/patch/188562/, now accept multipath routes added individually using the above 'ip -6 route' format OR sent using RTA_MULTIPATH with the below command #ip -6 route add 2001::/16 nexthop via fe80:2::2 dev swp1 nexthop via fe80:2::3 dev swp1 And the kernel now stores and treats them as equal cost multipath routes during lookups. However in all cases above, netlink notifications to ipv6 ECMP route adds and deletes come separately for each next hop. Example libnl notification in the above case with both old and new kernels: inet6 2001::/16 table main type unicast scope global priority 0x400 protocol boot nexthop via fe80:2::2 dev swp1 inet6 2001::/16 table main type unicast scope global priority 0x400 protocol boot nexthop via fe80:2::3 dev swp1 Since they are separate route notifications for objects with same key, libnl replaces the existing ones and hence only the last route update sticks. This patch uses the oo_update feature to not replace but update an existing route if its a ipv6 equal cost multipath route. The object after an update looks like the below (similar to ipv4 ECMP routes): inet6 2001::/16 table main type unicast scope global priority 0x400 protocol boot nexthop via fe80:2::2 dev swp1 nexthop via fe80:2::3 dev swp1 Signed-off-by: Shrijeet Mukherjee <shm@cumulusnetworks.com> Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Reviewed-by: Nolan Leake <nolan@cumulusnetworks.com> Reviewed-by: Wilson Kok <wkok@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Merge branch 'aligned_be64' of https://github.com/rmfought/libnlThomas Graf2012-12-172-0/+8
|\
| * Re-adding #defines for __aligned_be64 for older kernelsRich Fought2012-12-132-0/+8
| |
* | Included defs.h so DISABLE_PTHREADS is visible.Rich Fought2012-12-131-0/+2
|/
* netfilter: update local header filesThomas Graf2012-12-115-280/+425
| | | | | | Needed to NF_CT_EXPECT_PERMANENT etc. Signed-off-by: Thomas Graf <tgraf@suug.ch>
* can: provide local copy of <linux/can/netlink.h>Thomas Graf2012-12-111-0/+122
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Fix make check when using --disable-cliGilles Espinasse2012-12-051-4/+8
| | | | | Signed-off-by: Gilles Espinasse <g.esp@free.fr> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Fix python detection codeGilles Espinasse2012-12-051-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Gilles Espinasse <g.esp@free.fr> Compiling libnl versions that include doc or the git tree produce this checking for python build information... checking for python2.6... python2.6 checking for main in -lpython2.6... yes checking python2.6/Python.h usability... yes checking python2.6/Python.h presence... yes checking for python2.6/Python.h... yes ./configure: line 4272: test: !=: unary operator expected checking for python2.5... (cached) python2.6 checking for main in -lpython2.6... (cached) yes checking for python2.6/Python.h... (cached) yes ./configure: line 4272: test: !=: unary operator expected checking for python2.4... (cached) python2.6 checking for main in -lpython2.6... (cached) yes checking for python2.6/Python.h... (cached) yes ./configure: line 4272: test: !=: unary operator expected checking for python2.3... (cached) python2.6 checking for main in -lpython2.6... (cached) yes checking for python2.6/Python.h... (cached) yes ./configure: line 4272: test: !=: unary operator expected checking for python2.2... (cached) python2.6 checking for main in -lpython2.6... (cached) yes checking for python2.6/Python.h... (cached) yes ./configure: line 4272: test: !=: unary operator expected checking for python2.1... (cached) python2.6 checking for main in -lpython2.6... (cached) yes checking for python2.6/Python.h... (cached) yes ./configure: line 4272: test: !=: unary operator expected checking for python... (cached) python2.6 checking for main in -lpython2.6... (cached) yes checking for python2.6/Python.h... (cached) yes ./configure: line 4272: test: !=: unary operator expected results of the Python check: Binary: python2.6 Library: python2.6 Include Dir: no Fix the unary operator warning allow to break when one python version is found Add the more recent python versions Change send upstream as http://savannah.gnu.org/patch/index.php?7897 Signed-off-by: Thomas Graf <tgraf@suug.ch>
* link: socket-CAN helper functionsBenedikt Spranger2012-11-292-0/+386
| | | | | | | Add helper functions to make socket-CAN configuration easy. Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* link: basic socket-CAN supportBenedikt Spranger2012-11-293-1/+437
| | | | | | | | | | | | | Controller Area Network (CAN) is a networking technology which has widespread use in automation, embedded devices and automotive fields. The socket-CAN package is an implementation of CAN protocols for Linux. All socket-CAN related configurations are carried out through Netlink. Add basic socket-CAN support to libnl to be able to configure CAN devices with libnl. Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* build: resolve lex failureJan Engelhardt2012-11-271-2/+2
| | | | | | | | | | | This is an addendum to 0a9d5fcfa4c3fe8c930103f7639723dfd1ae4889, which forgot to change ${LEX} to ${FLEX} in lib/Makefile.am. On openSUSE, /usr/bin/lex is a wrapper that calls `flex -l ...`. libnl however requires flex, not lex or a compat mode thereof, so using ${FLEX} is the proper thing to do. Signed-off-by: Jan Engelhardt <jengelh@inai.de>
* Merge branch 'master' of git://git.inai.de/libnlThomas Graf2012-11-267-382/+10
|\
| * build: use foreign modeJan Engelhardt2012-11-264-371/+1
| | | | | | | | | | | | | | This is the magic trick to get rid of files like NEWS, INSTALL, etc. that are unused in some projects, like libnl. Signed-off-by: Jan Engelhardt <jengelh@inai.de>
| * build: use AC_CONFIG_AUX_DIRJan Engelhardt2012-11-264-12/+8
| | | | | | | | | | | | Stash all those scripts into a separate directory and ignore that. Signed-off-by: Jan Engelhardt <jengelh@inai.de>
| * build: resolve automake-1.12 warningsJan Engelhardt2012-11-262-0/+2
| | | | | | | | | | | | | | | | | | /usr/share/automake-1.12/am/ltlibrary.am: warning: 'libnl-cli-3.la': linking libtool libraries using a non-POSIX archiver requires 'AM_PROG_AR' in 'configure.ac' (one for each .la file) Signed-off-by: Jan Engelhardt <jengelh@inai.de>
| * build: rename configure.in -> .acJan Engelhardt2012-11-262-0/+0
| | | | | | | | | | | | | | "configure.in" is a very, very old, obsolete name. Newer automake will reject it, so rename it now. Signed-off-by: Jan Engelhardt <jengelh@inai.de>
* | 3.2.16 releaselibnl3_2_16Thomas Graf2012-11-262-3/+3
|/
* cache: only continue iterating over co_groups if it is availableThomas Graf2012-11-261-2/+5
| | | | | | | | A co_groups == NULL must enter the loop to trigger the initial fill of the cache but may never bump the grp pointer as doing so prevents the loop from being escaped correctly. Signed-off-by: Thomas Graf <tgraf@suug.ch>
* 3.2.15 releaselibnl3_2_15Thomas Graf2012-11-232-4/+4
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Include the newly added header files in next releaseThomas Graf2012-11-231-0/+3
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: reserve room in cache_ops to avoid breaking module ABI too frequentlyThomas Graf2012-11-231-0/+9
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* configure: Replace broken AM_PROG_LEX with AC_CHECK_PROGSThomas Graf2012-11-231-3/+3
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Updated configure.in to make sure bison and lex are installed.Richard Marshall2012-11-201-1/+14
| | | | Fixes issue #7