updated to new rx_recv semantics
authorGiuseppe Lettieri <g.lettieri@iet.unipi.it>
Mon, 10 Feb 2014 15:28:01 +0000 (16:28 +0100)
committerGiuseppe Lettieri <g.lettieri@iet.unipi.it>
Mon, 10 Feb 2014 15:28:01 +0000 (16:28 +0100)
lib/netdev-pltap.c
lib/netdev-tunnel.c

index 04e68ba..1875c0e 100644 (file)
@@ -514,23 +514,24 @@ netdev_pltap_rx_recv(struct netdev_rx *rx_, struct ofpbuf *buffer)
     struct tun_pi pi;
     struct iovec iov[2] = {
         { .iov_base = &pi, .iov_len = sizeof(pi) },
-       { .iov_base = buffer->data, .iov_len = size }
+           { .iov_base = buffer->data, .iov_len = size }
     };
     for (;;) {
         ssize_t retval;
         retval = readv(rx->fd, iov, 2);
         if (retval >= 0) {
             if (retval <= size) {
-               return retval;
+            buffer->size += retval;
+               return 0;
            } else {
-               return -EMSGSIZE;
+               return EMSGSIZE;
            }
         } else if (errno != EINTR) {
             if (errno != EAGAIN) {
                 VLOG_WARN_RL(&rl, "error receiveing Ethernet packet on %s: %s",
                     netdev_rx_get_name(rx_), ovs_strerror(errno));
             }
-            return -errno;
+            return errno;
         }
     }
 }
index b197e53..6b54697 100644 (file)
@@ -271,7 +271,7 @@ netdev_tunnel_rx_recv(struct netdev_rx *rx_, struct ofpbuf *buffer)
     struct netdev_tunnel *netdev =
         netdev_tunnel_cast(rx_->netdev);
     if (!netdev->connected)
-        return -EAGAIN;
+        return EAGAIN;
     for (;;) {
         ssize_t retval;
         retval = recv(rx->fd, buffer->data, size, MSG_TRUNC);
@@ -281,11 +281,12 @@ netdev_tunnel_rx_recv(struct netdev_rx *rx_, struct ofpbuf *buffer)
                netdev->stats.rx_packets++;
                netdev->stats.rx_bytes += retval;
             if (retval <= size) {
-                   return retval;
+                buffer->size += retval;
+                   return 0;
             } else {
                 netdev->stats.rx_errors++;
                 netdev->stats.rx_length_errors++;
-                return -EMSGSIZE;
+                return EMSGSIZE;
             }
         } else if (errno != EINTR) {
             if (errno != EAGAIN) {
@@ -293,7 +294,7 @@ netdev_tunnel_rx_recv(struct netdev_rx *rx_, struct ofpbuf *buffer)
                     netdev_rx_get_name(rx_), ovs_strerror(errno));
                    netdev->stats.rx_errors++;
             }
-            return -errno;
+            return errno;
         }
     }
 }