X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fnetdev-linux.c;h=c0e0c40c5d2df63ef950da1b27192c150c9d43fc;hb=d978fa4832bbc5176e05edd05bcdf2452a8dded2;hp=5de4fa23c9ad6bd8471a0a1331c365790517c18d;hpb=305b76debf72120672a8ba81d3356b6dccb1da9a;p=sliver-openvswitch.git diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c index 5de4fa23c..c0e0c40c5 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -916,7 +916,7 @@ netdev_linux_send(struct netdev *netdev_, const void *data, size_t size) sock = af_packet_sock(); if (sock < 0) { - return sock; + return -sock; } error = get_ifindex(netdev_, &ifindex); @@ -4639,7 +4639,11 @@ af_packet_sock(void) if (sock == INT_MIN) { sock = socket(AF_PACKET, SOCK_RAW, 0); if (sock >= 0) { - set_nonblocking(sock); + int error = set_nonblocking(sock); + if (error) { + close(sock); + sock = -error; + } } else { sock = -errno; VLOG_ERR("failed to create packet socket: %s", strerror(errno));