added drain method to netdev-tunnel's
authorGiuseppe Lettieri <g.lettieri@iet.unipi.it>
Thu, 21 Jun 2012 10:35:44 +0000 (12:35 +0200)
committerGiuseppe Lettieri <g.lettieri@iet.unipi.it>
Thu, 21 Jun 2012 10:35:44 +0000 (12:35 +0200)
lib/netdev-tunnel.c

index d9c54c3..6bbf2cb 100644 (file)
@@ -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;
 }