This patch adds macros to help retrieve configuration values from qemu driver's configuration. Some configuration options are grouped together in the process. --- src/qemu/qemu_conf.c | 303 +++++++++++++-------------------------------------- 1 file changed, 73 insertions(+), 230 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index b7f249d..84859bf 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -153,50 +153,30 @@ int qemuLoadDriverConfig(virQEMUDriverPtr driver, return -1; \ } - p = virConfGetValue(conf, "vnc_auto_unix_socket"); - CHECK_TYPE("vnc_auto_unix_socket", VIR_CONF_LONG); - if (p) driver->vncAutoUnixSocket = p->l; - - p = virConfGetValue(conf, "vnc_tls"); - CHECK_TYPE("vnc_tls", VIR_CONF_LONG); - if (p) driver->vncTLS = p->l; - - p = virConfGetValue(conf, "vnc_tls_x509_verify"); - CHECK_TYPE("vnc_tls_x509_verify", VIR_CONF_LONG); - if (p) driver->vncTLSx509verify = p->l; - - p = virConfGetValue(conf, "vnc_tls_x509_cert_dir"); - CHECK_TYPE("vnc_tls_x509_cert_dir", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->vncTLSx509certdir); - if (!(driver->vncTLSx509certdir = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } - - p = virConfGetValue(conf, "vnc_listen"); - CHECK_TYPE("vnc_listen", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->vncListen); - if (!(driver->vncListen = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } - - p = virConfGetValue(conf, "vnc_password"); - CHECK_TYPE("vnc_password", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->vncPassword); - if (!(driver->vncPassword = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } +#define GET_VALUE_LONG(NAME, VAR) p = virConfGetValue(conf, NAME); \ + CHECK_TYPE(NAME, VIR_CONF_LONG); \ + if (p) VAR = p->l; + +#define GET_VALUE_STR(NAME, VAR) p = virConfGetValue(conf, NAME); \ + CHECK_TYPE(NAME, VIR_CONF_STRING); \ + if (p && p->str) { \ + VIR_FREE(VAR); \ + if (!(VAR = strdup(p->str))) { \ + virReportOOMError(); \ + virConfFree(conf); \ + return -1; \ + } \ + } + + GET_VALUE_LONG("vnc_auto_unix_socket", driver->vncAutoUnixSocket); + GET_VALUE_LONG("vnc_tls", driver->vncTLS); + GET_VALUE_LONG("vnc_tls_x509_verify", driver->vncTLSx509verify); + GET_VALUE_STR("vnc_tls_x509_cert_dir", driver->vncTLSx509certdir); + GET_VALUE_STR("vnc_listen", driver->vncListen); + GET_VALUE_STR("vnc_password", driver->vncPassword); + GET_VALUE_LONG("vnc_sasl", driver->vncSASL); + GET_VALUE_STR("vnc_sasl_dir", driver->vncSASLdir); + GET_VALUE_LONG("vnc_allow_host_audio", driver->vncAllowHostAudio); p = virConfGetValue(conf, "security_driver"); if (p && p->type == VIR_CONF_LIST) { @@ -240,104 +220,47 @@ int qemuLoadDriverConfig(virQEMUDriverPtr driver, } } - p = virConfGetValue(conf, "security_default_confined"); - CHECK_TYPE("security_default_confined", VIR_CONF_LONG); - if (p) driver->securityDefaultConfined = p->l; - - p = virConfGetValue(conf, "security_require_confined"); - CHECK_TYPE("security_require_confined", VIR_CONF_LONG); - if (p) driver->securityRequireConfined = p->l; - - - p = virConfGetValue(conf, "vnc_sasl"); - CHECK_TYPE("vnc_sasl", VIR_CONF_LONG); - if (p) driver->vncSASL = p->l; - - p = virConfGetValue(conf, "vnc_sasl_dir"); - CHECK_TYPE("vnc_sasl_dir", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->vncSASLdir); - if (!(driver->vncSASLdir = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } - - p = virConfGetValue(conf, "spice_tls"); - CHECK_TYPE("spice_tls", VIR_CONF_LONG); - if (p) driver->spiceTLS = p->l; + GET_VALUE_LONG("security_default_confined", driver->securityDefaultConfined); + GET_VALUE_LONG("security_require_confined", driver->securityRequireConfined); - p = virConfGetValue(conf, "spice_tls_x509_cert_dir"); - CHECK_TYPE("spice_tls_x509_cert_dir", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->spiceTLSx509certdir); - if (!(driver->spiceTLSx509certdir = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } + GET_VALUE_LONG("spice_tls", driver->spiceTLS); + GET_VALUE_STR("spice_tls_x509_cert_dir", driver->spiceTLSx509certdir); + GET_VALUE_STR("spice_listen", driver->spiceListen); + GET_VALUE_STR("spice_password", driver->spicePassword); - p = virConfGetValue(conf, "spice_listen"); - CHECK_TYPE("spice_listen", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->spiceListen); - if (!(driver->spiceListen = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } - p = virConfGetValue(conf, "spice_password"); - CHECK_TYPE("spice_password", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->spicePassword); - if (!(driver->spicePassword = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } - - p = virConfGetValue(conf, "remote_display_port_min"); - CHECK_TYPE("remote_display_port_min", VIR_CONF_LONG); - if (p) { - if (p->l < QEMU_REMOTE_PORT_MIN) { - /* if the port is too low, we can't get the display name - * to tell to vnc (usually subtract 5900, e.g. localhost:1 - * for port 5901) */ - virReportError(VIR_ERR_INTERNAL_ERROR, - _("%s: remote_display_port_min: port must be greater than or equal to %d"), - filename, QEMU_REMOTE_PORT_MIN); - virConfFree(conf); - return -1; - } - driver->remotePortMin = p->l; + GET_VALUE_LONG("remote_display_port_min", driver->remotePortMin); + if (driver->remotePortMin < QEMU_REMOTE_PORT_MIN) { + /* if the port is too low, we can't get the display name + * to tell to vnc (usually subtract 5900, e.g. localhost:1 + * for port 5901) */ + virReportError(VIR_ERR_INTERNAL_ERROR, + _("%s: remote_display_port_min: port must be greater " + "than or equal to %d"), + filename, QEMU_REMOTE_PORT_MIN); + virConfFree(conf); + return -1; } - p = virConfGetValue(conf, "remote_display_port_max"); - CHECK_TYPE("remote_display_port_max", VIR_CONF_LONG); - if (p) { - if (p->l > QEMU_REMOTE_PORT_MAX || - p->l < driver->remotePortMin) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("%s: remote_display_port_max: port must be between the minimal port and %d"), - filename, QEMU_REMOTE_PORT_MAX); - virConfFree(conf); - return -1; - } - /* increasing the value by 1 makes all the loops going through - the bitmap (i = remotePortMin; i < remotePortMax; i++), work as - expected. */ - driver->remotePortMax = p->l + 1; + GET_VALUE_LONG("remote_display_port_max", driver->remotePortMax); + if (driver->remotePortMax > QEMU_REMOTE_PORT_MAX || + driver->remotePortMax < driver->remotePortMin) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("%s: remote_display_port_max: port must be between " + "the minimal port and %d"), + filename, QEMU_REMOTE_PORT_MAX); + virConfFree(conf); + return -1; } + /* increasing the value by 1 makes all the loops going through + the bitmap (i = remotePortMin; i < remotePortMax; i++), work as + expected. */ + driver->remotePortMax += 1; if (driver->remotePortMin > driver->remotePortMax) { virReportError(VIR_ERR_INTERNAL_ERROR, - _("%s: remote_display_port_min: min port must not be greater than max port"), - filename); + _("%s: remote_display_port_min: min port must not be " + "greater than max port"), filename); virConfFree(conf); return -1; } @@ -371,11 +294,7 @@ int qemuLoadDriverConfig(virQEMUDriverPtr driver, } VIR_FREE(group); - - p = virConfGetValue(conf, "dynamic_ownership"); - CHECK_TYPE("dynamic_ownership", VIR_CONF_LONG); - if (p) driver->dynamicOwnership = p->l; - + GET_VALUE_LONG("dynamic_ownership", driver->dynamicOwnership); p = virConfGetValue(conf, "cgroup_controllers"); CHECK_TYPE("cgroup_controllers", VIR_CONF_LIST); @@ -441,57 +360,13 @@ int qemuLoadDriverConfig(virQEMUDriverPtr driver, driver->cgroupDeviceACL[i] = NULL; } - p = virConfGetValue(conf, "save_image_format"); - CHECK_TYPE("save_image_format", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->saveImageFormat); - if (!(driver->saveImageFormat = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } - - p = virConfGetValue(conf, "dump_image_format"); - CHECK_TYPE("dump_image_format", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->dumpImageFormat); - if (!(driver->dumpImageFormat = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } - - p = virConfGetValue(conf, "auto_dump_path"); - CHECK_TYPE("auto_dump_path", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->autoDumpPath); - if (!(driver->autoDumpPath = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } - - p = virConfGetValue(conf, "auto_dump_bypass_cache"); - CHECK_TYPE("auto_dump_bypass_cache", VIR_CONF_LONG); - if (p) driver->autoDumpBypassCache = true; + GET_VALUE_STR("save_image_format", driver->saveImageFormat); + GET_VALUE_STR("dump_image_format", driver->dumpImageFormat); + GET_VALUE_STR("auto_dump_path", driver->autoDumpPath); + GET_VALUE_LONG("auto_dump_bypass_cache", driver->autoDumpBypassCache); + GET_VALUE_LONG("auto_start_bypass_cache", driver->autoStartBypassCache); - p = virConfGetValue(conf, "auto_start_bypass_cache"); - CHECK_TYPE("auto_start_bypass_cache", VIR_CONF_LONG); - if (p) driver->autoStartBypassCache = true; - - p = virConfGetValue(conf, "hugetlbfs_mount"); - CHECK_TYPE("hugetlbfs_mount", VIR_CONF_STRING); - if (p && p->str) { - VIR_FREE(driver->hugetlbfs_mount); - if (!(driver->hugetlbfs_mount = strdup(p->str))) { - virReportOOMError(); - virConfFree(conf); - return -1; - } - } + GET_VALUE_STR("hugetlbfs_mount", driver->hugetlbfs_mount); p = virConfGetValue(conf, "mac_filter"); CHECK_TYPE("mac_filter", VIR_CONF_LONG); @@ -515,33 +390,12 @@ int qemuLoadDriverConfig(virQEMUDriverPtr driver, } } - p = virConfGetValue(conf, "relaxed_acs_check"); - CHECK_TYPE("relaxed_acs_check", VIR_CONF_LONG); - if (p) driver->relaxedACS = p->l; - - p = virConfGetValue(conf, "vnc_allow_host_audio"); - CHECK_TYPE("vnc_allow_host_audio", VIR_CONF_LONG); - if (p) driver->vncAllowHostAudio = p->l; - - p = virConfGetValue(conf, "clear_emulator_capabilities"); - CHECK_TYPE("clear_emulator_capabilities", VIR_CONF_LONG); - if (p) driver->clearEmulatorCapabilities = p->l; - - p = virConfGetValue(conf, "allow_disk_format_probing"); - CHECK_TYPE("allow_disk_format_probing", VIR_CONF_LONG); - if (p) driver->allowDiskFormatProbing = p->l; - - p = virConfGetValue(conf, "set_process_name"); - CHECK_TYPE("set_process_name", VIR_CONF_LONG); - if (p) driver->setProcessName = p->l; - - p = virConfGetValue(conf, "max_processes"); - CHECK_TYPE("max_processes", VIR_CONF_LONG); - if (p) driver->maxProcesses = p->l; - - p = virConfGetValue(conf, "max_files"); - CHECK_TYPE("max_files", VIR_CONF_LONG); - if (p) driver->maxFiles = p->l; + GET_VALUE_LONG("relaxed_acs_check", driver->relaxedACS); + GET_VALUE_LONG("clear_emulator_capabilities", driver->clearEmulatorCapabilities); + GET_VALUE_LONG("allow_disk_format_probing", driver->allowDiskFormatProbing); + GET_VALUE_LONG("set_process_name", driver->setProcessName); + GET_VALUE_LONG("max_processes", driver->maxProcesses); + GET_VALUE_LONG("max_files", driver->maxFiles); p = virConfGetValue(conf, "lock_manager"); CHECK_TYPE("lock_manager", VIR_CONF_STRING); @@ -559,21 +413,10 @@ int qemuLoadDriverConfig(virQEMUDriverPtr driver, VIR_FREE(lockConf); } - p = virConfGetValue(conf, "max_queued"); - CHECK_TYPE("max_queued", VIR_CONF_LONG); - if (p) driver->max_queued = p->l; - - p = virConfGetValue(conf, "keepalive_interval"); - CHECK_TYPE("keepalive_interval", VIR_CONF_LONG); - if (p) driver->keepAliveInterval = p->l; - - p = virConfGetValue(conf, "keepalive_count"); - CHECK_TYPE("keepalive_count", VIR_CONF_LONG); - if (p) driver->keepAliveCount = p->l; - - p = virConfGetValue(conf, "seccomp_sandbox"); - CHECK_TYPE("seccomp_sandbox", VIR_CONF_LONG); - if (p) driver->seccompSandbox = p->l; + GET_VALUE_LONG("max_queued", driver->max_queued); + GET_VALUE_LONG("keepalive_interval", driver->keepAliveInterval); + GET_VALUE_LONG("keepalive_count", driver->keepAliveCount); + GET_VALUE_LONG("seccomp_sandbox", driver->seccompSandbox); virConfFree(conf); return 0; -- 1.8.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list