00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _WBCLIENT_H
00023 #define _WBCLIENT_H
00024
00025 #include <pwd.h>
00026
00027
00028
00029
00030
00031
00032
00033 enum _wbcErrType {
00034 WBC_ERR_SUCCESS = 0,
00035 WBC_ERR_UNKNOWN_FAILURE,
00036 WBC_ERR_NO_MEMORY,
00037 WBC_ERR_INVALID_SID,
00038 WBC_ERR_INVALID_PARAM,
00039 WBC_ERR_WINBIND_NOT_AVAILABLE,
00040 WBC_ERR_DOMAIN_NOT_FOUND,
00041 WCB_INVALID_RESPONSE,
00042 };
00043
00044 typedef enum _wbcErrType wbcErr;
00045
00046 char *wbcErrorString(wbcErr error);
00047
00048
00049
00050
00051
00052 #ifndef MAXSUBAUTHS
00053 #define MAXSUBAUTHS 15
00054 #endif
00055
00056
00057
00058
00059
00060
00061 struct wbcDomainSid {
00062 uint8_t sid_rev_num;
00063 uint8_t num_auths;
00064 uint8_t id_auth[6];
00065 uint32_t sub_auths[MAXSUBAUTHS];
00066 };
00067
00068
00069
00070
00071
00072 enum wbcSidType {
00073 WBC_SID_NAME_USE_NONE=0,
00074 WBC_SID_NAME_USER=1,
00075 WBC_SID_NAME_DOM_GRP=2,
00076 WBC_SID_NAME_DOMAIN=3,
00077 WBC_SID_NAME_ALIAS=4,
00078 WBC_SID_NAME_WKN_GRP=5,
00079 WBC_SID_NAME_DELETED=6,
00080 WBC_SID_NAME_INVALID=7,
00081 WBC_SID_NAME_UNKNOWN=8,
00082 WBC_SID_NAME_COMPUTER=9
00083 };
00084
00085
00086
00087
00088
00089 struct wbcDomainInfo {
00090 char *short_name;
00091 char *dns_name;
00092 struct wbcDomainSid sid;
00093 uint32_t flags;
00094 uint32_t seqnum;
00095 };
00096
00097
00098
00099 #define WBC_DOMINFO_NATIVE 0x00000001
00100 #define WBC_DOMINFO_AD 0x00000002
00101 #define WBC_DOMINFO_PRIMARY 0x00000004
00102
00103
00104
00105
00106
00107 wbcErr wbcSidToString(const struct wbcDomainSid *sid,
00108 char **sid_string);
00109
00110 wbcErr wbcStringToSid(const char *sid_string,
00111 struct wbcDomainSid *sid);
00112
00113 wbcErr wbcPing(void);
00114
00115
00116
00117
00118
00119 wbcErr wbcLookupName(const char *dom_name,
00120 const char *name,
00121 struct wbcDomainSid *sid,
00122 enum wbcSidType *name_type);
00123
00124 wbcErr wbcLookupSid(const struct wbcDomainSid *sid,
00125 char **domain,
00126 char **name,
00127 enum wbcSidType *name_type);
00128
00129 wbcErr wbcLookupRids(struct wbcDomainSid *dom_sid,
00130 int num_rids,
00131 uint32_t *rids,
00132 const char **domain_name,
00133 const char ***names,
00134 enum wbcSidType **types);
00135
00136
00137
00138
00139
00140 wbcErr wbcSidToUid(const struct wbcDomainSid *sid,
00141 uid_t *puid);
00142
00143 wbcErr wbcUidToSid(uid_t uid,
00144 struct wbcDomainSid *sid);
00145
00146 wbcErr wbcSidToGid(const struct wbcDomainSid *sid,
00147 gid_t *pgid);
00148
00149 wbcErr wbcGidToSid(gid_t gid,
00150 struct wbcDomainSid *sid);
00151
00152 wbcErr wbcAllocateUid(uid_t *puid);
00153
00154 wbcErr wbcAllocateGid(uid_t *pgid);
00155
00156
00157
00158
00159
00160
00161
00162 wbcErr wbcDomainInfo(const char *domain,
00163 struct wbcDomainInfo *info);
00164
00165 wbcErr wbcDomainSequenceNumbers(void);
00166
00167
00168 #endif