]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: allow identity to be imported/exported as typed parameters
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 26 Jul 2019 15:36:29 +0000 (16:36 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Mon, 16 Sep 2019 10:25:45 +0000 (11:25 +0100)
Add ability to import/export all the parameters associated with an
identity, so that they can be exposed via the public API.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
src/libvirt_private.syms
src/util/viridentity.c
src/util/viridentity.h

index b12a51b769b2465cd04c495225f60ccb8deacc2d..4865edaf593ae9267bbd861872a5c538a90f3656 100644 (file)
@@ -2144,6 +2144,7 @@ virHostGetBootTime;
 # util/viridentity.h
 virIdentityGetCurrent;
 virIdentityGetGroupName;
+virIdentityGetParameters;
 virIdentityGetProcessID;
 virIdentityGetProcessTime;
 virIdentityGetSASLUserName;
@@ -2156,6 +2157,7 @@ virIdentityGetX509DName;
 virIdentityNew;
 virIdentitySetCurrent;
 virIdentitySetGroupName;
+virIdentitySetParameters;
 virIdentitySetProcessID;
 virIdentitySetProcessTime;
 virIdentitySetSASLUserName;
index 30621ca2a458427bde263800384fccf33f44302b..22e2644c191d30256100b24e03529b680196b25c 100644 (file)
@@ -36,6 +36,7 @@
 #include "virutil.h"
 #include "virstring.h"
 #include "virprocess.h"
+#include "virtypedparam.h"
 
 #define VIR_FROM_THIS VIR_FROM_IDENTITY
 
@@ -545,3 +546,58 @@ int virIdentitySetSELinuxContext(virIdentityPtr ident,
                                    VIR_CONNECT_IDENTITY_SELINUX_CONTEXT,
                                    context);
 }
+
+
+int virIdentitySetParameters(virIdentityPtr ident,
+                             virTypedParameterPtr params,
+                             int nparams)
+{
+    if (virTypedParamsValidate(params, nparams,
+                               VIR_CONNECT_IDENTITY_USER_NAME,
+                               VIR_TYPED_PARAM_STRING,
+                               VIR_CONNECT_IDENTITY_UNIX_USER_ID,
+                               VIR_TYPED_PARAM_ULLONG,
+                               VIR_CONNECT_IDENTITY_GROUP_NAME,
+                               VIR_TYPED_PARAM_STRING,
+                               VIR_CONNECT_IDENTITY_UNIX_GROUP_ID,
+                               VIR_TYPED_PARAM_ULLONG,
+                               VIR_CONNECT_IDENTITY_PROCESS_ID,
+                               VIR_TYPED_PARAM_LLONG,
+                               VIR_CONNECT_IDENTITY_PROCESS_TIME,
+                               VIR_TYPED_PARAM_ULLONG,
+                               VIR_CONNECT_IDENTITY_SASL_USER_NAME,
+                               VIR_TYPED_PARAM_STRING,
+                               VIR_CONNECT_IDENTITY_X509_DISTINGUISHED_NAME,
+                               VIR_TYPED_PARAM_STRING,
+                               VIR_CONNECT_IDENTITY_SELINUX_CONTEXT,
+                               VIR_TYPED_PARAM_STRING,
+                               NULL) < 0)
+        return -1;
+
+    virTypedParamsFree(ident->params, ident->nparams);
+    ident->params = NULL;
+    ident->nparams = 0;
+    ident->maxparams = 0;
+    if (virTypedParamsCopy(&ident->params, params, nparams) < 0)
+        return -1;
+    ident->nparams = nparams;
+    ident->maxparams = nparams;
+
+    return 0;
+}
+
+
+int virIdentityGetParameters(virIdentityPtr ident,
+                             virTypedParameterPtr *params,
+                             int *nparams)
+{
+    *params = NULL;
+    *nparams = 0;
+
+    if (virTypedParamsCopy(params, ident->params, ident->nparams) < 0)
+        return -1;
+
+    *nparams = ident->nparams;
+
+    return 0;
+}
index 805ad3ea4dc171dde2812b38d13716ffa930abdf..861ecca7365235b938fb9aed031a9205b95299e1 100644 (file)
@@ -71,3 +71,11 @@ int virIdentitySetX509DName(virIdentityPtr ident,
                             const char *dname);
 int virIdentitySetSELinuxContext(virIdentityPtr ident,
                                  const char *context);
+
+int virIdentitySetParameters(virIdentityPtr ident,
+                             virTypedParameterPtr params,
+                             int nparams);
+
+int virIdentityGetParameters(virIdentityPtr ident,
+                             virTypedParameterPtr *params,
+                             int *nparams);