From: Ben Pfaff Date: Fri, 17 Aug 2012 22:40:03 +0000 (-0700) Subject: netlink-socket: Don't bother logging SO_RCVBUFFORCE failure as non-root. X-Git-Tag: sliver-openvswitch-1.10.90-1~11^2~99 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=80af5ee5a526706a80dc772d5d79b7894771b4be;p=sliver-openvswitch.git netlink-socket: Don't bother logging SO_RCVBUFFORCE failure as non-root. Some Open vSwitch utilities can do useful work when they are not run as root. Without this commit, these utilities will log a warning on failure to use the SO_RCVBUFFORCE socket option if they open any Netlink sockets. This will always happen, it does not report anything unexpected or fixable as non-root, and sometimes it makes users wonder if something is wrong, so there is no benefit to logging it. This commit drops it in that case. Signed-off-by: Ben Pfaff --- diff --git a/lib/netlink-socket.c b/lib/netlink-socket.c index 847f11f15..e6b10a184 100644 --- a/lib/netlink-socket.c +++ b/lib/netlink-socket.c @@ -128,8 +128,12 @@ nl_sock_create(int protocol, struct nl_sock **sockp) rcvbuf = 1024 * 1024; if (setsockopt(sock->fd, SOL_SOCKET, SO_RCVBUFFORCE, &rcvbuf, sizeof rcvbuf)) { - VLOG_WARN_RL(&rl, "setting %d-byte socket receive buffer failed (%s)", - rcvbuf, strerror(errno)); + /* Only root can use SO_RCVBUFFORCE. Everyone else gets EPERM. + * Warn only if the failure is therefore unexpected. */ + if (errno != EPERM || !getuid()) { + VLOG_WARN_RL(&rl, "setting %d-byte socket receive buffer failed " + "(%s)", rcvbuf, strerror(errno)); + } } retval = get_socket_rcvbuf(sock->fd);