Enable libvirt users to modify daemon's logging output settings from outside.
If either an empty string or NULL is passed, a default logging output will be
used the same way as it would be in case writing an empty string to the
libvirtd.conf
Signed-off-by: Erik Skultety <eskultet@redhat.com>
return ret;
}
+static int
+adminConnectSetLoggingOutputs(virNetDaemonPtr dmn ATTRIBUTE_UNUSED,
+ const char *outputs,
+ unsigned int flags)
+{
+ virCheckFlags(0, -1);
+
+ return virLogSetOutputs(outputs);
+}
+
static int
adminDispatchConnectGetLoggingOutputs(virNetServerPtr server ATTRIBUTE_UNUSED,
virNetServerClientPtr client ATTRIBUTE_UNUSED,
char **filters,
unsigned int flags);
+int virAdmConnectSetLoggingOutputs(virAdmConnectPtr conn,
+ const char *outputs,
+ unsigned int flags);
+
# ifdef __cplusplus
}
# endif
unsigned int nfilters;
};
+struct admin_connect_set_logging_outputs_args {
+ admin_string outputs;
+ unsigned int flags;
+};
+
/* Define the program number, protocol version and procedure numbers here. */
const ADMIN_PROGRAM = 0x06900690;
const ADMIN_PROTOCOL_VERSION = 1;
/**
* @generate: none
*/
- ADMIN_PROC_CONNECT_GET_LOGGING_FILTERS = 15
+ ADMIN_PROC_CONNECT_GET_LOGGING_FILTERS = 15,
+
+ /**
+ * @generate: both
+ */
+ ADMIN_PROC_CONNECT_SET_LOGGING_OUTPUTS = 16
};
admin_string filters;
u_int nfilters;
};
+struct admin_connect_set_logging_outputs_args {
+ admin_string outputs;
+ u_int flags;
+};
enum admin_procedure {
ADMIN_PROC_CONNECT_OPEN = 1,
ADMIN_PROC_CONNECT_CLOSE = 2,
ADMIN_PROC_SERVER_SET_CLIENT_LIMITS = 13,
ADMIN_PROC_CONNECT_GET_LOGGING_OUTPUTS = 14,
ADMIN_PROC_CONNECT_GET_LOGGING_FILTERS = 15,
+ ADMIN_PROC_CONNECT_SET_LOGGING_OUTPUTS = 16,
};
virDispatchError(NULL);
return -1;
}
+
+/**
+ * virAdmConnectSetLoggingOutputs:
+ * @conn: pointer to an active admin connection
+ * @outputs: pointer to a string containing a list of outputs to be defined
+ * @flags: extra flags; not used yet, so callers should always pass 0
+ *
+ * Redefine the existing (set of) outputs(s) with a new one specified in
+ * @outputs. If multiple outputs are specified, they need to be delimited by
+ * spaces. The format of each output must conform to the format described in
+ * daemon's configuration file (e.g. libvirtd.conf).
+ *
+ * To reset the existing (set of) output(s) to libvirt's defaults, an empty
+ * string ("") or NULL should be passed in @outputs.
+ *
+ * Returns 0 if the new output or the set of outputs has been defined
+ * successfully, or -1 in case of an error.
+ */
+int
+virAdmConnectSetLoggingOutputs(virAdmConnectPtr conn,
+ const char *outputs,
+ unsigned int flags)
+{
+ int ret = -1;
+
+ VIR_DEBUG("conn=%p, outputs=%s, flags=%x", conn, outputs, flags);
+
+ virResetLastError();
+ virCheckAdmConnectReturn(conn, -1);
+
+ if ((ret = remoteAdminConnectSetLoggingOutputs(conn, outputs, flags)) < 0)
+ goto error;
+
+ return ret;
+ error:
+ virDispatchError(NULL);
+ return -1;
+}
xdr_admin_connect_lookup_server_args;
xdr_admin_connect_lookup_server_ret;
xdr_admin_connect_open_args;
+xdr_admin_connect_set_logging_outputs_args;
xdr_admin_server_get_client_limits_args;
xdr_admin_server_get_client_limits_ret;
xdr_admin_server_get_threadpool_parameters_args;
global:
virAdmConnectGetLoggingOutputs;
virAdmConnectGetLoggingFilters;
+ virAdmConnectSetLoggingOutputs;
} LIBVIRT_ADMIN_2.0.0;