+ typedef [v1_enum] enum {
+ WINBIND_TRUST_LEVEL_COMPAT_LIST = 1
+ } winbind_trust_level;
+
+ /* Most of what we know from struct winbind_domain */
+ struct winbind_domain_info_compat {
+ [string,charset(UTF8)] uint8 netbios_name[];
+ [string,charset(UTF8)] uint8 *dns_name;
+ [ref] dom_sid *sid;
+ boolean32 is_native_mode;
+ boolean32 is_active_directory;
+ boolean32 is_primary;
+ };
+
+ struct winbind_domain_info_compat_array {
+ uint32 num_domains;
+ struct winbind_domain_info_compat domains[num_domains];
+ };
+
+ typedef [switch_type(winbind_trust_level)] union {
+ [case(WINBIND_TRUST_LEVEL_COMPAT_LIST)];
+ [default];
+ } winbind_trust_req;
+
+ typedef [switch_type(winbind_trust_level)] union {
+ [case(WINBIND_TRUST_LEVEL_COMPAT_LIST)]
+ struct winbind_domain_info_compat_array compat_trusts;
+ [default];
+ } winbind_trust_rep;
+
+ winbind_status winbind_trust(
+ [in] winbind_trust_level *level,
+ [in,switch_is(*level)] winbind_trust_req req,
+ [out,switch_is(*level)] winbind_trust_rep *rep
+ );