]> xenbits.xensource.com Git - libvirt.git/commitdiff
Separate virGetHostname() API contract from driver APIs
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 26 Apr 2013 16:39:11 +0000 (17:39 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 8 May 2013 09:47:47 +0000 (10:47 +0100)
Currently the virGetHostname() API has a bogus virConnectPtr
parameter. This is because virtualization drivers directly
reference this API in their virDriverPtr tables, tieing its
API design to the public virConnectGetHostname API design.

This also causes problems for access control checks since
these must only be done for invocations from the public
API, not internal invocation.

Remove the bogus virConnectPtr parameter, and make each
hypervisor driver provide a dedicated function for the
driver API impl. This will allow access control checks
to be easily inserted later.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
15 files changed:
daemon/libvirtd-config.c
src/check-driverimpls.pl
src/libxl/libxl_driver.c
src/lxc/lxc_driver.c
src/openvz/openvz_driver.c
src/parallels/parallels_driver.c
src/qemu/qemu_driver.c
src/qemu/qemu_migration.c
src/test/test_driver.c
src/uml/uml_driver.c
src/util/virutil.c
src/util/virutil.h
src/vbox/vbox_tmpl.c
src/xen/xen_driver.c
src/xen/xend_internal.c

index 346f7f522aa78343c5aadcc62eba8e2e03d2eda0..1c57475f81dcf5a2d4e43bd40b0580b6c6e3070b 100644 (file)
@@ -277,7 +277,7 @@ daemonConfigNew(bool privileged ATTRIBUTE_UNUSED)
     data->keepalive_count = 5;
     data->keepalive_required = 0;
 
-    localhost = virGetHostname(NULL);
+    localhost = virGetHostname();
     if (localhost == NULL) {
         /* we couldn't resolve the hostname; assume that we are
          * running in disconnected operation, and report a less
index 2ba4864f6f21ac4596a32c49e4b3a347a0a690ce..52b14e46c2d6d1d0a93201392dbce770c274a499 100755 (executable)
@@ -44,7 +44,6 @@ while (<>) {
 
             # External impls
             next if $prefix eq "node";
-            next if $prefix eq "vir";
 
             if (defined $mainprefix) {
                 if ($mainprefix ne $prefix) {
index 736174320d51398fc2d74e93a302a475bb21e07f..76468c5d1a766cd42b8b0c61dd48e2ca6ef6d7ec 100644 (file)
@@ -1411,6 +1411,13 @@ libxlConnectGetVersion(virConnectPtr conn, unsigned long *version)
     return 0;
 }
 
+
+static char *libxlConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+{
+    return virGetHostname();
+}
+
+
 static int
 libxlConnectGetMaxVcpus(virConnectPtr conn, const char *type ATTRIBUTE_UNUSED)
 {
@@ -4203,7 +4210,7 @@ static virDriver libxlDriver = {
     .connectClose = libxlConnectClose, /* 0.9.0 */
     .connectGetType = libxlConnectGetType, /* 0.9.0 */
     .connectGetVersion = libxlConnectGetVersion, /* 0.9.0 */
-    .connectGetHostname = virGetHostname, /* 0.9.0 */
+    .connectGetHostname = libxlConnectGetHostname, /* 0.9.0 */
     .connectGetMaxVcpus = libxlConnectGetMaxVcpus, /* 0.9.0 */
     .nodeGetInfo = libxlNodeGetInfo, /* 0.9.0 */
     .connectGetCapabilities = libxlConnectGetCapabilities, /* 0.9.0 */
index 84a97de4fd21526316a5d9c7575e98ff5abf3be5..aef97a6ab7bf863011f00bab5345f3ffa80bde6c 100644 (file)
@@ -1562,6 +1562,13 @@ static int lxcConnectGetVersion(virConnectPtr conn ATTRIBUTE_UNUSED, unsigned lo
 }
 
 
+static char *lxcConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+{
+    return virGetHostname();
+}
+
+
+
 /*
  * check whether the host supports CFS bandwidth
  *
@@ -4402,7 +4409,7 @@ static virDriver lxcDriver = {
     .connectOpen = lxcConnectOpen, /* 0.4.2 */
     .connectClose = lxcConnectClose, /* 0.4.2 */
     .connectGetVersion = lxcConnectGetVersion, /* 0.4.6 */
-    .connectGetHostname = virGetHostname, /* 0.6.3 */
+    .connectGetHostname = lxcConnectGetHostname, /* 0.6.3 */
     .connectGetSysinfo = lxcConnectGetSysinfo, /* 1.0.5 */
     .nodeGetInfo = nodeGetInfo, /* 0.6.5 */
     .connectGetCapabilities = lxcConnectGetCapabilities, /* 0.6.5 */
index e6d71466adb15eba34290188fecbc7dea0d6f7b7..b24e296178a65a493202afbd3a0d15103f9c3fc3 100644 (file)
@@ -343,6 +343,13 @@ static int openvzConnectGetVersion(virConnectPtr conn, unsigned long *version) {
     return 0;
 }
 
+
+static char *openvzConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+{
+    return virGetHostname();
+}
+
+
 static char *openvzDomainGetOSType(virDomainPtr dom)
 {
     struct  openvz_driver *driver = dom->conn->privateData;
@@ -2182,7 +2189,7 @@ static virDriver openvzDriver = {
     .connectClose = openvzConnectClose, /* 0.3.1 */
     .connectGetType = openvzConnectGetType, /* 0.3.1 */
     .connectGetVersion = openvzConnectGetVersion, /* 0.5.0 */
-    .connectGetHostname = virGetHostname, /* 0.9.12 */
+    .connectGetHostname = openvzConnectGetHostname, /* 0.9.12 */
     .connectGetMaxVcpus = openvzConnectGetMaxVcpus, /* 0.4.6 */
     .nodeGetInfo = nodeGetInfo, /* 0.3.2 */
     .nodeGetCPUStats = nodeGetCPUStats, /* 0.9.12 */
index c29a5ba24d3be5e65849b5c610dfbb52bfdec88c..45f31164a393afda77124bda0b62a9e29b57f916 100644 (file)
@@ -1043,6 +1043,13 @@ cleanup:
     return ret;
 }
 
+
+static char *parallelsConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+{
+    return virGetHostname();
+}
+
+
 static int
 parallelsConnectListDomains(virConnectPtr conn, int *ids, int maxids)
 {
@@ -2393,7 +2400,7 @@ static virDriver parallelsDriver = {
     .connectOpen = parallelsConnectOpen,            /* 0.10.0 */
     .connectClose = parallelsConnectClose,          /* 0.10.0 */
     .connectGetVersion = parallelsConnectGetVersion,   /* 0.10.0 */
-    .connectGetHostname = virGetHostname,      /* 0.10.0 */
+    .connectGetHostname = parallelsConnectGetHostname,      /* 0.10.0 */
     .nodeGetInfo = nodeGetInfo,      /* 0.10.0 */
     .connectGetCapabilities = parallelsConnectGetCapabilities,      /* 0.10.0 */
     .connectListDomains = parallelsConnectListDomains,      /* 0.10.0 */
index 0aceb1760b3e8c4e1fd024a940604577ece37b17..3f9172a8029f0ce502e29ad4f48a93f6a799181a 100644 (file)
@@ -1412,6 +1412,13 @@ cleanup:
     return ret;
 }
 
+
+static char *qemuConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+{
+    return virGetHostname();
+}
+
+
 static int qemuConnectListDomains(virConnectPtr conn, int *ids, int nids) {
     virQEMUDriverPtr driver = conn->privateData;
     int n;
@@ -14703,7 +14710,7 @@ static virDriver qemuDriver = {
     .connectSupportsFeature = qemuConnectSupportsFeature, /* 0.5.0 */
     .connectGetType = qemuConnectGetType, /* 0.2.0 */
     .connectGetVersion = qemuConnectGetVersion, /* 0.2.0 */
-    .connectGetHostname = virGetHostname, /* 0.3.3 */
+    .connectGetHostname = qemuConnectGetHostname, /* 0.3.3 */
     .connectGetSysinfo = qemuConnectGetSysinfo, /* 0.8.8 */
     .connectGetMaxVcpus = qemuConnectGetMaxVcpus, /* 0.2.1 */
     .nodeGetInfo = nodeGetInfo, /* 0.2.0 */
index 733c0c4548eaf3708ea980fc55dede85593f0c17..8ed94731b4012dae479ec5fcf85992c73ded940c 100644 (file)
@@ -404,7 +404,7 @@ qemuMigrationCookieNew(virDomainObjPtr dom)
         goto no_memory;
     memcpy(mig->uuid, dom->def->uuid, VIR_UUID_BUFLEN);
 
-    if (!(mig->localHostname = virGetHostname(NULL)))
+    if (!(mig->localHostname = virGetHostname()))
         goto error;
     if (virGetHostUUID(mig->localHostuuid) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@@ -2372,7 +2372,7 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
         if (port == QEMUD_MIGRATION_NUM_PORTS) port = 0;
 
         /* Get hostname */
-        if ((hostname = virGetHostname(NULL)) == NULL)
+        if ((hostname = virGetHostname()) == NULL)
             goto cleanup;
 
         if (STRPREFIX(hostname, "localhost")) {
index f60f106bb82124d215c8c5fc35b84cfa2dcf08e5..0fb2dcec497823b91ff2f11ca2cc275e54a3ffb3 100644 (file)
@@ -1223,6 +1223,12 @@ static int testConnectGetVersion(virConnectPtr conn ATTRIBUTE_UNUSED,
     return 0;
 }
 
+static char *testConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+{
+    return virGetHostname();
+}
+
+
 static int testConnectIsSecure(virConnectPtr conn ATTRIBUTE_UNUSED)
 {
     return 1;
@@ -5796,7 +5802,7 @@ static virDriver testDriver = {
     .connectOpen = testConnectOpen, /* 0.1.1 */
     .connectClose = testConnectClose, /* 0.1.1 */
     .connectGetVersion = testConnectGetVersion, /* 0.1.1 */
-    .connectGetHostname = virGetHostname, /* 0.6.3 */
+    .connectGetHostname = testConnectGetHostname, /* 0.6.3 */
     .connectGetMaxVcpus = testConnectGetMaxVcpus, /* 0.3.2 */
     .nodeGetInfo = testNodeGetInfo, /* 0.1.1 */
     .connectGetCapabilities = testConnectGetCapabilities, /* 0.2.1 */
index 66c00b2beb0f2e476d6439b8a720d4265a2306cb..9f13254a9477c09d82da37f3e3da7bcca5200220 100644 (file)
@@ -1494,6 +1494,13 @@ cleanup:
     return ret;
 }
 
+
+static char *umlConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+{
+    return virGetHostname();
+}
+
+
 static int umlConnectListDomains(virConnectPtr conn, int *ids, int nids) {
     struct uml_driver *driver = conn->privateData;
     int n;
@@ -2597,7 +2604,7 @@ static virDriver umlDriver = {
     .connectClose = umlConnectClose, /* 0.5.0 */
     .connectGetType = umlConnectGetType, /* 0.5.0 */
     .connectGetVersion = umlConnectGetVersion, /* 0.5.0 */
-    .connectGetHostname = virGetHostname, /* 0.5.0 */
+    .connectGetHostname = umlConnectGetHostname, /* 0.5.0 */
     .nodeGetInfo = nodeGetInfo, /* 0.5.0 */
     .connectGetCapabilities = umlConnectGetCapabilities, /* 0.5.0 */
     .connectListDomains = umlConnectListDomains, /* 0.5.0 */
index 982d4a3345f77e3c104f5d971fdb4679c2028b1e..de1937c46074acf62dee1e3722aba77716e178bc 100644 (file)
@@ -1942,7 +1942,7 @@ char *virIndexToDiskName(int idx, const char *prefix)
  *         we got from getaddrinfo().  Return the value from gethostname()
  *         and hope for the best.
  */
-char *virGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+char *virGetHostname(void)
 {
     int r;
     char hostname[HOST_NAME_MAX+1], *result;
index 8a2d25cdad0e4ead5ffc43ebc1f91742980a8fa0..4c0a9a5c4a12bde9e4a72a3b394ba2b6a6b2c73d 100644 (file)
@@ -211,7 +211,7 @@ static inline int geteuid (void) { return 0; }
 static inline int getgid (void) { return 0; }
 # endif
 
-char *virGetHostname(virConnectPtr conn);
+char *virGetHostname(void);
 
 char *virGetUserDirectory(void);
 char *virGetUserConfigDirectory(void);
index 43ddac8a6124d7c848245081a1205d82a240e2b9..af2ab0a964671ad1683c40b9ce9e0dd6ea6c4841 100644 (file)
@@ -1090,6 +1090,13 @@ static int vboxConnectGetVersion(virConnectPtr conn, unsigned long *version) {
     return 0;
 }
 
+
+static char *vboxConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+{
+    return virGetHostname();
+}
+
+
 static int vboxConnectIsSecure(virConnectPtr conn ATTRIBUTE_UNUSED) {
     /* Driver is using local, non-network based transport */
     return 1;
@@ -9409,7 +9416,7 @@ virDriver NAME(Driver) = {
     .connectOpen = vboxConnectOpen, /* 0.6.3 */
     .connectClose = vboxConnectClose, /* 0.6.3 */
     .connectGetVersion = vboxConnectGetVersion, /* 0.6.3 */
-    .connectGetHostname = virGetHostname, /* 0.6.3 */
+    .connectGetHostname = vboxConnectGetHostname, /* 0.6.3 */
     .connectGetMaxVcpus = vboxConnectGetMaxVcpus, /* 0.6.3 */
     .nodeGetInfo = nodeGetInfo, /* 0.6.3 */
     .connectGetCapabilities = vboxConnectGetCapabilities, /* 0.6.3 */
index 6ad050c4ee8814bc9a05af7b551a80ffcce748dc..35430ff5a6572977b0e72df022bf78a17e2a67ea 100644 (file)
@@ -546,6 +546,13 @@ xenUnifiedConnectGetVersion(virConnectPtr conn, unsigned long *hvVer)
     return -1;
 }
 
+
+static char *xenUnifiedConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+{
+    return virGetHostname();
+}
+
+
 static int
 xenUnifiedConnectIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED)
 {
@@ -2353,7 +2360,7 @@ static virDriver xenUnifiedDriver = {
     .connectSupportsFeature = xenUnifiedConnectSupportsFeature, /* 0.3.2 */
     .connectGetType = xenUnifiedConnectGetType, /* 0.0.3 */
     .connectGetVersion = xenUnifiedConnectGetVersion, /* 0.0.3 */
-    .connectGetHostname = virGetHostname, /* 0.7.3 */
+    .connectGetHostname = xenUnifiedConnectGetHostname, /* 0.7.3 */
     .connectGetMaxVcpus = xenUnifiedConnectGetMaxVcpus, /* 0.2.1 */
     .nodeGetInfo = xenUnifiedNodeGetInfo, /* 0.1.0 */
     .connectGetCapabilities = xenUnifiedConnectGetCapabilities, /* 0.2.1 */
index 97f44abe4abc59e31659a488920006f1f9692340..a41a22276a318207437b23127f6755f2814aa5f4 100644 (file)
@@ -2926,7 +2926,7 @@ xenDaemonDomainSetAutostart(virDomainPtr domain, int autostart)
 }
 
 int
-xenDaemonDomainMigratePrepare(virConnectPtr dconn,
+xenDaemonDomainMigratePrepare(virConnectPtr dconn ATTRIBUTE_UNUSED,
                               char **cookie ATTRIBUTE_UNUSED,
                               int *cookielen ATTRIBUTE_UNUSED,
                               const char *uri_in,
@@ -2942,7 +2942,7 @@ xenDaemonDomainMigratePrepare(virConnectPtr dconn,
      * deallocates this string.
      */
     if (uri_in == NULL) {
-        *uri_out = virGetHostname(dconn);
+        *uri_out = virGetHostname();
         if (*uri_out == NULL)
             return -1;
     }