diff --git a/lib/hypervisor/hv_base.py b/lib/hypervisor/hv_base.py index 698eed0e063b2e4e53569a691c5d37e2626c459a..c8035f15deb9c6fa112c1f3479ee15653b92a13d 100644 --- a/lib/hypervisor/hv_base.py +++ b/lib/hypervisor/hv_base.py @@ -72,15 +72,19 @@ _CPU_MASK_CHECK = (_IsCpuMaskWellFormed, "CPU mask definition is not well-formed", None, None) +# Check for validity of port number +_NET_PORT_CHECK = (lambda x: 0 < x < 65535, "invalid port number", + None, None) + # nice wrappers for users REQ_FILE_CHECK = (True, ) + _FILE_CHECK OPT_FILE_CHECK = (False, ) + _FILE_CHECK REQ_DIR_CHECK = (True, ) + _DIR_CHECK OPT_DIR_CHECK = (False, ) + _DIR_CHECK -NET_PORT_CHECK = (True, lambda x: x > 0 and x < 65535, "invalid port number", - None, None) -OPT_CPU_MASK_CHECK = (False, ) + _CPU_MASK_CHECK +REQ_NET_PORT_CHECK = (True, ) + _NET_PORT_CHECK +OPT_NET_PORT_CHECK = (False, ) + _NET_PORT_CHECK REQ_CPU_MASK_CHECK = (True, ) + _CPU_MASK_CHECK +OPT_CPU_MASK_CHECK = (False, ) + _CPU_MASK_CHECK # no checks at all NO_CHECK = (False, None, None, None, None) diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py index 1b95d6d5baa208ca12779f38787b6971ecabc351..8373b40092c94a0face12ffcc5e4980751615c58 100644 --- a/lib/hypervisor/hv_kvm.py +++ b/lib/hypervisor/hv_kvm.py @@ -179,7 +179,7 @@ class KVMHypervisor(hv_base.BaseHypervisor): constants.HV_USB_MOUSE: hv_base.ParamInSet(False, constants.HT_KVM_VALID_MOUSE_TYPES), constants.HV_KEYMAP: hv_base.NO_CHECK, - constants.HV_MIGRATION_PORT: hv_base.NET_PORT_CHECK, + constants.HV_MIGRATION_PORT: hv_base.REQ_NET_PORT_CHECK, constants.HV_MIGRATION_BANDWIDTH: hv_base.NO_CHECK, constants.HV_MIGRATION_DOWNTIME: hv_base.NO_CHECK, constants.HV_MIGRATION_MODE: hv_base.MIGRATION_MODE_CHECK, diff --git a/lib/hypervisor/hv_xen.py b/lib/hypervisor/hv_xen.py index 923c3910d475b50374bf150b08449618ab432a42..00445abca4ada8f40d1270f026a78addc194efa1 100644 --- a/lib/hypervisor/hv_xen.py +++ b/lib/hypervisor/hv_xen.py @@ -466,7 +466,7 @@ class XenPvmHypervisor(XenHypervisor): constants.HV_INITRD_PATH: hv_base.OPT_FILE_CHECK, constants.HV_ROOT_PATH: hv_base.NO_CHECK, constants.HV_KERNEL_ARGS: hv_base.NO_CHECK, - constants.HV_MIGRATION_PORT: hv_base.NET_PORT_CHECK, + constants.HV_MIGRATION_PORT: hv_base.REQ_NET_PORT_CHECK, constants.HV_MIGRATION_MODE: hv_base.MIGRATION_MODE_CHECK, # TODO: Add a check for the blockdev prefix (matching [a-z:] or similar). constants.HV_BLOCKDEV_PREFIX: hv_base.NO_CHECK, @@ -574,7 +574,7 @@ class XenHvmHypervisor(XenHypervisor): constants.HV_KERNEL_PATH: hv_base.REQ_FILE_CHECK, constants.HV_DEVICE_MODEL: hv_base.REQ_FILE_CHECK, constants.HV_VNC_PASSWORD_FILE: hv_base.REQ_FILE_CHECK, - constants.HV_MIGRATION_PORT: hv_base.NET_PORT_CHECK, + constants.HV_MIGRATION_PORT: hv_base.REQ_NET_PORT_CHECK, constants.HV_MIGRATION_MODE: hv_base.MIGRATION_MODE_CHECK, constants.HV_USE_LOCALTIME: hv_base.NO_CHECK, # TODO: Add a check for the blockdev prefix (matching [a-z:] or similar).