summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Bug Fix: Add new fill socket to cache managerroopa2012-11-192-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a new socket to cache manager to request fill's on. cache manager today uses cm_sock to request dump from the kernel. It also listens to netlink async events on the same sock. The problem with this is that when libnl is waiting to process the response to get dump request sent to the kernel during fill, it may receive an async event, resulting in libnl complaining about unexpected msg This is usually reproducible when there is heavy netlink async event traffic during nl_cache_mngr_add. This patch adds a new cm_sync_sock to use for fill during cache manager add cache. The other option is to provide an api to set the cm_sync_sock. But since this is a bug fix its probably better to fix the cache manager add api like this patch does. Please suggest otherwise. Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Reviewed-by: Nolan Leake <nolan@cumulusnetworks.com> Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: provide safe variant of nl_cache_mngt_require() and use itThomas Graf2012-11-1614-26/+75
| | | | | | | | This makes runtime removal of cache operations possible if non-safe API is not in use by application. The non-safe API will be removed in the next major version. Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Use NL_DBG() instead of printing warnings and errors to stderrThomas Graf2012-11-156-15/+15
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: hold a reference to the cache ops while a cache is provided over itThomas Graf2012-11-151-4/+16
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* use safe cache lookup variants internallyThomas Graf2012-11-154-11/+24
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: Provide safe versions of nl_cache_ops_associate() and ↵Thomas Graf2012-11-152-18/+78
| | | | | | nl_cache_ops_lookup() Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: Add reference counter to cache operationsThomas Graf2012-11-152-3/+35
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* link: Protect registration of af and link ops with rwlockThomas Graf2012-11-151-17/+57
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: rwlock accesses to cache operationsThomas Graf2012-11-151-8/+46
| | | | | | Puts an rwlock around 'cache_ops'. Signed-off-by: Thomas Graf <tgraf@suug.ch>
* lock abstraction layerThomas Graf2012-11-152-22/+56
| | | | | | Hide pthread availability and enablement behind internal API Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: Hold cache reference while a cache is being providedThomas Graf2012-11-151-2/+6
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: Add reference counter to cachesThomas Graf2012-11-153-7/+29
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Add master support to rtnl_neigh for AF_BRIDGE objectsroopa2012-11-152-2/+23
| | | | | | | | | | | | | | | | | | | | AF_BRIDGE neigh objects can be uniquely identified by the family, lladdr and bridge ifindex. This patch adds bridge ifindex to AF_BRIDGE neigh objects. Things will be ok even without this patch with just family and lladdr if we assume that we will have unique lladdr's accross bridges in a system. Kernel does not send the bridge ifindex in the AF_BRIDGE fdb/neigh message. This patch tries to get that info by a link cache lookup and adds it to the bridge neigh object Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Reviewed-by: Nolan Leake <nolan@cumulusnetworks.com> Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com> Reviewed-by: Wilson Kok <wkok@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Add AF_BRIDGE support to neigh cacheroopa2012-11-151-10/+36
| | | | | | | | | | | | | This patch adds AF_BRIDGE to the list of families supported by the cache. Implements oo_id_attrs_get to declare separate id attributes for AF_UNSPEC and AF_BRIDGE neigh objects Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Reviewed-by: Nolan Leake <nolan@cumulusnetworks.com> Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com> Reviewed-by: Wilson Kok <wkok@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Add AF_BRIDGE support to link cacheroopa2012-11-141-19/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch was previously submitted as the first approach in RFC http://lists.infradead.org/pipermail/libnl/2012-November/000730.html It adds support for AF_BRIDGE family in link cache. And the key for link object lookups will now be ifindex and family. This allows for AF_UNSPEC rtnl link objects to co-exist with the AF_BRIDGE link objects in the same cache. I have changed some of the rtnl_link api's to explicitly check for AF_UNSPEC to not break existing apps. I will submit a new patch to introduce equivalent rtnl_bridge_link_* api's. We had also discussed updating the existing link objects with AF_BRIDGE attributes, but realized that the updates to link objects will be both AF_UNSPEC and AF_BRIDGE. And that would change link cache to always update existing objects, resulting in comparing and updating close to thirty attributes at cache_include time which seems like a overkill. Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Reviewed-by: Nolan Leake <nolan@cumulusnetworks.com> Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com> Reviewed-by: Wilson Kok <wkok@cumulusnetworks.com> Signed-off-by: Thomas Graf <tgraf@suug.ch>
* addr: Support setting local/peer/anycast/multicast/broadcast address to NULLThomas Graf2012-11-121-20/+40
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: Move nl_cache_ops_set_flags() to cache_mngt.cThomas Graf2012-11-122-10/+13
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: Fix typo in API doc of nl_cache_set_flags()Thomas Graf2012-11-121-1/+1
| | | | Signed-off-by: Thomas Graf <tgraf@suug.ch>
* cache: Move NL_CACHE_AF_ITER to <netlink/cache.h>Thomas Graf2012-11-122-5/+6
| | | | | | <netlink/cache-api.h> alreay requires <netlink/cache.h> anyway. Signed-off-by: Thomas Graf <tgraf@suug.ch>
* Add NL_CACHE_AF_ITER support during refill and resyncroopa2012-11-121-19/+41
| | | | | | | | | | | | | | | This patch adds support to iter over all supported families during cache fill and resync. The motivation for this was previously introduced at http://lists.infradead.org/pipermail/libnl/2012-November/000734.html In short, this patch allows caches to request dump on all supported families instead of only AF_UNSPEC as done today. With feedback from thomas this patch makes the iter over all families conditional on per cache flag NL_CACHE_AF_ITER Signed-off-by: Thomas Graf <tgraf@suug.ch>