diff options
-rw-r--r-- | source4/librpc/idl/lsa.idl | 179 | ||||
-rw-r--r-- | source4/librpc/ndr/ndr_lsa.c | 669 | ||||
-rw-r--r-- | source4/librpc/ndr/ndr_lsa.h | 519 | ||||
-rw-r--r-- | source4/librpc/rpc/rpc_echo.c | 40 | ||||
-rw-r--r-- | source4/librpc/rpc/rpc_lsa.c | 662 | ||||
-rwxr-xr-x | source4/script/build_idl.sh | 2 | ||||
-rw-r--r-- | source4/torture/rpc/lsa.c | 18 |
7 files changed, 1871 insertions, 218 deletions
diff --git a/source4/librpc/idl/lsa.idl b/source4/librpc/idl/lsa.idl index 886b8fd225..f71a4e4c8c 100644 --- a/source4/librpc/idl/lsa.idl +++ b/source4/librpc/idl/lsa.idl @@ -7,7 +7,35 @@ pointer_default(unique) ] interface lsarpc { + /******************/ + /* Function: 0x00 */ + NTSTATUS lsa_Close ( + [in,ref] policy_handle *handle + ); + /******************/ + /* Function: 0x01 */ + NTSTATUS lsa_Delete (); + + /******************/ + /* Function: 0x02 */ + NTSTATUS lsa_EnumPrivs (); + + /******************/ + /* Function: 0x03 */ + NTSTATUS lsa_QuerySecObj (); + + /******************/ + /* Function: 0x04 */ + NTSTATUS lsa_SetSecObj (); + + /******************/ + /* Function: 0x05 */ + NTSTATUS lsa_ChangePassword (); + + + /******************/ + /* Function: 0x06 */ typedef struct { [struct_len] uint32 _len; uint16 impersonation_level; @@ -31,13 +59,26 @@ [out,ref] policy_handle *handle ); - NTSTATUS lsa_OpenPolicy2 ( - [in] unistr *system_name, - [in,ref] lsa_ObjectAttribute *attr, - [in] uint32 desired_access, - [out,ref] policy_handle *handle - ); + /******************/ + /* Function: 0x07 */ + NTSTATUS lsa_QueryInfoPolicy (); + + /******************/ + /* Function: 0x08 */ + NTSTATUS lsa_SetInfoPolicy (); + + /******************/ + /* Function: 0x09 */ + NTSTATUS lsa_ClearAuditLog (); + + /******************/ + /* Function: 0x0a */ + NTSTATUS lsa_CreateAccount (); + + + /******************/ + /* Function: 0x0b */ typedef struct { dom_sid2 *sid; } lsa_SidPtr; @@ -47,13 +88,26 @@ [size_is(num_sids)] lsa_SidPtr *sids; } lsa_SidArray; - NTSTATUS lsa_EnumSids ( + NTSTATUS lsa_EnumAccounts ( [in,ref] policy_handle *handle, [in,out,ref] uint32 *resume_handle, [in] uint32 num_entries, [out,ref] lsa_SidArray *sids ); + + /*************************************************/ + /* Function: 0x0c */ + NTSTATUS lsa_CreateTrustDom (); + + /******************/ + /* Function: 0x0d */ + NTSTATUS lsa_EnumTrustDom (); + + + /******************/ + /* Function: 0x0e */ + typedef struct { uint16 name_len; uint16 name_size; @@ -62,14 +116,14 @@ typedef struct { uint16 sid_type; - lsa_Name name; + uint32 rid; uint32 sid_index; - } lsa_TranslatedName; + } lsa_TranslatedSid; typedef struct { uint32 count; - [size_is(count)] lsa_TranslatedName *names; - } lsa_TransNameArray; + [size_is(count)] lsa_TranslatedSid *sids; + } lsa_TransSidArray; typedef struct { lsa_Name name; @@ -82,33 +136,114 @@ uint32 max_count; } lsa_RefDomainList; - NTSTATUS lsa_LookupSids ( + NTSTATUS lsa_LookupNames ( [in,ref] policy_handle *handle, - [in,ref] lsa_SidArray *sids, + [in] uint32 num_names, + [in,ref,size_is(num_names)] lsa_Name *names, [out] lsa_RefDomainList *domains, - [in,out,ref] lsa_TransNameArray *names, + [in,out,ref] lsa_TransSidArray *sids, [in] uint16 level, [in,out,ref] uint32 *count ); + + /******************/ + /* Function: 0x0f */ + typedef struct { uint16 sid_type; - uint32 rid; + lsa_Name name; uint32 sid_index; - } lsa_TranslatedSid; + } lsa_TranslatedName; typedef struct { uint32 count; - [size_is(count)] lsa_TranslatedSid *sids; - } lsa_TransSidArray; + [size_is(count)] lsa_TranslatedName *names; + } lsa_TransNameArray; - NTSTATUS lsa_LookupNames ( + NTSTATUS lsa_LookupSids ( [in,ref] policy_handle *handle, - [in] uint32 num_names, - [in,ref,size_is(num_names)] lsa_Name *names, + [in,ref] lsa_SidArray *sids, [out] lsa_RefDomainList *domains, - [in,out,ref] lsa_TransSidArray *sids, + [in,out,ref] lsa_TransNameArray *names, [in] uint16 level, [in,out,ref] uint32 *count ); + + + /* Function: 0x10 */ + NTSTATUS CREATESECRET (); + /* Function: 0x11 */ + NTSTATUS OPENACCOUNT (); + /* Function: 0x12 */ + NTSTATUS ENUMPRIVSACCOUNT (); + /* Function: 0x13 */ + NTSTATUS ADDPRIVS (); + /* Function: 0x14 */ + NTSTATUS REMOVEPRIVS (); + /* Function: 0x15 */ + NTSTATUS GETQUOTAS (); + /* Function: 0x16 */ + NTSTATUS SETQUOTAS (); + /* Function: 0x17 */ + NTSTATUS GETSYSTEMACCOUNT (); + /* Function: 0x18 */ + NTSTATUS SETSYSTEMACCOUNT (); + /* Function: 0x19 */ + NTSTATUS OPENTRUSTDOM (); + /* Function: 0x1a */ + NTSTATUS QUERYTRUSTDOM (); + /* Function: 0x1b */ + NTSTATUS SETINFOTRUSTDOM (); + /* Function: 0x1c */ + NTSTATUS OPENSECRET (); + /* Function: 0x1d */ + NTSTATUS SETSECRET (); + /* Function: 0x1e */ + NTSTATUS QUERYSECRET (); + /* Function: 0x1f */ + NTSTATUS LOOKUPPRIVVALUE (); + /* Function: 0x20 */ + NTSTATUS LOOKUPPRIVNAME (); + /* Function: 0x21 */ + NTSTATUS PRIV_GET_DISPNAME (); + /* Function: 0x22 */ + NTSTATUS DELETEOBJECT (); + /* Function: 0x23 */ + NTSTATUS ENUMACCTWITHRIGHT (); + /* Function: 0x24 */ + NTSTATUS ENUMACCTRIGHTS (); + /* Function: 0x25 */ + NTSTATUS ADDACCTRIGHTS (); + /* Function: 0x26 */ + NTSTATUS REMOVEACCTRIGHTS (); + /* Function: 0x27 */ + NTSTATUS QUERYTRUSTDOMINFO (); + /* Function: 0x28 */ + NTSTATUS SETTRUSTDOMINFO (); + /* Function: 0x29 */ + NTSTATUS DELETETRUSTDOM (); + /* Function: 0x2a */ + NTSTATUS STOREPRIVDATA (); + /* Function: 0x2b */ + NTSTATUS RETRPRIVDATA (); + + + /**********************/ + /* Function: 0x2c */ + NTSTATUS lsa_OpenPolicy2 ( + [in] unistr *system_name, + [in,ref] lsa_ObjectAttribute *attr, + [in] uint32 desired_access, + [out,ref] policy_handle *handle + ); + + + /* Function: 0x2d */ + NTSTATUS UNK_GET_CONNUSER (); + /* Function: 0x2e */ + NTSTATUS QUERYINFO2 (); + + + } diff --git a/source4/librpc/ndr/ndr_lsa.c b/source4/librpc/ndr/ndr_lsa.c index 651ba9de08..54c81d2b49 100644 --- a/source4/librpc/ndr/ndr_lsa.c +++ b/source4/librpc/ndr/ndr_lsa.c @@ -2,6 +2,85 @@ #include "includes.h" +NTSTATUS ndr_push_lsa_Close(struct ndr_push *ndr, struct lsa_Close *r) +{ + NDR_CHECK(ndr_push_policy_handle(ndr, r->in.handle)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_Close(struct ndr_pull *ndr, struct lsa_Close *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_lsa_Delete(struct ndr_push *ndr, struct lsa_Delete *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_Delete(struct ndr_pull *ndr, struct lsa_Delete *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_lsa_EnumPrivs(struct ndr_push *ndr, struct lsa_EnumPrivs *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_EnumPrivs(struct ndr_pull *ndr, struct lsa_EnumPrivs *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_lsa_QuerySecObj(struct ndr_push *ndr, struct lsa_QuerySecObj *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_QuerySecObj(struct ndr_pull *ndr, struct lsa_QuerySecObj *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_lsa_SetSecObj(struct ndr_push *ndr, struct lsa_SetSecObj *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_SetSecObj(struct ndr_pull *ndr, struct lsa_SetSecObj *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_lsa_ChangePassword(struct ndr_push *ndr, struct lsa_ChangePassword *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_ChangePassword(struct ndr_pull *ndr, struct lsa_ChangePassword *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + static NTSTATUS ndr_push_lsa_QosInfo(struct ndr_push *ndr, int ndr_flags, struct lsa_QosInfo *r) { struct ndr_push_save _save1, _save2, _save3; @@ -154,21 +233,53 @@ NTSTATUS ndr_pull_lsa_OpenPolicy(struct ndr_pull *ndr, struct lsa_OpenPolicy *r) return NT_STATUS_OK; } -NTSTATUS ndr_push_lsa_OpenPolicy2(struct ndr_push *ndr, struct lsa_OpenPolicy2 *r) +NTSTATUS ndr_push_lsa_QueryInfoPolicy(struct ndr_push *ndr, struct lsa_QueryInfoPolicy *r) { - NDR_CHECK(ndr_push_ptr(ndr, r->in.system_name)); - if (r->in.system_name) { - NDR_CHECK(ndr_push_unistr(ndr, r->in.system_name)); - } - NDR_CHECK(ndr_push_lsa_ObjectAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.attr)); - NDR_CHECK(ndr_push_uint32(ndr, r->in.desired_access)); return NT_STATUS_OK; } -NTSTATUS ndr_pull_lsa_OpenPolicy2(struct ndr_pull *ndr, struct lsa_OpenPolicy2 *r) +NTSTATUS ndr_pull_lsa_QueryInfoPolicy(struct ndr_pull *ndr, struct lsa_QueryInfoPolicy *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_lsa_SetInfoPolicy(struct ndr_push *ndr, struct lsa_SetInfoPolicy *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_SetInfoPolicy(struct ndr_pull *ndr, struct lsa_SetInfoPolicy *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_lsa_ClearAuditLog(struct ndr_push *ndr, struct lsa_ClearAuditLog *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_ClearAuditLog(struct ndr_pull *ndr, struct lsa_ClearAuditLog *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_lsa_CreateAccount(struct ndr_push *ndr, struct lsa_CreateAccount *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_CreateAccount(struct ndr_pull *ndr, struct lsa_CreateAccount *r) { - NDR_CHECK(ndr_pull_policy_handle(ndr, r->out.handle)); NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); return NT_STATUS_OK; @@ -241,7 +352,7 @@ done: return NT_STATUS_OK; } -NTSTATUS ndr_push_lsa_EnumSids(struct ndr_push *ndr, struct lsa_EnumSids *r) +NTSTATUS ndr_push_lsa_EnumAccounts(struct ndr_push *ndr, struct lsa_EnumAccounts *r) { NDR_CHECK(ndr_push_policy_handle(ndr, r->in.handle)); NDR_CHECK(ndr_push_uint32(ndr, *r->in.resume_handle)); @@ -250,7 +361,7 @@ NTSTATUS ndr_push_lsa_EnumSids(struct ndr_push *ndr, struct lsa_EnumSids *r) return NT_STATUS_OK; } -NTSTATUS ndr_pull_lsa_EnumSids(struct ndr_pull *ndr, struct lsa_EnumSids *r) +NTSTATUS ndr_pull_lsa_EnumAccounts(struct ndr_pull *ndr, struct lsa_EnumAccounts *r) { NDR_CHECK(ndr_pull_uint32(ndr, r->out.resume_handle)); NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids)); @@ -259,6 +370,32 @@ NTSTATUS ndr_pull_lsa_EnumSids(struct ndr_pull *ndr, struct lsa_EnumSids *r) return NT_STATUS_OK; } +NTSTATUS ndr_push_lsa_CreateTrustDom(struct ndr_push *ndr, struct lsa_CreateTrustDom *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_CreateTrustDom(struct ndr_pull *ndr, struct lsa_CreateTrustDom *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_lsa_EnumTrustDom(struct ndr_push *ndr, struct lsa_EnumTrustDom *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_EnumTrustDom(struct ndr_pull *ndr, struct lsa_EnumTrustDom *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + static NTSTATUS ndr_push_lsa_Name(struct ndr_push *ndr, int ndr_flags, struct lsa_Name *r) { if (!(ndr_flags & NDR_SCALARS)) goto buffers; @@ -295,62 +432,60 @@ done: return NT_STATUS_OK; } -static NTSTATUS ndr_push_lsa_TranslatedName(struct ndr_push *ndr, int ndr_flags, struct lsa_TranslatedName *r) +static NTSTATUS ndr_push_lsa_TranslatedSid(struct ndr_push *ndr, int ndr_flags, struct lsa_TranslatedSid *r) { if (!(ndr_flags & NDR_SCALARS)) goto buffers; NDR_CHECK(ndr_push_uint16(ndr, r->sid_type)); - NDR_CHECK(ndr_push_lsa_Name(ndr, NDR_SCALARS, &r->name)); + NDR_CHECK(ndr_push_uint32(ndr, r->rid)); NDR_CHECK(ndr_push_uint32(ndr, r->sid_index)); buffers: if (!(ndr_flags & NDR_BUFFERS)) goto done; - NDR_CHECK(ndr_push_lsa_Name(ndr, ndr_flags, &r->name)); done: return NT_STATUS_OK; } -static NTSTATUS ndr_pull_lsa_TranslatedName(struct ndr_pull *ndr, int ndr_flags, struct lsa_TranslatedName *r) +static NTSTATUS ndr_pull_lsa_TranslatedSid(struct ndr_pull *ndr, int ndr_flags, struct lsa_TranslatedSid *r) { if (!(ndr_flags & NDR_SCALARS)) goto buffers; NDR_CHECK(ndr_pull_uint16(ndr, &r->sid_type)); - NDR_CHECK(ndr_pull_lsa_Name(ndr, NDR_SCALARS, &r->name)); + NDR_CHECK(ndr_pull_uint32(ndr, &r->rid)); NDR_CHECK(ndr_pull_uint32(ndr, &r->sid_index)); buffers: if (!(ndr_flags & NDR_BUFFERS)) goto done; - NDR_CHECK(ndr_pull_lsa_Name(ndr, ndr_flags, &r->name)); done: return NT_STATUS_OK; } -static NTSTATUS ndr_push_lsa_TransNameArray(struct ndr_push *ndr, int ndr_flags, struct lsa_TransNameArray *r) +static NTSTATUS ndr_push_lsa_TransSidArray(struct ndr_push *ndr, int ndr_flags, struct lsa_TransSidArray *r) { if (!(ndr_flags & NDR_SCALARS)) goto buffers; NDR_CHECK(ndr_push_uint32(ndr, r->count)); - NDR_CHECK(ndr_push_ptr(ndr, r->names)); + NDR_CHECK(ndr_push_ptr(ndr, r->sids)); buffers: if (!(ndr_flags & NDR_BUFFERS)) goto done; - if (r->names) { - NDR_CHECK(ndr_push_array(ndr, ndr_flags, r->names, sizeof(r->names[0]), r->count, (ndr_push_flags_fn_t)ndr_push_lsa_TranslatedName)); + if (r->sids) { + NDR_CHECK(ndr_push_array(ndr, ndr_flags, r->sids, sizeof(r->sids[0]), r->count, (ndr_push_flags_fn_t)ndr_push_lsa_TranslatedSid)); } done: return NT_STATUS_OK; } -static NTSTATUS ndr_pull_lsa_TransNameArray(struct ndr_pull *ndr, int ndr_flags, struct lsa_TransNameArray *r) +static NTSTATUS ndr_pull_lsa_TransSidArray(struct ndr_pull *ndr, int ndr_flags, struct lsa_TransSidArray *r) { - uint32 _ptr_names; + uint32 _ptr_sids; if (!(ndr_flags & NDR_SCALARS)) goto buffers; NDR_CHECK(ndr_pull_uint32(ndr, &r->count)); - NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_names)); - if (_ptr_names) { - NDR_ALLOC(ndr, r->names); + NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_sids)); + if (_ptr_sids) { + NDR_ALLOC(ndr, r->sids); } else { - r->names = NULL; + r->sids = NULL; } buffers: if (!(ndr_flags & NDR_BUFFERS)) goto done; - if (r->names) { - NDR_ALLOC_N_SIZE(ndr, r->names, r->count, sizeof(r->names[0])); - NDR_CHECK(ndr_pull_array(ndr, ndr_flags, (void **)r->names, sizeof(r->names[0]), r->count, (ndr_pull_flags_fn_t)ndr_pull_lsa_TranslatedName)); + if (r->sids) { + NDR_ALLOC_N_SIZE(ndr, r->sids, r->count, sizeof(r->sids[0])); + NDR_CHECK(ndr_pull_array(ndr, ndr_flags, (void **)r->sids, sizeof(r->sids[0]), r->count, (ndr_pull_flags_fn_t)ndr_pull_lsa_TranslatedSid)); } done: return NT_STATUS_OK; @@ -429,18 +564,22 @@ done: return NT_STATUS_OK; } -NTSTATUS ndr_push_lsa_LookupSids(struct ndr_push *ndr, struct lsa_LookupSids *r) +NTSTATUS ndr_push_lsa_LookupNames(struct ndr_push *ndr, struct lsa_LookupNames *r) { NDR_CHECK(ndr_push_policy_handle(ndr, r->in.handle)); - NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids)); - NDR_CHECK(ndr_push_lsa_TransNameArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.names)); + NDR_CHECK(ndr_push_uint32(ndr, r->in.num_names)); + if (r->in.names) { + int ndr_flags = NDR_SCALARS|NDR_BUFFERS; + NDR_CHECK(ndr_push_array(ndr, ndr_flags, r->in.names, sizeof(r->in.names[0]), r->in.num_names, (ndr_push_flags_fn_t)ndr_push_lsa_Name)); + } + NDR_CHECK(ndr_push_lsa_TransSidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids)); NDR_CHECK(ndr_push_uint16(ndr, r->in.level)); NDR_CHECK(ndr_push_uint32(ndr, *r->in.count)); return NT_STATUS_OK; } -NTSTATUS ndr_pull_lsa_LookupSids(struct ndr_pull *ndr, struct lsa_LookupSids *r) +NTSTATUS ndr_pull_lsa_LookupNames(struct ndr_pull *ndr, struct lsa_LookupNames *r) { uint32 _ptr_domains; NDR_ALLOC(ndr, r->out.domains); @@ -453,88 +592,86 @@ NTSTATUS ndr_pull_lsa_LookupSids(struct ndr_pull *ndr, struct lsa_LookupSids *r) if (r->out.domains) { NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains)); } - NDR_CHECK(ndr_pull_lsa_TransNameArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.names)); + NDR_CHECK(ndr_pull_lsa_TransSidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids)); NDR_CHECK(ndr_pull_uint32(ndr, r->out.count)); NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); return NT_STATUS_OK; } -static NTSTATUS ndr_push_lsa_TranslatedSid(struct ndr_push *ndr, int ndr_flags, struct lsa_TranslatedSid *r) +static NTSTATUS ndr_push_lsa_TranslatedName(struct ndr_push *ndr, int ndr_flags, struct lsa_TranslatedName *r) { if (!(ndr_flags & NDR_SCALARS)) goto buffers; NDR_CHECK(ndr_push_uint16(ndr, r->sid_type)); - NDR_CHECK(ndr_push_uint32(ndr, r->rid)); + NDR_CHECK(ndr_push_lsa_Name(ndr, NDR_SCALARS, &r->name)); NDR_CHECK(ndr_push_uint32(ndr, r->sid_index)); buffers: if (!(ndr_flags & NDR_BUFFERS)) goto done; + NDR_CHECK(ndr_push_lsa_Name(ndr, ndr_flags, &r->name)); done: return NT_STATUS_OK; } -static NTSTATUS ndr_pull_lsa_TranslatedSid(struct ndr_pull *ndr, int ndr_flags, struct lsa_TranslatedSid *r) +static NTSTATUS ndr_pull_lsa_TranslatedName(struct ndr_pull *ndr, int ndr_flags, struct lsa_TranslatedName *r) { if (!(ndr_flags & NDR_SCALARS)) goto buffers; NDR_CHECK(ndr_pull_uint16(ndr, &r->sid_type)); - NDR_CHECK(ndr_pull_uint32(ndr, &r->rid)); + NDR_CHECK(ndr_pull_lsa_Name(ndr, NDR_SCALARS, &r->name)); NDR_CHECK(ndr_pull_uint32(ndr, &r->sid_index)); buffers: if (!(ndr_flags & NDR_BUFFERS)) goto done; + NDR_CHECK(ndr_pull_lsa_Name(ndr, ndr_flags, &r->name)); done: return NT_STATUS_OK; } -static NTSTATUS ndr_push_lsa_TransSidArray(struct ndr_push *ndr, int ndr_flags, struct lsa_TransSidArray *r) +static NTSTATUS ndr_push_lsa_TransNameArray(struct ndr_push *ndr, int ndr_flags, struct lsa_TransNameArray *r) { if (!(ndr_flags & NDR_SCALARS)) goto buffers; NDR_CHECK(ndr_push_uint32(ndr, r->count)); - NDR_CHECK(ndr_push_ptr(ndr, r->sids)); + NDR_CHECK(ndr_push_ptr(ndr, r->names)); buffers: if (!(ndr_flags & NDR_BUFFERS)) goto done; - if (r->sids) { - NDR_CHECK(ndr_push_array(ndr, ndr_flags, r->sids, sizeof(r->sids[0]), r->count, (ndr_push_flags_fn_t)ndr_push_lsa_TranslatedSid)); + if (r->names) { + NDR_CHECK(ndr_push_array(ndr, ndr_flags, r->names, sizeof(r->names[0]), r->count, (ndr_push_flags_fn_t)ndr_push_lsa_TranslatedName)); } done: return NT_STATUS_OK; } -static NTSTATUS ndr_pull_lsa_TransSidArray(struct ndr_pull *ndr, int ndr_flags, struct lsa_TransSidArray *r) +static NTSTATUS ndr_pull_lsa_TransNameArray(struct ndr_pull *ndr, int ndr_flags, struct lsa_TransNameArray *r) { - uint32 _ptr_sids; + uint32 _ptr_names; if (!(ndr_flags & NDR_SCALARS)) goto buffers; NDR_CHECK(ndr_pull_uint32(ndr, &r->count)); - NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_sids)); - if (_ptr_sids) { - NDR_ALLOC(ndr, r->sids); + NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_names)); + if (_ptr_names) { + NDR_ALLOC(ndr, r->names); } else { - r->sids = NULL; + r->names = NULL; } buffers: if (!(ndr_flags & NDR_BUFFERS)) goto done; - if (r->sids) { - NDR_ALLOC_N_SIZE(ndr, r->sids, r->count, sizeof(r->sids[0])); - NDR_CHECK(ndr_pull_array(ndr, ndr_flags, (void **)r->sids, sizeof(r->sids[0]), r->count, (ndr_pull_flags_fn_t)ndr_pull_lsa_TranslatedSid)); + if (r->names) { + NDR_ALLOC_N_SIZE(ndr, r->names, r->count, sizeof(r->names[0])); + NDR_CHECK(ndr_pull_array(ndr, ndr_flags, (void **)r->names, sizeof(r->names[0]), r->count, (ndr_pull_flags_fn_t)ndr_pull_lsa_TranslatedName)); } done: return NT_STATUS_OK; } -NTSTATUS ndr_push_lsa_LookupNames(struct ndr_push *ndr, struct lsa_LookupNames *r) +NTSTATUS ndr_push_lsa_LookupSids(struct ndr_push *ndr, struct lsa_LookupSids *r) { NDR_CHECK(ndr_push_policy_handle(ndr, r->in.handle)); - NDR_CHECK(ndr_push_uint32(ndr, r->in.num_names)); - if (r->in.names) { - int ndr_flags = NDR_SCALARS|NDR_BUFFERS; - NDR_CHECK(ndr_push_array(ndr, ndr_flags, r->in.names, sizeof(r->in.names[0]), r->in.num_names, (ndr_push_flags_fn_t)ndr_push_lsa_Name)); - } - NDR_CHECK(ndr_push_lsa_TransSidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids)); + NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sids)); + NDR_CHECK(ndr_push_lsa_TransNameArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.names)); NDR_CHECK(ndr_push_uint16(ndr, r->in.level)); NDR_CHECK(ndr_push_uint32(ndr, *r->in.count)); return NT_STATUS_OK; } -NTSTATUS ndr_pull_lsa_LookupNames(struct ndr_pull *ndr, struct lsa_LookupNames *r) +NTSTATUS ndr_pull_lsa_LookupSids(struct ndr_pull *ndr, struct lsa_LookupSids *r) { uint32 _ptr_domains; NDR_ALLOC(ndr, r->out.domains); @@ -547,10 +684,420 @@ NTSTATUS ndr_pull_lsa_LookupNames(struct ndr_pull *ndr, struct lsa_LookupNames * if (r->out.domains) { NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains)); } - NDR_CHECK(ndr_pull_lsa_TransSidArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sids)); + NDR_CHECK(ndr_pull_lsa_TransNameArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.names)); NDR_CHECK(ndr_pull_uint32(ndr, r->out.count)); NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); return NT_STATUS_OK; } +NTSTATUS ndr_push_CREATESECRET(struct ndr_push *ndr, struct CREATESECRET *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_CREATESECRET(struct ndr_pull *ndr, struct CREATESECRET *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_OPENACCOUNT(struct ndr_push *ndr, struct OPENACCOUNT *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_OPENACCOUNT(struct ndr_pull *ndr, struct OPENACCOUNT *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_ENUMPRIVSACCOUNT(struct ndr_push *ndr, struct ENUMPRIVSACCOUNT *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_ENUMPRIVSACCOUNT(struct ndr_pull *ndr, struct ENUMPRIVSACCOUNT *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_ADDPRIVS(struct ndr_push *ndr, struct ADDPRIVS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_ADDPRIVS(struct ndr_pull *ndr, struct ADDPRIVS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_REMOVEPRIVS(struct ndr_push *ndr, struct REMOVEPRIVS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_REMOVEPRIVS(struct ndr_pull *ndr, struct REMOVEPRIVS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_GETQUOTAS(struct ndr_push *ndr, struct GETQUOTAS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_GETQUOTAS(struct ndr_pull *ndr, struct GETQUOTAS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_SETQUOTAS(struct ndr_push *ndr, struct SETQUOTAS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_SETQUOTAS(struct ndr_pull *ndr, struct SETQUOTAS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_GETSYSTEMACCOUNT(struct ndr_push *ndr, struct GETSYSTEMACCOUNT *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_GETSYSTEMACCOUNT(struct ndr_pull *ndr, struct GETSYSTEMACCOUNT *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_SETSYSTEMACCOUNT(struct ndr_push *ndr, struct SETSYSTEMACCOUNT *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_SETSYSTEMACCOUNT(struct ndr_pull *ndr, struct SETSYSTEMACCOUNT *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_OPENTRUSTDOM(struct ndr_push *ndr, struct OPENTRUSTDOM *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_OPENTRUSTDOM(struct ndr_pull *ndr, struct OPENTRUSTDOM *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_QUERYTRUSTDOM(struct ndr_push *ndr, struct QUERYTRUSTDOM *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_QUERYTRUSTDOM(struct ndr_pull *ndr, struct QUERYTRUSTDOM *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_SETINFOTRUSTDOM(struct ndr_push *ndr, struct SETINFOTRUSTDOM *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_SETINFOTRUSTDOM(struct ndr_pull *ndr, struct SETINFOTRUSTDOM *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_OPENSECRET(struct ndr_push *ndr, struct OPENSECRET *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_OPENSECRET(struct ndr_pull *ndr, struct OPENSECRET *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_SETSECRET(struct ndr_push *ndr, struct SETSECRET *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_SETSECRET(struct ndr_pull *ndr, struct SETSECRET *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_QUERYSECRET(struct ndr_push *ndr, struct QUERYSECRET *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_QUERYSECRET(struct ndr_pull *ndr, struct QUERYSECRET *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_LOOKUPPRIVVALUE(struct ndr_push *ndr, struct LOOKUPPRIVVALUE *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_LOOKUPPRIVVALUE(struct ndr_pull *ndr, struct LOOKUPPRIVVALUE *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_LOOKUPPRIVNAME(struct ndr_push *ndr, struct LOOKUPPRIVNAME *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_LOOKUPPRIVNAME(struct ndr_pull *ndr, struct LOOKUPPRIVNAME *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_PRIV_GET_DISPNAME(struct ndr_push *ndr, struct PRIV_GET_DISPNAME *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_PRIV_GET_DISPNAME(struct ndr_pull *ndr, struct PRIV_GET_DISPNAME *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_DELETEOBJECT(struct ndr_push *ndr, struct DELETEOBJECT *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_DELETEOBJECT(struct ndr_pull *ndr, struct DELETEOBJECT *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_ENUMACCTWITHRIGHT(struct ndr_push *ndr, struct ENUMACCTWITHRIGHT *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_ENUMACCTWITHRIGHT(struct ndr_pull *ndr, struct ENUMACCTWITHRIGHT *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_ENUMACCTRIGHTS(struct ndr_push *ndr, struct ENUMACCTRIGHTS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_ENUMACCTRIGHTS(struct ndr_pull *ndr, struct ENUMACCTRIGHTS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_ADDACCTRIGHTS(struct ndr_push *ndr, struct ADDACCTRIGHTS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_ADDACCTRIGHTS(struct ndr_pull *ndr, struct ADDACCTRIGHTS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_REMOVEACCTRIGHTS(struct ndr_push *ndr, struct REMOVEACCTRIGHTS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_REMOVEACCTRIGHTS(struct ndr_pull *ndr, struct REMOVEACCTRIGHTS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_QUERYTRUSTDOMINFO(struct ndr_push *ndr, struct QUERYTRUSTDOMINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_QUERYTRUSTDOMINFO(struct ndr_pull *ndr, struct QUERYTRUSTDOMINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_SETTRUSTDOMINFO(struct ndr_push *ndr, struct SETTRUSTDOMINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_SETTRUSTDOMINFO(struct ndr_pull *ndr, struct SETTRUSTDOMINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_DELETETRUSTDOM(struct ndr_push *ndr, struct DELETETRUSTDOM *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_DELETETRUSTDOM(struct ndr_pull *ndr, struct DELETETRUSTDOM *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_STOREPRIVDATA(struct ndr_push *ndr, struct STOREPRIVDATA *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_STOREPRIVDATA(struct ndr_pull *ndr, struct STOREPRIVDATA *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_RETRPRIVDATA(struct ndr_push *ndr, struct RETRPRIVDATA *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_RETRPRIVDATA(struct ndr_pull *ndr, struct RETRPRIVDATA *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_lsa_OpenPolicy2(struct ndr_push *ndr, struct lsa_OpenPolicy2 *r) +{ + NDR_CHECK(ndr_push_ptr(ndr, r->in.system_name)); + if (r->in.system_name) { + NDR_CHECK(ndr_push_unistr(ndr, r->in.system_name)); + } + NDR_CHECK(ndr_push_lsa_ObjectAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.attr)); + NDR_CHECK(ndr_push_uint32(ndr, r->in.desired_access)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_lsa_OpenPolicy2(struct ndr_pull *ndr, struct lsa_OpenPolicy2 *r) +{ + NDR_CHECK(ndr_pull_policy_handle(ndr, r->out.handle)); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_UNK_GET_CONNUSER(struct ndr_push *ndr, struct UNK_GET_CONNUSER *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_UNK_GET_CONNUSER(struct ndr_pull *ndr, struct UNK_GET_CONNUSER *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_QUERYINFO2(struct ndr_push *ndr, struct QUERYINFO2 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_QUERYINFO2(struct ndr_pull *ndr, struct QUERYINFO2 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + diff --git a/source4/librpc/ndr/ndr_lsa.h b/source4/librpc/ndr/ndr_lsa.h index ddb0eed323..92f596b692 100644 --- a/source4/librpc/ndr/ndr_lsa.h +++ b/source4/librpc/ndr/ndr_lsa.h @@ -1,5 +1,66 @@ /* header auto-generated by pidl */ +struct lsa_Close { + struct { + struct policy_handle *handle; + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct lsa_Delete { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct lsa_EnumPrivs { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct lsa_QuerySecObj { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct lsa_SetSecObj { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct lsa_ChangePassword { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + struct lsa_QosInfo { uint16 impersonation_level; uint8 context_mode; @@ -28,15 +89,41 @@ struct lsa_OpenPolicy { }; -struct lsa_OpenPolicy2 { +struct lsa_QueryInfoPolicy { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct lsa_SetInfoPolicy { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct lsa_ClearAuditLog { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct lsa_CreateAccount { struct { - const char *system_name; - struct lsa_ObjectAttribute *attr; - uint32 desired_access; } in; struct { - struct policy_handle *handle; NTSTATUS result; } out; @@ -51,7 +138,7 @@ struct lsa_SidArray { struct lsa_SidPtr *sids; }; -struct lsa_EnumSids { +struct lsa_EnumAccounts { struct { struct policy_handle *handle; uint32 *resume_handle; @@ -66,21 +153,41 @@ struct lsa_EnumSids { }; +struct lsa_CreateTrustDom { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct lsa_EnumTrustDom { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + struct lsa_Name { uint16 name_len; uint16 name_size; const char *name; }; -struct lsa_TranslatedName { +struct lsa_TranslatedSid { uint16 sid_type; - struct lsa_Name name; + uint32 rid; uint32 sid_index; }; -struct lsa_TransNameArray { +struct lsa_TransSidArray { uint32 count; - struct lsa_TranslatedName *names; + struct lsa_TranslatedSid *sids; }; struct lsa_TrustInformation { @@ -94,56 +201,412 @@ struct lsa_RefDomainList { uint32 max_count; }; -struct lsa_LookupSids { +struct lsa_LookupNames { struct { struct policy_handle *handle; - struct lsa_SidArray *sids; - struct lsa_TransNameArray *names; + uint32 num_names; + struct lsa_Name *names; + struct lsa_TransSidArray *sids; uint16 level; uint32 *count; } in; struct { struct lsa_RefDomainList *domains; - struct lsa_TransNameArray *names; + struct lsa_TransSidArray *sids; uint32 *count; NTSTATUS result; } out; }; -struct lsa_TranslatedSid { +struct lsa_TranslatedName { uint16 sid_type; - uint32 rid; + struct lsa_Name name; uint32 sid_index; }; -struct lsa_TransSidArray { +struct lsa_TransNameArray { uint32 count; - struct lsa_TranslatedSid *sids; + struct lsa_TranslatedName *names; }; -struct lsa_LookupNames { +struct lsa_LookupSids { struct { struct policy_handle *handle; - uint32 num_names; - struct lsa_Name *names; - struct lsa_TransSidArray *sids; + struct lsa_SidArray *sids; + struct lsa_TransNameArray *names; uint16 level; uint32 *count; } in; struct { struct lsa_RefDomainList *domains; - struct lsa_TransSidArray *sids; + struct lsa_TransNameArray *names; uint32 *count; NTSTATUS result; } out; }; -#define DCERPC_LSA_OPENPOLICY 0 -#define DCERPC_LSA_OPENPOLICY2 1 -#define DCERPC_LSA_ENUMSIDS 2 -#define DCERPC_LSA_LOOKUPSIDS 3 -#define DCERPC_LSA_LOOKUPNAMES 4 +struct CREATESECRET { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct OPENACCOUNT { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct ENUMPRIVSACCOUNT { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct ADDPRIVS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct REMOVEPRIVS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct GETQUOTAS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct SETQUOTAS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct GETSYSTEMACCOUNT { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct SETSYSTEMACCOUNT { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct OPENTRUSTDOM { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct QUERYTRUSTDOM { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct SETINFOTRUSTDOM { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct OPENSECRET { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct SETSECRET { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct QUERYSECRET { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct LOOKUPPRIVVALUE { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct LOOKUPPRIVNAME { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct PRIV_GET_DISPNAME { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct DELETEOBJECT { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct ENUMACCTWITHRIGHT { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct ENUMACCTRIGHTS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct ADDACCTRIGHTS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct REMOVEACCTRIGHTS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct QUERYTRUSTDOMINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct SETTRUSTDOMINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct DELETETRUSTDOM { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct STOREPRIVDATA { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct RETRPRIVDATA { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct lsa_OpenPolicy2 { + struct { + const char *system_name; + struct lsa_ObjectAttribute *attr; + uint32 desired_access; + } in; + + struct { + struct policy_handle *handle; + NTSTATUS result; + } out; + +}; + +struct UNK_GET_CONNUSER { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct QUERYINFO2 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +#define DCERPC_LSA_CLOSE 0 +#define DCERPC_LSA_DELETE 1 +#define DCERPC_LSA_ENUMPRIVS 2 +#define DCERPC_LSA_QUERYSECOBJ 3 +#define DCERPC_LSA_SETSECOBJ 4 +#define DCERPC_LSA_CHANGEPASSWORD 5 +#define DCERPC_LSA_OPENPOLICY 6 +#define DCERPC_LSA_QUERYINFOPOLICY 7 +#define DCERPC_LSA_SETINFOPOLICY 8 +#define DCERPC_LSA_CLEARAUDITLOG 9 +#define DCERPC_LSA_CREATEACCOUNT 10 +#define DCERPC_LSA_ENUMACCOUNTS 11 +#define DCERPC_LSA_CREATETRUSTDOM 12 +#define DCERPC_LSA_ENUMTRUSTDOM 13 +#define DCERPC_LSA_LOOKUPNAMES 14 +#define DCERPC_LSA_LOOKUPSIDS 15 +#define DCERPC_CREATESECRET 16 +#define DCERPC_OPENACCOUNT 17 +#define DCERPC_ENUMPRIVSACCOUNT 18 +#define DCERPC_ADDPRIVS 19 +#define DCERPC_REMOVEPRIVS 20 +#define DCERPC_GETQUOTAS 21 +#define DCERPC_SETQUOTAS 22 +#define DCERPC_GETSYSTEMACCOUNT 23 +#define DCERPC_SETSYSTEMACCOUNT 24 +#define DCERPC_OPENTRUSTDOM 25 +#define DCERPC_QUERYTRUSTDOM 26 +#define DCERPC_SETINFOTRUSTDOM 27 +#define DCERPC_OPENSECRET 28 +#define DCERPC_SETSECRET 29 +#define DCERPC_QUERYSECRET 30 +#define DCERPC_LOOKUPPRIVVALUE 31 +#define DCERPC_LOOKUPPRIVNAME 32 +#define DCERPC_PRIV_GET_DISPNAME 33 +#define DCERPC_DELETEOBJECT 34 +#define DCERPC_ENUMACCTWITHRIGHT 35 +#define DCERPC_ENUMACCTRIGHTS 36 +#define DCERPC_ADDACCTRIGHTS 37 +#define DCERPC_REMOVEACCTRIGHTS 38 +#define DCERPC_QUERYTRUSTDOMINFO 39 +#define DCERPC_SETTRUSTDOMINFO 40 +#define DCERPC_DELETETRUSTDOM 41 +#define DCERPC_STOREPRIVDATA 42 +#define DCERPC_RETRPRIVDATA 43 +#define DCERPC_LSA_OPENPOLICY2 44 +#define DCERPC_UNK_GET_CONNUSER 45 +#define DCERPC_QUERYINFO2 46 diff --git a/source4/librpc/rpc/rpc_echo.c b/source4/librpc/rpc/rpc_echo.c index 9cf81a23ac..e5cbb913a1 100644 --- a/source4/librpc/rpc/rpc_echo.c +++ b/source4/librpc/rpc/rpc_echo.c @@ -1,30 +1,9 @@ -/* - Unix SMB/CIFS implementation. - - rpc echo pipe calls - - Copyright (C) Andrew Tridgell 2003 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ +/* dcerpc client calls auto-generated by pidl */ #include "includes.h" -NTSTATUS dcerpc_echo_AddOne(struct dcerpc_pipe *p, - TALLOC_CTX *mem_ctx, - struct echo_AddOne *r) + +NTSTATUS dcerpc_echo_AddOne(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct echo_AddOne *r) { return dcerpc_ndr_request(p, DCERPC_ECHO_ADDONE, mem_ctx, (ndr_push_fn_t) ndr_push_echo_AddOne, @@ -32,10 +11,7 @@ NTSTATUS dcerpc_echo_AddOne(struct dcerpc_pipe *p, r); } - -NTSTATUS dcerpc_echo_EchoData(struct dcerpc_pipe *p, - TALLOC_CTX *mem_ctx, - struct echo_EchoData *r) +NTSTATUS dcerpc_echo_EchoData(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct echo_EchoData *r) { return dcerpc_ndr_request(p, DCERPC_ECHO_ECHODATA, mem_ctx, (ndr_push_fn_t) ndr_push_echo_EchoData, @@ -43,9 +19,7 @@ NTSTATUS dcerpc_echo_EchoData(struct dcerpc_pipe *p, r); } -NTSTATUS dcerpc_echo_SinkData(struct dcerpc_pipe *p, - TALLOC_CTX *mem_ctx, - struct echo_SinkData *r) +NTSTATUS dcerpc_echo_SinkData(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct echo_SinkData *r) { return dcerpc_ndr_request(p, DCERPC_ECHO_SINKDATA, mem_ctx, (ndr_push_fn_t) ndr_push_echo_SinkData, @@ -53,9 +27,7 @@ NTSTATUS dcerpc_echo_SinkData(struct dcerpc_pipe *p, r); } -NTSTATUS dcerpc_echo_SourceData(struct dcerpc_pipe *p, - TALLOC_CTX *mem_ctx, - struct echo_SourceData *r) +NTSTATUS dcerpc_echo_SourceData(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct echo_SourceData *r) { return dcerpc_ndr_request(p, DCERPC_ECHO_SOURCEDATA, mem_ctx, (ndr_push_fn_t) ndr_push_echo_SourceData, diff --git a/source4/librpc/rpc/rpc_lsa.c b/source4/librpc/rpc/rpc_lsa.c index ee8075d5bd..bc2f00c33d 100644 --- a/source4/librpc/rpc/rpc_lsa.c +++ b/source4/librpc/rpc/rpc_lsa.c @@ -1,38 +1,96 @@ -/* - Unix SMB/CIFS implementation. - - rpc lsa pipe calls - - Copyright (C) Andrew Tridgell 2003 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ +/* dcerpc client calls auto-generated by pidl */ #include "includes.h" -/* - OpenPolicy interface -*/ -NTSTATUS dcerpc_lsa_OpenPolicy(struct dcerpc_pipe *p, - TALLOC_CTX *mem_ctx, - struct lsa_OpenPolicy *r) +NTSTATUS dcerpc_lsa_Close(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_Close *r) { NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_CLOSE, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_Close, + (ndr_pull_fn_t) ndr_pull_lsa_Close, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_lsa_Delete(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_Delete *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_DELETE, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_Delete, + (ndr_pull_fn_t) ndr_pull_lsa_Delete, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_lsa_EnumPrivs(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_EnumPrivs *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_ENUMPRIVS, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_EnumPrivs, + (ndr_pull_fn_t) ndr_pull_lsa_EnumPrivs, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_lsa_QuerySecObj(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_QuerySecObj *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_QUERYSECOBJ, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_QuerySecObj, + (ndr_pull_fn_t) ndr_pull_lsa_QuerySecObj, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_lsa_SetSecObj(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_SetSecObj *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_SETSECOBJ, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_SetSecObj, + (ndr_pull_fn_t) ndr_pull_lsa_SetSecObj, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_lsa_ChangePassword(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_ChangePassword *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_CHANGEPASSWORD, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_ChangePassword, + (ndr_pull_fn_t) ndr_pull_lsa_ChangePassword, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} - status = dcerpc_ndr_request(p, LSA_OPENPOLICY, mem_ctx, +NTSTATUS dcerpc_lsa_OpenPolicy(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_OpenPolicy *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_OPENPOLICY, mem_ctx, (ndr_push_fn_t) ndr_push_lsa_OpenPolicy, (ndr_pull_fn_t) ndr_pull_lsa_OpenPolicy, r); @@ -43,40 +101,82 @@ NTSTATUS dcerpc_lsa_OpenPolicy(struct dcerpc_pipe *p, return r->out.result; } +NTSTATUS dcerpc_lsa_QueryInfoPolicy(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_QueryInfoPolicy *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_QUERYINFOPOLICY, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_QueryInfoPolicy, + (ndr_pull_fn_t) ndr_pull_lsa_QueryInfoPolicy, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} -/* - OpenPolicy2 interface -*/ -NTSTATUS dcerpc_lsa_OpenPolicy2(struct dcerpc_pipe *p, - TALLOC_CTX *mem_ctx, - struct lsa_OpenPolicy2 *r) +NTSTATUS dcerpc_lsa_SetInfoPolicy(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_SetInfoPolicy *r) { NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_SETINFOPOLICY, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_SetInfoPolicy, + (ndr_pull_fn_t) ndr_pull_lsa_SetInfoPolicy, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} - status = dcerpc_ndr_request(p, LSA_OPENPOLICY2, mem_ctx, - (ndr_push_fn_t) ndr_push_lsa_OpenPolicy2, - (ndr_pull_fn_t) ndr_pull_lsa_OpenPolicy2, +NTSTATUS dcerpc_lsa_ClearAuditLog(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_ClearAuditLog *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_CLEARAUDITLOG, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_ClearAuditLog, + (ndr_pull_fn_t) ndr_pull_lsa_ClearAuditLog, r); if (!NT_STATUS_IS_OK(status)) { return status; } + + return r->out.result; +} +NTSTATUS dcerpc_lsa_CreateAccount(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_CreateAccount *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_CREATEACCOUNT, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_CreateAccount, + (ndr_pull_fn_t) ndr_pull_lsa_CreateAccount, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + return r->out.result; } -/* - EnumSids interface -*/ -NTSTATUS dcerpc_lsa_EnumSids(struct dcerpc_pipe *p, - TALLOC_CTX *mem_ctx, - struct lsa_EnumSids *r) +NTSTATUS dcerpc_lsa_EnumAccounts(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_EnumAccounts *r) { NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_ENUMACCOUNTS, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_EnumAccounts, + (ndr_pull_fn_t) ndr_pull_lsa_EnumAccounts, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} - /* make the call */ - status = dcerpc_ndr_request(p, LSA_ENUM_ACCOUNTS, mem_ctx, - (ndr_push_fn_t) ndr_push_lsa_EnumSids, - (ndr_pull_fn_t) ndr_pull_lsa_EnumSids, +NTSTATUS dcerpc_lsa_CreateTrustDom(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_CreateTrustDom *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_CREATETRUSTDOM, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_CreateTrustDom, + (ndr_pull_fn_t) ndr_pull_lsa_CreateTrustDom, r); if (!NT_STATUS_IS_OK(status)) { return status; @@ -85,16 +185,38 @@ NTSTATUS dcerpc_lsa_EnumSids(struct dcerpc_pipe *p, return r->out.result; } -/* - LookupSids interface -*/ -NTSTATUS dcerpc_lsa_LookupSids(struct dcerpc_pipe *p, - TALLOC_CTX *mem_ctx, - struct lsa_LookupSids *r) +NTSTATUS dcerpc_lsa_EnumTrustDom(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_EnumTrustDom *r) { NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_ENUMTRUSTDOM, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_EnumTrustDom, + (ndr_pull_fn_t) ndr_pull_lsa_EnumTrustDom, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} - status = dcerpc_ndr_request(p, LSA_LOOKUPSIDS, mem_ctx, +NTSTATUS dcerpc_lsa_LookupNames(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_LookupNames *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_LOOKUPNAMES, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_LookupNames, + (ndr_pull_fn_t) ndr_pull_lsa_LookupNames, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_lsa_LookupSids(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_LookupSids *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_LOOKUPSIDS, mem_ctx, (ndr_push_fn_t) ndr_push_lsa_LookupSids, (ndr_pull_fn_t) ndr_pull_lsa_LookupSids, r); @@ -105,18 +227,432 @@ NTSTATUS dcerpc_lsa_LookupSids(struct dcerpc_pipe *p, return r->out.result; } -/* - LookupNames interface -*/ -NTSTATUS dcerpc_lsa_LookupNames(struct dcerpc_pipe *p, - TALLOC_CTX *mem_ctx, - struct lsa_LookupNames *r) +NTSTATUS dcerpc_CREATESECRET(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct CREATESECRET *r) { NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_CREATESECRET, mem_ctx, + (ndr_push_fn_t) ndr_push_CREATESECRET, + (ndr_pull_fn_t) ndr_pull_CREATESECRET, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} - status = dcerpc_ndr_request(p, LSA_LOOKUPNAMES, mem_ctx, - (ndr_push_fn_t) ndr_push_lsa_LookupNames, - (ndr_pull_fn_t) ndr_pull_lsa_LookupNames, +NTSTATUS dcerpc_OPENACCOUNT(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct OPENACCOUNT *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_OPENACCOUNT, mem_ctx, + (ndr_push_fn_t) ndr_push_OPENACCOUNT, + (ndr_pull_fn_t) ndr_pull_OPENACCOUNT, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_ENUMPRIVSACCOUNT(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct ENUMPRIVSACCOUNT *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_ENUMPRIVSACCOUNT, mem_ctx, + (ndr_push_fn_t) ndr_push_ENUMPRIVSACCOUNT, + (ndr_pull_fn_t) ndr_pull_ENUMPRIVSACCOUNT, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_ADDPRIVS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct ADDPRIVS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_ADDPRIVS, mem_ctx, + (ndr_push_fn_t) ndr_push_ADDPRIVS, + (ndr_pull_fn_t) ndr_pull_ADDPRIVS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_REMOVEPRIVS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct REMOVEPRIVS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_REMOVEPRIVS, mem_ctx, + (ndr_push_fn_t) ndr_push_REMOVEPRIVS, + (ndr_pull_fn_t) ndr_pull_REMOVEPRIVS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_GETQUOTAS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct GETQUOTAS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_GETQUOTAS, mem_ctx, + (ndr_push_fn_t) ndr_push_GETQUOTAS, + (ndr_pull_fn_t) ndr_pull_GETQUOTAS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_SETQUOTAS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct SETQUOTAS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SETQUOTAS, mem_ctx, + (ndr_push_fn_t) ndr_push_SETQUOTAS, + (ndr_pull_fn_t) ndr_pull_SETQUOTAS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_GETSYSTEMACCOUNT(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct GETSYSTEMACCOUNT *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_GETSYSTEMACCOUNT, mem_ctx, + (ndr_push_fn_t) ndr_push_GETSYSTEMACCOUNT, + (ndr_pull_fn_t) ndr_pull_GETSYSTEMACCOUNT, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_SETSYSTEMACCOUNT(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct SETSYSTEMACCOUNT *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SETSYSTEMACCOUNT, mem_ctx, + (ndr_push_fn_t) ndr_push_SETSYSTEMACCOUNT, + (ndr_pull_fn_t) ndr_pull_SETSYSTEMACCOUNT, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_OPENTRUSTDOM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct OPENTRUSTDOM *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_OPENTRUSTDOM, mem_ctx, + (ndr_push_fn_t) ndr_push_OPENTRUSTDOM, + (ndr_pull_fn_t) ndr_pull_OPENTRUSTDOM, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_QUERYTRUSTDOM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct QUERYTRUSTDOM *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_QUERYTRUSTDOM, mem_ctx, + (ndr_push_fn_t) ndr_push_QUERYTRUSTDOM, + (ndr_pull_fn_t) ndr_pull_QUERYTRUSTDOM, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_SETINFOTRUSTDOM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct SETINFOTRUSTDOM *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SETINFOTRUSTDOM, mem_ctx, + (ndr_push_fn_t) ndr_push_SETINFOTRUSTDOM, + (ndr_pull_fn_t) ndr_pull_SETINFOTRUSTDOM, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_OPENSECRET(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct OPENSECRET *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_OPENSECRET, mem_ctx, + (ndr_push_fn_t) ndr_push_OPENSECRET, + (ndr_pull_fn_t) ndr_pull_OPENSECRET, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_SETSECRET(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct SETSECRET *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SETSECRET, mem_ctx, + (ndr_push_fn_t) ndr_push_SETSECRET, + (ndr_pull_fn_t) ndr_pull_SETSECRET, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_QUERYSECRET(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct QUERYSECRET *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_QUERYSECRET, mem_ctx, + (ndr_push_fn_t) ndr_push_QUERYSECRET, + (ndr_pull_fn_t) ndr_pull_QUERYSECRET, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_LOOKUPPRIVVALUE(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct LOOKUPPRIVVALUE *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LOOKUPPRIVVALUE, mem_ctx, + (ndr_push_fn_t) ndr_push_LOOKUPPRIVVALUE, + (ndr_pull_fn_t) ndr_pull_LOOKUPPRIVVALUE, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_LOOKUPPRIVNAME(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct LOOKUPPRIVNAME *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LOOKUPPRIVNAME, mem_ctx, + (ndr_push_fn_t) ndr_push_LOOKUPPRIVNAME, + (ndr_pull_fn_t) ndr_pull_LOOKUPPRIVNAME, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_PRIV_GET_DISPNAME(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct PRIV_GET_DISPNAME *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_PRIV_GET_DISPNAME, mem_ctx, + (ndr_push_fn_t) ndr_push_PRIV_GET_DISPNAME, + (ndr_pull_fn_t) ndr_pull_PRIV_GET_DISPNAME, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_DELETEOBJECT(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct DELETEOBJECT *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_DELETEOBJECT, mem_ctx, + (ndr_push_fn_t) ndr_push_DELETEOBJECT, + (ndr_pull_fn_t) ndr_pull_DELETEOBJECT, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_ENUMACCTWITHRIGHT(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct ENUMACCTWITHRIGHT *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_ENUMACCTWITHRIGHT, mem_ctx, + (ndr_push_fn_t) ndr_push_ENUMACCTWITHRIGHT, + (ndr_pull_fn_t) ndr_pull_ENUMACCTWITHRIGHT, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_ENUMACCTRIGHTS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct ENUMACCTRIGHTS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_ENUMACCTRIGHTS, mem_ctx, + (ndr_push_fn_t) ndr_push_ENUMACCTRIGHTS, + (ndr_pull_fn_t) ndr_pull_ENUMACCTRIGHTS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_ADDACCTRIGHTS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct ADDACCTRIGHTS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_ADDACCTRIGHTS, mem_ctx, + (ndr_push_fn_t) ndr_push_ADDACCTRIGHTS, + (ndr_pull_fn_t) ndr_pull_ADDACCTRIGHTS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_REMOVEACCTRIGHTS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct REMOVEACCTRIGHTS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_REMOVEACCTRIGHTS, mem_ctx, + (ndr_push_fn_t) ndr_push_REMOVEACCTRIGHTS, + (ndr_pull_fn_t) ndr_pull_REMOVEACCTRIGHTS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_QUERYTRUSTDOMINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct QUERYTRUSTDOMINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_QUERYTRUSTDOMINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_QUERYTRUSTDOMINFO, + (ndr_pull_fn_t) ndr_pull_QUERYTRUSTDOMINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_SETTRUSTDOMINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct SETTRUSTDOMINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SETTRUSTDOMINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_SETTRUSTDOMINFO, + (ndr_pull_fn_t) ndr_pull_SETTRUSTDOMINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_DELETETRUSTDOM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct DELETETRUSTDOM *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_DELETETRUSTDOM, mem_ctx, + (ndr_push_fn_t) ndr_push_DELETETRUSTDOM, + (ndr_pull_fn_t) ndr_pull_DELETETRUSTDOM, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_STOREPRIVDATA(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct STOREPRIVDATA *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_STOREPRIVDATA, mem_ctx, + (ndr_push_fn_t) ndr_push_STOREPRIVDATA, + (ndr_pull_fn_t) ndr_pull_STOREPRIVDATA, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_RETRPRIVDATA(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct RETRPRIVDATA *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_RETRPRIVDATA, mem_ctx, + (ndr_push_fn_t) ndr_push_RETRPRIVDATA, + (ndr_pull_fn_t) ndr_pull_RETRPRIVDATA, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_lsa_OpenPolicy2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct lsa_OpenPolicy2 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_LSA_OPENPOLICY2, mem_ctx, + (ndr_push_fn_t) ndr_push_lsa_OpenPolicy2, + (ndr_pull_fn_t) ndr_pull_lsa_OpenPolicy2, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_UNK_GET_CONNUSER(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct UNK_GET_CONNUSER *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_UNK_GET_CONNUSER, mem_ctx, + (ndr_push_fn_t) ndr_push_UNK_GET_CONNUSER, + (ndr_pull_fn_t) ndr_pull_UNK_GET_CONNUSER, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_QUERYINFO2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct QUERYINFO2 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_QUERYINFO2, mem_ctx, + (ndr_push_fn_t) ndr_push_QUERYINFO2, + (ndr_pull_fn_t) ndr_pull_QUERYINFO2, r); if (!NT_STATUS_IS_OK(status)) { return status; diff --git a/source4/script/build_idl.sh b/source4/script/build_idl.sh index 302d7560bd..24f18be2ef 100755 --- a/source4/script/build_idl.sh +++ b/source4/script/build_idl.sh @@ -4,7 +4,7 @@ for f in librpc/idl/*.idl; do echo Processing $f base=`basename $f .idl` ndr=librpc/ndr/ndr_$base - pidl.pl --output $ndr --parse --header --parser $f || exit 1 + pidl.pl --output $ndr --parse --header --parser --client librpc/rpc/rpc_$base.c $f || exit 1 done exit 0 diff --git a/source4/torture/rpc/lsa.c b/source4/torture/rpc/lsa.c index 61288b5f5b..9df5dc0078 100644 --- a/source4/torture/rpc/lsa.c +++ b/source4/torture/rpc/lsa.c @@ -271,17 +271,17 @@ static BOOL test_LookupSids(struct dcerpc_pipe *p, return True; } -static BOOL test_EnumSids(struct dcerpc_pipe *p, +static BOOL test_EnumAccounts(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct policy_handle *handle) { NTSTATUS status; - struct lsa_EnumSids r; + struct lsa_EnumAccounts r; struct lsa_SidArray sids1, sids2; uint32 resume_handle = 0; int i; - printf("\ntesting EnumSids\n"); + printf("\ntesting EnumAccounts\n"); r.in.handle = handle; r.in.resume_handle = &resume_handle; @@ -290,9 +290,9 @@ static BOOL test_EnumSids(struct dcerpc_pipe *p, r.out.sids = &sids1; resume_handle = 0; - status = dcerpc_lsa_EnumSids(p, mem_ctx, &r); + status = dcerpc_lsa_EnumAccounts(p, mem_ctx, &r); if (!NT_STATUS_IS_OK(status)) { - printf("EnumSids failed - %s\n", nt_errstr(status)); + printf("EnumAccounts failed - %s\n", nt_errstr(status)); return False; } @@ -310,14 +310,14 @@ static BOOL test_EnumSids(struct dcerpc_pipe *p, return True; } - printf("trying EnumSids partial listing (asking for 1 at 2)\n"); + printf("trying EnumAccounts partial listing (asking for 1 at 2)\n"); resume_handle = 2; r.in.num_entries = 1; r.out.sids = &sids2; - status = dcerpc_lsa_EnumSids(p, mem_ctx, &r); + status = dcerpc_lsa_EnumAccounts(p, mem_ctx, &r); if (!NT_STATUS_IS_OK(status)) { - printf("EnumSids failed - %s\n", nt_errstr(status)); + printf("EnumAccounts failed - %s\n", nt_errstr(status)); return False; } @@ -352,7 +352,7 @@ BOOL torture_rpc_lsa(int dummy) ret = False; } - if (!test_EnumSids(p, mem_ctx, &handle)) { + if (!test_EnumAccounts(p, mem_ctx, &handle)) { ret = False; } |