X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fnetlink-socket.c;h=e6b10a184c07551cf188684ae19ddaeb6764aa71;hb=077996afd9aabcbd29a5ca72629b01dcc2fb1793;hp=49a8493eccc54a60c1927f6029108e90f96bad33;hpb=1e3f34c7693bcabae8e443ac1b246680ef9b60e2;p=sliver-openvswitch.git diff --git a/lib/netlink-socket.c b/lib/netlink-socket.c index 49a8493ec..e6b10a184 100644 --- a/lib/netlink-socket.c +++ b/lib/netlink-socket.c @@ -16,7 +16,6 @@ #include #include "netlink-socket.h" -#include #include #include #include @@ -129,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); @@ -242,7 +245,7 @@ nl_sock_join_mcgroup(struct nl_sock *sock, unsigned int multicast_group) int nl_sock_leave_mcgroup(struct nl_sock *sock, unsigned int multicast_group) { - assert(!sock->dump); + ovs_assert(!sock->dump); if (setsockopt(sock->fd, SOL_NETLINK, NETLINK_DROP_MEMBERSHIP, &multicast_group, sizeof multicast_group) < 0) { VLOG_WARN("could not leave multicast group %u (%s)", @@ -333,7 +336,7 @@ nl_sock_recv__(struct nl_sock *sock, struct ofpbuf *buf, bool wait) struct msghdr msg; ssize_t retval; - assert(buf->allocated >= sizeof *nlmsghdr); + ovs_assert(buf->allocated >= sizeof *nlmsghdr); ofpbuf_clear(buf); iov[0].iov_base = buf->base; @@ -881,7 +884,7 @@ nl_dump_done(struct nl_dump *dump) while (!dump->status) { struct ofpbuf reply; if (!nl_dump_next(dump, &reply)) { - assert(dump->status); + ovs_assert(dump->status); } } @@ -1100,7 +1103,7 @@ nl_lookup_genl_family(const char *name, int *number) } ofpbuf_delete(reply); - assert(*number != 0); + ovs_assert(*number != 0); } return *number > 0 ? 0 : -*number; }