1. 02 7月, 2016 1 次提交
    • J
      util: Add 'usage' for encryption · 47e88b33
      John Ferlan 提交于
      In order to use more common code and set up for a future type, modify the
      encryption secret to allow the "usage" attribute or the "uuid" attribute
      to define the secret. The "usage" in the case of a volume secret would be
      the path to the volume as dictated by the backwards compatibility brought
      on by virStorageGenerateQcowEncryption where it set up the usage field as
      the vol->target.path and didn't allow someone to provide it. This carries
      into virSecretObjListFindByUsageLocked which takes the secret usage attribute
      value from from the domain disk definition and compares it against the
      usage type from the secret definition. Since none of the code dealing
      with qcow/qcow2 encryption secrets uses usage for lookup, it's a mostly
      cosmetic change. The real usage comes in a future path where the encryption
      is expanded to be a luks volume and the secret will allow definition of
      the usage field.
      
      This code will make use of the virSecretLookup{Parse|Format}Secret common code.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      47e88b33
  2. 20 6月, 2014 1 次提交
  3. 19 5月, 2014 1 次提交
    • E
      Revert "maint: prefer enum over int for virstoragefile structs" · 71bce84a
      Eric Blake 提交于
      This partially reverts commits b279e52f and ea18f8b2.
      
      It turns out our code base is full of:
      
      if ((struct.member = virBlahFromString(str)) < 0)
          goto error;
      
      Meanwhile, the C standard says it is up to the compiler whether
      an enum is signed or unsigned when all of its declared values
      happen to be positive.  In my testing (Fedora 20, gcc 4.8.2),
      the compiler picked signed, and nothing changed.  But others
      testing with gcc 4.7 got compiler warnings, because it picked
      the enum to be unsigned, but no unsigned value is less than 0.
      Even worse:
      
      if ((struct.member = virBlahFromString(str)) <= 0)
          goto error;
      
      is silently compiled without warning, but incorrectly treats -1
      from a bad parse as a large positive number with no warning; and
      without the compiler's help to find these instances, it is a
      nightmare to maintain correctly.  We could force signed enums
      with a dummy negative declaration in each enum, or cast the
      result of virBlahFromString back to int after assigning to an
      enum value, or use a temporary int for collecting results from
      virBlahFromString, but those actions are all uglier than what we
      were trying to cure by directly using enum types for struct
      values in the first place.  It's better off to just live with int
      members, and use 'switch ((virFoo) struct.member)' where we want
      the compiler to help, than to track down all the conversions from
      string to enum and ensure they don't suffer from type problems.
      
      * src/util/virstorageencryption.h: Revert back to int declarations
      with comment about enum usage.
      * src/util/virstoragefile.h: Likewise.
      * src/conf/domain_conf.c: Restore back to casts in switches.
      * src/qemu/qemu_driver.c: Likewise.
      * src/qemu/qemu_command.c: Add cast rather than revert.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      71bce84a
  4. 16 5月, 2014 2 次提交
    • E
      maint: shorten 'TypeType' function names · ab517818
      Eric Blake 提交于
      The VIR_ENUM_DECL/VIR_ENUM_IMPL helper macros already append 'Type'
      to the enum name being converted; it looks silly to have functions
      with 'TypeType' in their name.  Even though some of our enums have
      to have a 'Type' suffix, the corresponding string conversion
      functions do not.
      
      * src/conf/secret_conf.h (VIR_ENUM_DECL): Rename virSecretUsageType.
      * src/conf/storage_conf.h (VIR_ENUM_DECL): Rename
      virStoragePoolAuthType, virStoragePoolSourceAdapterType,
      virStoragePartedFsType.
      * src/conf/domain_conf.c (virDomainDiskDefParseXML)
      (virDomainFSDefParseXML, virDomainFSDefFormat): Update callers.
      * src/conf/secret_conf.c (virSecretDefParseUsage)
      (virSecretDefFormatUsage): Likewise.
      * src/conf/storage_conf.c (virStoragePoolDefParseAuth)
      (virStoragePoolDefParseSource, virStoragePoolSourceFormat):
      Likewise.
      * src/lxc/lxc_controller.c (virLXCControllerSetupLoopDevices):
      Likewise.
      * src/storage/storage_backend_disk.c
      (virStorageBackendDiskPartFormat): Likewise.
      * src/util/virstorageencryption.c (virStorageEncryptionSecretParse)
      (virStorageEncryptionSecretFormat): Likewise.
      * tools/virsh-secret.c (cmdSecretList): Likewise.
      * src/libvirt_private.syms (secret_conf.h, storage_conf.h): Export
      corrected names.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ab517818
    • E
      maint: use enum typedef for virstorageencryption.h · ea18f8b2
      Eric Blake 提交于
      Continuing the work of consistent enum cleanups; this time in
      virstorageencryption.h.
      
      * src/util/virstorageencryption.h (virStorageEncryptionFormat):
      Convert to typedef, renaming to avoid collision with function.
      (virStorageEncryptionSecret, virStorageEncryption): Directly use
      enums.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ea18f8b2
  5. 06 5月, 2014 1 次提交
  6. 02 4月, 2014 1 次提交
    • E
      conf: move storage encryption type to util/ · 8fc32859
      Eric Blake 提交于
      Encryption keys can be associated with each source file in a
      backing chain; as such, this file belongs more in util/ where
      it can be used by virstoragefile.h.
      
      * src/conf/storage_encryption_conf.h: Rename...
      * src/util/virstorageencryption.h: ...to this.
      * src/conf/storage_encryption_conf.c: Rename...
      * src/util/virstorageencryption.c: ...to this.
      * src/Makefile.am (ENCRYPTION_CONF_SOURCES, CONF_SOURCES)
      (UTIL_SOURCES): Update to new file names.
      * src/libvirt_private.syms: Likewise.
      * src/conf/domain_conf.h: Update client.
      * src/conf/storage_conf.h: Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      8fc32859
  7. 21 12月, 2012 2 次提交
  8. 21 9月, 2012 1 次提交
  9. 23 7月, 2012 1 次提交
    • O
      Desert the FSF address in copyright · f9ce7dad
      Osier Yang 提交于
      Per the FSF address could be changed from time to time, and GNU
      recommends the following now: (http://www.gnu.org/licenses/gpl-howto.html)
      
        You should have received a copy of the GNU General Public License
        along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
      
      This patch removes the explicit FSF address, and uses above instead
      (of course, with inserting 'Lesser' before 'General').
      
      Except a bunch of files for security driver, all others are changed
      automatically, the copyright for securify files are not complete,
      that's why to do it manually:
      
        src/security/security_selinux.h
        src/security/security_driver.h
        src/security/security_selinux.c
        src/security/security_apparmor.h
        src/security/security_apparmor.c
        src/security/security_driver.c
      f9ce7dad
  10. 27 10月, 2011 1 次提交
    • E
      snapshot: simplify indentation of disk encryption xml · 4d8e20f6
      Eric Blake 提交于
      Use auto-indent in more places.
      
      * src/conf/storage_encryption_conf.h (virStorageEncryptionFormat):
      Drop parameter.
      * src/conf/storage_encryption_conf.c (virStorageEncryptionFormat)
      (virStorageEncryptionSecretFormat): Simplify with auto-indent.
      * src/conf/domain_conf.c (virDomainDiskDefFormat): Adjust caller.
      * src/conf/storage_conf.c (virStorageVolTargetDefFormat): Likewise.
      4d8e20f6
  11. 24 2月, 2011 1 次提交
  12. 11 5月, 2010 1 次提交
    • E
      storage_encryption: silence clang warning · 23958aed
      Eric Blake 提交于
      For printf("%*s",foo,bar), clang complains if foo is not int:
      
      warning: field width should have type 'int', but argument has
      type 'unsigned int' [-Wformat]
      
      * src/conf/storage_encryption_conf.c
      (virStorageEncryptionSecretFormat, virStorageEncryptionFormat):
      Use correct type.
      * src/conf/storage_encryption_conf.h (virStorageEncryptionFormat):
      Likewise.
      23958aed
  13. 27 4月, 2010 1 次提交
    • D
      Fix indentation for storage conf XML · 1b9347b5
      David Allan 提交于
      * virStorageEncryptionFormat is called from both
        virDomainDiskDefFormat and virStorageVolTargetDefFormat.  The proper
        indentation in the generated XML depends on the caller.  My earlier
        patch to fix the incorrect indentation for the domain XML broke the
        indentation for the storage XML.  This patch adopts Laine's
        suggestion of requring the caller of virStorageEncryptionFormat to
        provide an unsigned int with the number of spaces the output should
        be indented.  The patch modifies both callers to provide the
        additional argument.
      
      * Add a regression test for the domain XML
      
      * src/conf/domain_conf.c src/conf/storage_conf.c
        src/conf/storage_encryption_conf.c src/conf/storage_encryption_conf.h:
        change the indentation code
      * tests/qemuxml2xmltest.c
        tests/qemuxml2argvdata/qemuxml2argv-encrypted-disk.args
        tests/qemuxml2argvdata/qemuxml2argv-encrypted-disk.xml: add a regression test
      1b9347b5
  14. 10 3月, 2010 1 次提交
  15. 10 2月, 2010 1 次提交
    • D
      Remove virConnectPtr from storage APIs & driver · 03136638
      Daniel P. Berrange 提交于
      The virConnectPtr is no longer required for error reporting since
      that is recorded in a thread local. Remove use of virConnectPtr
      from all APIs in storage_conf.{h,c} and storage_encryption_conf.{h,c}
      and update all callers to match
      03136638
  16. 21 9月, 2009 1 次提交
    • D
      Move all XML configuration handling to src/conf/ · e0a48c99
      Daniel P. Berrange 提交于
      * src/capabilities.c, src/capabilities.h, src/domain_conf.c,
        src/domain_conf.h, src/domain_event.c, src/domain_event.h,
        src/interface_conf.c, src/interface_conf.h,
        src/network_conf.c, src/network_conf.h, src/node_device_conf.c,
        src/node_device_conf.h, src/secret_conf.c, src/secret_conf.h,
        src/storage_conf.c, src/storage_conf.h, src/storage_encryption_conf.c,
        src/storage_encryption_conf.h: Move to src/conf/
      * src/Makefile.am: Add -Isrc/conf to the individual build targets
        which need to use XML config APIs. Remove LIBXML_CFLAGS, LIBSSH2_CFLAGS
        and SELINUX_CFLAGS from global INCLUDES and only have them in build
        targets which actually need them.  Create a libvirt_conf.la
        convenience library for all config parsers
      * src/hostusb.h: Remove bogus include of domain_conf.h
      * tests/Makefile.am: Add -Isrc/conf. Remove bogus -I$builddir/src
        since it never has any generated header files
      * daemon/Makefile.am: Add -Isrc/conf
      * proxy/Makefile.am: Add -Isrc/conf and cope with renamed files
      * src/hash.c: Remove bogus include of libxml/threads.h
      e0a48c99
  17. 15 9月, 2009 1 次提交
    • D
      Fix UUID handling in secrets/storage encryption APIs · 47e7a258
      Daniel P. Berrange 提交于
      Convert all the secret/storage encryption APIs / wire format to
      handle UUIDs in raw format instead of non-canonical printable
      format. Guarentees data format correctness.
      
      * docs/schemas/storageencryption.rng: Make UUID mandatory for a secret
        and validate fully
      * docs/schemas/secret.rng: Fully validate UUID
      * include/libvirt/libvirt.h, include/libvirt/libvirt.h.in, Add
        virSecretLookupByUUID and virSecretGetUUID. Make
        virSecretGetUUIDString follow normal API design pattern
      * python/generator.py: Skip generation of virSecretGetUUID,
        virSecretGetUUIDString and virSecretLookupByUUID
      * python/libvir.c, python/libvirt-python-api.xml: Manual impl
        of virSecretGetUUID,virSecretGetUUIDString and virSecretLookupByUUID
      * qemud/remote.c: s/virSecretLookupByUUIDString/virSecretLookupByUUID/
        Fix get_nonnull_secret/make_nonnull_secret to use unsigned char
      * qemud/remote_protocol.x: Fix remote_nonnull_secret to use a
        remote_uuid instead of remote_nonnull_string for UUID field.
        Rename REMOTE_PROC_SECRET_LOOKUP_BY_UUID_STRING to
        REMOTE_PROC_SECRET_LOOKUP_BY_UUID_STRING and make it take an
        remote_uuid  value
      * qemud/remote_dispatch_args.h, qemud/remote_dispatch_prototypes.h,
        qemud/remote_dispatch_ret.h, qemud/remote_dispatch_table.h,
        qemud/remote_protocol.c, qemud/remote_protocol.h: Re-generate
      * src/datatypes.h, src/datatypes.c: Store UUID in raw format instead
        of printable. Change virGetSecret to use raw format UUID
      * src/driver.h: Rename virDrvSecretLookupByUUIDString to
        virDrvSecretLookupByUUID and use raw format UUID
      * src/libvirt.c: Add virSecretLookupByUUID and virSecretGetUUID
        and re-implement virSecretLookupByUUIDString and
        virSecretGetUUIDString in terms of those
      * src/libvirt_public.syms: Add virSecretLookupByUUID and
        virSecretGetUUID
      * src/remote_internal.c: Rename remoteSecretLookupByUUIDString
        to remoteSecretLookupByUUID. Fix typo in args for
        remoteSecretDefineXML impl. Use raw UUID format for
        get_nonnull_secret and make_nonnull_secret
      * src/storage_encryption_conf.c, src/storage_encryption_conf.h:
        Storage UUID in raw format, and require it to be present in
        XML. Use UUID parser to validate.
      * secret_conf.h, secret_conf.c: Generate a UUID if none is provided.
        Storage UUID in raw format.
      * src/secret_driver.c: Adjust to deal with raw UUIDs. Save secrets
        in a filed with printable UUID, instead of base64 UUID.
      * src/virsh.c: Adjust for changed public API contract of
        virSecretGetUUIDString.
      * src/storage_Backend.c: DOn't undefine secret we just generated
        upon successful volume creation. Fix to handle raw UUIDs. Generate
        a non-clashing UUID
      * src/qemu_driver.c: Change to use lookupByUUID instead of
        lookupByUUIDString
      47e7a258
  18. 11 9月, 2009 1 次提交
    • M
      Provide missing passphrase when creating a volume. · cd6a9334
      Miloslav Trmač 提交于
      If the <encryption format='qcow'> element does not specify a secret
      during volume creation, generate a suitable secret and add it to the
      <encryption> tag.  The caller can view the updated <encryption> tag
      using virStorageVolGetXMLDesc().
      
      Similarly, when <encryption format='default'/> is specified while
      creating a qcow or qcow2-formatted volume, change the format to "qcow"
      and generate a secret as described above.
      
      * src/storage_encryption_conf.h (VIR_STORAGE_QCOW_PASSPHRASE_SIZE,
        virStorageGenerateQcowPasphrase),
        src/storage_encryption_conf.c (virStorageGenerateQcowPasphrase),
        src/libvirt_private.syms: Add virStorageGenerateQcowPasphrase().
      * src/storage_backend.c (virStoragegenerateQcowEncryption,
        virStorageBackendCreateQemuImg): Generate a passphrase and
        <encryption> when creating a qcow-formatted encrypted volume and the
        user did not supply the information.
      cd6a9334
  19. 02 9月, 2009 1 次提交
    • M
      Add volume encryption information handling. · 05b9b8fd
      Miloslav Trmač 提交于
      Define an <encryption> tag specifying volume encryption format and
      format-depenedent parameters (e.g. passphrase, cipher name, key
      length, key).
      
      Currently the only defined parameter is a reference to a "secret"
      (passphrase/key) managed using the virSecret* API.
      
      Only the qcow/qcow2 encryption format, and a "default" format used to
      let libvirt choose the format during volume creation, is currently
      supported.
      
      This patch does not add any users; the <encryption> tag is added in
      the following patches to both volumes (to support encrypted volume
      creation) and domains.
      
      * docs/*.html: Re-generate
      * docs/formatstorageencryption.html.in, docs/sitemap.html.in:
        Add page describing storage encryption data format
      * docs/schemas/Makefile.am, docs/schemas/storageencryption.rng:
        Add RNG schema for storage encryption format
      * po/POTFILES.in: Add src/storage_encryption_conf.c
      * src/libvirt_private.syms: Export virStorageEncryption* functions
      * src/storage_encryption_conf.h, src/storage_encryption_conf.c: Internal
        helper APIs for dealing with storage encryption format
      * libvirt.spec.in, mingw32-libvirt.spec.in: Add storageencryption.rng
        RNG schema
      05b9b8fd