summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-rtnl
AgeCommit message (Collapse)Author
2015-03-23sd-rtnl: handle empty multi-part message from the kernelAlin Rauta
We strips out NLMSG_DONE piece from a multi-part message adding into the receive queue only the messages containing actual data. If we send a request to the kernel for getting the forwarding database table (just an example), the response will be a multi-part message like below: 1. FDB entry 1; 2. FDB entry 2; 3. NLMSG_DONE; We strip out "3. NLMSG_DONE;" part and places into the receive queue a pointer to "1. FDB entry 1; 2. FDB entry 2". But if the FDB table is empty, the respose from the kernel will look like below: 1. NLMSG_DONE; We strip out "1. NLMSG_DONE;" part and since there is no actual data got, it continues waiting until reaching timeout. Therefore, a call to "sd_rtnl_call" to send and wait for a response from kernel will exit with timeout which is interpreted as error in communication. This patch puts the NLMSG_DONE message on the receive queue if it ends an empty multi-part message. This situation is detected in sd_rtnl_call() and in the callback code and NULL is returned to the caller instead. [tomegun: - added/reworded commit message - extend the same support to sd_rtnl_call_async() - drop debug logging from library, we only do this if something is really wrong, but an empty multi-part message is perfectly normal - modernize the code we touch whilst we are at it]
2015-03-13sd-rtnl: read_message - don't set group if not neededTom Gundersen
2015-03-13sd-rtnl: process - only apply matches to broadcast messagesTom Gundersen
2015-03-13sd-rtnl: improve detection of broadcast messagesTom Gundersen
Do not rely on nl_pid == 0, but check the groups instead. We currently avoid using nl_pid == 0 for unicast anyway, so this should be redundant, but let's try to be correct.
2015-03-13sd-rtnl: never set serial to 0Tom Gundersen
In the unlikely event that we wrap the counter, skip 0 as this is used for broadcasts. Suggested by Richard Maw.
2015-03-13tree-wide: there is no ENOTSUP on linuxDavid Herrmann
Replace ENOTSUP by EOPNOTSUPP as this is what linux actually uses.
2015-03-12networkd: Begin with serial number 1 for netlink requestsRichard Maw
"Notifications are of informal nature and no reply is expected, therefore the sequence number is typically set to 0."[1] If networkd is started soon after recent netlink activity, then there will be messages with sequence number 0 in the buffer. The first thing networkd does is to request a dump of all the links. If it uses sequence number 0 for this, then it may confuse the dump request's response with that of a notification. This will result in it failing to properly enumerate all the links, but more importantly, when it comes to enumerate all the addresses, it will still have the link dump in progress, so the address enumeration will fail with -EBUSY. [1]: http://www.infradead.org/~tgr/libnl/doc/core.html#core_msg_types [tomegun: sequence -> serial]
2015-02-26sd-rtnl: types - fix check for unsupported typeTom Gundersen
Spotted by Thomas H.P. Andersen <phomes@gmail.com>
2015-02-26sd-rtnl: types - don't assert_return in private APITom Gundersen
2015-02-23libsystemd: revert one hunk of duplicate ifdef removalZbigniew Jędrzejewski-Szmek
This change exposed a bug in kernel headers: /usr/include/linux/if_bridge.h:184:20: error: field 'ip6' has incomplete type struct in6_addr ip6; ^ /usr/include/linux/if_tunnel.h:76:19: error: field 'prefix' has incomplete type struct in6_addr prefix; ^
2015-02-23remove unused includesThomas Hindoe Paaboel Andersen
This patch removes includes that are not used. The removals were found with include-what-you-use which checks if any of the symbols from a header is in use.
2015-02-12Revert "tree-wide: Always use recvmsg with MSG_CMSG_CLOEXEC"Lennart Poettering
This reverts commit d6d810fbf8071f8510450dbacd1d083f37603656. It's apparently not OK to pass MSG_CMSG_CLOEXEC to recvmsg() of raw sockets.
2015-02-10tree-wide: Always use recvmsg with MSG_CMSG_CLOEXECCristian Rodríguez
2015-02-09sd-rtnl: fix typesystem for IFLA_AF_SPECTom Gundersen
Got this one wrong, it is not a union, just a nested container.
2015-02-08sd-rtnl: add support for IFLA_INET6_*Tom Gundersen
2015-02-08sd-rtnl: extend type system to allow address-family to decide the union membersTom Gundersen
So far we only supported selecting them by sibling attributes. (This stuff is all a bit crazy, but there seems to be no other way...)
2015-02-08sd-rtnl: don't treat 0-length messages speciallyTom Gundersen
Still parse the CMSG data, and most importantly make sure we drop the message when peeking.
2015-02-06sd-rtnl: don't fall over when receiving 0 bytes from the socketTom Gundersen
causes EOF. Seems like a kernel bug. Ignoring it seems to work be the best we can do for now... See https://bugs.freedesktop.org/show_bug.cgi?id=88397
2015-02-06sd-rtnl: fix creation of synthetic error repliesTom Gundersen
2015-02-03sd-rtnl: allow sd_rtnl_open_fd() to be used on bound socketsTom Gundersen
2015-02-02networkd: support socket activationTom Gundersen
Still keep the non-socket activation code around for starting from the commandline, but will likely drop that too in the future.
2015-02-02sd-rtnl: introduce sd_rtnl_new_from_netlinkTom Gundersen
2015-01-31sd-rtnl: don't fail event handler when callback failsTom Gundersen
As in sd-bus, simply log at debug level when a callback fails, but don't fail the event handler. Otherwise any error returned by any callback will disable the rtnl event handler. We should only do that on serious internal errors in sd-rtnl that we know cannot be recovered from.
2015-01-22networkd: Introduce ip6gre and ip6gretapSusant Sahani
This patch introduces ipv6 gre and gretap. test: ip6gre.netdev: [NetDev] Name=ip6gretap Kind=ip6gretap [Tunnel] Local=2a00:ffde:4567:edde::4987 Remote=2001:473:fece:cafe::5179 ip6gre.network: [Match] Name=eno16777736 [Network] Tunnel=ip6gretap ip link 6: ip6gre@eno16777736: <POINTOPOINT,NOARP> mtu 1448 qdisc noop state DOWN mode DEFAULT group default link/gre6 2a:00:ff:de:45:67:ed:de:00:00:00:00:00:00:49:87 peer 20:01:04:73:fe:ce:ca:fe:00:00:00:00:00:00:51:79
2015-01-22networkd: Introduce IP6 tunnelSusant Sahani
This patch enables networkd to create IP6 tunnels example conf: ipip6.netdev: [NetDev] Name=ipip6-tunnel Kind=ip6tnl [Tunnel] Mode=ip4ipv6 Local=2a00:ffde:4567:edde::4987 Remote=2001:473:fece:cafe::5179 ipip6.network [Match] Name=wlan0 [Network] Tunnel=ipip6-tunnel 23: ipip6-tunnel@wlan0: <POINTOPOINT,NOARP> mtu 1452 qdisc noop state DOWN mode DEFAULT group default link/tunnel6 2a00:ffde:4567:edde::4987 peer 2001:473:fece:cafe::5179
2015-01-22networkd: introduce gretapSusant Sahani
This patch introdeces gretap to networkd
2015-01-22Assorted format fixesZbigniew Jędrzejewski-Szmek
Types used for pids and uids in various interfaces are unpredictable. Too bad.
2015-01-22Fix some format strings for enums, they are signedZbigniew Jędrzejewski-Szmek
2015-01-19networkd: netdev - add ipvlan supportTom Gundersen
2015-01-13refcnt: refcnt is unsigned, fix comparisonsTom Gundersen
This does not make a difference, but the code was confusing.
2015-01-13nspawn: add new option "--port=" for exposing container ports on the local hostLennart Poettering
This exposes an IP port on the container as local port using DNAT.
2014-12-30tree-wide: spelling fixesVeres Lajos
https://github.com/vlajos/misspell_fixer https://github.com/torstehu/systemd/commit/b6fdeb618cf2f3ce1645b3315f15f482710c7ffa Thanks to Torstein Husebo <torstein@huseboe.net>.
2014-12-29rtnl: recv_message - don't enforce sender uidTom Gundersen
All we care about is that the kernel (pid==0) sent the message. Verifying the sender uid seems to break when using userns. Reported by Stéphane Graber.
2014-12-29sd-rtnl: rtnl_call - don't dispatch wqueue after timeout has passedTom Gundersen
Only a minor change as the timeout would be hit soon thereafetr at the next loop.
2014-12-29sd-rtnl: rtnl_poll - fix typoTom Gundersen
This caused rtnl_poll to always return true immediately in sd_rtnl_call().
2014-12-29sd-rtnl: recv_message - drop message when peeking failsTom Gundersen
Read the message form the socket or we will loop trying to read the same message repeatedly.
2014-12-29sd-rtnl: recv_message - don't fail on interruptTom Gundersen
We should just try again instead.
2014-12-29sd-rtnl: recv_message - log when dropping messageTom Gundersen
We drop messages received from the wrong uid/pid, log this at debug level.
2014-12-18networkd: add FDB supportAlin Rauta
2014-12-09sd-rtnl: fix size check in sd_rtnl_message_append_string()Lennart Poettering
2014-12-08networkd: manager - enumerate addresses globally, rather than per-linkTom Gundersen
The kernel always returns all addresses, rather than only for the given link, so let's only enumerate once.
2014-12-08sd-rtnl: fix bogus warning about dropping 20 bytes from multi-part messagesTom Gundersen
Nothing was being dropped, we just failed to account for the NLMSG_DONE.
2014-12-04sd-rtnl: rename sd_rtnl_message_route_get_{dst,src}_len to *_prefixlenTom Gundersen
This makes the API more consistent.
2014-12-04networkd: add support for source routingTom Gundersen
2014-12-04rtnl: order local addresses/gateways by the address itself as last resortLennart Poettering
This way we can be sure that the returned list is stable regarding modifications in the kernel.
2014-12-04rtnl: when querying local addresses and gateways, take address family into ↵Lennart Poettering
account
2014-12-03rtnl: make checks for default routes more strictLennart Poettering
Also check that the source netmask is 0, not only the destination netmask.
2014-12-03nss-myhostname: always resolve the host name "gateway" to the local default ↵Lennart Poettering
gateway This is useful inside of containers or local networks to intrdouce a stable name of the default gateway host (in case of containers usually the host, in case of LANs usually local router).
2014-12-02sd-rtnl: route - allow GETROUTE with AF_UNSPECTom Gundersen
2014-12-02sd-rtnl: add sd_rtnl_message_{new_neigh,neigh_get_{family,ifindex}}Tom Gundersen