Merge branch 'mainstream'
[sliver-openvswitch.git] / lib / netdev-bsd.c
index 180ce7f..dd27d2d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Gaetano Catalli.
+ * Copyright (c) 2011, 2013 Gaetano Catalli.
  * Copyright (c) 2013 YAMAMOTO Takashi.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -293,7 +293,7 @@ netdev_bsd_construct_system(struct netdev *netdev_)
         return error;
     }
 
-    ovs_mutex_init(&netdev->mutex, PTHREAD_MUTEX_NORMAL);
+    ovs_mutex_init(&netdev->mutex);
     netdev->change_seq = 1;
     netdev->tap_fd = -1;
     netdev->kernel_name = xstrdup(netdev_->name);
@@ -327,7 +327,7 @@ netdev_bsd_construct_tap(struct netdev *netdev_)
 
     /* Create a tap device by opening /dev/tap.  The TAPGIFNAME ioctl is used
      * to retrieve the name of the tap device. */
-    ovs_mutex_init(&netdev->mutex, PTHREAD_MUTEX_NORMAL);
+    ovs_mutex_init(&netdev->mutex);
     netdev->tap_fd = open("/dev/tap", O_RDWR);
     netdev->change_seq = 1;
     if (netdev->tap_fd < 0) {
@@ -702,8 +702,8 @@ netdev_bsd_send(struct netdev *netdev_, const void *data, size_t size)
                 }
             }
         } else if (retval != size) {
-            VLOG_WARN_RL(&rl, "sent partial Ethernet packet (%zd bytes of "
-                         "%zu) on %s", retval, size, name);
+            VLOG_WARN_RL(&rl, "sent partial Ethernet packet (%"PRIuSIZE"d bytes of "
+                         "%"PRIuSIZE") on %s", retval, size, name);
             error = EMSGSIZE;
         } else {
             break;
@@ -1428,6 +1428,9 @@ nd_to_iff_flags(enum netdev_flags nd)
         iff |= IFF_PPROMISC;
 #endif
     }
+    if (nd & NETDEV_LOOPBACK) {
+        iff |= IFF_LOOPBACK;
+    }
     return iff;
 }
 
@@ -1441,6 +1444,9 @@ iff_to_nd_flags(int iff)
     if (iff & IFF_PROMISC) {
         nd |= NETDEV_PROMISC;
     }
+    if (iff & IFF_LOOPBACK) {
+        nd |= NETDEV_LOOPBACK;
+    }
     return nd;
 }
 
@@ -1510,7 +1516,9 @@ const struct netdev_class netdev_bsd_class = {
     NULL, /* set_queue */
     NULL, /* delete_queue */
     NULL, /* get_queue_stats */
-    NULL, /* dump_queue */
+    NULL, /* queue_dump_start */
+    NULL, /* queue_dump_next */
+    NULL, /* queue_dump_done */
     NULL, /* dump_queue_stats */
 
     netdev_bsd_get_in4,
@@ -1573,7 +1581,9 @@ const struct netdev_class netdev_tap_class = {
     NULL, /* set_queue */
     NULL, /* delete_queue */
     NULL, /* get_queue_stats */
-    NULL, /* dump_queue */
+    NULL, /* queue_dump_start */
+    NULL, /* queue_dump_next */
+    NULL, /* queue_dump_done */
     NULL, /* dump_queue_stats */
 
     netdev_bsd_get_in4,