[Libvirt-cim] [PATCH] Fix pool_member_of() for Net devices of type network

Dan Smith danms at us.ibm.com
Wed May 28 14:29:59 UTC 2008


# HG changeset patch
# User Dan Smith <danms at us.ibm.com>
# Date 1211984997 25200
# Node ID edf43e3ad962d666500b682a19aea71267be7e4b
# Parent  e987c6ce099434eddec21ca021eba5cd37c4e946
Fix pool_member_of() for Net devices of type network

Some assumptions were made in this code about what the source field contained
which were no longer correct when we added network (instead of bridge)
support.  This patch checks the type and interprets the field correctly.

This fixes RAFP for domains with 'network' interfaces for me.

Signed-off-by: Dan Smith <danms at us.ibm.com>

diff -r e987c6ce0994 -r edf43e3ad962 src/Virt_DevicePool.c
--- a/src/Virt_DevicePool.c	Tue May 20 10:33:56 2008 -0700
+++ b/src/Virt_DevicePool.c	Wed May 28 07:29:57 2008 -0700
@@ -378,13 +378,20 @@
 }
 
 static char *_netpool_member_of(virConnectPtr conn,
-                                const char *bridge)
+                                const struct net_device *ndev)
 {
         virNetworkPtr net = NULL;
         const char *netname;
         char *pool = NULL;
 
-        net = bridge_to_network(conn, bridge);
+        if (STREQ(ndev->type, "bridge"))
+                net = bridge_to_network(conn, ndev->source);
+        else if (STREQ(ndev->type, "network"))
+                net = virNetworkLookupByName(conn, ndev->source);
+        else {
+                CU_DEBUG("Unhandled network type `%s'", ndev->type);
+        }
+
         if (net == NULL)
                 goto out;
 
@@ -395,7 +402,7 @@
         if (asprintf(&pool, "NetworkPool/%s", netname) == -1)
                 pool = NULL;
 
-        CU_DEBUG("Determined pool: %s (%s, %s)", pool, bridge, netname);
+        CU_DEBUG("Determined pool: %s (%s, %s)", pool, ndev->source, netname);
 
  out:
         virNetworkFree(net);
@@ -435,7 +442,7 @@
         for (i = 0; i < count; i++) {
                 if (STREQ((devs[i].id), dev)) {
                         result = _netpool_member_of(conn,
-                                                    devs[i].dev.net.source);
+                                                    &devs[i].dev.net);
                         break;
                 }
         }




More information about the Libvirt-cim mailing list