1#include "idl_types.h" 2import "lsa.idl", "netlogon.idl"; 3 4[ 5 uuid("bf09192c-ed60-4928-9dff-d0d7bcb03ed8"), 6 endpoint("ncalrpc:"), 7 pointer_default(unique), 8 version(1.0), 9 helpstring("winbind parent-child protocol") 10] 11interface wbint 12{ 13 void wbint_Ping( 14 [in] uint32 in_data, 15 [out] uint32 *out_data 16 ); 17 18 NTSTATUS wbint_LookupSid( 19 [in] dom_sid *sid, 20 [out] lsa_SidType *type, 21 [out,string,charset(UTF8)] char **domain, 22 [out,string,charset(UTF8)] char **name 23 ); 24 25 NTSTATUS wbint_LookupName( 26 [in,string,charset(UTF8)] char *domain, 27 [in,string,charset(UTF8)] char *name, 28 [in] uint32 flags, 29 [out] lsa_SidType *type, 30 [out] dom_sid *sid 31 ); 32 33 NTSTATUS wbint_Sid2Uid( 34 [in,unique,string,charset(UTF8)] char *dom_name, 35 [in] dom_sid *sid, 36 [out] hyper *uid 37 ); 38 39 NTSTATUS wbint_Sid2Gid( 40 [in,unique,string,charset(UTF8)] char *dom_name, 41 [in] dom_sid *sid, 42 [out] hyper *gid 43 ); 44 45 NTSTATUS wbint_Uid2Sid( 46 [in,unique,string,charset(UTF8)] char *dom_name, 47 [in] hyper uid, 48 [out] dom_sid *sid 49 ); 50 51 NTSTATUS wbint_Gid2Sid( 52 [in,unique,string,charset(UTF8)] char *dom_name, 53 [in] hyper gid, 54 [out] dom_sid *sid 55 ); 56 57 NTSTATUS wbint_AllocateUid( 58 [out] hyper *uid 59 ); 60 61 NTSTATUS wbint_AllocateGid( 62 [out] hyper *gid 63 ); 64 65 typedef [public] struct { 66 [string,charset(UTF8)] char *acct_name; 67 [string,charset(UTF8)] char *full_name; 68 [string,charset(UTF8)] char *homedir; 69 [string,charset(UTF8)] char *shell; 70 hyper primary_gid; 71 dom_sid user_sid; 72 dom_sid group_sid; 73 } wbint_userinfo; 74 75 NTSTATUS wbint_QueryUser( 76 [in] dom_sid *sid, 77 [out] wbint_userinfo *info 78 ); 79 80 typedef [public] struct { 81 uint32 num_sids; 82 [size_is(num_sids)] dom_sid sids[]; 83 } wbint_SidArray; 84 85 typedef [public] struct { 86 uint32 num_rids; 87 [size_is(num_rids)] uint32 rids[]; 88 } wbint_RidArray; 89 90 NTSTATUS wbint_LookupUserAliases( 91 [in] wbint_SidArray *sids, 92 [out] wbint_RidArray *rids 93 ); 94 95 NTSTATUS wbint_LookupUserGroups( 96 [in] dom_sid *sid, 97 [out] wbint_SidArray *sids 98 ); 99 100 NTSTATUS wbint_QuerySequenceNumber( 101 [out] uint32 *sequence 102 ); 103 104 typedef [public] struct { 105 dom_sid sid; 106 lsa_SidType type; 107 [string,charset(UTF8)] char *name; 108 } wbint_Principal; 109 110 typedef [public] struct { 111 int num_principals; 112 [size_is(num_principals)] wbint_Principal principals[]; 113 } wbint_Principals; 114 115 NTSTATUS wbint_LookupGroupMembers( 116 [in] dom_sid *sid, 117 [in] lsa_SidType type, 118 [out] wbint_Principals *members 119 ); 120 121 typedef [public] struct { 122 uint32 num_userinfos; 123 [size_is(num_userinfos)] wbint_userinfo userinfos[]; 124 } wbint_userinfos; 125 126 NTSTATUS wbint_QueryUserList( 127 [out] wbint_userinfos *users 128 ); 129 130 NTSTATUS wbint_QueryGroupList( 131 [out] wbint_Principals *groups 132 ); 133 134 NTSTATUS wbint_DsGetDcName( 135 [in,string,charset(UTF8)] char *domain_name, 136 [in,unique] GUID *domain_guid, 137 [in,string,unique,charset(UTF8)] char *site_name, 138 [in] uint32 flags, 139 [out] netr_DsRGetDCNameInfo **dc_info 140 ); 141 142 NTSTATUS wbint_LookupRids( 143 [in] wbint_RidArray *rids, 144 [out,string,charset(UTF8)] char **domain_name, 145 [out] wbint_Principals *names 146 ); 147 148 NTSTATUS wbint_CheckMachineAccount( 149 ); 150 151 NTSTATUS wbint_ChangeMachineAccount( 152 ); 153 154 NTSTATUS wbint_PingDc( 155 ); 156 157 typedef [public] enum { 158 WBINT_ID_TYPE_NOT_SPECIFIED, 159 WBINT_ID_TYPE_UID, 160 WBINT_ID_TYPE_GID 161 } wbint_IdType; 162 163 NTSTATUS wbint_SetMapping( 164 [in] dom_sid *sid, 165 [in] wbint_IdType type, 166 [in] hyper id 167 ); 168 169 NTSTATUS wbint_RemoveMapping( 170 [in] dom_sid *sid, 171 [in] wbint_IdType type, 172 [in] hyper id 173 ); 174 175 NTSTATUS wbint_SetHWM( 176 [in] wbint_IdType type, 177 [in] hyper id 178 ); 179} 180