]> xenbits.xensource.com Git - libvirt.git/commitdiff
Link QEMU, LXC, network and storage drivers directly into libvirtd
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 17 Nov 2008 12:18:18 +0000 (12:18 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 17 Nov 2008 12:18:18 +0000 (12:18 +0000)
ChangeLog
qemud/Makefile.am
qemud/qemud.c
src/Makefile.am
src/libvirt.c
src/libvirt_sym.version.in
tests/Makefile.am

index 0496516b6e086133c6fd029b7ef06e0f3f5600d7..5784156b1fc8a7412fd459aa9a7234312a85c081 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+Mon Nov 17 11:57:00 GMT 2008 Daniel Berrange <berrange@redhat.com>
+
+       Push stateful driver code into daemon binary
+       * src/Makefile.am: Don't build QEMU, LXC, Network & Storage
+       drivers into libvirt.so
+       * src/libvirt.c: Don't call into QEMU, LXC, network & storage
+       driver register methods
+       * src/libvirt_sym.version.in: Export a bunch of internal
+       symbols to libvirtd for use by drivers
+       * tests/Makefile.am: Link to driver modules which are not
+       in libvirt.so
+       * qemud/Makefile.am: Directly link to QEMU, LXC, network
+       and storage drivers
+       * qemud/qemud.c: Initialize QEMU, LXC, network & storage
+       drivers at startup
+
 Mon Nov 17 11:40:00 GMT 2008 Daniel Berrange <berrange@redhat.com>
 
        Push URI probing down into individual drivers' open methods
index 4b25b38d41356a833854d810a6d13ddf97f7d783..8d2dc5a5829542d6a798283430ceaf9715d7d72a 100644 (file)
@@ -88,7 +88,26 @@ libvirtd_LDFLAGS = \
        $(POLKIT_LIBS)
 
 libvirtd_DEPENDENCIES = ../src/libvirt.la
-libvirtd_LDADD = ../src/libvirt.la ../gnulib/lib/libgnu.la
+libvirtd_LDADD =                                       \
+               ../gnulib/lib/libgnu.la
+
+if WITH_QEMU
+libvirtd_LDADD += ../src/libvirt_driver_qemu.la
+endif
+
+if WITH_LXC
+libvirtd_LDADD += ../src/libvirt_driver_lxc.la
+endif
+
+if WITH_STORAGE_DIR
+libvirtd_LDADD += ../src/libvirt_driver_storage.la
+endif
+
+if WITH_NETWORK
+libvirtd_LDADD += ../src/libvirt_driver_network.la
+endif
+
+libvirtd_LDADD += ../src/libvirt.la
 
 if HAVE_POLKIT
 policydir = $(datadir)/PolicyKit/policy
index c2ca23e096b5366b9b91d5fe19e6bd47aef4a0d4..a247dce792e7556ed3c2e7b60a9f0bde46713479 100644 (file)
 #include "mdns.h"
 #endif
 
+#ifdef WITH_QEMU
+#include "qemu_driver.h"
+#endif
+#ifdef WITH_LXC
+#include "lxc_driver.h"
+#endif
+#ifdef WITH_NETWORK
+#include "network_driver.h"
+#endif
+#ifdef WITH_STORAGE_DIR
+#include "storage_driver.h"
+#endif
+
+
 static int godaemon = 0;        /* -d: Be a daemon */
 static int verbose = 0;         /* -v: Verbose mode */
 static int timeout = -1;        /* -t: Shutdown timeout */
@@ -728,6 +742,21 @@ static struct qemud_server *qemudInitialize(int sigread) {
 
     server->sigread = sigread;
 
+    virInitialize();
+
+#ifdef WITH_QEMU
+    qemudRegister();
+#endif
+#ifdef WITH_LXC
+    lxcRegister();
+#endif
+#ifdef WITH_NETWORK
+    networkRegister();
+#endif
+#ifdef WITH_STORAGE_DIR
+    storageRegister();
+#endif
+
     virEventRegisterImpl(virEventAddHandleImpl,
                          virEventUpdateHandleImpl,
                          virEventRemoveHandleImpl,
index 0cb4472bd0da98f905964af4a77547183d9a239a..268da9ff000d7dce83829c42651af23e425d56ad 100644 (file)
@@ -196,7 +196,8 @@ endif
 
 if WITH_QEMU
 noinst_LTLIBRARIES += libvirt_driver_qemu.la
-libvirt_la_LIBADD += libvirt_driver_qemu.la
+# Stateful, so linked to daemon instead
+#libvirt_la_LIBADD += libvirt_driver_qemu.la
 libvirt_driver_qemu_la_CFLAGS = $(NUMACTL_CFLAGS)
 libvirt_driver_qemu_la_LDFLAGS = $(NUMACTL_LIBS)
 libvirt_driver_qemu_la_SOURCES = $(QEMU_DRIVER_SOURCES)
@@ -204,14 +205,16 @@ endif
 
 if WITH_LXC
 noinst_LTLIBRARIES += libvirt_driver_lxc.la
-libvirt_la_LIBADD += libvirt_driver_lxc.la
+# Stateful, so linked to daemon instead
+#libvirt_la_LIBADD += libvirt_driver_lxc.la
 libvirt_driver_lxc_la_SOURCES = $(LXC_DRIVER_SOURCES)
 endif
 
 
 if WITH_NETWORK
 noinst_LTLIBRARIES += libvirt_driver_network.la
-libvirt_la_LIBADD += libvirt_driver_network.la
+# Stateful, so linked to daemon instead
+#libvirt_la_LIBADD += libvirt_driver_network.la
 libvirt_driver_network_la_SOURCES = $(NETWORK_DRIVER_SOURCES)
 endif
 
@@ -219,7 +222,8 @@ endif
 libvirt_driver_storage_la_SOURCES =
 if WITH_STORAGE_DIR
 noinst_LTLIBRARIES += libvirt_driver_storage.la
-libvirt_la_LIBADD += libvirt_driver_storage.la
+# Stateful, so linked to daemon instead
+#libvirt_la_LIBADD += libvirt_driver_storage.la
 libvirt_driver_storage_la_SOURCES += $(STORAGE_DRIVER_SOURCES)
 libvirt_driver_storage_la_SOURCES += $(STORAGE_DRIVER_FS_SOURCES)
 endif
@@ -261,6 +265,7 @@ libvirt_la_LDFLAGS = -Wl,--version-script=$(srcdir)/libvirt_sym.version \
                     $(COVERAGE_CFLAGS:-f%=-Wc,-f%) \
                    @CYGWIN_EXTRA_LDFLAGS@ @MINGW_EXTRA_LDFLAGS@
 libvirt_la_CFLAGS = $(COVERAGE_CFLAGS) -DIN_LIBVIRT
+libvirt_la_DEPENDENCIES = $(libvirt_la_LIBADD) $(srcdir)/libvirt_sym.version
 
 # Create an automake "convenience library" version of libvirt_la,
 # just for testing, since the test harness requires access to internal
index 10e9142e088ab835b5be308d483dffcc06d8705d..f257c0f056a1738a7d346d4ac1dcee23a28dadb3 100644 (file)
 #ifdef WITH_REMOTE
 #include "remote_internal.h"
 #endif
-#ifdef WITH_QEMU
-#include "qemu_driver.h"
-#endif
 #ifdef WITH_OPENVZ
 #include "openvz_driver.h"
 #endif
-#ifdef WITH_LXC
-#include "lxc_driver.h"
-#endif
-#include "storage_driver.h"
-#ifdef WITH_NETWORK
-#include "network_driver.h"
-#endif
 
 /*
  * TODO:
@@ -286,21 +276,9 @@ virInitialize(void)
 #ifdef WITH_XEN
     if (xenUnifiedRegister () == -1) return -1;
 #endif
-#ifdef WITH_QEMU
-    if (qemudRegister() == -1) return -1;
-#endif
 #ifdef WITH_OPENVZ
     if (openvzRegister() == -1) return -1;
 #endif
-#ifdef WITH_LXC
-    if (lxcRegister() == -1) return -1;
-#endif
-#ifdef WITH_NETWORK
-    if (networkRegister() == -1) return -1;
-#endif
-#ifdef WITH_STORAGE_DIR
-    if (storageRegister() == -1) return -1;
-#endif
 #ifdef WITH_REMOTE
     if (remoteRegister () == -1) return -1;
 #endif
index c288f386783cf19993528efff5cbf4e191876719..c7fde5b953079592f678237b593b37772b3b8000 100644 (file)
@@ -257,6 +257,19 @@ LIBVIRT_0.5.0 {
 LIBVIRT_PRIVATE_@VERSION@ {
 
   global:
+       /* bridge.h */
+       brAddBridge;
+       brAddInterface;
+       brAddTap;
+       brDeleteBridge;
+       brInit;
+       brSetEnableSTP;
+       brSetForwardDelay;
+       brSetInetAddress;
+       brSetInetNetmask;
+       brSetInterfaceUp;
+       brShutdown;
+
 
        /* buf.h */
        virBufferVSprintf;
@@ -266,6 +279,18 @@ LIBVIRT_PRIVATE_@VERSION@ {
        virBufferError;
 
 
+       /* caps.h */
+       virCapabilitiesAddGuest;
+       virCapabilitiesAddGuestDomain;
+       virCapabilitiesAddGuestFeature;
+       virCapabilitiesAddHostNUMACell;
+       virCapabilitiesDefaultGuestEmulator;
+       virCapabilitiesFormatXML;
+       virCapabilitiesFree;
+       virCapabilitiesNew;
+       virCapabilitiesSetMacPrefix;
+
+
        /* conf.h */
        virConfNew;
        virConfReadFile;
@@ -284,7 +309,62 @@ LIBVIRT_PRIVATE_@VERSION@ {
        virGetStorageVol;
 
 
+       /* domain_conf.h */
+       virDiskNameToBusDeviceIndex;
+       virDiskNameToIndex;
+       virDomainAssignDef;
+       virDomainConfigFile;
+       virDomainDefDefaultEmulator;
+       virDomainDefFormat;
+       virDomainDefFree;
+       virDomainDefParseFile;
+       virDomainDefParseString;
+       virDomainDeleteConfig;
+       virDomainDeviceDefParse;
+       virDomainDiskBusTypeToString;
+       virDomainDiskDeviceTypeToString;
+       virDomainDiskQSort;
+       virDomainEventCallbackListAdd;
+       virDomainEventCallbackListFree;
+       virDomainEventCallbackListRemove;
+       virDomainFindByID;
+       virDomainFindByName;
+       virDomainFindByUUID;
+       virDomainLoadAllConfigs;
+       virDomainObjListFree;
+       virDomainRemoveInactive;
+       virDomainSaveConfig;
+       virDomainSoundModelTypeToString;
+       virDomainVirtTypeToString;
+
+
+       /* iptables.h */
+       iptablesAddForwardAllowCross;
+       iptablesAddForwardAllowIn;
+       iptablesAddForwardAllowOut;
+       iptablesAddForwardAllowRelatedIn;
+       iptablesAddForwardMasquerade;
+       iptablesAddForwardRejectIn;
+       iptablesAddForwardRejectOut;
+       iptablesAddTcpInput;
+       iptablesAddUdpInput;
+       iptablesContextFree;
+       iptablesContextNew;
+       iptablesReloadRules;
+       iptablesRemoveForwardAllowCross;
+       iptablesRemoveForwardAllowIn;
+       iptablesRemoveForwardAllowOut;
+       iptablesRemoveForwardAllowRelatedIn;
+       iptablesRemoveForwardMasquerade;
+       iptablesRemoveForwardRejectIn;
+       iptablesRemoveForwardRejectOut;
+       iptablesRemoveTcpInput;
+       iptablesRemoveUdpInput;
+       iptablesSaveRules;
+
+
        /* libvirt_internal.h */
+       debugFlag;
        virStateInitialize;
        virStateCleanup;
        virStateReload;
@@ -296,6 +376,10 @@ LIBVIRT_PRIVATE_@VERSION@ {
        virDomainMigrateFinish;
        virDomainMigratePrepare2;
        virDomainMigrateFinish2;
+       virRegisterDriver;
+       virRegisterNetworkDriver;
+       virRegisterStateDriver;
+       virRegisterStorageDriver;
 
 
        /* memory.h */
@@ -305,13 +389,104 @@ LIBVIRT_PRIVATE_@VERSION@ {
        virFree;
 
 
+       /* network_conf.h */
+       virNetworkAssignDef;
+       virNetworkDefFormat;
+       virNetworkDefFree;
+       virNetworkDefParseString;
+       virNetworkDeleteConfig;
+       virNetworkFindByName;
+       virNetworkFindByUUID;
+       virNetworkLoadAllConfigs;
+       virNetworkObjListFree;
+       virNetworkRemoveInactive;
+       virNetworkSaveConfig;
+
+
+       /* nodeinfo.h */
+       virNodeInfoPopulate;
+
+
+       /* stats_linux.h */
+       linuxDomainInterfaceStats;
+
+
+       /* storage_backend.h */
+       virStorageBackendForType;
+       virStorageBackendFromString;
+       virStorageBackendPartTableTypeFromString;
+       virStorageBackendPartTableTypeToString;
+       virStorageBackendRegister;
+       virStorageBackendRunProgNul;
+       virStorageBackendRunProgRegex;
+       virStorageBackendStablePath;
+       virStorageBackendUpdateVolInfo;
+       virStorageBackendUpdateVolInfoFD;
+
+
+       /* storage_conf.h */
+       virStoragePoolDefFormat;
+       virStoragePoolDefFree;
+       virStoragePoolDefParse;
+       virStoragePoolLoadAllConfigs;
+       virStoragePoolObjAssignDef;
+       virStoragePoolObjClearVols;
+       virStoragePoolObjDeleteDef;
+       virStoragePoolObjFindByName;
+       virStoragePoolObjFindByUUID;
+       virStoragePoolObjListFree;
+       virStoragePoolObjRemove;
+       virStoragePoolObjSaveDef;
+       virStoragePoolSourceFree;
+       virStoragePoolSourceListFormat;
+       virStorageVolDefFindByKey;
+       virStorageVolDefFindByName;
+       virStorageVolDefFindByPath;
+       virStorageVolDefFormat;
+       virStorageVolDefFree;
+       virStorageVolDefParse;
+       virStoragePoolFormatDiskTypeToString;
+       virStoragePoolFormatFileSystemTypeToString;
+       virStoragePoolFormatFileSystemNetTypeToString;
+       virStorageVolFormatFileSystemTypeToString;
+       virStoragePoolTypeFromString;
+
+
        /* util.h */
        virFileReadAll;
        virStrToLong_i;
+       virStrToLong_ll;
        virStrToLong_ull;
        saferead;
        safewrite;
        virMacAddrCompare;
+       virEnumFromString;
+       virEnumToString;
+       virEventAddHandle;
+       virEventRemoveHandle;
+       virExec;
+       virFileDeletePid;
+       virFileExists;
+       virFileHasSuffix;
+       virFileLinkPointsTo;
+       virFileMakePath;
+       virFileOpenTty;
+       virFileReadLimFD;
+       virFileReadPid;
+       virParseNumber;
+       virRun;
+
+
+       /* uuid.h */
+       virUUIDFormat;
+
+
+       /* virterror_internal.h */
+       virReportErrorHelper;
+
+
+       /* xml.h */
+       virXPathString;
 
 
        /* Finally everything else is totally private */
index 327fca9f11c2bc4e09659a1c6c89cd8bf2fed51d..a68246a4474e0ef1de50002a7abe679e68dd1593 100644 (file)
@@ -108,12 +108,12 @@ xmconfigtest_LDADD = $(LDADDS)
 qemuxml2argvtest_SOURCES = \
        qemuxml2argvtest.c testutilsqemu.c testutilsqemu.h \
        testutils.c testutils.h
-qemuxml2argvtest_LDADD = $(LDADDS)
+qemuxml2argvtest_LDADD = ../src/libvirt_driver_qemu.la $(LDADDS)
 
 qemuxml2xmltest_SOURCES = \
        qemuxml2xmltest.c testutilsqemu.c testutilsqemu.h \
        testutils.c testutils.h
-qemuxml2xmltest_LDADD = $(LDADDS)
+qemuxml2xmltest_LDADD = ../src/libvirt_driver_qemu.la $(LDADDS)
 
 virshtest_SOURCES = \
        virshtest.c \