1 /* 2 * viridentity.h: helper APIs for managing user identities 3 * 4 * Copyright (C) 2012-2013 Red Hat, Inc. 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; If not, see 18 * <http://www.gnu.org/licenses/>. 19 * 20 */ 21 22 #pragma once 23 24 #include "internal.h" 25 #include <glib-object.h> 26 27 #define VIR_TYPE_IDENTITY vir_identity_get_type() 28 G_DECLARE_FINAL_TYPE(virIdentity, vir_identity, VIR, IDENTITY, GObject); 29 30 #define VIR_IDENTITY_AUTORESTORE __attribute__((cleanup(virIdentityRestoreHelper))) 31 32 virIdentity *virIdentityGetCurrent(void); 33 int virIdentitySetCurrent(virIdentity *ident); 34 virIdentity *virIdentityElevateCurrent(void); 35 36 void virIdentityRestoreHelper(virIdentity **identptr); 37 38 int virIdentityIsCurrentElevated(void); 39 virIdentity *virIdentityGetSystem(void); 40 41 virIdentity *virIdentityNew(void); 42 virIdentity *virIdentityNewCopy(virIdentity *src); 43 44 int virIdentityGetUserName(virIdentity *ident, 45 const char **username); 46 int virIdentityGetUNIXUserID(virIdentity *ident, 47 uid_t *uid); 48 int virIdentityGetGroupName(virIdentity *ident, 49 const char **groupname); 50 int virIdentityGetUNIXGroupID(virIdentity *ident, 51 gid_t *gid); 52 int virIdentityGetProcessID(virIdentity *ident, 53 pid_t *pid); 54 int virIdentityGetProcessTime(virIdentity *ident, 55 unsigned long long *timestamp); 56 int virIdentityGetSASLUserName(virIdentity *ident, 57 const char **username); 58 int virIdentityGetX509DName(virIdentity *ident, 59 const char **dname); 60 int virIdentityGetSELinuxContext(virIdentity *ident, 61 const char **context); 62 int virIdentityGetSystemToken(virIdentity *ident, 63 const char **token); 64 65 66 int virIdentitySetUserName(virIdentity *ident, 67 const char *username); 68 int virIdentitySetUNIXUserID(virIdentity *ident, 69 uid_t uid); 70 int virIdentitySetGroupName(virIdentity *ident, 71 const char *groupname); 72 int virIdentitySetUNIXGroupID(virIdentity *ident, 73 gid_t gid); 74 int virIdentitySetProcessID(virIdentity *ident, 75 pid_t pid); 76 int virIdentitySetProcessTime(virIdentity *ident, 77 unsigned long long timestamp); 78 int virIdentitySetSASLUserName(virIdentity *ident, 79 const char *username); 80 int virIdentitySetX509DName(virIdentity *ident, 81 const char *dname); 82 int virIdentitySetSELinuxContext(virIdentity *ident, 83 const char *context); 84 int virIdentitySetSystemToken(virIdentity *ident, 85 const char *token); 86 87 int virIdentitySetParameters(virIdentity *ident, 88 virTypedParameterPtr params, 89 int nparams); 90 91 int virIdentityGetParameters(virIdentity *ident, 92 virTypedParameterPtr *params, 93 int *nparams); 94