[libvirt] [PATCH] Fix undefined symbol error when macvtap support is disabled

Matthias Bolte matthias.bolte at googlemail.com
Wed Dec 1 15:34:30 UTC 2010


Use macvtap specific functions depending on WITH_MACVTAP.

Use #if instead of #ifdef to check for WITH_MACVTAP, because
WITH_MACVTAP is always defined with value 0 or 1.

Also export virVMOperationType{To|From}String unconditional,
because they are used unconditional in the domain config code.
---
 src/libvirt_macvtap.syms |    5 +++--
 src/libvirt_private.syms |    5 +++++
 src/qemu/qemu_driver.c   |    4 ++++
 src/util/macvtap.h       |   19 +++++++++----------
 4 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/src/libvirt_macvtap.syms b/src/libvirt_macvtap.syms
index 107b7da..b48565b 100644
--- a/src/libvirt_macvtap.syms
+++ b/src/libvirt_macvtap.syms
@@ -1,9 +1,10 @@
 #
+# These symbols are dependent on WITH_MACVTAP.
+#
+
 
 # macvtap.h
 delMacvtap;
 openMacvtapTap;
-virVMOperationTypeFromString;
-virVMOperationTypeToString;
 vpAssociatePortProfileId;
 vpDisassociatePortProfileId;
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 310d8f4..3c1c823 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -504,6 +504,11 @@ virLogStartup;
 virLogUnlock;
 
 
+# macvtap.h
+virVMOperationTypeFromString;
+virVMOperationTypeToString;
+
+
 # memory.h
 virAlloc;
 virAllocN;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index fcb90a3..aa3478f 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -11879,6 +11879,7 @@ cleanup:
     return ret;
 }
 
+#if WITH_MACVTAP
 static void
 qemudVPAssociatePortProfiles(virDomainDefPtr def) {
     int i;
@@ -11913,6 +11914,7 @@ err_exit:
         }
     }
 }
+#endif /* WITH_MACVTAP */
 
 /* Finish is the third and final step, and it runs on the destination host. */
 static virDomainPtr
@@ -11974,7 +11976,9 @@ qemudDomainMigrateFinish2 (virConnectPtr dconn,
             goto cleanup;
         }
 
+#if WITH_MACVTAP
         qemudVPAssociatePortProfiles(vm->def);
+#endif /* WITH_MACVTAP */
 
         if (flags & VIR_MIGRATE_PERSIST_DEST) {
             if (vm->persistent)
diff --git a/src/util/macvtap.h b/src/util/macvtap.h
index 389d1fd..3ae2c24 100644
--- a/src/util/macvtap.h
+++ b/src/util/macvtap.h
@@ -57,11 +57,6 @@ struct _virVirtualPortProfileParams {
     } u;
 };
 
-
-# if defined(WITH_MACVTAP)
-
-#  include "internal.h"
-
 enum virVMOperationType {
     VIR_VM_OP_CREATE,
     VIR_VM_OP_SAVE,
@@ -75,6 +70,10 @@ enum virVMOperationType {
     VIR_VM_OP_LAST
 };
 
+# if WITH_MACVTAP
+
+#  include "internal.h"
+
 int openMacvtapTap(const char *ifname,
                    const unsigned char *macaddress,
                    const char *linkdev,
@@ -90,11 +89,9 @@ void delMacvtap(const char *ifname,
                 const char *linkdev,
                 virVirtualPortProfileParamsPtr virtPortProfile);
 
-# endif /* WITH_MACVTAP */
-
-# define MACVTAP_MODE_PRIVATE_STR  "private"
-# define MACVTAP_MODE_VEPA_STR     "vepa"
-# define MACVTAP_MODE_BRIDGE_STR   "bridge"
+#  define MACVTAP_MODE_PRIVATE_STR  "private"
+#  define MACVTAP_MODE_VEPA_STR     "vepa"
+#  define MACVTAP_MODE_BRIDGE_STR   "bridge"
 
 int vpAssociatePortProfileId(const char *macvtap_ifname,
                              const unsigned char *macvtap_macaddr,
@@ -109,6 +106,8 @@ int vpDisassociatePortProfileId(const char *macvtap_ifname,
                                 const virVirtualPortProfileParamsPtr virtPort,
                                 enum virVMOperationType vmOp);
 
+# endif /* WITH_MACVTAP */
+
 VIR_ENUM_DECL(virVirtualPort)
 VIR_ENUM_DECL(virVMOperation)
 
-- 
1.7.0.4




More information about the libvir-list mailing list