support for tap interfaces on PlanetLab
[sliver-openvswitch.git] / lib / dpif-netdev.c
index c71bd6e..9e8d5e4 100644 (file)
@@ -306,6 +306,8 @@ static const char* internal_port_type(const struct dp_netdev* dp)
 {
        if (dp->class == &dpif_netdev_class)
                return "tap";
+       if (dp->class == &dpif_planetlab_class)
+               return "tap_pl";
        return "dummy";
 }
 
@@ -367,7 +369,9 @@ choose_port(struct dpif *dpif, struct netdev *netdev)
     struct dp_netdev *dp = get_dp_netdev(dpif);
     int port_no;
 
-    if (dpif->dpif_class != &dpif_netdev_class) {
+    if (dpif->dpif_class != &dpif_netdev_class &&
+        dpif->dpif_class != &dpif_planetlab_class)
+    {
         /* If the port name contains a number, try to assign that port number.
          * This can make writing unit tests easier because port numbers are
          * predictable. */
@@ -1283,6 +1287,11 @@ const struct dpif_class dpif_netdev_class = {
     DPIF_NETDEV_CLASS_FUNCTIONS
 };
 
+const struct dpif_class dpif_planetlab_class = {
+    "planetlab",
+    DPIF_NETDEV_CLASS_FUNCTIONS
+};
+
 static void
 dpif_dummy_register__(const char *type)
 {