diff options
-rw-r--r-- | librpc/idl/winbind.idl | 5 | ||||
-rw-r--r-- | source3/winbindd/winbindd_dual_srv.c | 17 |
2 files changed, 22 insertions, 0 deletions
diff --git a/librpc/idl/winbind.idl b/librpc/idl/winbind.idl index 6245e13ac6a..05db6b96b81 100644 --- a/librpc/idl/winbind.idl +++ b/librpc/idl/winbind.idl @@ -103,6 +103,11 @@ interface winbind [out] wbint_RidArray *rids ); + NTSTATUS wbint_LookupUserGroups( + [in] dom_sid *sid, + [out] wbint_SidArray *sids + ); + NTSTATUS wbint_QuerySequenceNumber( [out] uint32 *sequence ); diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index b0b38a6e108..7b97f33effe 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -301,6 +301,23 @@ NTSTATUS _wbint_LookupUserAliases(struct pipes_struct *p, return status; } +NTSTATUS _wbint_LookupUserGroups(struct pipes_struct *p, + struct wbint_LookupUserGroups *r) +{ + struct winbindd_domain *domain = wb_child_domain(); + NTSTATUS status; + + if (domain == NULL) { + return NT_STATUS_REQUEST_NOT_ACCEPTED; + } + + status = wb_cache_lookup_usergroups(domain, p->mem_ctx, r->in.sid, + &r->out.sids->num_sids, + &r->out.sids->sids); + reset_cm_connection_on_error(domain, status); + return status; +} + NTSTATUS _wbint_QuerySequenceNumber(struct pipes_struct *p, struct wbint_QuerySequenceNumber *r) { |