]> xenbits.xensource.com Git - libvirt.git/commitdiff
admin: Introduce virAdmConnectSetLoggingFilters
authorErik Skultety <eskultet@redhat.com>
Wed, 30 Mar 2016 13:14:54 +0000 (15:14 +0200)
committerErik Skultety <eskultet@redhat.com>
Thu, 15 Dec 2016 09:36:23 +0000 (10:36 +0100)
Enable libvirt users to modify logging filters of a daemon from outside.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
daemon/admin.c
include/libvirt/libvirt-admin.h
src/admin/admin_protocol.x
src/admin_protocol-structs
src/libvirt-admin.c
src/libvirt_admin_private.syms
src/libvirt_admin_public.syms

index 16a34538d14c5b1b0690fc436bb0bd2c9d9a7be0..c5678bb99529b88d40516e9bc8af369aa0b30de4 100644 (file)
@@ -425,6 +425,16 @@ adminConnectSetLoggingOutputs(virNetDaemonPtr dmn ATTRIBUTE_UNUSED,
     return virLogSetOutputs(outputs);
 }
 
+static int
+adminConnectSetLoggingFilters(virNetDaemonPtr dmn ATTRIBUTE_UNUSED,
+                              const char *filters,
+                              unsigned int flags)
+{
+    virCheckFlags(0, -1);
+
+    return virLogSetFilters(filters);
+}
+
 static int
 adminDispatchConnectGetLoggingOutputs(virNetServerPtr server ATTRIBUTE_UNUSED,
                                       virNetServerClientPtr client ATTRIBUTE_UNUSED,
index aa33fefc31750c9d40a7ebd3bdac078f69679218..161727ed8f23237ed3786b1f103450a16d5e5934 100644 (file)
@@ -416,6 +416,10 @@ int virAdmConnectSetLoggingOutputs(virAdmConnectPtr conn,
                                    const char *outputs,
                                    unsigned int flags);
 
+int virAdmConnectSetLoggingFilters(virAdmConnectPtr conn,
+                                   const char *filters,
+                                   unsigned int flags);
+
 # ifdef __cplusplus
 }
 # endif
index 1d2116d1a6f1c10e4b7e2e3affb1167610d0d360..d19d132b798179ad6b9c38ed60d27d74c508f4af 100644 (file)
@@ -206,6 +206,11 @@ struct admin_connect_set_logging_outputs_args {
     unsigned int flags;
 };
 
+struct admin_connect_set_logging_filters_args {
+    admin_string filters;
+    unsigned int flags;
+};
+
 /* Define the program number, protocol version and procedure numbers here. */
 const ADMIN_PROGRAM = 0x06900690;
 const ADMIN_PROTOCOL_VERSION = 1;
@@ -306,5 +311,10 @@ enum admin_procedure {
     /**
      * @generate: both
      */
-    ADMIN_PROC_CONNECT_SET_LOGGING_OUTPUTS = 16
+    ADMIN_PROC_CONNECT_SET_LOGGING_OUTPUTS = 16,
+
+    /**
+     * @generate: both
+     */
+    ADMIN_PROC_CONNECT_SET_LOGGING_FILTERS = 17
 };
index 04bbd7add6476ff9c256052504da211d0bda8258..a6c53807ee9893f79801d72c968a1a7b73007136 100644 (file)
@@ -145,6 +145,10 @@ struct admin_connect_set_logging_outputs_args {
         admin_string               outputs;
         u_int                      flags;
 };
+struct admin_connect_set_logging_filters_args {
+        admin_string               filters;
+        u_int                      flags;
+};
 enum admin_procedure {
         ADMIN_PROC_CONNECT_OPEN = 1,
         ADMIN_PROC_CONNECT_CLOSE = 2,
@@ -162,4 +166,5 @@ enum admin_procedure {
         ADMIN_PROC_CONNECT_GET_LOGGING_OUTPUTS = 14,
         ADMIN_PROC_CONNECT_GET_LOGGING_FILTERS = 15,
         ADMIN_PROC_CONNECT_SET_LOGGING_OUTPUTS = 16,
+        ADMIN_PROC_CONNECT_SET_LOGGING_FILTERS = 17,
 };
index 2bc8b2c0674c9cd9fb7099cfe1e160f49379dd79..67d9b6bebe103ee238de4e3e37c57bae7044b6eb 100644 (file)
@@ -1203,3 +1203,41 @@ virAdmConnectSetLoggingOutputs(virAdmConnectPtr conn,
     virDispatchError(NULL);
     return -1;
 }
+
+/**
+ * virAdmConnectSetLoggingFilters:
+ * @conn: pointer to an active admin connection
+ * @filters: pointer to a string containing a list of filters to be defined
+ * @flags: extra flags; not used yet, so callers should always pass 0
+ *
+ * Redefine the existing (set of) filter(s) with a new one specified in
+ * @filters. If multiple filters are specified, they need to be delimited by
+ * spaces. The format of each filter must conform to the format described in
+ * daemon's configuration file (e.g. libvirtd.conf).
+ *
+ * To clear the currently defined (set of) filter(s), pass either an empty
+ * string ("") or NULL in @filters.
+ *
+ * Returns 0 if the new filter or the set of filters has been defined
+ * successfully, or -1 in case of an error.
+ */
+int
+virAdmConnectSetLoggingFilters(virAdmConnectPtr conn,
+                               const char *filters,
+                               unsigned int flags)
+{
+    int ret = -1;
+
+    VIR_DEBUG("conn=%p, flags=%x", conn, flags);
+
+    virResetLastError();
+    virCheckAdmConnectReturn(conn, -1);
+
+    if ((ret = remoteAdminConnectSetLoggingFilters(conn, filters, flags)) < 0)
+        goto error;
+
+    return ret;
+ error:
+    virDispatchError(NULL);
+    return -1;
+}
index ad7fd1f3fcff4f265fa5a6b12488838331d7ec54..9526412de8b27cc715578c6bca3763eb97244c31 100644 (file)
@@ -19,6 +19,7 @@ xdr_admin_connect_list_servers_ret;
 xdr_admin_connect_lookup_server_args;
 xdr_admin_connect_lookup_server_ret;
 xdr_admin_connect_open_args;
+xdr_admin_connect_set_logging_filters_args;
 xdr_admin_connect_set_logging_outputs_args;
 xdr_admin_server_get_client_limits_args;
 xdr_admin_server_get_client_limits_ret;
index e6c853803de073dc61053f939a47228dc710d6bc..9a3f843780b7b78c6dd247920a70b966fdc99fcb 100644 (file)
@@ -45,4 +45,5 @@ LIBVIRT_ADMIN_3.0.0 {
         virAdmConnectGetLoggingOutputs;
         virAdmConnectGetLoggingFilters;
         virAdmConnectSetLoggingOutputs;
+        virAdmConnectSetLoggingFilters;
 } LIBVIRT_ADMIN_2.0.0;