[ovs-dev] [oftest 2/5] netdev-dummy: Factor some netdev_dummy_receive() code out into new function.

Ben Pfaff blp at nicira.com
Fri Feb 1 22:23:55 UTC 2013


An upcoming patch will add another user.

Signed-off-by: Ben Pfaff <blp at nicira.com>
---
 lib/netdev-dummy.c |   33 ++++++++++++++++++++++-----------
 1 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c
index 001d188..215e1a2 100644
--- a/lib/netdev-dummy.c
+++ b/lib/netdev-dummy.c
@@ -425,6 +425,26 @@ eth_from_packet_or_flow(const char *s)
     return packet;
 }
 
+static int
+netdev_dummy_queue_packet(struct netdev_dev_dummy *dummy_dev,
+                          const void *data, size_t size)
+{
+    struct netdev_dummy *dev;
+    int n_listeners;
+
+    n_listeners = 0;
+    LIST_FOR_EACH (dev, node, &dummy_dev->devs) {
+        if (dev->listening && dev->recv_queue_len < NETDEV_DUMMY_MAX_QUEUE) {
+            struct ofpbuf *packet = ofpbuf_clone_data(data, size);
+            list_push_back(&dev->recv_queue, &packet->list_node);
+            dev->recv_queue_len++;
+            n_listeners++;
+        }
+    }
+
+    return n_listeners;
+}
+
 static void
 netdev_dummy_receive(struct unixctl_conn *conn,
                      int argc, const char *argv[], void *aux OVS_UNUSED)
@@ -441,7 +461,6 @@ netdev_dummy_receive(struct unixctl_conn *conn,
 
     n_listeners = 0;
     for (i = 2; i < argc; i++) {
-        struct netdev_dummy *dev;
         struct ofpbuf *packet;
 
         packet = eth_from_packet_or_flow(argv[i]);
@@ -450,16 +469,8 @@ netdev_dummy_receive(struct unixctl_conn *conn,
             return;
         }
 
-        n_listeners = 0;
-        LIST_FOR_EACH (dev, node, &dummy_dev->devs) {
-            if (dev->listening
-                && dev->recv_queue_len < NETDEV_DUMMY_MAX_QUEUE) {
-                struct ofpbuf *copy = ofpbuf_clone(packet);
-                list_push_back(&dev->recv_queue, &copy->list_node);
-                dev->recv_queue_len++;
-                n_listeners++;
-            }
-        }
+        n_listeners += netdev_dummy_queue_packet(dummy_dev,
+                                                 packet->data, packet->size);
         ofpbuf_delete(packet);
     }
 
-- 
1.7.2.5




More information about the dev mailing list