]> git.proxmox.com Git - mirror_iproute2.git/commit - lib/libnetlink.c
netlink: Change rtnl_dump_done to always show error
authorDavid Ahern <dsahern@gmail.com>
Tue, 16 May 2017 21:22:46 +0000 (14:22 -0700)
committerStephen Hemminger <stephen@networkplumber.org>
Wed, 31 May 2017 00:32:38 +0000 (17:32 -0700)
commit05a14fc1218885ba6236b409fbf6b89976b8636e
treebf70d8d51e587a0b03cf6f4ad1c1b9d85541d391
parent98447086f875a21ceccae9be00a36908fe8321d6
netlink: Change rtnl_dump_done to always show error

The original code which became rtnl_dump_done only shows netlink errors
if the protocol is NETLINK_SOCK_DIAG, but netlink dumps always appends
the length which contains any error encountered during the dump. Update
rtnl_dump_done to always show the error if there is one.

As an *example* without this patch, dumping a route object that exceeds
the internal buffer size terminates with no message to the user -- the
dump just ends because the NLMSG_DONE attribute was received. With this
patch the user at least gets a message that the dump was aborted.

$ ip ro ls
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
10.10.0.0/16 dev veth1 proto kernel scope link src 10.10.0.1
172.16.1.0/24 dev br0.11 proto kernel scope link src 172.16.1.1
Error: Buffer too small for object
Dump terminated

The point of this patch is to notify the user of a failure versus
silently exiting on a partial dump. Because the NLMSG_DONE attribute
was received, the entire dump needs to be restarted to use a larger
buffer for EMSGSIZE errors. That could be done automatically but it
has other user impacts (e.g., duplicate output if the dump is
restarted) and should be the subject of a different patch.

Signed-off-by: David Ahern <dsahern@gmail.com>
lib/libnetlink.c