-
- Downloads
Refactor the security drivers to simplify usage
The current security driver usage requires horrible code like if (driver->securityDriver && driver->securityDriver->domainSetSecurityHostdevLabel && driver->securityDriver->domainSetSecurityHostdevLabel(driver->securityDriver, vm, hostdev) < 0) This pair of checks for NULL clutters up the code, making the driver calls 2 lines longer than they really need to be. The goal of the patchset is to change the calling convention to simply if (virSecurityManagerSetHostdevLabel(driver->securityDriver, vm, hostdev) < 0) The first check for 'driver->securityDriver' being NULL is removed by introducing a 'no op' security driver that will always be present if no real driver is enabled. This guarentees driver->securityDriver != NULL. The second check for 'driver->securityDriver->domainSetSecurityHostdevLabel' being non-NULL is hidden in a new abstraction called virSecurityManager. This separates the driver callbacks, from main internal API. The addition of a virSecurityManager object, that is separate from the virSecurityDriver struct also allows for security drivers to carry state / configuration information directly. Thus the DAC/Stack drivers from src/qemu which used to pull config from 'struct qemud_driver' can now be moved into the 'src/security' directory and store their config directly. * src/qemu/qemu_conf.h, src/qemu/qemu_driver.c: Update to use new virSecurityManager APIs * src/qemu/qemu_security_dac.c, src/qemu/qemu_security_dac.h src/qemu/qemu_security_stacked.c, src/qemu/qemu_security_stacked.h: Move into src/security directory * src/security/security_stack.c, src/security/security_stack.h, src/security/security_dac.c, src/security/security_dac.h: Generic versions of previous QEMU specific drivers * src/security/security_apparmor.c, src/security/security_apparmor.h, src/security/security_driver.c, src/security/security_driver.h, src/security/security_selinux.c, src/security/security_selinux.h: Update to take virSecurityManagerPtr object as the first param in all callbacks * src/security/security_nop.c, src/security/security_nop.h: Stub implementation of all security driver APIs. * src/security/security_manager.h, src/security/security_manager.c: New internal API for invoking security drivers * src/libvirt.c: Add missing debug for security APIs
Showing
- po/POTFILES.in 1 addition, 1 deletionpo/POTFILES.in
- src/Makefile.am 6 additions, 6 deletionssrc/Makefile.am
- src/libvirt.c 4 additions, 0 deletionssrc/libvirt.c
- src/libvirt_private.syms 27 additions, 7 deletionssrc/libvirt_private.syms
- src/qemu/qemu_conf.h 2 additions, 4 deletionssrc/qemu/qemu_conf.h
- src/qemu/qemu_driver.c 65 additions, 102 deletionssrc/qemu/qemu_driver.c
- src/qemu/qemu_hotplug.c 28 additions, 56 deletionssrc/qemu/qemu_hotplug.c
- src/qemu/qemu_security_dac.h 0 additions, 22 deletionssrc/qemu/qemu_security_dac.h
- src/qemu/qemu_security_stacked.c 0 additions, 418 deletionssrc/qemu/qemu_security_stacked.c
- src/qemu/qemu_security_stacked.h 0 additions, 22 deletionssrc/qemu/qemu_security_stacked.h
- src/security/security_apparmor.c 98 additions, 54 deletionssrc/security/security_apparmor.c
- src/security/security_apparmor.h 2 additions, 0 deletionssrc/security/security_apparmor.h
- src/security/security_dac.c 713 additions, 0 deletionssrc/security/security_dac.c
- src/security/security_dac.h 36 additions, 0 deletionssrc/security/security_dac.h
- src/security/security_driver.c 21 additions, 83 deletionssrc/security/security_driver.c
- src/security/security_driver.h 42 additions, 53 deletionssrc/security/security_driver.h
- src/security/security_manager.c 317 additions, 0 deletionssrc/security/security_manager.c
- src/security/security_manager.h 95 additions, 0 deletionssrc/security/security_manager.h
- src/security/security_nop.c 185 additions, 0 deletionssrc/security/security_nop.c
- src/security/security_nop.h 27 additions, 0 deletionssrc/security/security_nop.h
Loading
Please register or sign in to comment