* Lookup functions
*/
- winbind_status winbind_lookup_sid(/*TODO*/);
- winbind_status winbind_lookup_name(/*TODO*/);
- winbind_status winbind_lookup_rids(/*TODO*/);
+ typedef [v1_enum] enum {
+ WINBIND_LOOKUP_LEVEL_SID2NAME = 1,
+ WINBIND_LOOKUP_LEVEL_NAME2SID = 2
+ } winbind_lookup_level;
+
+ typedef [switch_type(winbind_lookup_level)] union {
+ [case(WINBIND_LOOKUP_LEVEL_SID2NAME)]
+/*TODO [ref]*/ dom_sid *sid;
+ [case(WINBIND_LOOKUP_LEVEL_NAME2SID)]
+ [string,charset(UTF8)] uint8 name[];
+ [default];
+ } winbind_lookup_req;
+
+ struct winbind_lookup_name_info {
+ [string,charset(UTF8)] uint8 domain_name[];
+ [string,charset(UTF8)] uint8 account_name[];
+ lsa_SidType type;
+ };
+
+ struct winbind_lookup_sid_info {
+/*TODO [ref]*/ dom_sid *sid;
+ lsa_SidType type;
+ };
+
+ typedef [switch_type(winbind_lookup_level)] union {
+ [case(WINBIND_LOOKUP_LEVEL_SID2NAME)]
+ struct winbind_lookup_name_info name_info;
+ [case(WINBIND_LOOKUP_LEVEL_NAME2SID)]
+ struct winbind_lookup_sid_info sid_info;
+ [default];
+ } winbind_lookup_rep;
+
+ winbind_status winbind_lookup(
+ [in] winbind_lookup_level *level,
+ [in,switch_is(*level)] winbind_lookup_req req,
+ [out,switch_is(*level)] winbind_lookup_rep *rep
+ );
/*
* SID conversion