From: Giuseppe Lettieri Date: Thu, 21 Jun 2012 10:35:44 +0000 (+0200) Subject: added drain method to netdev-tunnel's X-Git-Tag: sliver-openvswitch-0.1-1~11 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=03e7973c8bac680c113cbdc64266e7b19b9cf464;p=sliver-openvswitch.git added drain method to netdev-tunnel's --- diff --git a/lib/netdev-tunnel.c b/lib/netdev-tunnel.c index d9c54c3a7..6bbf2cba8 100644 --- a/lib/netdev-tunnel.c +++ b/lib/netdev-tunnel.c @@ -299,7 +299,22 @@ netdev_tunnel_send_wait(struct netdev *netdev_) static int netdev_tunnel_drain(struct netdev *netdev_) { - struct netdev_tunnel *netdev = netdev_tunnel_cast(netdev_); + struct netdev_dev_tunnel *dev = + netdev_dev_tunnel_cast(netdev_get_dev(netdev_)); + char buffer[128]; + int error; + + if (!dev->connected) + return 0; + for (;;) { + error = recv(dev->sockfd, buffer, 128, MSG_TRUNC); + if (error) { + if (error == -EAGAIN) + break; + else if (error != -EMSGSIZE) + return error; + } + } return 0; }