1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

qemu.conf: fill out TLS verify attributes after parsing

Introduce a set of bool variables with the 'present' suffix
to track whether the value was actually specified.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
Ján Tomko 2019-01-14 22:51:00 +01:00
parent 10ee1270ff
commit 5ce02870c4
3 changed files with 35 additions and 4 deletions

View File

@ -535,8 +535,8 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
goto cleanup; goto cleanup;
if ((rv = virConfGetValueBool(conf, "vnc_tls_x509_verify", &cfg->vncTLSx509verify)) < 0) if ((rv = virConfGetValueBool(conf, "vnc_tls_x509_verify", &cfg->vncTLSx509verify)) < 0)
goto cleanup; goto cleanup;
if (rv == 0) if (rv == 1)
cfg->vncTLSx509verify = cfg->defaultTLSx509verify; cfg->vncTLSx509verifyPresent = true;
if (virConfGetValueString(conf, "vnc_tls_x509_cert_dir", &cfg->vncTLSx509certdir) < 0) if (virConfGetValueString(conf, "vnc_tls_x509_cert_dir", &cfg->vncTLSx509certdir) < 0)
goto cleanup; goto cleanup;
if (virConfGetValueString(conf, "vnc_listen", &cfg->vncListen) < 0) if (virConfGetValueString(conf, "vnc_listen", &cfg->vncListen) < 0)
@ -601,8 +601,8 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
if ((rv = virConfGetValueBool(conf, #val "_tls_x509_verify", \ if ((rv = virConfGetValueBool(conf, #val "_tls_x509_verify", \
&cfg->val## TLSx509verify)) < 0) \ &cfg->val## TLSx509verify)) < 0) \
goto cleanup; \ goto cleanup; \
if (rv == 0) \ if (rv == 1) \
cfg->val## TLSx509verify = cfg->defaultTLSx509verify; \ cfg->val## TLSx509verifyPresent = true; \
if ((rv = virConfGetValueString(conf, #val "_tls_x509_cert_dir", \ if ((rv = virConfGetValueString(conf, #val "_tls_x509_cert_dir", \
&cfg->val## TLSx509certdir)) < 0) \ &cfg->val## TLSx509certdir)) < 0) \
goto cleanup; \ goto cleanup; \
@ -1056,6 +1056,28 @@ virQEMUDriverConfigValidate(virQEMUDriverConfigPtr cfg)
} }
int
virQEMUDriverConfigSetDefaults(virQEMUDriverConfigPtr cfg)
{
int ret = -1;
#define SET_TLS_VERIFY_DEFAULT(val) \
do { \
if (!cfg->val## TLSx509verifyPresent) \
cfg->val## TLSx509verify = cfg->defaultTLSx509verify; \
} while (0)
SET_TLS_VERIFY_DEFAULT(vnc);
SET_TLS_VERIFY_DEFAULT(chardev);
SET_TLS_VERIFY_DEFAULT(migrate);
#undef SET_TLS_VERIFY_DEFAULT
ret = 0;
return ret;
}
virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMUDriverPtr driver) virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMUDriverPtr driver)
{ {
virQEMUDriverConfigPtr conf; virQEMUDriverConfigPtr conf;

View File

@ -122,6 +122,7 @@ struct _virQEMUDriverConfig {
bool vncAutoUnixSocket; bool vncAutoUnixSocket;
bool vncTLS; bool vncTLS;
bool vncTLSx509verify; bool vncTLSx509verify;
bool vncTLSx509verifyPresent;
bool vncSASL; bool vncSASL;
char *vncTLSx509certdir; char *vncTLSx509certdir;
char *vncListen; char *vncListen;
@ -139,10 +140,12 @@ struct _virQEMUDriverConfig {
bool chardevTLS; bool chardevTLS;
char *chardevTLSx509certdir; char *chardevTLSx509certdir;
bool chardevTLSx509verify; bool chardevTLSx509verify;
bool chardevTLSx509verifyPresent;
char *chardevTLSx509secretUUID; char *chardevTLSx509secretUUID;
char *migrateTLSx509certdir; char *migrateTLSx509certdir;
bool migrateTLSx509verify; bool migrateTLSx509verify;
bool migrateTLSx509verifyPresent;
char *migrateTLSx509secretUUID; char *migrateTLSx509secretUUID;
unsigned int remotePortMin; unsigned int remotePortMin;
@ -317,6 +320,9 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
int int
virQEMUDriverConfigValidate(virQEMUDriverConfigPtr cfg); virQEMUDriverConfigValidate(virQEMUDriverConfigPtr cfg);
int
virQEMUDriverConfigSetDefaults(virQEMUDriverConfigPtr cfg);
virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMUDriverPtr driver); virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMUDriverPtr driver);
bool virQEMUDriverIsPrivileged(virQEMUDriverPtr driver); bool virQEMUDriverIsPrivileged(virQEMUDriverPtr driver);

View File

@ -628,6 +628,9 @@ qemuStateInitialize(bool privileged,
if (virQEMUDriverConfigValidate(cfg) < 0) if (virQEMUDriverConfigValidate(cfg) < 0)
goto error; goto error;
if (virQEMUDriverConfigSetDefaults(cfg) < 0)
goto error;
if (virFileMakePath(cfg->stateDir) < 0) { if (virFileMakePath(cfg->stateDir) < 0) {
virReportSystemError(errno, _("Failed to create state dir %s"), virReportSystemError(errno, _("Failed to create state dir %s"),
cfg->stateDir); cfg->stateDir);