From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> --- daemon/libvirtd.c | 4 +- daemon/remote.c | 2 +- src/Makefile.am | 2 +- src/conf/capabilities.c | 2 +- src/conf/device_conf.c | 2 +- src/conf/domain_audit.c | 2 +- src/conf/domain_conf.c | 2 +- src/conf/interface_conf.c | 2 +- src/conf/network_conf.c | 2 +- src/conf/node_device_conf.c | 2 +- src/conf/nwfilter_conf.c | 2 +- src/conf/secret_conf.c | 2 +- src/conf/snapshot_conf.c | 2 +- src/conf/storage_conf.c | 2 +- src/conf/storage_encryption_conf.c | 2 +- src/datatypes.c | 2 +- src/esx/esx_device_monitor.c | 2 +- src/esx/esx_driver.c | 2 +- src/esx/esx_interface_driver.c | 2 +- src/esx/esx_network_driver.c | 2 +- src/esx/esx_nwfilter_driver.c | 2 +- src/esx/esx_secret_driver.c | 2 +- src/esx/esx_storage_backend_iscsi.c | 2 +- src/esx/esx_storage_backend_vmfs.c | 2 +- src/esx/esx_storage_driver.c | 2 +- src/esx/esx_util.c | 2 +- src/esx/esx_vi.c | 2 +- src/esx/esx_vi_methods.c | 2 +- src/hyperv/hyperv_device_monitor.c | 2 +- src/hyperv/hyperv_driver.c | 2 +- src/hyperv/hyperv_interface_driver.c | 2 +- src/hyperv/hyperv_network_driver.c | 2 +- src/hyperv/hyperv_nwfilter_driver.c | 2 +- src/hyperv/hyperv_secret_driver.c | 2 +- src/hyperv/hyperv_storage_driver.c | 2 +- src/hyperv/hyperv_util.c | 2 +- src/hyperv/hyperv_wmi.c | 2 +- src/libvirt.c | 2 +- src/libxl/libxl_conf.c | 2 +- src/libxl/libxl_driver.c | 2 +- src/locking/domain_lock.c | 2 +- src/locking/lock_daemon.c | 2 +- src/locking/lock_driver_lockd.c | 2 +- src/locking/lock_driver_nop.c | 2 +- src/locking/lock_manager.c | 2 +- src/lxc/lxc_conf.c | 2 +- src/lxc/lxc_container.c | 2 +- src/lxc/lxc_driver.c | 2 +- src/network/bridge_driver.c | 2 +- src/node_device/node_device_hal.c | 2 +- src/node_device/node_device_udev.c | 2 +- src/openvz/openvz_conf.c | 2 +- src/phyp/phyp_driver.c | 2 +- src/qemu/qemu_command.c | 2 +- src/qemu/qemu_conf.c | 2 +- src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_migration.c | 2 +- src/qemu/qemu_process.c | 2 +- src/secret/secret_driver.c | 2 +- src/security/security_apparmor.c | 2 +- src/security/virt-aa-helper.c | 2 +- src/storage/storage_backend.c | 2 +- src/storage/storage_backend_rbd.c | 2 +- src/test/test_driver.c | 2 +- src/uml/uml_conf.c | 2 +- src/uml/uml_driver.c | 2 +- src/util/uuid.c | 313 ----------------------------------- src/util/uuid.h | 41 ----- src/util/virnetdevmacvlan.c | 2 +- src/util/virnetdevvportprofile.h | 2 +- src/util/viruuid.c | 313 +++++++++++++++++++++++++++++++++++ src/util/viruuid.h | 41 +++++ src/vbox/vbox_tmpl.c | 2 +- src/vmware/vmware_conf.c | 2 +- src/vmware/vmware_driver.c | 2 +- src/vmx/vmx.c | 2 +- src/xen/xen_driver.c | 2 +- src/xen/xen_inotify.c | 2 +- src/xen/xend_internal.c | 2 +- src/xen/xm_internal.c | 2 +- src/xen/xs_internal.c | 2 +- src/xenapi/xenapi_driver.c | 2 +- src/xenapi/xenapi_utils.c | 2 +- src/xenxs/xen_sxpr.c | 2 +- src/xenxs/xen_xm.c | 2 +- 86 files changed, 437 insertions(+), 437 deletions(-) delete mode 100644 src/util/uuid.c delete mode 100644 src/util/uuid.h create mode 100644 src/util/viruuid.c create mode 100644 src/util/viruuid.h diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c index edc899e..560746f 100644 --- a/daemon/libvirtd.c +++ b/daemon/libvirtd.c @@ -44,7 +44,7 @@ #include "libvirtd-config.h" #include "virutil.h" -#include "uuid.h" +#include "viruuid.h" #include "remote_driver.h" #include "viralloc.h" #include "virconf.h" @@ -53,7 +53,7 @@ #include "remote.h" #include "remote_driver.h" #include "virhooks.h" -#include "uuid.h" +#include "viruuid.h" #include "viraudit.h" #include "locking/lock_manager.h" diff --git a/daemon/remote.c b/daemon/remote.c index 0b5a3db..1a054d5 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -37,7 +37,7 @@ #include "virlog.h" #include "virutil.h" #include "stream.h" -#include "uuid.h" +#include "viruuid.h" #include "libvirt/libvirt-qemu.h" #include "vircommand.h" #include "intprops.h" diff --git a/src/Makefile.am b/src/Makefile.am index 1303edd..dd5a1bd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -53,7 +53,6 @@ augeastest_DATA = # These files are not related to driver APIs. Simply generic # helper APIs for various purposes UTIL_SOURCES = \ - util/uuid.c util/uuid.h \ util/viralloc.c util/viralloc.h \ util/viratomic.h util/viratomic.c \ util/viraudit.c util/viraudit.h \ @@ -115,6 +114,7 @@ UTIL_SOURCES = \ util/virusb.c util/virusb.h \ util/viruri.h util/viruri.c \ util/virutil.c util/virutil.h \ + util/viruuid.c util/viruuid.h \ $(NULL) EXTRA_DIST += $(srcdir)/util/virkeymaps.h $(srcdir)/util/keymaps.csv \ diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c index e46a594..f6badcc 100644 --- a/src/conf/capabilities.c +++ b/src/conf/capabilities.c @@ -29,7 +29,7 @@ #include "virbuffer.h" #include "viralloc.h" #include "virutil.h" -#include "uuid.h" +#include "viruuid.h" #include "cpu_conf.h" #include "virterror_internal.h" diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c index 4efafc4..ecfaf30 100644 --- a/src/conf/device_conf.c +++ b/src/conf/device_conf.c @@ -25,7 +25,7 @@ #include "datatypes.h" #include "viralloc.h" #include "xml.h" -#include "uuid.h" +#include "viruuid.h" #include "virutil.h" #include "virbuffer.h" #include "device_conf.h" diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c index c275f71..b4b2649 100644 --- a/src/conf/domain_audit.c +++ b/src/conf/domain_audit.c @@ -28,7 +28,7 @@ #include "domain_audit.h" #include "viraudit.h" -#include "uuid.h" +#include "viruuid.h" #include "virlog.h" #include "viralloc.h" diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index ab1fe2a..2943fe3 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -37,7 +37,7 @@ #include "viralloc.h" #include "verify.h" #include "xml.h" -#include "uuid.h" +#include "viruuid.h" #include "virutil.h" #include "virbuffer.h" #include "virlog.h" diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c index e4b088a..6a53bda 100644 --- a/src/conf/interface_conf.c +++ b/src/conf/interface_conf.c @@ -29,7 +29,7 @@ #include "viralloc.h" #include "xml.h" -#include "uuid.h" +#include "viruuid.h" #include "virutil.h" #include "virbuffer.h" diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 42f3593..01a6f2e 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -39,7 +39,7 @@ #include "netdev_vlan_conf.h" #include "viralloc.h" #include "xml.h" -#include "uuid.h" +#include "viruuid.h" #include "virutil.h" #include "virbuffer.h" #include "c-ctype.h" diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index 12819c8..67d743e 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -35,7 +35,7 @@ #include "xml.h" #include "virutil.h" #include "virbuffer.h" -#include "uuid.h" +#include "viruuid.h" #include "virpci.h" #include "virrandom.h" diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 09a9d1c..810de6c 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -38,7 +38,7 @@ #include "internal.h" -#include "uuid.h" +#include "viruuid.h" #include "viralloc.h" #include "virterror_internal.h" #include "datatypes.h" diff --git a/src/conf/secret_conf.c b/src/conf/secret_conf.c index a65cf92..2abb95a 100644 --- a/src/conf/secret_conf.c +++ b/src/conf/secret_conf.c @@ -31,7 +31,7 @@ #include "virterror_internal.h" #include "virutil.h" #include "xml.h" -#include "uuid.h" +#include "viruuid.h" #define VIR_FROM_THIS VIR_FROM_SECRET diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index 810d2bf..3ad74d6 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -43,7 +43,7 @@ #include "snapshot_conf.h" #include "virstoragefile.h" #include "virutil.h" -#include "uuid.h" +#include "viruuid.h" #include "virfile.h" #include "virterror_internal.h" #include "xml.h" diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 38bb471..4239e49 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -39,7 +39,7 @@ #include "virstoragefile.h" #include "xml.h" -#include "uuid.h" +#include "viruuid.h" #include "virbuffer.h" #include "virutil.h" #include "viralloc.h" diff --git a/src/conf/storage_encryption_conf.c b/src/conf/storage_encryption_conf.c index 139c37c..8ea54fa 100644 --- a/src/conf/storage_encryption_conf.c +++ b/src/conf/storage_encryption_conf.c @@ -34,7 +34,7 @@ #include "virutil.h" #include "xml.h" #include "virterror_internal.h" -#include "uuid.h" +#include "viruuid.h" #include "virfile.h" #define VIR_FROM_THIS VIR_FROM_STORAGE diff --git a/src/datatypes.c b/src/datatypes.c index 07aefcc..038c47d 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -26,7 +26,7 @@ #include "virterror_internal.h" #include "virlog.h" #include "viralloc.h" -#include "uuid.h" +#include "viruuid.h" #include "virutil.h" #define VIR_FROM_THIS VIR_FROM_NONE diff --git a/src/esx/esx_device_monitor.c b/src/esx/esx_device_monitor.c index 7cc6ac0..f6c85ba 100644 --- a/src/esx/esx_device_monitor.c +++ b/src/esx/esx_device_monitor.c @@ -28,7 +28,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "esx_private.h" #include "esx_device_monitor.h" #include "esx_vi.h" diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index 2c0297c..4ce3a3d 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -31,7 +31,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "vmx.h" #include "virtypedparam.h" #include "esx_driver.h" diff --git a/src/esx/esx_interface_driver.c b/src/esx/esx_interface_driver.c index 524886f..53c179b 100644 --- a/src/esx/esx_interface_driver.c +++ b/src/esx/esx_interface_driver.c @@ -28,7 +28,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "interface_conf.h" #include "virsocketaddr.h" #include "esx_private.h" diff --git a/src/esx/esx_network_driver.c b/src/esx/esx_network_driver.c index 0fc2603..48763d4 100644 --- a/src/esx/esx_network_driver.c +++ b/src/esx/esx_network_driver.c @@ -29,7 +29,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "network_conf.h" #include "esx_private.h" #include "esx_network_driver.h" diff --git a/src/esx/esx_nwfilter_driver.c b/src/esx/esx_nwfilter_driver.c index ecee0fb..c59929c 100644 --- a/src/esx/esx_nwfilter_driver.c +++ b/src/esx/esx_nwfilter_driver.c @@ -28,7 +28,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "esx_private.h" #include "esx_nwfilter_driver.h" #include "esx_vi.h" diff --git a/src/esx/esx_secret_driver.c b/src/esx/esx_secret_driver.c index 722d3f7..92cbb14 100644 --- a/src/esx/esx_secret_driver.c +++ b/src/esx/esx_secret_driver.c @@ -27,7 +27,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "esx_private.h" #include "esx_secret_driver.h" #include "esx_vi.h" diff --git a/src/esx/esx_storage_backend_iscsi.c b/src/esx/esx_storage_backend_iscsi.c index 3c3ab7d..e09fa55 100644 --- a/src/esx/esx_storage_backend_iscsi.c +++ b/src/esx/esx_storage_backend_iscsi.c @@ -31,7 +31,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "storage_conf.h" #include "virstoragefile.h" #include "esx_storage_backend_iscsi.h" diff --git a/src/esx/esx_storage_backend_vmfs.c b/src/esx/esx_storage_backend_vmfs.c index c57e070..f965b4f 100644 --- a/src/esx/esx_storage_backend_vmfs.c +++ b/src/esx/esx_storage_backend_vmfs.c @@ -34,7 +34,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "storage_conf.h" #include "virstoragefile.h" #include "esx_storage_backend_vmfs.h" diff --git a/src/esx/esx_storage_driver.c b/src/esx/esx_storage_driver.c index 1324469..5fb4e1f 100644 --- a/src/esx/esx_storage_driver.c +++ b/src/esx/esx_storage_driver.c @@ -25,7 +25,7 @@ #include <config.h> -#include "uuid.h" +#include "viruuid.h" #include "viralloc.h" #include "storage_conf.h" #include "esx_private.h" diff --git a/src/esx/esx_util.c b/src/esx/esx_util.c index 9b2e576..4d2019b 100644 --- a/src/esx/esx_util.c +++ b/src/esx/esx_util.c @@ -31,7 +31,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "vmx.h" #include "esx_private.h" #include "esx_util.h" diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c index 2cc8002..92ac8f8 100644 --- a/src/esx/esx_vi.c +++ b/src/esx/esx_vi.c @@ -30,7 +30,7 @@ #include "viralloc.h" #include "virlog.h" #include "virutil.h" -#include "uuid.h" +#include "viruuid.h" #include "vmx.h" #include "xml.h" #include "esx_vi.h" diff --git a/src/esx/esx_vi_methods.c b/src/esx/esx_vi_methods.c index 7ffca559..2279e62 100644 --- a/src/esx/esx_vi_methods.c +++ b/src/esx/esx_vi_methods.c @@ -26,7 +26,7 @@ #include "virbuffer.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "esx_vi_methods.h" #include "esx_util.h" diff --git a/src/hyperv/hyperv_device_monitor.c b/src/hyperv/hyperv_device_monitor.c index 10d559f..43ee1fc 100644 --- a/src/hyperv/hyperv_device_monitor.c +++ b/src/hyperv/hyperv_device_monitor.c @@ -29,7 +29,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "hyperv_device_monitor.h" #define VIR_FROM_THIS VIR_FROM_HYPERV diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c index d777bd8..601a85a 100644 --- a/src/hyperv/hyperv_driver.c +++ b/src/hyperv/hyperv_driver.c @@ -30,7 +30,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "hyperv_driver.h" #include "hyperv_interface_driver.h" #include "hyperv_network_driver.h" diff --git a/src/hyperv/hyperv_interface_driver.c b/src/hyperv/hyperv_interface_driver.c index af37de3..7dd6912 100644 --- a/src/hyperv/hyperv_interface_driver.c +++ b/src/hyperv/hyperv_interface_driver.c @@ -29,7 +29,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "hyperv_interface_driver.h" #define VIR_FROM_THIS VIR_FROM_HYPERV diff --git a/src/hyperv/hyperv_network_driver.c b/src/hyperv/hyperv_network_driver.c index cafc956..f34a451 100644 --- a/src/hyperv/hyperv_network_driver.c +++ b/src/hyperv/hyperv_network_driver.c @@ -29,7 +29,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "hyperv_network_driver.h" #define VIR_FROM_THIS VIR_FROM_HYPERV diff --git a/src/hyperv/hyperv_nwfilter_driver.c b/src/hyperv/hyperv_nwfilter_driver.c index 46c57b7..c6125ec 100644 --- a/src/hyperv/hyperv_nwfilter_driver.c +++ b/src/hyperv/hyperv_nwfilter_driver.c @@ -29,7 +29,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "hyperv_nwfilter_driver.h" #define VIR_FROM_THIS VIR_FROM_HYPERV diff --git a/src/hyperv/hyperv_secret_driver.c b/src/hyperv/hyperv_secret_driver.c index ea8fa7e..b830e4e 100644 --- a/src/hyperv/hyperv_secret_driver.c +++ b/src/hyperv/hyperv_secret_driver.c @@ -29,7 +29,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "hyperv_secret_driver.h" #define VIR_FROM_THIS VIR_FROM_HYPERV diff --git a/src/hyperv/hyperv_storage_driver.c b/src/hyperv/hyperv_storage_driver.c index 7549801..38385a0 100644 --- a/src/hyperv/hyperv_storage_driver.c +++ b/src/hyperv/hyperv_storage_driver.c @@ -29,7 +29,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "hyperv_storage_driver.h" #define VIR_FROM_THIS VIR_FROM_HYPERV diff --git a/src/hyperv/hyperv_util.c b/src/hyperv/hyperv_util.c index 69a57c6..9bc5b81 100644 --- a/src/hyperv/hyperv_util.c +++ b/src/hyperv/hyperv_util.c @@ -27,7 +27,7 @@ #include "virutil.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "hyperv_private.h" #include "hyperv_util.h" diff --git a/src/hyperv/hyperv_wmi.c b/src/hyperv/hyperv_wmi.c index f4afdce..e029028 100644 --- a/src/hyperv/hyperv_wmi.c +++ b/src/hyperv/hyperv_wmi.c @@ -30,7 +30,7 @@ #include "virlog.h" #include "viralloc.h" #include "virutil.h" -#include "uuid.h" +#include "viruuid.h" #include "virbuffer.h" #include "hyperv_private.h" #include "hyperv_wmi.h" diff --git a/src/libvirt.c b/src/libvirt.c index 5654d53..e06b643 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -50,7 +50,7 @@ #include "datatypes.h" #include "driver.h" -#include "uuid.h" +#include "viruuid.h" #include "viralloc.h" #include "configmake.h" #include "intprops.h" diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index eb6738c..aad1374 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -38,7 +38,7 @@ #include "virfile.h" #include "virstring.h" #include "viralloc.h" -#include "uuid.h" +#include "viruuid.h" #include "capabilities.h" #include "libxl_driver.h" #include "libxl_conf.h" diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index af74ebc..76afe34 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -38,7 +38,7 @@ #include "datatypes.h" #include "virfile.h" #include "viralloc.h" -#include "uuid.h" +#include "viruuid.h" #include "vircommand.h" #include "libxl.h" #include "libxl_driver.h" diff --git a/src/locking/domain_lock.c b/src/locking/domain_lock.c index 0ae9750..0354e26 100644 --- a/src/locking/domain_lock.c +++ b/src/locking/domain_lock.c @@ -23,7 +23,7 @@ #include "domain_lock.h" #include "viralloc.h" -#include "uuid.h" +#include "viruuid.h" #include "virterror_internal.h" #include "virlog.h" diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c index df9923e..a445b2e 100644 --- a/src/locking/lock_daemon.c +++ b/src/locking/lock_daemon.c @@ -44,7 +44,7 @@ #include "rpc/virnetserver.h" #include "virrandom.h" #include "virhash.h" -#include "uuid.h" +#include "viruuid.h" #include "locking/lock_daemon_dispatch.h" #include "locking/lock_protocol.h" diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lockd.c index 547db85..9c7ce6d 100644 --- a/src/locking/lock_driver_lockd.c +++ b/src/locking/lock_driver_lockd.c @@ -25,7 +25,7 @@ #include "virconf.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "virutil.h" #include "virfile.h" #include "virterror_internal.h" diff --git a/src/locking/lock_driver_nop.c b/src/locking/lock_driver_nop.c index cf0f49a..e8e9917 100644 --- a/src/locking/lock_driver_nop.c +++ b/src/locking/lock_driver_nop.c @@ -24,7 +24,7 @@ #include "lock_driver_nop.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" static int virLockManagerNopInit(unsigned int version ATTRIBUTE_UNUSED, diff --git a/src/locking/lock_manager.c b/src/locking/lock_manager.c index d73e184..1b88838 100644 --- a/src/locking/lock_manager.c +++ b/src/locking/lock_manager.c @@ -27,7 +27,7 @@ #include "virlog.h" #include "virutil.h" #include "viralloc.h" -#include "uuid.h" +#include "viruuid.h" #if HAVE_DLFCN_H # include <dlfcn.h> diff --git a/src/lxc/lxc_conf.c b/src/lxc/lxc_conf.c index 043630a..36c49d0 100644 --- a/src/lxc/lxc_conf.c +++ b/src/lxc/lxc_conf.c @@ -34,7 +34,7 @@ #include "virconf.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "configmake.h" #include "lxc_container.h" #include "virnodesuspend.h" diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index 050a4c1..57c432a 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -59,7 +59,7 @@ #include "virutil.h" #include "viralloc.h" #include "virnetdevveth.h" -#include "uuid.h" +#include "viruuid.h" #include "virfile.h" #include "vircommand.h" #include "virnetdev.h" diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index e513b76..42c6f80 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -48,7 +48,7 @@ #include "virnetdevbridge.h" #include "virnetdevveth.h" #include "nodeinfo.h" -#include "uuid.h" +#include "viruuid.h" #include "virstatslinux.h" #include "virhooks.h" #include "virfile.h" diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index dbbd49c..953e571 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -55,7 +55,7 @@ #include "virutil.h" #include "vircommand.h" #include "viralloc.h" -#include "uuid.h" +#include "viruuid.h" #include "viriptables.h" #include "virlog.h" #include "virdnsmasq.h" diff --git a/src/node_device/node_device_hal.c b/src/node_device/node_device_hal.c index 257a363..8ee816b 100644 --- a/src/node_device/node_device_hal.c +++ b/src/node_device/node_device_hal.c @@ -34,7 +34,7 @@ #include "driver.h" #include "datatypes.h" #include "viralloc.h" -#include "uuid.h" +#include "viruuid.h" #include "virpci.h" #include "virlog.h" #include "node_device_driver.h" diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c index d350955..61e5a0e 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -34,7 +34,7 @@ #include "datatypes.h" #include "virlog.h" #include "viralloc.h" -#include "uuid.h" +#include "viruuid.h" #include "virutil.h" #include "virbuffer.h" #include "virpci.h" diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c index b0c9c5f..35f5c97 100644 --- a/src/openvz/openvz_conf.c +++ b/src/openvz/openvz_conf.c @@ -46,7 +46,7 @@ #include "virterror_internal.h" #include "openvz_conf.h" #include "openvz_util.h" -#include "uuid.h" +#include "viruuid.h" #include "virbuffer.h" #include "viralloc.h" #include "virutil.h" diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c index 25b96b4..cd1911e 100644 --- a/src/phyp/phyp_driver.c +++ b/src/phyp/phyp_driver.c @@ -53,7 +53,7 @@ #include "driver.h" #include "libvirt/libvirt.h" #include "virterror_internal.h" -#include "uuid.h" +#include "viruuid.h" #include "domain_conf.h" #include "storage_conf.h" #include "nodeinfo.h" diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 23ccffe..79e5faa 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -33,7 +33,7 @@ #include "virterror_internal.h" #include "virutil.h" #include "virfile.h" -#include "uuid.h" +#include "viruuid.h" #include "c-ctype.h" #include "domain_nwfilter.h" #include "domain_audit.h" diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index be88d77..8d05b4c 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -40,7 +40,7 @@ #include "qemu_command.h" #include "qemu_capabilities.h" #include "qemu_bridge_filter.h" -#include "uuid.h" +#include "viruuid.h" #include "virbuffer.h" #include "virconf.h" #include "virutil.h" diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 3e1081a..46b7656 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -32,7 +32,7 @@ #include "virterror_internal.h" #include "c-ctype.h" #include "cpu/cpu.h" -#include "uuid.h" +#include "viruuid.h" #include "virfile.h" #include "domain_event.h" #include "virtime.h" diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 15b773b..3821d74 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -68,7 +68,7 @@ #include "virstatslinux.h" #include "capabilities.h" #include "viralloc.h" -#include "uuid.h" +#include "viruuid.h" #include "domain_conf.h" #include "domain_audit.h" #include "node_device_conf.h" diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 1e83e3c..afe2374 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -43,7 +43,7 @@ #include "virfile.h" #include "datatypes.h" #include "fdstream.h" -#include "uuid.h" +#include "viruuid.h" #include "virtime.h" #include "locking/domain_lock.h" #include "rpc/virnetsocket.h" diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d4eaa9e..5ffc5a5 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -64,7 +64,7 @@ #include "domain_nwfilter.h" #include "locking/domain_lock.h" #include "network/bridge_driver.h" -#include "uuid.h" +#include "viruuid.h" #include "virprocess.h" #include "virtime.h" #include "virnetdevtap.h" diff --git a/src/secret/secret_driver.c b/src/secret/secret_driver.c index 8dfd921..1784fea 100644 --- a/src/secret/secret_driver.c +++ b/src/secret/secret_driver.c @@ -38,7 +38,7 @@ #include "secret_driver.h" #include "virthread.h" #include "virutil.h" -#include "uuid.h" +#include "viruuid.h" #include "virterror_internal.h" #include "virfile.h" #include "configmake.h" diff --git a/src/security/security_apparmor.c b/src/security/security_apparmor.c index 4027cdf..ee96bac 100644 --- a/src/security/security_apparmor.c +++ b/src/security/security_apparmor.c @@ -42,7 +42,7 @@ #include "viralloc.h" #include "virterror_internal.h" #include "datatypes.h" -#include "uuid.h" +#include "viruuid.h" #include "virpci.h" #include "virusb.h" #include "virfile.h" diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 5cfa3ff..3c15226 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -49,7 +49,7 @@ #include "security_apparmor.h" #include "domain_conf.h" #include "xml.h" -#include "uuid.h" +#include "viruuid.h" #include "virusb.h" #include "virpci.h" #include "virfile.h" diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c index 29272f1..f98a7c0 100644 --- a/src/storage/storage_backend.c +++ b/src/storage/storage_backend.c @@ -51,7 +51,7 @@ #include "viralloc.h" #include "internal.h" #include "secret_conf.h" -#include "uuid.h" +#include "viruuid.h" #include "virstoragefile.h" #include "storage_backend.h" #include "virlog.h" diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backend_rbd.c index ffa3234..7dc46b0 100644 --- a/src/storage/storage_backend_rbd.c +++ b/src/storage/storage_backend_rbd.c @@ -29,7 +29,7 @@ #include "viralloc.h" #include "virlog.h" #include "base64.h" -#include "uuid.h" +#include "viruuid.h" #include "rados/librados.h" #include "rbd/librbd.h" diff --git a/src/test/test_driver.c b/src/test/test_driver.c index da76367..1a85eb3 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -37,7 +37,7 @@ #include "test_driver.h" #include "virbuffer.h" #include "virutil.h" -#include "uuid.h" +#include "viruuid.h" #include "capabilities.h" #include "viralloc.h" #include "network_conf.h" diff --git a/src/uml/uml_conf.c b/src/uml/uml_conf.c index b2057e8..bfc0600 100644 --- a/src/uml/uml_conf.c +++ b/src/uml/uml_conf.c @@ -36,7 +36,7 @@ #include <sys/utsname.h> #include "uml_conf.h" -#include "uuid.h" +#include "viruuid.h" #include "virbuffer.h" #include "virconf.h" #include "virutil.h" diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c index 05fb7f2..448d292 100644 --- a/src/uml/uml_driver.c +++ b/src/uml/uml_driver.c @@ -52,7 +52,7 @@ #include "virstatslinux.h" #include "capabilities.h" #include "viralloc.h" -#include "uuid.h" +#include "viruuid.h" #include "domain_conf.h" #include "domain_audit.h" #include "datatypes.h" diff --git a/src/util/uuid.c b/src/util/uuid.c deleted file mode 100644 index 57cfaa6..0000000 --- a/src/util/uuid.c +++ /dev/null @@ -1,313 +0,0 @@ -/* - * Copyright (C) 2007-2012 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see - * <http://www.gnu.org/licenses/>. - * - * Authors: - * Mark McLoughlin <markmc@xxxxxxxxxx> - */ - -#include <config.h> - -#include "uuid.h" - -#include <errno.h> -#include <fcntl.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <time.h> -#include <unistd.h> - -#include "c-ctype.h" -#include "internal.h" -#include "virutil.h" -#include "virterror_internal.h" -#include "virlog.h" -#include "viralloc.h" -#include "virfile.h" -#include "virrandom.h" - -#ifndef ENODATA -# define ENODATA EIO -#endif - -static unsigned char host_uuid[VIR_UUID_BUFLEN]; - -static int -virUUIDGenerateRandomBytes(unsigned char *buf, - int buflen) -{ - int fd; - - if ((fd = open("/dev/urandom", O_RDONLY)) < 0) - return errno; - - while (buflen > 0) { - int n; - - if ((n = read(fd, buf, buflen)) <= 0) { - if (errno == EINTR) - continue; - VIR_FORCE_CLOSE(fd); - return n < 0 ? errno : ENODATA; - } - - buf += n; - buflen -= n; - } - - VIR_FORCE_CLOSE(fd); - - return 0; -} - -static int -virUUIDGeneratePseudoRandomBytes(unsigned char *buf, - int buflen) -{ - while (buflen > 0) { - *buf++ = virRandomBits(8); - buflen--; - } - - return 0; -} - -/** - * virUUIDGenerate: - * @uuid: array of VIR_UUID_BUFLEN bytes to store the new UUID - * - * Generates a randomized unique identifier. - * - * Returns 0 in case of success and -1 in case of failure - */ -int -virUUIDGenerate(unsigned char *uuid) -{ - int err; - - if (uuid == NULL) - return -1; - - if ((err = virUUIDGenerateRandomBytes(uuid, VIR_UUID_BUFLEN))) { - char ebuf[1024]; - VIR_WARN("Falling back to pseudorandom UUID," - " failed to generate random bytes: %s", - virStrerror(err, ebuf, sizeof(ebuf))); - err = virUUIDGeneratePseudoRandomBytes(uuid, VIR_UUID_BUFLEN); - } - - return err; -} - -/** - * virUUIDParse: - * @uuidstr: zero terminated string representation of the UUID - * @uuid: array of VIR_UUID_BUFLEN bytes to store the raw UUID - * - * Parses the external string representation, allowing spaces and '-' - * character in the sequence, and storing the result as a raw UUID - * - * Returns 0 in case of success and -1 in case of error. - */ -int -virUUIDParse(const char *uuidstr, unsigned char *uuid) { - const char *cur; - int i; - - /* - * do a liberal scan allowing '-' and ' ' anywhere between character - * pairs, and surrounding whitespace, as long as there are exactly - * 32 hexadecimal digits the end. - */ - cur = uuidstr; - while (c_isspace(*cur)) - cur++; - - for (i = 0;i < VIR_UUID_BUFLEN;) { - uuid[i] = 0; - if (*cur == 0) - goto error; - if ((*cur == '-') || (*cur == ' ')) { - cur++; - continue; - } - if (!c_isxdigit(*cur)) - goto error; - uuid[i] = virHexToBin(*cur); - uuid[i] *= 16; - cur++; - if (*cur == 0) - goto error; - if (!c_isxdigit(*cur)) - goto error; - uuid[i] += virHexToBin(*cur); - i++; - cur++; - } - - while (*cur) { - if (!c_isspace(*cur)) - goto error; - cur++; - } - - return 0; - - error: - return -1; -} - -/** - * virUUIDFormat: - * @uuid: array of VIR_UUID_RAW_LEN bytes to store the raw UUID - * @uuidstr: array of VIR_UUID_STRING_BUFLEN bytes to store the - * string representation of the UUID in. The resulting string - * will be NULL terminated. - * - * Converts the raw UUID into printable format, with embedded '-' - * - * Returns a pointer to the resulting character string. - */ -const char * -virUUIDFormat(const unsigned char *uuid, char *uuidstr) -{ - snprintf(uuidstr, VIR_UUID_STRING_BUFLEN, - "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", - uuid[0], uuid[1], uuid[2], uuid[3], - uuid[4], uuid[5], uuid[6], uuid[7], - uuid[8], uuid[9], uuid[10], uuid[11], - uuid[12], uuid[13], uuid[14], uuid[15]); - uuidstr[VIR_UUID_STRING_BUFLEN-1] = '\0'; - return uuidstr; -} - - - -/** - * virUUIDIsValid - * - * @uuid: The UUID to test - * - * Do some basic tests to check whether the given UUID is - * valid as a host UUID. - * Basic tests: - * - Not all of the digits may be equal - */ -int -virUUIDIsValid(unsigned char *uuid) -{ - unsigned int i, ctr = 1; - unsigned char c; - - if (!uuid) - return 0; - - c = uuid[0]; - - for (i = 1; i < VIR_UUID_BUFLEN; i++) - if (uuid[i] == c) - ctr++; - - return ctr != VIR_UUID_BUFLEN; -} - -static int -getDMISystemUUID(char *uuid, int len) -{ - unsigned int i = 0; - const char *paths[] = { - "/sys/devices/virtual/dmi/id/product_uuid", - "/sys/class/dmi/id/product_uuid", - NULL - }; - - while (paths[i]) { - int fd = open(paths[i], O_RDONLY); - if (fd >= 0) { - if (saferead(fd, uuid, len - 1) == len - 1) { - uuid[len - 1] = '\0'; - VIR_FORCE_CLOSE(fd); - return 0; - } - VIR_FORCE_CLOSE(fd); - } - i++; - } - - return -1; -} - - -/** - * setHostUUID - * - * @host_uuid: UUID that the host is supposed to have - * - * Set the UUID of the host if it hasn't been set, yet - * Returns 0 in case of success, an error code in case of error. - */ -int -virSetHostUUIDStr(const char *uuid) -{ - int rc; - char dmiuuid[VIR_UUID_STRING_BUFLEN]; - - if (virUUIDIsValid(host_uuid)) - return EEXIST; - - if (!uuid) { - memset(dmiuuid, 0, sizeof(dmiuuid)); - if (!getDMISystemUUID(dmiuuid, sizeof(dmiuuid))) { - if (!virUUIDParse(dmiuuid, host_uuid)) - return 0; - } - - if (!virUUIDIsValid(host_uuid)) - return virUUIDGenerate(host_uuid); - } else { - rc = virUUIDParse(uuid, host_uuid); - if (rc) - return rc; - if (!virUUIDIsValid(host_uuid)) - return EINVAL; - } - - return 0; -} - -/** - * getHostUUID: - * - * @host_uuid: memory to store the host_uuid into - * - * Get the UUID of the host. Returns 0 in case of success, - * an error code otherwise. - * Returns 0 in case of success, an error code in case of error. - */ -int virGetHostUUID(unsigned char *uuid) -{ - int ret = 0; - - if (!virUUIDIsValid(host_uuid)) - ret = virSetHostUUIDStr(NULL); - - memcpy(uuid, host_uuid, sizeof(host_uuid)); - - return ret; -} diff --git a/src/util/uuid.h b/src/util/uuid.h deleted file mode 100644 index d90fd2e..0000000 --- a/src/util/uuid.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2007, 2011, 2012 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see - * <http://www.gnu.org/licenses/>. - * - * Authors: - * Mark McLoughlin <markmc@xxxxxxxxxx> - */ - -#ifndef __VIR_UUID_H__ -# define __VIR_UUID_H__ - -# include "internal.h" - -int virSetHostUUIDStr(const char *host_uuid); -int virGetHostUUID(unsigned char *host_uuid) ATTRIBUTE_NONNULL(1); - -int virUUIDIsValid(unsigned char *uuid); - -int virUUIDGenerate(unsigned char *uuid); - -int virUUIDParse(const char *uuidstr, - unsigned char *uuid) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; - -const char *virUUIDFormat(const unsigned char *uuid, - char *uuidstr) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); - -#endif /* __VIR_UUID_H__ */ diff --git a/src/util/virnetdevmacvlan.c b/src/util/virnetdevmacvlan.c index 953d76b..720a48a 100644 --- a/src/util/virnetdevmacvlan.c +++ b/src/util/virnetdevmacvlan.c @@ -58,7 +58,7 @@ VIR_ENUM_IMPL(virNetDevMacVLanMode, VIR_NETDEV_MACVLAN_MODE_LAST, # include "viralloc.h" # include "virlog.h" -# include "uuid.h" +# include "viruuid.h" # include "virfile.h" # include "virnetlink.h" # include "virnetdev.h" diff --git a/src/util/virnetdevvportprofile.h b/src/util/virnetdevvportprofile.h index cc106b8..940c0e9 100644 --- a/src/util/virnetdevvportprofile.h +++ b/src/util/virnetdevvportprofile.h @@ -24,7 +24,7 @@ # define __VIR_NETDEV_VPORT_PROFILE_H__ # include "internal.h" -# include "uuid.h" +# include "viruuid.h" # include "virutil.h" # include "virmacaddr.h" diff --git a/src/util/viruuid.c b/src/util/viruuid.c new file mode 100644 index 0000000..f4eb331 --- /dev/null +++ b/src/util/viruuid.c @@ -0,0 +1,313 @@ +/* + * Copyright (C) 2007-2012 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + * + * Authors: + * Mark McLoughlin <markmc@xxxxxxxxxx> + */ + +#include <config.h> + +#include "viruuid.h" + +#include <errno.h> +#include <fcntl.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <time.h> +#include <unistd.h> + +#include "c-ctype.h" +#include "internal.h" +#include "virutil.h" +#include "virterror_internal.h" +#include "virlog.h" +#include "viralloc.h" +#include "virfile.h" +#include "virrandom.h" + +#ifndef ENODATA +# define ENODATA EIO +#endif + +static unsigned char host_uuid[VIR_UUID_BUFLEN]; + +static int +virUUIDGenerateRandomBytes(unsigned char *buf, + int buflen) +{ + int fd; + + if ((fd = open("/dev/urandom", O_RDONLY)) < 0) + return errno; + + while (buflen > 0) { + int n; + + if ((n = read(fd, buf, buflen)) <= 0) { + if (errno == EINTR) + continue; + VIR_FORCE_CLOSE(fd); + return n < 0 ? errno : ENODATA; + } + + buf += n; + buflen -= n; + } + + VIR_FORCE_CLOSE(fd); + + return 0; +} + +static int +virUUIDGeneratePseudoRandomBytes(unsigned char *buf, + int buflen) +{ + while (buflen > 0) { + *buf++ = virRandomBits(8); + buflen--; + } + + return 0; +} + +/** + * virUUIDGenerate: + * @uuid: array of VIR_UUID_BUFLEN bytes to store the new UUID + * + * Generates a randomized unique identifier. + * + * Returns 0 in case of success and -1 in case of failure + */ +int +virUUIDGenerate(unsigned char *uuid) +{ + int err; + + if (uuid == NULL) + return -1; + + if ((err = virUUIDGenerateRandomBytes(uuid, VIR_UUID_BUFLEN))) { + char ebuf[1024]; + VIR_WARN("Falling back to pseudorandom UUID," + " failed to generate random bytes: %s", + virStrerror(err, ebuf, sizeof(ebuf))); + err = virUUIDGeneratePseudoRandomBytes(uuid, VIR_UUID_BUFLEN); + } + + return err; +} + +/** + * virUUIDParse: + * @uuidstr: zero terminated string representation of the UUID + * @uuid: array of VIR_UUID_BUFLEN bytes to store the raw UUID + * + * Parses the external string representation, allowing spaces and '-' + * character in the sequence, and storing the result as a raw UUID + * + * Returns 0 in case of success and -1 in case of error. + */ +int +virUUIDParse(const char *uuidstr, unsigned char *uuid) { + const char *cur; + int i; + + /* + * do a liberal scan allowing '-' and ' ' anywhere between character + * pairs, and surrounding whitespace, as long as there are exactly + * 32 hexadecimal digits the end. + */ + cur = uuidstr; + while (c_isspace(*cur)) + cur++; + + for (i = 0;i < VIR_UUID_BUFLEN;) { + uuid[i] = 0; + if (*cur == 0) + goto error; + if ((*cur == '-') || (*cur == ' ')) { + cur++; + continue; + } + if (!c_isxdigit(*cur)) + goto error; + uuid[i] = virHexToBin(*cur); + uuid[i] *= 16; + cur++; + if (*cur == 0) + goto error; + if (!c_isxdigit(*cur)) + goto error; + uuid[i] += virHexToBin(*cur); + i++; + cur++; + } + + while (*cur) { + if (!c_isspace(*cur)) + goto error; + cur++; + } + + return 0; + + error: + return -1; +} + +/** + * virUUIDFormat: + * @uuid: array of VIR_UUID_RAW_LEN bytes to store the raw UUID + * @uuidstr: array of VIR_UUID_STRING_BUFLEN bytes to store the + * string representation of the UUID in. The resulting string + * will be NULL terminated. + * + * Converts the raw UUID into printable format, with embedded '-' + * + * Returns a pointer to the resulting character string. + */ +const char * +virUUIDFormat(const unsigned char *uuid, char *uuidstr) +{ + snprintf(uuidstr, VIR_UUID_STRING_BUFLEN, + "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", + uuid[0], uuid[1], uuid[2], uuid[3], + uuid[4], uuid[5], uuid[6], uuid[7], + uuid[8], uuid[9], uuid[10], uuid[11], + uuid[12], uuid[13], uuid[14], uuid[15]); + uuidstr[VIR_UUID_STRING_BUFLEN-1] = '\0'; + return uuidstr; +} + + + +/** + * virUUIDIsValid + * + * @uuid: The UUID to test + * + * Do some basic tests to check whether the given UUID is + * valid as a host UUID. + * Basic tests: + * - Not all of the digits may be equal + */ +int +virUUIDIsValid(unsigned char *uuid) +{ + unsigned int i, ctr = 1; + unsigned char c; + + if (!uuid) + return 0; + + c = uuid[0]; + + for (i = 1; i < VIR_UUID_BUFLEN; i++) + if (uuid[i] == c) + ctr++; + + return ctr != VIR_UUID_BUFLEN; +} + +static int +getDMISystemUUID(char *uuid, int len) +{ + unsigned int i = 0; + const char *paths[] = { + "/sys/devices/virtual/dmi/id/product_uuid", + "/sys/class/dmi/id/product_uuid", + NULL + }; + + while (paths[i]) { + int fd = open(paths[i], O_RDONLY); + if (fd >= 0) { + if (saferead(fd, uuid, len - 1) == len - 1) { + uuid[len - 1] = '\0'; + VIR_FORCE_CLOSE(fd); + return 0; + } + VIR_FORCE_CLOSE(fd); + } + i++; + } + + return -1; +} + + +/** + * setHostUUID + * + * @host_uuid: UUID that the host is supposed to have + * + * Set the UUID of the host if it hasn't been set, yet + * Returns 0 in case of success, an error code in case of error. + */ +int +virSetHostUUIDStr(const char *uuid) +{ + int rc; + char dmiuuid[VIR_UUID_STRING_BUFLEN]; + + if (virUUIDIsValid(host_uuid)) + return EEXIST; + + if (!uuid) { + memset(dmiuuid, 0, sizeof(dmiuuid)); + if (!getDMISystemUUID(dmiuuid, sizeof(dmiuuid))) { + if (!virUUIDParse(dmiuuid, host_uuid)) + return 0; + } + + if (!virUUIDIsValid(host_uuid)) + return virUUIDGenerate(host_uuid); + } else { + rc = virUUIDParse(uuid, host_uuid); + if (rc) + return rc; + if (!virUUIDIsValid(host_uuid)) + return EINVAL; + } + + return 0; +} + +/** + * getHostUUID: + * + * @host_uuid: memory to store the host_uuid into + * + * Get the UUID of the host. Returns 0 in case of success, + * an error code otherwise. + * Returns 0 in case of success, an error code in case of error. + */ +int virGetHostUUID(unsigned char *uuid) +{ + int ret = 0; + + if (!virUUIDIsValid(host_uuid)) + ret = virSetHostUUIDStr(NULL); + + memcpy(uuid, host_uuid, sizeof(host_uuid)); + + return ret; +} diff --git a/src/util/viruuid.h b/src/util/viruuid.h new file mode 100644 index 0000000..d90fd2e --- /dev/null +++ b/src/util/viruuid.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2007, 2011, 2012 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + * + * Authors: + * Mark McLoughlin <markmc@xxxxxxxxxx> + */ + +#ifndef __VIR_UUID_H__ +# define __VIR_UUID_H__ + +# include "internal.h" + +int virSetHostUUIDStr(const char *host_uuid); +int virGetHostUUID(unsigned char *host_uuid) ATTRIBUTE_NONNULL(1); + +int virUUIDIsValid(unsigned char *uuid); + +int virUUIDGenerate(unsigned char *uuid); + +int virUUIDParse(const char *uuidstr, + unsigned char *uuid) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; + +const char *virUUIDFormat(const unsigned char *uuid, + char *uuidstr) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); + +#endif /* __VIR_UUID_H__ */ diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c index 923ff04..5cac7bb 100644 --- a/src/vbox/vbox_tmpl.c +++ b/src/vbox/vbox_tmpl.c @@ -49,7 +49,7 @@ #include "domain_event.h" #include "storage_conf.h" #include "virstoragefile.h" -#include "uuid.h" +#include "viruuid.h" #include "viralloc.h" #include "nodeinfo.h" #include "virlog.h" diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c index 7cf9bcc..22a085d 100644 --- a/src/vmware/vmware_conf.c +++ b/src/vmware/vmware_conf.c @@ -30,7 +30,7 @@ #include "viralloc.h" #include "nodeinfo.h" #include "virfile.h" -#include "uuid.h" +#include "viruuid.h" #include "virterror_internal.h" #include "vmx.h" diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c index 12195bf..67cdc88 100644 --- a/src/vmware/vmware_driver.c +++ b/src/vmware/vmware_driver.c @@ -29,7 +29,7 @@ #include "virfile.h" #include "viralloc.h" #include "virutil.h" -#include "uuid.h" +#include "viruuid.h" #include "vircommand.h" #include "vmx.h" #include "vmware_conf.h" diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 90496ce..d57a14f 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -30,7 +30,7 @@ #include "virconf.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "vmx.h" #include "viruri.h" diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index 2b8496c..4cbe827 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -58,7 +58,7 @@ #include "viralloc.h" #include "node_device_conf.h" #include "virpci.h" -#include "uuid.h" +#include "viruuid.h" #include "fdstream.h" #include "virfile.h" #include "viruri.h" diff --git a/src/xen/xen_inotify.c b/src/xen/xen_inotify.c index 35a625c..4cce25a 100644 --- a/src/xen/xen_inotify.c +++ b/src/xen/xen_inotify.c @@ -37,7 +37,7 @@ #include "xen_inotify.h" #include "xend_internal.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "virfile.h" #include "xm_internal.h" /* for xenXMDomainConfigParse */ diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index 7ffc5bb..120e237 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -38,7 +38,7 @@ #include "virsexpr.h" #include "xen_sxpr.h" #include "virbuffer.h" -#include "uuid.h" +#include "viruuid.h" #include "xen_driver.h" #include "xen_hypervisor.h" #include "xs_internal.h" /* To extract VNC port & Serial console TTY */ diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c index e3206eb..0806e77 100644 --- a/src/xen/xm_internal.c +++ b/src/xen/xm_internal.c @@ -44,7 +44,7 @@ #include "xen_xm.h" #include "virhash.h" #include "virbuffer.h" -#include "uuid.h" +#include "viruuid.h" #include "virutil.h" #include "viralloc.h" #include "virlog.h" diff --git a/src/xen/xs_internal.c b/src/xen/xs_internal.c index e414966..20332df 100644 --- a/src/xen/xs_internal.c +++ b/src/xen/xs_internal.c @@ -46,7 +46,7 @@ #include "driver.h" #include "viralloc.h" #include "virlog.h" -#include "uuid.h" +#include "viruuid.h" #include "xen_driver.h" #include "xs_internal.h" #include "xen_hypervisor.h" diff --git a/src/xenapi/xenapi_driver.c b/src/xenapi/xenapi_driver.c index 04b24ab..df5625e 100644 --- a/src/xenapi/xenapi_driver.c +++ b/src/xenapi/xenapi_driver.c @@ -32,7 +32,7 @@ #include "datatypes.h" #include "virauth.h" #include "virutil.h" -#include "uuid.h" +#include "viruuid.h" #include "viralloc.h" #include "virbuffer.h" #include "viruri.h" diff --git a/src/xenapi/xenapi_utils.c b/src/xenapi/xenapi_utils.c index 15be403..5c53b69 100644 --- a/src/xenapi/xenapi_utils.c +++ b/src/xenapi/xenapi_utils.c @@ -30,7 +30,7 @@ #include "virterror_internal.h" #include "datatypes.h" #include "virutil.h" -#include "uuid.h" +#include "viruuid.h" #include "viralloc.h" #include "virbuffer.h" #include "virlog.h" diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c index b28c538..b83ac58 100644 --- a/src/xenxs/xen_sxpr.c +++ b/src/xenxs/xen_sxpr.c @@ -31,7 +31,7 @@ #include "virconf.h" #include "viralloc.h" #include "verify.h" -#include "uuid.h" +#include "viruuid.h" #include "virlog.h" #include "count-one-bits.h" #include "xenxs_private.h" diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c index 007036b..bbf35d8 100644 --- a/src/xenxs/xen_xm.c +++ b/src/xenxs/xen_xm.c @@ -30,7 +30,7 @@ #include "virconf.h" #include "viralloc.h" #include "verify.h" -#include "uuid.h" +#include "viruuid.h" #include "virsexpr.h" #include "count-one-bits.h" #include "xenxs_private.h" -- 1.7.11.7 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list