git add -f bin/default/librpc/gen_ndr/*.{c,h,ndr,pidl} bin/default/source*/librpc...
[metze/samba/wip.git] / bin / default / librpc / gen_ndr / ndr_winbind_c.c
index ef8af4c5fd8ccc6a98889305c9d7f29097d0ab77..c356a3f4dbf093633241ff09955820fbbc7cfd7b 100644 (file)
@@ -1132,23 +1132,23 @@ NTSTATUS dcerpc_wbint_Sids2UnixIDs(struct dcerpc_binding_handle *h,
        return NT_STATUS_OK;
 }
 
-struct dcerpc_wbint_Uid2Sid_r_state {
+struct dcerpc_wbint_UnixIDs2Sids_r_state {
        TALLOC_CTX *out_mem_ctx;
 };
 
-static void dcerpc_wbint_Uid2Sid_r_done(struct tevent_req *subreq);
+static void dcerpc_wbint_UnixIDs2Sids_r_done(struct tevent_req *subreq);
 
-struct tevent_req *dcerpc_wbint_Uid2Sid_r_send(TALLOC_CTX *mem_ctx,
+struct tevent_req *dcerpc_wbint_UnixIDs2Sids_r_send(TALLOC_CTX *mem_ctx,
        struct tevent_context *ev,
        struct dcerpc_binding_handle *h,
-       struct wbint_Uid2Sid *r)
+       struct wbint_UnixIDs2Sids *r)
 {
        struct tevent_req *req;
-       struct dcerpc_wbint_Uid2Sid_r_state *state;
+       struct dcerpc_wbint_UnixIDs2Sids_r_state *state;
        struct tevent_req *subreq;
 
        req = tevent_req_create(mem_ctx, &state,
-                               struct dcerpc_wbint_Uid2Sid_r_state);
+                               struct dcerpc_wbint_UnixIDs2Sids_r_state);
        if (req == NULL) {
                return NULL;
        }
@@ -1160,16 +1160,16 @@ struct tevent_req *dcerpc_wbint_Uid2Sid_r_send(TALLOC_CTX *mem_ctx,
 
        subreq = dcerpc_binding_handle_call_send(state, ev, h,
                        NULL, &ndr_table_winbind,
-                       NDR_WBINT_UID2SID, state->out_mem_ctx, r);
+                       NDR_WBINT_UNIXIDS2SIDS, state->out_mem_ctx, r);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
        }
-       tevent_req_set_callback(subreq, dcerpc_wbint_Uid2Sid_r_done, req);
+       tevent_req_set_callback(subreq, dcerpc_wbint_UnixIDs2Sids_r_done, req);
 
        return req;
 }
 
-static void dcerpc_wbint_Uid2Sid_r_done(struct tevent_req *subreq)
+static void dcerpc_wbint_UnixIDs2Sids_r_done(struct tevent_req *subreq)
 {
        struct tevent_req *req =
                tevent_req_callback_data(subreq,
@@ -1185,11 +1185,11 @@ static void dcerpc_wbint_Uid2Sid_r_done(struct tevent_req *subreq)
        tevent_req_done(req);
 }
 
-NTSTATUS dcerpc_wbint_Uid2Sid_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
+NTSTATUS dcerpc_wbint_UnixIDs2Sids_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
 {
-       struct dcerpc_wbint_Uid2Sid_r_state *state =
+       struct dcerpc_wbint_UnixIDs2Sids_r_state *state =
                tevent_req_data(req,
-               struct dcerpc_wbint_Uid2Sid_r_state);
+               struct dcerpc_wbint_UnixIDs2Sids_r_state);
        NTSTATUS status;
 
        if (tevent_req_is_nterror(req, &status)) {
@@ -1203,53 +1203,57 @@ NTSTATUS dcerpc_wbint_Uid2Sid_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx
        return NT_STATUS_OK;
 }
 
-NTSTATUS dcerpc_wbint_Uid2Sid_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct wbint_Uid2Sid *r)
+NTSTATUS dcerpc_wbint_UnixIDs2Sids_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct wbint_UnixIDs2Sids *r)
 {
        NTSTATUS status;
 
        status = dcerpc_binding_handle_call(h,
                        NULL, &ndr_table_winbind,
-                       NDR_WBINT_UID2SID, mem_ctx, r);
+                       NDR_WBINT_UNIXIDS2SIDS, mem_ctx, r);
 
        return status;
 }
 
-struct dcerpc_wbint_Uid2Sid_state {
-       struct wbint_Uid2Sid orig;
-       struct wbint_Uid2Sid tmp;
+struct dcerpc_wbint_UnixIDs2Sids_state {
+       struct wbint_UnixIDs2Sids orig;
+       struct wbint_UnixIDs2Sids tmp;
        TALLOC_CTX *out_mem_ctx;
 };
 
-static void dcerpc_wbint_Uid2Sid_done(struct tevent_req *subreq);
+static void dcerpc_wbint_UnixIDs2Sids_done(struct tevent_req *subreq);
 
-struct tevent_req *dcerpc_wbint_Uid2Sid_send(TALLOC_CTX *mem_ctx,
-                                            struct tevent_context *ev,
-                                            struct dcerpc_binding_handle *h,
-                                            uint64_t _uid /* [in]  */,
-                                            struct dom_sid *_sid /* [out] [ref] */)
+struct tevent_req *dcerpc_wbint_UnixIDs2Sids_send(TALLOC_CTX *mem_ctx,
+                                                 struct tevent_context *ev,
+                                                 struct dcerpc_binding_handle *h,
+                                                 const char *_domain_name /* [in] [charset(UTF8),ref] */,
+                                                 uint32_t _num_ids /* [in]  */,
+                                                 struct unixid *_xids /* [in]  */,
+                                                 struct dom_sid *_sids /* [out]  */)
 {
        struct tevent_req *req;
-       struct dcerpc_wbint_Uid2Sid_state *state;
+       struct dcerpc_wbint_UnixIDs2Sids_state *state;
        struct tevent_req *subreq;
 
        req = tevent_req_create(mem_ctx, &state,
-                               struct dcerpc_wbint_Uid2Sid_state);
+                               struct dcerpc_wbint_UnixIDs2Sids_state);
        if (req == NULL) {
                return NULL;
        }
        state->out_mem_ctx = NULL;
 
        /* In parameters */
-       state->orig.in.uid = _uid;
+       state->orig.in.domain_name = _domain_name;
+       state->orig.in.num_ids = _num_ids;
+       state->orig.in.xids = _xids;
 
        /* Out parameters */
-       state->orig.out.sid = _sid;
+       state->orig.out.sids = _sids;
 
        /* Result */
        ZERO_STRUCT(state->orig.out.result);
 
        state->out_mem_ctx = talloc_named_const(state, 0,
-                            "dcerpc_wbint_Uid2Sid_out_memory");
+                            "dcerpc_wbint_UnixIDs2Sids_out_memory");
        if (tevent_req_nomem(state->out_mem_ctx, req)) {
                return tevent_req_post(req, ev);
        }
@@ -1257,20 +1261,20 @@ struct tevent_req *dcerpc_wbint_Uid2Sid_send(TALLOC_CTX *mem_ctx,
        /* make a temporary copy, that we pass to the dispatch function */
        state->tmp = state->orig;
 
-       subreq = dcerpc_wbint_Uid2Sid_r_send(state, ev, h, &state->tmp);
+       subreq = dcerpc_wbint_UnixIDs2Sids_r_send(state, ev, h, &state->tmp);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
        }
-       tevent_req_set_callback(subreq, dcerpc_wbint_Uid2Sid_done, req);
+       tevent_req_set_callback(subreq, dcerpc_wbint_UnixIDs2Sids_done, req);
        return req;
 }
 
-static void dcerpc_wbint_Uid2Sid_done(struct tevent_req *subreq)
+static void dcerpc_wbint_UnixIDs2Sids_done(struct tevent_req *subreq)
 {
        struct tevent_req *req = tevent_req_callback_data(
                subreq, struct tevent_req);
-       struct dcerpc_wbint_Uid2Sid_state *state = tevent_req_data(
-               req, struct dcerpc_wbint_Uid2Sid_state);
+       struct dcerpc_wbint_UnixIDs2Sids_state *state = tevent_req_data(
+               req, struct dcerpc_wbint_UnixIDs2Sids_state);
        NTSTATUS status;
        TALLOC_CTX *mem_ctx;
 
@@ -1280,14 +1284,20 @@ static void dcerpc_wbint_Uid2Sid_done(struct tevent_req *subreq)
                mem_ctx = state;
        }
 
-       status = dcerpc_wbint_Uid2Sid_r_recv(subreq, mem_ctx);
+       status = dcerpc_wbint_UnixIDs2Sids_r_recv(subreq, mem_ctx);
        TALLOC_FREE(subreq);
        if (tevent_req_nterror(req, status)) {
                return;
        }
 
        /* Copy out parameters */
-       *state->orig.out.sid = *state->tmp.out.sid;
+       {
+               size_t _copy_len_sids;
+               _copy_len_sids = state->tmp.in.num_ids;
+               if (state->orig.out.sids != state->tmp.out.sids) {
+                       memcpy(state->orig.out.sids, state->tmp.out.sids, _copy_len_sids * sizeof(*state->orig.out.sids));
+               }
+       }
 
        /* Copy result */
        state->orig.out.result = state->tmp.out.result;
@@ -1298,12 +1308,12 @@ static void dcerpc_wbint_Uid2Sid_done(struct tevent_req *subreq)
        tevent_req_done(req);
 }
 
-NTSTATUS dcerpc_wbint_Uid2Sid_recv(struct tevent_req *req,
-                                  TALLOC_CTX *mem_ctx,
-                                  NTSTATUS *result)
+NTSTATUS dcerpc_wbint_UnixIDs2Sids_recv(struct tevent_req *req,
+                                       TALLOC_CTX *mem_ctx,
+                                       NTSTATUS *result)
 {
-       struct dcerpc_wbint_Uid2Sid_state *state = tevent_req_data(
-               req, struct dcerpc_wbint_Uid2Sid_state);
+       struct dcerpc_wbint_UnixIDs2Sids_state *state = tevent_req_data(
+               req, struct dcerpc_wbint_UnixIDs2Sids_state);
        NTSTATUS status;
 
        if (tevent_req_is_nterror(req, &status)) {
@@ -1321,252 +1331,41 @@ NTSTATUS dcerpc_wbint_Uid2Sid_recv(struct tevent_req *req,
        return NT_STATUS_OK;
 }
 
-NTSTATUS dcerpc_wbint_Uid2Sid(struct dcerpc_binding_handle *h,
-                             TALLOC_CTX *mem_ctx,
-                             uint64_t _uid /* [in]  */,
-                             struct dom_sid *_sid /* [out] [ref] */,
-                             NTSTATUS *result)
-{
-       struct wbint_Uid2Sid r;
-       NTSTATUS status;
-
-       /* In parameters */
-       r.in.uid = _uid;
-
-       /* Out parameters */
-       r.out.sid = _sid;
-
-       /* Result */
-       ZERO_STRUCT(r.out.result);
-
-       status = dcerpc_wbint_Uid2Sid_r(h, mem_ctx, &r);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
-       }
-
-       /* Return variables */
-       *_sid = *r.out.sid;
-
-       /* Return result */
-       *result = r.out.result;
-
-       return NT_STATUS_OK;
-}
-
-struct dcerpc_wbint_Gid2Sid_r_state {
-       TALLOC_CTX *out_mem_ctx;
-};
-
-static void dcerpc_wbint_Gid2Sid_r_done(struct tevent_req *subreq);
-
-struct tevent_req *dcerpc_wbint_Gid2Sid_r_send(TALLOC_CTX *mem_ctx,
-       struct tevent_context *ev,
-       struct dcerpc_binding_handle *h,
-       struct wbint_Gid2Sid *r)
-{
-       struct tevent_req *req;
-       struct dcerpc_wbint_Gid2Sid_r_state *state;
-       struct tevent_req *subreq;
-
-       req = tevent_req_create(mem_ctx, &state,
-                               struct dcerpc_wbint_Gid2Sid_r_state);
-       if (req == NULL) {
-               return NULL;
-       }
-
-       state->out_mem_ctx = talloc_new(state);
-       if (tevent_req_nomem(state->out_mem_ctx, req)) {
-               return tevent_req_post(req, ev);
-       }
-
-       subreq = dcerpc_binding_handle_call_send(state, ev, h,
-                       NULL, &ndr_table_winbind,
-                       NDR_WBINT_GID2SID, state->out_mem_ctx, r);
-       if (tevent_req_nomem(subreq, req)) {
-               return tevent_req_post(req, ev);
-       }
-       tevent_req_set_callback(subreq, dcerpc_wbint_Gid2Sid_r_done, req);
-
-       return req;
-}
-
-static void dcerpc_wbint_Gid2Sid_r_done(struct tevent_req *subreq)
-{
-       struct tevent_req *req =
-               tevent_req_callback_data(subreq,
-               struct tevent_req);
-       NTSTATUS status;
-
-       status = dcerpc_binding_handle_call_recv(subreq);
-       TALLOC_FREE(subreq);
-       if (tevent_req_nterror(req, status)) {
-               return;
-       }
-
-       tevent_req_done(req);
-}
-
-NTSTATUS dcerpc_wbint_Gid2Sid_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
-{
-       struct dcerpc_wbint_Gid2Sid_r_state *state =
-               tevent_req_data(req,
-               struct dcerpc_wbint_Gid2Sid_r_state);
-       NTSTATUS status;
-
-       if (tevent_req_is_nterror(req, &status)) {
-               tevent_req_received(req);
-               return status;
-       }
-
-       talloc_steal(mem_ctx, state->out_mem_ctx);
-
-       tevent_req_received(req);
-       return NT_STATUS_OK;
-}
-
-NTSTATUS dcerpc_wbint_Gid2Sid_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct wbint_Gid2Sid *r)
-{
-       NTSTATUS status;
-
-       status = dcerpc_binding_handle_call(h,
-                       NULL, &ndr_table_winbind,
-                       NDR_WBINT_GID2SID, mem_ctx, r);
-
-       return status;
-}
-
-struct dcerpc_wbint_Gid2Sid_state {
-       struct wbint_Gid2Sid orig;
-       struct wbint_Gid2Sid tmp;
-       TALLOC_CTX *out_mem_ctx;
-};
-
-static void dcerpc_wbint_Gid2Sid_done(struct tevent_req *subreq);
-
-struct tevent_req *dcerpc_wbint_Gid2Sid_send(TALLOC_CTX *mem_ctx,
-                                            struct tevent_context *ev,
-                                            struct dcerpc_binding_handle *h,
-                                            uint64_t _gid /* [in]  */,
-                                            struct dom_sid *_sid /* [out] [ref] */)
-{
-       struct tevent_req *req;
-       struct dcerpc_wbint_Gid2Sid_state *state;
-       struct tevent_req *subreq;
-
-       req = tevent_req_create(mem_ctx, &state,
-                               struct dcerpc_wbint_Gid2Sid_state);
-       if (req == NULL) {
-               return NULL;
-       }
-       state->out_mem_ctx = NULL;
-
-       /* In parameters */
-       state->orig.in.gid = _gid;
-
-       /* Out parameters */
-       state->orig.out.sid = _sid;
-
-       /* Result */
-       ZERO_STRUCT(state->orig.out.result);
-
-       state->out_mem_ctx = talloc_named_const(state, 0,
-                            "dcerpc_wbint_Gid2Sid_out_memory");
-       if (tevent_req_nomem(state->out_mem_ctx, req)) {
-               return tevent_req_post(req, ev);
-       }
-
-       /* make a temporary copy, that we pass to the dispatch function */
-       state->tmp = state->orig;
-
-       subreq = dcerpc_wbint_Gid2Sid_r_send(state, ev, h, &state->tmp);
-       if (tevent_req_nomem(subreq, req)) {
-               return tevent_req_post(req, ev);
-       }
-       tevent_req_set_callback(subreq, dcerpc_wbint_Gid2Sid_done, req);
-       return req;
-}
-
-static void dcerpc_wbint_Gid2Sid_done(struct tevent_req *subreq)
-{
-       struct tevent_req *req = tevent_req_callback_data(
-               subreq, struct tevent_req);
-       struct dcerpc_wbint_Gid2Sid_state *state = tevent_req_data(
-               req, struct dcerpc_wbint_Gid2Sid_state);
-       NTSTATUS status;
-       TALLOC_CTX *mem_ctx;
-
-       if (state->out_mem_ctx) {
-               mem_ctx = state->out_mem_ctx;
-       } else {
-               mem_ctx = state;
-       }
-
-       status = dcerpc_wbint_Gid2Sid_r_recv(subreq, mem_ctx);
-       TALLOC_FREE(subreq);
-       if (tevent_req_nterror(req, status)) {
-               return;
-       }
-
-       /* Copy out parameters */
-       *state->orig.out.sid = *state->tmp.out.sid;
-
-       /* Copy result */
-       state->orig.out.result = state->tmp.out.result;
-
-       /* Reset temporary structure */
-       ZERO_STRUCT(state->tmp);
-
-       tevent_req_done(req);
-}
-
-NTSTATUS dcerpc_wbint_Gid2Sid_recv(struct tevent_req *req,
+NTSTATUS dcerpc_wbint_UnixIDs2Sids(struct dcerpc_binding_handle *h,
                                   TALLOC_CTX *mem_ctx,
+                                  const char *_domain_name /* [in] [charset(UTF8),ref] */,
+                                  uint32_t _num_ids /* [in]  */,
+                                  struct unixid *_xids /* [in]  */,
+                                  struct dom_sid *_sids /* [out]  */,
                                   NTSTATUS *result)
 {
-       struct dcerpc_wbint_Gid2Sid_state *state = tevent_req_data(
-               req, struct dcerpc_wbint_Gid2Sid_state);
-       NTSTATUS status;
-
-       if (tevent_req_is_nterror(req, &status)) {
-               tevent_req_received(req);
-               return status;
-       }
-
-       /* Steal possible out parameters to the callers context */
-       talloc_steal(mem_ctx, state->out_mem_ctx);
-
-       /* Return result */
-       *result = state->orig.out.result;
-
-       tevent_req_received(req);
-       return NT_STATUS_OK;
-}
-
-NTSTATUS dcerpc_wbint_Gid2Sid(struct dcerpc_binding_handle *h,
-                             TALLOC_CTX *mem_ctx,
-                             uint64_t _gid /* [in]  */,
-                             struct dom_sid *_sid /* [out] [ref] */,
-                             NTSTATUS *result)
-{
-       struct wbint_Gid2Sid r;
+       struct wbint_UnixIDs2Sids r;
        NTSTATUS status;
 
        /* In parameters */
-       r.in.gid = _gid;
+       r.in.domain_name = _domain_name;
+       r.in.num_ids = _num_ids;
+       r.in.xids = _xids;
 
        /* Out parameters */
-       r.out.sid = _sid;
+       r.out.sids = _sids;
 
        /* Result */
        ZERO_STRUCT(r.out.result);
 
-       status = dcerpc_wbint_Gid2Sid_r(h, mem_ctx, &r);
+       status = dcerpc_wbint_UnixIDs2Sids_r(h, mem_ctx, &r);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
 
        /* Return variables */
-       *_sid = *r.out.sid;
+       {
+               size_t _copy_len_sids;
+               _copy_len_sids = r.in.num_ids;
+               if (_sids != r.out.sids) {
+                       memcpy(_sids, r.out.sids, _copy_len_sids * sizeof(*_sids));
+               }
+       }
 
        /* Return result */
        *result = r.out.result;