in-band: use open_type when opening internal device
authorThadeu Lima de Souza Cascardo <cascardo@redhat.com>
Mon, 18 Jul 2016 13:53:44 +0000 (10:53 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@redhat.com>
Wed, 27 Jul 2016 12:05:58 +0000 (09:05 -0300)
in-band code will open a device that it expects to be the main internal port of
the bridge. However, it's possible that the correct type is a different one. For
dpif-netdev, it might be a tap device, or a dummy device for dummy datapaths.
ofproto_port_open_type will give the correct type.

While this doesn't cause any problems right now, as the needed type would be
opened already, a later patch assumes netdev with different types cannot be
opened.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
ofproto/in-band.c

index 36e80f4..e3ee41a 100644 (file)
@@ -422,9 +422,10 @@ in_band_create(struct ofproto *ofproto, const char *local_name,
     struct in_band *in_band;
     struct netdev *local_netdev;
     int error;
+    const char *type = ofproto_port_open_type(ofproto->type, "internal");
 
     *in_bandp = NULL;
-    error = netdev_open(local_name, "internal", &local_netdev);
+    error = netdev_open(local_name, type, &local_netdev);
     if (error) {
         VLOG_ERR("%s: failed to initialize in-band control: cannot open "
                  "datapath local port %s (%s)", ofproto->name,