Commit Graph

1123 Commits

Author SHA1 Message Date
Steffen Vogel f24c9ba26a route/tc: improved statistics dump (just alignment) 2015-07-19 16:25:40 +02:00
Steffen Vogel 82e0a27f58 route/qdisc: added more attributes to netem dump 2015-07-19 16:24:50 +02:00
Thomas Haller d21790bf96 ipvlan: fix return error code for rtnl_link_ipvlan_get_mode()
rtnl_link_ipvlan_get_mode() was just introduced as new API. Fix the
error code to return -NLE_INVAL instead of -NLE_OPNOTSUPP.

http://lists.infradead.org/pipermail/libnl/2015-June/001921.html
2015-07-10 11:01:32 +02:00
Коренберг Марк e29c979e88 nf: fix potential bug in nfnl_queue_msg_set_payload() when malloc() failed
Suppose the case:
1. message have already some payload
2. malloc() failed

In that case:
1. msg->queue_msg_payload become NULL
2. msg->queue_msg_payload_len stay non-zero

Now when malloc() error occurs, nothing changed.

https://github.com/thom311/libnl/pull/83
2015-07-10 10:06:21 +02:00
Thomas Haller 54e4ca7886 build: merge branch 'kolyshkin-build-cleanups'
https://github.com/thom311/libnl/pull/84
2015-07-09 22:49:19 +02:00
Kir Kolyshkin 4caa5cda2c doc/Makefile.am: don't use asciidoc if disabled
In case doc/configure.ac hasn't found asciidoc or any of its
prerequisites (such as pygmentize), make shouldn't try to run it.
One such case ("gendoc" target) is covered while the other
("%.html" target) is not. Fix it by adding a proper ifdef.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
2015-07-09 22:43:18 +02:00
Kir Kolyshkin 60ac492058 doc/configure.ac: simplify python check
A check for python binary that was originally introduced by commit
183e869 is needed because python is used for a couple of preprocessors
(doxygen-link.py and resolve-asciidoc-refs.py) and therefore it is
impossible to build docs without python.

While it is right to check for python, the check was both wrong and
excessive. Instead of just checking for python binary, it checked for
various versions of python and set a few variables that are not needed
here. More to say, the absense of python binary was not treated as
being fatal like it should.

Fix both problems by using AC_CHECK_PROG for python, terminating the
build in the same way as with doxygen absense. Also, remove the
m4/ax_python.m4 which is no longer needed.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
2015-07-09 22:43:18 +02:00
Kir Kolyshkin d95915c9ce m4/ax*.m4: remove
These files, as well as the proper configure.ac calls, were added
by commit f443be6, but the calls were later removed by commit b4b853e,
so these are no longer needed.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
2015-07-09 22:43:18 +02:00
Kir Kolyshkin dd5336992f m4/ax_python.m4: remove
This file is no longer needed since commit db13843 which copied it
to doc/ subdir and removed the call to AX_PYTHON from configure.ac.

That commit should have moved it rather than copied, let's fix it.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
2015-07-09 22:43:18 +02:00
matben2 34ccb7210f link: set ifi_change in link message
The ifi_change field can be set with the mask of the flags that need
to be changed as part of the link message to the kernel. This means only
the specific flags that have been changed will be modified in the kernel,
rather than the entire flags entry.

[thaller@redhat.com: add capability to indicate the change in behavior]

https://github.com/thom311/libnl/pull/86
2015-07-09 22:33:32 +02:00
Thomas Haller 371226b834 ipvlan: don't check for valid @mode argument in rtnl_link_ipvlan_set_mode()
In the future kernel might support more modes. Don't be so
strict in rtnl_link_ipvlan_set_mode() and accept any uint16
mode.
This way when adding new modes, rtnl_link_ipvlan_set_mode() does not
need to be changed.

If the user passes an invalid value and sends a message to the kernel,
it will be rejected there.

http://lists.infradead.org/pipermail/libnl/2015-June/001902.html

Fixes: 7de5be85bf

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-26 18:06:06 +02:00
Thomas Haller b4afcadc30 ipvlan: fix signature of rtnl_link_ipvlan_get_mode() to signal error
http://lists.infradead.org/pipermail/libnl/2015-June/001902.html

Fixes: 7de5be85bf

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-26 18:04:34 +02:00
Thomas Haller 089a28212d neigh: merge branch 'neigh-typo'
https://github.com/thom311/libnl/pull/79
2015-06-26 17:20:59 +02:00
Thomas Haller 79effc5b35 neigh: accept "norarp" in rtnl_neigh_state2str()
Commit 6a9335f101 fixed a typo in the
string-to-flags conversion. At least for rtnl_neigh_str2state()
we want to continue to parse "norarp" for backward compatiblity.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-26 17:20:43 +02:00
Tobias Jungel 6a9335f101 neigh: fix type for NUD_NOARP flag in trans_tbl
Translate NUD_NOARP to "noarp", instead of "norarp".

https://github.com/thom311/libnl/pull/79

Fixes: 44d362409d

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-26 17:20:38 +02:00
Thomas Haller 12e87e444d ipvlan: merge branch 'add-ipvlan'
http://lists.infradead.org/pipermail/libnl/2015-June/001902.html
2015-06-19 18:04:50 +02:00
Cong Wang f99d48cc40 ipvlan: add a testcase for ipvlan
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-19 18:03:59 +02:00
Cong Wang 7de5be85bf ipvlan: add ipvlan support
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-19 18:03:55 +02:00
jfarrell d754cb4543 build: fix path to cli linker version script for out-of-tree build
https://github.com/thom311/libnl/pull/78
2015-06-19 17:42:51 +02:00
Thomas Haller a9c789ccd4 lib: fix spelling of NL_CAPABILITY_NL_RECV_FAIL_TRUNC_NO_PEEK
Instead of NL_CAPABILITY_NL_RECV_FAIL_TRUNK_NO_PEEK.

Fixes: bbdcaea9a7

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-05 11:28:59 +02:00
Thomas Egerer bbdcaea9a7 lib: return error if an incomplete message was read
If recvmsg indicates that the message read was truncated libnl retries
to read the complete message after increasing the message buffer. This
only works if the message flags MSG_PEEK | MSG_TRUNC are set. If
NL_MSG_PEEK is not enabled on the nl_sock structure, flags are left
empty and the rest of the truncated message is discarded, hence a
subsequent recvmsg returns the next message (in case of a multipart
message, the NLMSG_DONE) is read and returned.
This patch aborts message processing if the message was truncated and
the NL_MSG_PEEK flags was not activated for the nl_sock structure.

http://lists.infradead.org/pipermail/libnl/2015-June/001888.html

[thaller@redhat.com: add NL_CAPABILITY_NL_RECV_FAIL_TRUNK_NO_PEEK]

Signed-off-by: Thomas Egerer <hakke_007@gmx.de>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-05 08:40:02 +02:00
Thomas Haller e206c255d8 utils: add missing link layer protocol translations
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-04 23:06:24 +02:00
Tobias Klauser 1dbe738e1e utils: update link layer protocol translations
Update the private copy of linux/if_arp.h and hook up the not yet
defined ARPHRD_* types in the llprotos translation table. Reorder the
entries such that they correspond to the order they're defined in
linux/if_arp.h. Also remove the #ifdef guards since these are
unnecessary given that the private copy of the kernel header is used.

http://lists.infradead.org/pipermail/libnl/2015-May/001883.html

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-04 23:06:09 +02:00
Thomas Haller 75dcd01756 route/link: fix memleaks in link_msg_parser()
http://lists.infradead.org/pipermail/libnl/2015-May/001880.html

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-06-04 22:49:56 +02:00
Thomas Haller 4818248634 lib/doc: clearify return value of send_simple() functions
The return value of the *nl_send_simple() functions is
inconsistent and not according to the documentation.

nl_send_simple() is document to return the number of bytes sent.
Other *nl_send_simple() functions are documented to return 0 on
success -- for the most part.
See also commit b70174668b which
changed behavior of nl_rtgen_request() to be according to documenation.

Don't change behavior again, only adjust the documentation.

http://lists.infradead.org/pipermail/libnl/2015-May/001872.html

Reported-by: Xiao Jia <stfairy@gmail.com>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-05-12 15:56:50 +02:00
Thomas Haller c3dd6a7355 xfrm: trival refactoring initialization of stack-allocated arguments to nl_send_simple()
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-05-12 14:56:57 +02:00
Thomas Haller eae6a6875c python: merge branch 'python-capi'
Disable debug macro in swig API to reduce the noise
and expose a couple of functions.

https://github.com/thom311/libnl/pull/77
2015-05-12 13:29:42 +02:00
Arend van Spriel 07ad37d4cb python: genl: capi: add genlmsg_hdr() to capi
Allow using genlmsg_hdr() function and make the header fields
accessible in Python scripts.

Signed-off-by: Arend van Spriel <aspriel@gmail.com>
2015-05-12 13:26:15 +02:00
Arend van Spriel 36f4adfa81 python: capi: add nla_put() function to python capi
Adding nla_put() to the capi using a typemap on the input
parameter which needs to be either a str or bytearray.
Otherwise a SWIG exception with be thrown.

Signed-off-by: Arend van Spriel <aspriel@gmail.com>
2015-05-12 13:26:15 +02:00
Arend van Spriel ff6467135e python: capi: expose multicast membership functions
Adding functions to add/drop membership to single multicast group.

Signed-off-by: Arend van Spriel <aspriel@gmail.com>
2015-05-12 13:26:15 +02:00
Arend van Spriel a4a75227df python: disable swig debug print messages
The define was left enabled during development on netlink (and genl)
python swig api. It is a bit annoying in production release so disable
the define.

Signed-off-by: Arend van Spriel <aspriel@gmail.com>
2015-05-12 13:26:15 +02:00
Tobias Klauser 4e115113c9 xfrm: fix potential NULL dereference
If xfrmnl_sel_alloc() returns NULL, the daddr and saddr members are
still accessed, leading to a potential NULL dereference. The same is the
case for xfrmnl_user_tmpl_alloc(). Fix this by returning NULL right away
if allocation fails.

http://lists.infradead.org/pipermail/libnl/2015-May/001874.html

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-05-12 13:14:26 +02:00
Tobias Klauser a214e75457 route/tc: remove unnecessary check for tc_kind member of struct rtnl_tc
The tc_kind member of struct rtnl_tc (and all types which can be
converted to it) is defined as an array and can thus never be
NULL.

http://lists.infradead.org/pipermail/libnl/2015-April/001869.html

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-05-05 16:14:20 +02:00
Tobias Klauser 6af196f03f utils: Add translations for NETLINK_RDMA and NETLINK_CRYPTO
Add translations for NETLINK_RDMA and NETLINK_CRYPTO to nlfamilies,
allowing to use nl_nlfamily2str() and nl_str2nlfamily() for these
families.

This makes it necessary to update the private copy of linux/netlink.h
and also includes the rename of NETLINK_INET_DIAG to NETLINK_SOCK_DIAG
in upstream commit 7f1fb60c4fc9fb29 ("inet_diag: Partly rename inet_ to
sock_") and the removal of the duplicate NLMSG_ALIGN in the
NLMSG_LENGTH() macro in upstream commit a88b9ce5ad4fc633 ("netlink:
remove duplicated NLMSG_ALIGN").

http://lists.infradead.org/pipermail/libnl/2015-April/001868.html

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-05-05 16:04:57 +02:00
Thomas Haller 8f5c65beee libnl-3.2.26 release
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-30 13:17:17 +02:00
Jonas Johansson 31d7d19393 neigh: add support for NDA_VLAN nl attribute
[thaller@redhat.com: modified patch to parse NDA_VLAN and diff vlan]

http://lists.infradead.org/pipermail/libnl/2015-March/001861.html

Signed-off-by: Jonas Johansson <jonasj76@gmail.com>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-23 09:27:23 +01:00
Thomas Haller c242e25c45 route/link: fix indention in inet6_dump_details()
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-22 20:55:59 +01:00
Thomas Haller 860ea27a46 utils: add code comment about capability number assignment
Also reserve a range of capabilities (0x7000 to 0x7FFF) that we won't
use upstream. Add a macro NL_CAPABILITY_IS_USER_RESERVED() to check
if the capability is in that range.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-19 12:26:53 +01:00
Thomas Haller ff19c781d3 build: extend configure option --enable-cli and install all cli programs
Previously, some cli programs were installed to sbin/
and most were not installed at all.

Now, by default install all of them to bin/ directory.
But extend the configure option to allow specifying
'no-inst', 'bin', or 'sbin'.

Acked-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-18 15:36:02 +01:00
Thomas Haller 0c97b088f1 build/trivial: sort PROGRAMS list in src/Makefile.am
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-18 09:49:36 +01:00
David Chappelle 50a76998ac route: remove unnecessary include of private linux/if.h
Including linux/if.h in netlink/route/link.h causes issues
in cases where libnl is used in conjuntion with other third
party libraries that include net/if.h. Seems to be a long
checkered history of symbol collisions between these two
files. As it turns out, including linux/if.h from within
netlink/route/link.h is actually unecessary. I resurrected
a forgotten path from this thread:

    http://lists.infradead.org/pipermail/libnl/2012-April/000525.html

By removing the include as the patch suggests we can get
around the nuissance of the symbol collisions.

https://github.com/thom311/libnl/pull/73

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-17 10:07:49 +01:00
Thomas Haller cd4f66c321 build: revert moving unstable symbols from libnl_3 linker section
In the past, libnl3 had only one section (libnl_3) in the
linker version script. Between 3.2.25 and 3.2.26 release,
this was cleaned up and new symbols were added to libnl_3_2_26
section. Commit d2a30fb also moved new symbols since 3.2.25
to that section.

Fedora 21 and later already uses these symbols in the previous
version (@libnl_3). Updating there would break symbol lookup.

As we have users of the unstable version from pre-3.2.26, move
those symbols back. Note that this now breaks unstable users since
d2a30fb (5 weeks ago) -- which probably are much fewer affected
users.

Fixes: d2a30fbb36

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-09 17:18:45 +01:00
Thomas Haller 24d333075a lib/socket: detect protocol in nl_socket_set_fd()
With support for socket option SO_PROTOCOL we don't need the protocol
argument to nl_socket_set_fd(). Maybe we should drop the protocol argument
and just not support nl_socket_set_fd() on older systems. But instead
keep the argument and allow passing -1 to autodetect it.

If the user sets a protocol option, we check via getsockopt() that the
value is correct and error out otherwise.

On older kernels, the user must set the value. Otherwise
nl_socket_set_fd() will fail.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-06 12:57:43 +01:00
Thomas Haller d62a68cda3 libnl-3.2.26-rc1 release
Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-05 20:25:30 +01:00
Thomas Haller a9c879abbe build: fix path to linker version scripts for out-of-tree build
Fixes: e7d57da0dd

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-05 19:11:27 +01:00
Thomas Haller 2d61e89037 lib/socket: add nl_socket_set_fd() function
This is based on the patch by sagil@infinidat.com, but heavily modified.

Add a function nl_socket_set_fd(), I renamed it from nl_connect_fd().

Now nl_connect() and nl_socket_set_fd() are implemented independently as
they share little code. But they have similar functionality:
to initialize a libnl socket and set it's file descriptor.

A user who wants libnl to setup the socket can continue to use nl_connect().
A user with special requirements should setup the socket entirely. That includes
calling socket() (with or without SOCK_CLOEXEC), bind(), setting buffer size.

For the same reason I dropped nl_create_fd(). It didn't do much more then
calling socket() -- which the user can do directly.

https://github.com/thom311/libnl/pull/68

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-05 12:10:28 +01:00
Sagi Lowenhardt f91e6959ea add socket nl_connect_fd() & nl_create_fd()
-    Added option to create socket (fd) without bind.
     It is now possible to forward the socket fd to another child process...
     ...later use nl_connect_fd() to connect to socket from the child process.

-    Added option to disable CLOEXEC even if defined (in socket.h)
     'nl_socket_enable_cloexec' & 'nl_socket_disable_cloexec'
     No change to current default behavior.

 Signed-off-by: Sagi Lowenhardt <sagil@infinidat.com>
2015-03-05 11:27:27 +01:00
Thomas Haller 9614acf4c4 lib/nl: preserve s_local if nl_connect() fails
s_local.nl_pid is used to track the generated port unless NL_OWN_PORT is set.
Ensure that getsockname() doesn't overwrite the value and possibly reset
the local port manually to release the generated port.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-05 11:26:22 +01:00
Thomas Haller 15824e4273 lib/socket: remove NL_SOCK_BUFSIZE_SET socket flag
The flag was not actually used.

NL_SOCK_BUFSIZE_SET was only set by nl_socket_set_buffer_size().
Note that you can only call nl_socket_set_buffer_size() on a socket that
is already connected via nl_connect().

On first call, nl_connect() would always see NL_SOCK_BUFSIZE_SET unset, and
call nl_socket_set_buffer_size().

Since the flag was never unset, when trying to connect a socket a second
time, we would not set the buffer size again. Which was a bug.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-05 11:25:20 +01:00
Thomas Haller 364ab3daf6 dbg: save errno from modification in NL_DBG()
Evaluating the logging statement might overwrite the errno. Save and
restore it so that NL_DBG() preserves the errno.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2015-03-05 10:30:24 +01:00