mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-28 11:31:16 +00:00
virtlockd: convert to typesafe virConf accessors
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
f5da0d1805
commit
2666b2905f
@ -82,7 +82,6 @@ src/libxl/libxl_domain.c
|
|||||||
src/libxl/libxl_driver.c
|
src/libxl/libxl_driver.c
|
||||||
src/libxl/libxl_migration.c
|
src/libxl/libxl_migration.c
|
||||||
src/locking/lock_daemon.c
|
src/locking/lock_daemon.c
|
||||||
src/locking/lock_daemon_config.c
|
|
||||||
src/locking/lock_daemon_dispatch.c
|
src/locking/lock_daemon_dispatch.c
|
||||||
src/locking/lock_driver_lockd.c
|
src/locking/lock_driver_lockd.c
|
||||||
src/locking/lock_driver_sanlock.c
|
src/locking/lock_driver_sanlock.c
|
||||||
|
@ -37,62 +37,6 @@
|
|||||||
|
|
||||||
VIR_LOG_INIT("locking.lock_daemon_config");
|
VIR_LOG_INIT("locking.lock_daemon_config");
|
||||||
|
|
||||||
|
|
||||||
/* A helper function used by each of the following macros. */
|
|
||||||
static int
|
|
||||||
checkType(virConfValuePtr p, const char *filename,
|
|
||||||
const char *key, virConfType required_type)
|
|
||||||
{
|
|
||||||
if (p->type != required_type) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
_("remoteReadConfigFile: %s: %s: invalid type:"
|
|
||||||
" got %s; expected %s"), filename, key,
|
|
||||||
virConfTypeToString(p->type),
|
|
||||||
virConfTypeToString(required_type));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If there is no config data for the key, #var_name, then do nothing.
|
|
||||||
If there is valid data of type VIR_CONF_STRING, and VIR_STRDUP succeeds,
|
|
||||||
store the result in var_name. Otherwise, (i.e. invalid type, or VIR_STRDUP
|
|
||||||
failure), give a diagnostic and "goto" the cleanup-and-fail label. */
|
|
||||||
#define GET_CONF_STR(conf, filename, var_name) \
|
|
||||||
do { \
|
|
||||||
virConfValuePtr p = virConfGetValue(conf, #var_name); \
|
|
||||||
if (p) { \
|
|
||||||
if (checkType(p, filename, #var_name, VIR_CONF_STRING) < 0) \
|
|
||||||
goto error; \
|
|
||||||
VIR_FREE(data->var_name); \
|
|
||||||
if (VIR_STRDUP(data->var_name, p->str) < 0) \
|
|
||||||
goto error; \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
/* Like GET_CONF_STR, but for signed integer values. */
|
|
||||||
#define GET_CONF_INT(conf, filename, var_name) \
|
|
||||||
do { \
|
|
||||||
virConfValuePtr p = virConfGetValue(conf, #var_name); \
|
|
||||||
if (p) { \
|
|
||||||
if (p->type != VIR_CONF_ULONG && \
|
|
||||||
checkType(p, filename, #var_name, VIR_CONF_LONG) < 0) \
|
|
||||||
goto error; \
|
|
||||||
data->var_name = p->l; \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
/* Like GET_CONF_STR, but for unsigned integer values. */
|
|
||||||
#define GET_CONF_UINT(conf, filename, var_name) \
|
|
||||||
do { \
|
|
||||||
virConfValuePtr p = virConfGetValue(conf, #var_name); \
|
|
||||||
if (p) { \
|
|
||||||
if (checkType(p, filename, #var_name, VIR_CONF_ULONG) < 0) \
|
|
||||||
goto error; \
|
|
||||||
data->var_name = p->l; \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
int
|
int
|
||||||
virLockDaemonConfigFilePath(bool privileged, char **configfile)
|
virLockDaemonConfigFilePath(bool privileged, char **configfile)
|
||||||
{
|
{
|
||||||
@ -146,18 +90,18 @@ virLockDaemonConfigFree(virLockDaemonConfigPtr data)
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
virLockDaemonConfigLoadOptions(virLockDaemonConfigPtr data,
|
virLockDaemonConfigLoadOptions(virLockDaemonConfigPtr data,
|
||||||
const char *filename,
|
|
||||||
virConfPtr conf)
|
virConfPtr conf)
|
||||||
{
|
{
|
||||||
GET_CONF_UINT(conf, filename, log_level);
|
if (virConfGetValueUInt(conf, "log_level", &data->log_level) < 0)
|
||||||
GET_CONF_STR(conf, filename, log_filters);
|
return -1;
|
||||||
GET_CONF_STR(conf, filename, log_outputs);
|
if (virConfGetValueString(conf, "log_filters", &data->log_filters) < 0)
|
||||||
GET_CONF_UINT(conf, filename, max_clients);
|
return -1;
|
||||||
|
if (virConfGetValueString(conf, "log_outputs", &data->log_filters) < 0)
|
||||||
|
return -1;
|
||||||
|
if (virConfGetValueUInt(conf, "max_clients", &data->max_clients) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -181,23 +125,7 @@ virLockDaemonConfigLoadFile(virLockDaemonConfigPtr data,
|
|||||||
if (!conf)
|
if (!conf)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
ret = virLockDaemonConfigLoadOptions(data, filename, conf);
|
ret = virLockDaemonConfigLoadOptions(data, conf);
|
||||||
virConfFree(conf);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int virLockDaemonConfigLoadData(virLockDaemonConfigPtr data,
|
|
||||||
const char *filename,
|
|
||||||
const char *filedata)
|
|
||||||
{
|
|
||||||
virConfPtr conf;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
conf = virConfReadMem(filedata, strlen(filedata), 0);
|
|
||||||
if (!conf)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
ret = virLockDaemonConfigLoadOptions(data, filename, conf);
|
|
||||||
virConfFree(conf);
|
virConfFree(conf);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -30,10 +30,10 @@ typedef struct _virLockDaemonConfig virLockDaemonConfig;
|
|||||||
typedef virLockDaemonConfig *virLockDaemonConfigPtr;
|
typedef virLockDaemonConfig *virLockDaemonConfigPtr;
|
||||||
|
|
||||||
struct _virLockDaemonConfig {
|
struct _virLockDaemonConfig {
|
||||||
int log_level;
|
unsigned int log_level;
|
||||||
char *log_filters;
|
char *log_filters;
|
||||||
char *log_outputs;
|
char *log_outputs;
|
||||||
int max_clients;
|
unsigned int max_clients;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -42,9 +42,6 @@ virLockDaemonConfigPtr virLockDaemonConfigNew(bool privileged);
|
|||||||
void virLockDaemonConfigFree(virLockDaemonConfigPtr data);
|
void virLockDaemonConfigFree(virLockDaemonConfigPtr data);
|
||||||
int virLockDaemonConfigLoadFile(virLockDaemonConfigPtr data,
|
int virLockDaemonConfigLoadFile(virLockDaemonConfigPtr data,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
bool allow_missing);
|
bool allow_missing);
|
||||||
int virLockDaemonConfigLoadData(virLockDaemonConfigPtr data,
|
|
||||||
const char *filename,
|
|
||||||
const char *filedata);
|
|
||||||
|
|
||||||
#endif /* __LIBVIRTD_CONFIG_H__ */
|
#endif /* __LIBVIRTD_CONFIG_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user