From ba5a060136145abdfa4915fe0fecc4afe1180627 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 15 Nov 2003 06:00:21 +0000 Subject: added the first couple of calls from samr as IDL samr_EnumDomains() works nicely (This used to be commit 7c162eaf3bb0195f9a2da05d6acd3c8e620f08d1) --- source4/Makefile.in | 7 +- source4/librpc/idl/samr.idl | 317 +++++++++++++ source4/librpc/ndr/libndr.h | 2 + source4/librpc/ndr/ndr_samr.c | 1018 +++++++++++++++++++++++++++++++++++++++++ source4/librpc/ndr/ndr_samr.h | 779 +++++++++++++++++++++++++++++++ source4/librpc/rpc/rpc_samr.c | 956 ++++++++++++++++++++++++++++++++++++++ source4/torture/rpc/lsa.c | 67 +-- source4/torture/rpc/samr.c | 97 ++++ source4/torture/torture.c | 1 + 9 files changed, 3178 insertions(+), 66 deletions(-) create mode 100644 source4/librpc/idl/samr.idl create mode 100644 source4/librpc/ndr/ndr_samr.c create mode 100644 source4/librpc/ndr/ndr_samr.h create mode 100644 source4/librpc/rpc/rpc_samr.c create mode 100644 source4/torture/rpc/samr.c (limited to 'source4') diff --git a/source4/Makefile.in b/source4/Makefile.in index f2b3a25117..fac7f41572 100644 --- a/source4/Makefile.in +++ b/source4/Makefile.in @@ -195,10 +195,11 @@ LIBCLIUTIL_OBJ = libcli/util/asn1.o \ LIBRAW_NDR_OBJ = librpc/ndr/ndr.o librpc/ndr/ndr_basic.o librpc/ndr/ndr_sec.o \ librpc/ndr/ndr_echo.o librpc/ndr/ndr_misc.o librpc/ndr/ndr_lsa.o \ - librpc/ndr/ndr_dfs.o librpc/ndr/ndr_spoolss.o + librpc/ndr/ndr_dfs.o librpc/ndr/ndr_samr.o librpc/ndr/ndr_spoolss.o LIBRAW_RPC_OBJ = librpc/rpc/dcerpc.o librpc/rpc/rpc_echo.o librpc/rpc/rpc_lsa.o \ - librpc/rpc/dcerpc_smb.o librpc/rpc/rpc_dfs.o librpc/rpc/rpc_spoolss.o + librpc/rpc/dcerpc_smb.o librpc/rpc/rpc_dfs.o librpc/rpc/rpc_spoolss.o \ + librpc/rpc/rpc_samr.o LIBRAW_OBJ = libcli/raw/rawfile.o libcli/raw/smb_signing.o \ libcli/raw/clisocket.o libcli/raw/clitransport.o \ @@ -507,7 +508,7 @@ SMBTORTURE_RAW_OBJ = torture/raw/qfsinfo.o torture/raw/qfileinfo.o torture/raw/s torture/raw/write.o torture/raw/lock.o torture/raw/rename.o torture/raw/seek.o SMBTORTURE_RPC_OBJ = torture/rpc/lsa.o torture/rpc/echo.o torture/rpc/dfs.o \ - torture/rpc/spoolss.o + torture/rpc/spoolss.o torture/rpc/samr.o SMBTORTURE_OBJ1 = torture/torture.o torture/torture_util.o torture/nbio.o torture/scanner.o \ torture/utable.o torture/denytest.o torture/mangle_test.o \ diff --git a/source4/librpc/idl/samr.idl b/source4/librpc/idl/samr.idl new file mode 100644 index 0000000000..fd71c49369 --- /dev/null +++ b/source4/librpc/idl/samr.idl @@ -0,0 +1,317 @@ +/* + samr interface definition +*/ + +[ uuid(12345778-1234-abcd-ef00-0123456789ac), + version(1.0), + pointer_default(unique) +] interface lsarpc +{ + /******************/ + /* Function: 0x00 */ + NTSTATUS samr_Connect ( + /* notice the lack of [string] */ + [in] uint16 *system_name, + [in] uint32 access_mask, + [out,ref] policy_handle *handle + ); + + + /******************/ + /* Function: 0x01 */ + NTSTATUS samr_Close (); + + /******************/ + /* Function: 0x02 */ + NTSTATUS samr_SetSecurity (); + + /******************/ + /* Function: 0x03 */ + NTSTATUS samr_QuerySecurity (); + + /******************/ + /* Function: 0x04 */ + NTSTATUS samr_Shutdown (); + + /******************/ + /* Function: 0x05 */ + NTSTATUS samr_LookupDomain (); + + /******************/ + /* Function: 0x06 */ + + typedef struct { + uint16 name_len; + uint16 name_size; + unistr_noterm *name; + } samr_Name; + + typedef struct { + uint32 rid; + samr_Name name; + } samr_SamEntry; + + typedef struct { + uint32 count; + [size_is(count)] samr_SamEntry *entries; + } samr_SamArray; + + NTSTATUS samr_EnumDomains ( + [in,ref] policy_handle *handle, + [in,out,ref] uint32 *resume_handle, + [in] uint32 buf_size, + [out] samr_SamArray *sam, + [out,ref] uint32 *num_entries + ); + + + /************************/ + /* Function 0x07 */ + NTSTATUS samr_OPEN_DOMAIN(); + + /************************/ + /* Function 0x08 */ + NTSTATUS samr_QUERY_DOMAIN_INFO(); + + /************************/ + /* Function 0x09 */ + NTSTATUS samr_SET_DOMAIN_INFO(); + + /************************/ + /* Function 0x0a */ + NTSTATUS samr_CREATE_DOM_GROUP(); + + /************************/ + /* Function 0x0b */ + NTSTATUS samr_ENUM_DOM_GROUPS(); + + /************************/ + /* Function 0x0c */ + NTSTATUS samr_CREATE_USER_IN_DOMAIN(); + + /************************/ + /* Function 0x0d */ + NTSTATUS samr_ENUM_DOM_USERS(); + + /************************/ + /* Function 0x0e */ + NTSTATUS samr_CREATE_DOM_ALIAS(); + + /************************/ + /* Function 0x0f */ + NTSTATUS samr_ENUM_DOM_ALIASES(); + + /************************/ + /* Function 0x10 */ + NTSTATUS samr_GET_ALIAS_MEMBERSHIP(); + + /************************/ + /* Function 0x11 */ + NTSTATUS samr_LOOKUP_NAMES(); + + /************************/ + /* Function 0x12 */ + NTSTATUS samr_LOOKUP_RIDS(); + + /************************/ + /* Function 0x13 */ + NTSTATUS samr_OPEN_GROUP(); + + /************************/ + /* Function 0x14 */ + NTSTATUS samr_QUERY_GROUPINFO(); + + /************************/ + /* Function 0x15 */ + NTSTATUS samr_SET_GROUPINFO(); + + /************************/ + /* Function 0x16 */ + NTSTATUS samr_ADD_GROUPMEM(); + + /************************/ + /* Function 0x17 */ + NTSTATUS samr_DELETE_DOM_GROUP(); + + /************************/ + /* Function 0x18 */ + NTSTATUS samr_DEL_GROUPMEM(); + + /************************/ + /* Function 0x19 */ + NTSTATUS samr_QUERY_GROUPMEM(); + + /************************/ + /* Function 0x1a */ + NTSTATUS samr_SET_MEMBER_ATTRIBUTES_OF_GROUP(); + + /************************/ + /* Function 0x1b */ + NTSTATUS samr_OPEN_ALIAS(); + + /************************/ + /* Function 0x1c */ + NTSTATUS samr_QUERY_ALIASINFO(); + + /************************/ + /* Function 0x1d */ + NTSTATUS samr_SET_ALIASINFO(); + + /************************/ + /* Function 0x1e */ + NTSTATUS samr_DELETE_DOM_ALIAS(); + + /************************/ + /* Function 0x1f */ + NTSTATUS samr_ADD_ALIASMEM(); + + /************************/ + /* Function 0x20 */ + NTSTATUS samr_DEL_ALIASMEM(); + + /************************/ + /* Function 0x21 */ + NTSTATUS samr_GET_MEMBERS_IN_ALIAS(); + + /************************/ + /* Function 0x22 */ + NTSTATUS samr_OPEN_USER(); + + /************************/ + /* Function 0x23 */ + NTSTATUS samr_DELETE_DOM_USER(); + + /************************/ + /* Function 0x24 */ + NTSTATUS samr_QUERY_USERINFO(); + + /************************/ + /* Function 0x25 */ + NTSTATUS samr_SET_USERINFO(); + + /************************/ + /* Function 0x26 */ + NTSTATUS samr_CHANGE_PASSWORD_USER(); + + /************************/ + /* Function 0x27 */ + NTSTATUS samr_GET_GROUPS_FOR_USER(); + + /************************/ + /* Function 0x28 */ + NTSTATUS samr_QUERY_DISPINFO(); + + /************************/ + /* Function 0x29 */ + NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX(); + + /************************/ + /* Function 0x2a */ + NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_DOMAIN(); + + /************************/ + /* Function 0x2b */ + NTSTATUS samr_TEST_PRIVATE_FUNCTIONS_USER(); + + /************************/ + /* Function 0x2c */ + NTSTATUS samr_GET_USRDOM_PWINFO(); + + /************************/ + /* Function 0x2d */ + NTSTATUS samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN(); + + /************************/ + /* Function 0x2e */ + NTSTATUS samr_QUERY_INFORMATION_DOMAIN2(); + + /************************/ + /* Function 0x2f */ + NTSTATUS samr_QUERY_INFORMATION_USER2(); + + /************************/ + /* Function 0x30 */ + NTSTATUS samr_QUERY_DISPINFO2(); + + /************************/ + /* Function 0x31 */ + NTSTATUS samr_GET_DISPLAY_ENUMERATION_INDEX2(); + + /************************/ + /* Function 0x32 */ + NTSTATUS samr_CREATE_USER2_IN_DOMAIN(); + + /************************/ + /* Function 0x33 */ + NTSTATUS samr_QUERY_DISPINFO3(); + + /************************/ + /* Function 0x34 */ + NTSTATUS samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS(); + + /************************/ + /* Function 0x35 */ + NTSTATUS samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS(); + + /************************/ + /* Function 0x36 */ + NTSTATUS samr_OEM_CHANGE_PASSWORD_USER2(); + + /************************/ + /* Function 0x37 */ + NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER2(); + + /************************/ + /* Function 0x38 */ + NTSTATUS samr_GET_DOM_PWINFO(); + + /************************/ + /* Function 0x39 */ + NTSTATUS samr_CONNECT2(); + + /************************/ + /* Function 0x3a */ + NTSTATUS samr_SET_USERINFO2(); + + /************************/ + /* Function 0x3b */ + NTSTATUS samr_SET_BOOT_KEY_INFORMATION(); + + /************************/ + /* Function 0x3c */ + NTSTATUS samr_GET_BOOT_KEY_INFORMATION(); + + /************************/ + /* Function 0x3d */ + NTSTATUS samr_CONNECT3(); + + /************************/ + /* Function 0x3e */ + NTSTATUS samr_CONNECT4( + [in] unistr *system_name, + [in] uint32 unknown, + [in] uint32 access_mask, + [out,ref] policy_handle *handle + ); + + /************************/ + /* Function 0x3f */ + NTSTATUS samr_UNICODE_CHANGE_PASSWORD_USER3(); + + /************************/ + /* Function 0x40 */ + NTSTATUS samr_CONNECT5(); + + /************************/ + /* Function 0x41 */ + NTSTATUS samr_RID_TO_SID(); + + /************************/ + /* Function 0x42 */ + NTSTATUS samr_SET_DSRM_PASSWORD(); + + /************************/ + /* Function 0x43 */ + NTSTATUS samr_VALIDATE_PASSWORD(); + +} diff --git a/source4/librpc/ndr/libndr.h b/source4/librpc/ndr/libndr.h index 140001c06d..25ed1fc6f1 100644 --- a/source4/librpc/ndr/libndr.h +++ b/source4/librpc/ndr/libndr.h @@ -153,3 +153,5 @@ typedef void (*ndr_print_union_fn_t)(struct ndr_print *, const char *, uint16, v #include "librpc/ndr/ndr_lsa.h" #include "librpc/ndr/ndr_dfs.h" #include "librpc/ndr/ndr_spoolss.h" +#include "librpc/ndr/ndr_samr.h" + diff --git a/source4/librpc/ndr/ndr_samr.c b/source4/librpc/ndr/ndr_samr.c new file mode 100644 index 0000000000..8258fe6bdf --- /dev/null +++ b/source4/librpc/ndr/ndr_samr.c @@ -0,0 +1,1018 @@ +/* parser auto-generated by pidl */ + +#include "includes.h" + +NTSTATUS ndr_push_samr_Connect(struct ndr_push *ndr, struct samr_Connect *r) +{ + NDR_CHECK(ndr_push_ptr(ndr, r->in.system_name)); + if (r->in.system_name) { + NDR_CHECK(ndr_push_uint16(ndr, *r->in.system_name)); + } + NDR_CHECK(ndr_push_uint32(ndr, r->in.access_mask)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_Close(struct ndr_push *ndr, struct samr_Close *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_SetSecurity(struct ndr_push *ndr, struct samr_SetSecurity *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QuerySecurity(struct ndr_push *ndr, struct samr_QuerySecurity *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_Shutdown(struct ndr_push *ndr, struct samr_Shutdown *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_LookupDomain(struct ndr_push *ndr, struct samr_LookupDomain *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_EnumDomains(struct ndr_push *ndr, struct samr_EnumDomains *r) +{ + NDR_CHECK(ndr_push_policy_handle(ndr, r->in.handle)); + NDR_CHECK(ndr_push_uint32(ndr, *r->in.resume_handle)); + NDR_CHECK(ndr_push_uint32(ndr, r->in.buf_size)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_OPEN_DOMAIN(struct ndr_push *ndr, struct samr_OPEN_DOMAIN *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QUERY_DOMAIN_INFO(struct ndr_push *ndr, struct samr_QUERY_DOMAIN_INFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_SET_DOMAIN_INFO(struct ndr_push *ndr, struct samr_SET_DOMAIN_INFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_CREATE_DOM_GROUP(struct ndr_push *ndr, struct samr_CREATE_DOM_GROUP *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_ENUM_DOM_GROUPS(struct ndr_push *ndr, struct samr_ENUM_DOM_GROUPS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_CREATE_USER_IN_DOMAIN(struct ndr_push *ndr, struct samr_CREATE_USER_IN_DOMAIN *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_ENUM_DOM_USERS(struct ndr_push *ndr, struct samr_ENUM_DOM_USERS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_CREATE_DOM_ALIAS(struct ndr_push *ndr, struct samr_CREATE_DOM_ALIAS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_ENUM_DOM_ALIASES(struct ndr_push *ndr, struct samr_ENUM_DOM_ALIASES *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_GET_ALIAS_MEMBERSHIP(struct ndr_push *ndr, struct samr_GET_ALIAS_MEMBERSHIP *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_LOOKUP_NAMES(struct ndr_push *ndr, struct samr_LOOKUP_NAMES *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_LOOKUP_RIDS(struct ndr_push *ndr, struct samr_LOOKUP_RIDS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_OPEN_GROUP(struct ndr_push *ndr, struct samr_OPEN_GROUP *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QUERY_GROUPINFO(struct ndr_push *ndr, struct samr_QUERY_GROUPINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_SET_GROUPINFO(struct ndr_push *ndr, struct samr_SET_GROUPINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_ADD_GROUPMEM(struct ndr_push *ndr, struct samr_ADD_GROUPMEM *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_DELETE_DOM_GROUP(struct ndr_push *ndr, struct samr_DELETE_DOM_GROUP *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_DEL_GROUPMEM(struct ndr_push *ndr, struct samr_DEL_GROUPMEM *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QUERY_GROUPMEM(struct ndr_push *ndr, struct samr_QUERY_GROUPMEM *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_SET_MEMBER_ATTRIBUTES_OF_GROUP(struct ndr_push *ndr, struct samr_SET_MEMBER_ATTRIBUTES_OF_GROUP *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_OPEN_ALIAS(struct ndr_push *ndr, struct samr_OPEN_ALIAS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QUERY_ALIASINFO(struct ndr_push *ndr, struct samr_QUERY_ALIASINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_SET_ALIASINFO(struct ndr_push *ndr, struct samr_SET_ALIASINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_DELETE_DOM_ALIAS(struct ndr_push *ndr, struct samr_DELETE_DOM_ALIAS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_ADD_ALIASMEM(struct ndr_push *ndr, struct samr_ADD_ALIASMEM *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_DEL_ALIASMEM(struct ndr_push *ndr, struct samr_DEL_ALIASMEM *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_GET_MEMBERS_IN_ALIAS(struct ndr_push *ndr, struct samr_GET_MEMBERS_IN_ALIAS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_OPEN_USER(struct ndr_push *ndr, struct samr_OPEN_USER *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_DELETE_DOM_USER(struct ndr_push *ndr, struct samr_DELETE_DOM_USER *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QUERY_USERINFO(struct ndr_push *ndr, struct samr_QUERY_USERINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_SET_USERINFO(struct ndr_push *ndr, struct samr_SET_USERINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_CHANGE_PASSWORD_USER(struct ndr_push *ndr, struct samr_CHANGE_PASSWORD_USER *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_GET_GROUPS_FOR_USER(struct ndr_push *ndr, struct samr_GET_GROUPS_FOR_USER *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QUERY_DISPINFO(struct ndr_push *ndr, struct samr_QUERY_DISPINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_GET_DISPLAY_ENUMERATION_INDEX(struct ndr_push *ndr, struct samr_GET_DISPLAY_ENUMERATION_INDEX *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_TEST_PRIVATE_FUNCTIONS_DOMAIN(struct ndr_push *ndr, struct samr_TEST_PRIVATE_FUNCTIONS_DOMAIN *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_TEST_PRIVATE_FUNCTIONS_USER(struct ndr_push *ndr, struct samr_TEST_PRIVATE_FUNCTIONS_USER *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_GET_USRDOM_PWINFO(struct ndr_push *ndr, struct samr_GET_USRDOM_PWINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN(struct ndr_push *ndr, struct samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QUERY_INFORMATION_DOMAIN2(struct ndr_push *ndr, struct samr_QUERY_INFORMATION_DOMAIN2 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QUERY_INFORMATION_USER2(struct ndr_push *ndr, struct samr_QUERY_INFORMATION_USER2 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QUERY_DISPINFO2(struct ndr_push *ndr, struct samr_QUERY_DISPINFO2 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_GET_DISPLAY_ENUMERATION_INDEX2(struct ndr_push *ndr, struct samr_GET_DISPLAY_ENUMERATION_INDEX2 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_CREATE_USER2_IN_DOMAIN(struct ndr_push *ndr, struct samr_CREATE_USER2_IN_DOMAIN *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_QUERY_DISPINFO3(struct ndr_push *ndr, struct samr_QUERY_DISPINFO3 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS(struct ndr_push *ndr, struct samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS(struct ndr_push *ndr, struct samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_OEM_CHANGE_PASSWORD_USER2(struct ndr_push *ndr, struct samr_OEM_CHANGE_PASSWORD_USER2 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_UNICODE_CHANGE_PASSWORD_USER2(struct ndr_push *ndr, struct samr_UNICODE_CHANGE_PASSWORD_USER2 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_GET_DOM_PWINFO(struct ndr_push *ndr, struct samr_GET_DOM_PWINFO *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_CONNECT2(struct ndr_push *ndr, struct samr_CONNECT2 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_SET_USERINFO2(struct ndr_push *ndr, struct samr_SET_USERINFO2 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_SET_BOOT_KEY_INFORMATION(struct ndr_push *ndr, struct samr_SET_BOOT_KEY_INFORMATION *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_GET_BOOT_KEY_INFORMATION(struct ndr_push *ndr, struct samr_GET_BOOT_KEY_INFORMATION *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_CONNECT3(struct ndr_push *ndr, struct samr_CONNECT3 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_CONNECT4(struct ndr_push *ndr, struct samr_CONNECT4 *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_uint32(ndr, r->in.unknown)); + NDR_CHECK(ndr_push_uint32(ndr, r->in.access_mask)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_UNICODE_CHANGE_PASSWORD_USER3(struct ndr_push *ndr, struct samr_UNICODE_CHANGE_PASSWORD_USER3 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_CONNECT5(struct ndr_push *ndr, struct samr_CONNECT5 *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_RID_TO_SID(struct ndr_push *ndr, struct samr_RID_TO_SID *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_SET_DSRM_PASSWORD(struct ndr_push *ndr, struct samr_SET_DSRM_PASSWORD *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_push_samr_VALIDATE_PASSWORD(struct ndr_push *ndr, struct samr_VALIDATE_PASSWORD *r) +{ + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_Connect(struct ndr_pull *ndr, struct samr_Connect *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_pull_samr_Close(struct ndr_pull *ndr, struct samr_Close *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_SetSecurity(struct ndr_pull *ndr, struct samr_SetSecurity *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QuerySecurity(struct ndr_pull *ndr, struct samr_QuerySecurity *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_Shutdown(struct ndr_pull *ndr, struct samr_Shutdown *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_LookupDomain(struct ndr_pull *ndr, struct samr_LookupDomain *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +static NTSTATUS ndr_pull_samr_Name(struct ndr_pull *ndr, int ndr_flags, struct samr_Name *r) +{ + uint32 _ptr_name; + NDR_CHECK(ndr_pull_align(ndr, 4)); + if (!(ndr_flags & NDR_SCALARS)) goto buffers; + NDR_CHECK(ndr_pull_uint16(ndr, &r->name_len)); + NDR_CHECK(ndr_pull_uint16(ndr, &r->name_size)); + NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_name)); + if (_ptr_name) { + NDR_ALLOC(ndr, r->name); + } else { + r->name = NULL; + } +buffers: + if (!(ndr_flags & NDR_BUFFERS)) goto done; + if (r->name) { + NDR_CHECK(ndr_pull_unistr_noterm(ndr, &r->name)); + } +done: + return NT_STATUS_OK; +} + +static NTSTATUS ndr_pull_samr_SamEntry(struct ndr_pull *ndr, int ndr_flags, struct samr_SamEntry *r) +{ + NDR_CHECK(ndr_pull_align(ndr, 4)); + if (!(ndr_flags & NDR_SCALARS)) goto buffers; + NDR_CHECK(ndr_pull_uint32(ndr, &r->rid)); + NDR_CHECK(ndr_pull_samr_Name(ndr, NDR_SCALARS, &r->name)); +buffers: + if (!(ndr_flags & NDR_BUFFERS)) goto done; + NDR_CHECK(ndr_pull_samr_Name(ndr, NDR_BUFFERS, &r->name)); +done: + return NT_STATUS_OK; +} + +static NTSTATUS ndr_pull_samr_SamArray(struct ndr_pull *ndr, int ndr_flags, struct samr_SamArray *r) +{ + uint32 _ptr_entries; + NDR_CHECK(ndr_pull_align(ndr, 4)); + if (!(ndr_flags & NDR_SCALARS)) goto buffers; + NDR_CHECK(ndr_pull_uint32(ndr, &r->count)); + NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_entries)); + if (_ptr_entries) { + NDR_ALLOC(ndr, r->entries); + } else { + r->entries = NULL; + } +buffers: + if (!(ndr_flags & NDR_BUFFERS)) goto done; + if (r->entries) { + { + uint32 _array_size; + NDR_CHECK(ndr_pull_uint32(ndr, &_array_size)); + if (r->count > _array_size) { + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should be %u", _array_size, r->count); + } + } + NDR_ALLOC_N_SIZE(ndr, r->entries, r->count, sizeof(r->entries[0])); + NDR_CHECK(ndr_pull_array(ndr, NDR_SCALARS|NDR_BUFFERS, (void **)r->entries, sizeof(r->entries[0]), r->count, (ndr_pull_flags_fn_t)ndr_pull_samr_SamEntry)); + } +done: + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_EnumDomains(struct ndr_pull *ndr, struct samr_EnumDomains *r) +{ + uint32 _ptr_sam; + NDR_CHECK(ndr_pull_uint32(ndr, r->out.resume_handle)); + NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_sam)); + if (_ptr_sam) { + NDR_ALLOC(ndr, r->out.sam); + } else { + r->out.sam = NULL; + } + if (r->out.sam) { + NDR_CHECK(ndr_pull_samr_SamArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sam)); + } + NDR_CHECK(ndr_pull_uint32(ndr, r->out.num_entries)); + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_OPEN_DOMAIN(struct ndr_pull *ndr, struct samr_OPEN_DOMAIN *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QUERY_DOMAIN_INFO(struct ndr_pull *ndr, struct samr_QUERY_DOMAIN_INFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_SET_DOMAIN_INFO(struct ndr_pull *ndr, struct samr_SET_DOMAIN_INFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_CREATE_DOM_GROUP(struct ndr_pull *ndr, struct samr_CREATE_DOM_GROUP *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_ENUM_DOM_GROUPS(struct ndr_pull *ndr, struct samr_ENUM_DOM_GROUPS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_CREATE_USER_IN_DOMAIN(struct ndr_pull *ndr, struct samr_CREATE_USER_IN_DOMAIN *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_ENUM_DOM_USERS(struct ndr_pull *ndr, struct samr_ENUM_DOM_USERS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_CREATE_DOM_ALIAS(struct ndr_pull *ndr, struct samr_CREATE_DOM_ALIAS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_ENUM_DOM_ALIASES(struct ndr_pull *ndr, struct samr_ENUM_DOM_ALIASES *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_GET_ALIAS_MEMBERSHIP(struct ndr_pull *ndr, struct samr_GET_ALIAS_MEMBERSHIP *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_LOOKUP_NAMES(struct ndr_pull *ndr, struct samr_LOOKUP_NAMES *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_LOOKUP_RIDS(struct ndr_pull *ndr, struct samr_LOOKUP_RIDS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_OPEN_GROUP(struct ndr_pull *ndr, struct samr_OPEN_GROUP *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QUERY_GROUPINFO(struct ndr_pull *ndr, struct samr_QUERY_GROUPINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_SET_GROUPINFO(struct ndr_pull *ndr, struct samr_SET_GROUPINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_ADD_GROUPMEM(struct ndr_pull *ndr, struct samr_ADD_GROUPMEM *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_DELETE_DOM_GROUP(struct ndr_pull *ndr, struct samr_DELETE_DOM_GROUP *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_DEL_GROUPMEM(struct ndr_pull *ndr, struct samr_DEL_GROUPMEM *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QUERY_GROUPMEM(struct ndr_pull *ndr, struct samr_QUERY_GROUPMEM *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_SET_MEMBER_ATTRIBUTES_OF_GROUP(struct ndr_pull *ndr, struct samr_SET_MEMBER_ATTRIBUTES_OF_GROUP *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_OPEN_ALIAS(struct ndr_pull *ndr, struct samr_OPEN_ALIAS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QUERY_ALIASINFO(struct ndr_pull *ndr, struct samr_QUERY_ALIASINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_SET_ALIASINFO(struct ndr_pull *ndr, struct samr_SET_ALIASINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_DELETE_DOM_ALIAS(struct ndr_pull *ndr, struct samr_DELETE_DOM_ALIAS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_ADD_ALIASMEM(struct ndr_pull *ndr, struct samr_ADD_ALIASMEM *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_DEL_ALIASMEM(struct ndr_pull *ndr, struct samr_DEL_ALIASMEM *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_GET_MEMBERS_IN_ALIAS(struct ndr_pull *ndr, struct samr_GET_MEMBERS_IN_ALIAS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_OPEN_USER(struct ndr_pull *ndr, struct samr_OPEN_USER *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_DELETE_DOM_USER(struct ndr_pull *ndr, struct samr_DELETE_DOM_USER *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QUERY_USERINFO(struct ndr_pull *ndr, struct samr_QUERY_USERINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_SET_USERINFO(struct ndr_pull *ndr, struct samr_SET_USERINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_CHANGE_PASSWORD_USER(struct ndr_pull *ndr, struct samr_CHANGE_PASSWORD_USER *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_GET_GROUPS_FOR_USER(struct ndr_pull *ndr, struct samr_GET_GROUPS_FOR_USER *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QUERY_DISPINFO(struct ndr_pull *ndr, struct samr_QUERY_DISPINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_GET_DISPLAY_ENUMERATION_INDEX(struct ndr_pull *ndr, struct samr_GET_DISPLAY_ENUMERATION_INDEX *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_TEST_PRIVATE_FUNCTIONS_DOMAIN(struct ndr_pull *ndr, struct samr_TEST_PRIVATE_FUNCTIONS_DOMAIN *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_TEST_PRIVATE_FUNCTIONS_USER(struct ndr_pull *ndr, struct samr_TEST_PRIVATE_FUNCTIONS_USER *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_GET_USRDOM_PWINFO(struct ndr_pull *ndr, struct samr_GET_USRDOM_PWINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN(struct ndr_pull *ndr, struct samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QUERY_INFORMATION_DOMAIN2(struct ndr_pull *ndr, struct samr_QUERY_INFORMATION_DOMAIN2 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QUERY_INFORMATION_USER2(struct ndr_pull *ndr, struct samr_QUERY_INFORMATION_USER2 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QUERY_DISPINFO2(struct ndr_pull *ndr, struct samr_QUERY_DISPINFO2 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_GET_DISPLAY_ENUMERATION_INDEX2(struct ndr_pull *ndr, struct samr_GET_DISPLAY_ENUMERATION_INDEX2 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_CREATE_USER2_IN_DOMAIN(struct ndr_pull *ndr, struct samr_CREATE_USER2_IN_DOMAIN *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_QUERY_DISPINFO3(struct ndr_pull *ndr, struct samr_QUERY_DISPINFO3 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS(struct ndr_pull *ndr, struct samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS(struct ndr_pull *ndr, struct samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_OEM_CHANGE_PASSWORD_USER2(struct ndr_pull *ndr, struct samr_OEM_CHANGE_PASSWORD_USER2 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_UNICODE_CHANGE_PASSWORD_USER2(struct ndr_pull *ndr, struct samr_UNICODE_CHANGE_PASSWORD_USER2 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_GET_DOM_PWINFO(struct ndr_pull *ndr, struct samr_GET_DOM_PWINFO *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_CONNECT2(struct ndr_pull *ndr, struct samr_CONNECT2 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_SET_USERINFO2(struct ndr_pull *ndr, struct samr_SET_USERINFO2 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_SET_BOOT_KEY_INFORMATION(struct ndr_pull *ndr, struct samr_SET_BOOT_KEY_INFORMATION *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_GET_BOOT_KEY_INFORMATION(struct ndr_pull *ndr, struct samr_GET_BOOT_KEY_INFORMATION *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_CONNECT3(struct ndr_pull *ndr, struct samr_CONNECT3 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_CONNECT4(struct ndr_pull *ndr, struct samr_CONNECT4 *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_pull_samr_UNICODE_CHANGE_PASSWORD_USER3(struct ndr_pull *ndr, struct samr_UNICODE_CHANGE_PASSWORD_USER3 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_CONNECT5(struct ndr_pull *ndr, struct samr_CONNECT5 *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_RID_TO_SID(struct ndr_pull *ndr, struct samr_RID_TO_SID *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_SET_DSRM_PASSWORD(struct ndr_pull *ndr, struct samr_SET_DSRM_PASSWORD *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +NTSTATUS ndr_pull_samr_VALIDATE_PASSWORD(struct ndr_pull *ndr, struct samr_VALIDATE_PASSWORD *r) +{ + NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result)); + + return NT_STATUS_OK; +} + +void ndr_print_samr_Name(struct ndr_print *ndr, const char *name, struct samr_Name *r) +{ + ndr_print_struct(ndr, name, "samr_Name"); + ndr->depth++; + ndr_print_uint16(ndr, "name_len", r->name_len); + ndr_print_uint16(ndr, "name_size", r->name_size); + ndr_print_ptr(ndr, "name", r->name); + ndr->depth++; + if (r->name) { + ndr_print_unistr_noterm(ndr, "name", r->name); + } + ndr->depth--; + ndr->depth--; +} + +void ndr_print_samr_SamEntry(struct ndr_print *ndr, const char *name, struct samr_SamEntry *r) +{ + ndr_print_struct(ndr, name, "samr_SamEntry"); + ndr->depth++; + ndr_print_uint32(ndr, "rid", r->rid); + ndr_print_samr_Name(ndr, "name", &r->name); + ndr->depth--; +} + +void ndr_print_samr_SamArray(struct ndr_print *ndr, const char *name, struct samr_SamArray *r) +{ + ndr_print_struct(ndr, name, "samr_SamArray"); + ndr->depth++; + ndr_print_uint32(ndr, "count", r->count); + ndr_print_ptr(ndr, "entries", r->entries); + ndr->depth++; + if (r->entries) { + ndr_print_array(ndr, "entries", r->entries, sizeof(r->entries[0]), r->count, (ndr_print_fn_t)ndr_print_samr_SamEntry); + } + ndr->depth--; + ndr->depth--; +} + diff --git a/source4/librpc/ndr/ndr_samr.h b/source4/librpc/ndr/ndr_samr.h new file mode 100644 index 0000000000..20b58685de --- /dev/null +++ b/source4/librpc/ndr/ndr_samr.h @@ -0,0 +1,779 @@ +/* header auto-generated by pidl */ + +struct samr_Connect { + struct { + uint16 *system_name; + uint32 access_mask; + } in; + + struct { + struct policy_handle *handle; + NTSTATUS result; + } out; + +}; + +struct samr_Close { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_SetSecurity { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QuerySecurity { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_Shutdown { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_LookupDomain { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_Name { + uint16 name_len; + uint16 name_size; + const char *name; +}; + +struct samr_SamEntry { + uint32 rid; + struct samr_Name name; +}; + +struct samr_SamArray { + uint32 count; + struct samr_SamEntry *entries; +}; + +struct samr_EnumDomains { + struct { + struct policy_handle *handle; + uint32 *resume_handle; + uint32 buf_size; + } in; + + struct { + uint32 *resume_handle; + struct samr_SamArray *sam; + uint32 *num_entries; + NTSTATUS result; + } out; + +}; + +struct samr_OPEN_DOMAIN { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QUERY_DOMAIN_INFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_SET_DOMAIN_INFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_CREATE_DOM_GROUP { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_ENUM_DOM_GROUPS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_CREATE_USER_IN_DOMAIN { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_ENUM_DOM_USERS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_CREATE_DOM_ALIAS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_ENUM_DOM_ALIASES { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_GET_ALIAS_MEMBERSHIP { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_LOOKUP_NAMES { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_LOOKUP_RIDS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_OPEN_GROUP { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QUERY_GROUPINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_SET_GROUPINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_ADD_GROUPMEM { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_DELETE_DOM_GROUP { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_DEL_GROUPMEM { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QUERY_GROUPMEM { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_SET_MEMBER_ATTRIBUTES_OF_GROUP { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_OPEN_ALIAS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QUERY_ALIASINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_SET_ALIASINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_DELETE_DOM_ALIAS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_ADD_ALIASMEM { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_DEL_ALIASMEM { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_GET_MEMBERS_IN_ALIAS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_OPEN_USER { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_DELETE_DOM_USER { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QUERY_USERINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_SET_USERINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_CHANGE_PASSWORD_USER { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_GET_GROUPS_FOR_USER { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QUERY_DISPINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_GET_DISPLAY_ENUMERATION_INDEX { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_TEST_PRIVATE_FUNCTIONS_DOMAIN { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_TEST_PRIVATE_FUNCTIONS_USER { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_GET_USRDOM_PWINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QUERY_INFORMATION_DOMAIN2 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QUERY_INFORMATION_USER2 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QUERY_DISPINFO2 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_GET_DISPLAY_ENUMERATION_INDEX2 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_CREATE_USER2_IN_DOMAIN { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_QUERY_DISPINFO3 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_OEM_CHANGE_PASSWORD_USER2 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_UNICODE_CHANGE_PASSWORD_USER2 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_GET_DOM_PWINFO { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_CONNECT2 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_SET_USERINFO2 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_SET_BOOT_KEY_INFORMATION { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_GET_BOOT_KEY_INFORMATION { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_CONNECT3 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_CONNECT4 { + struct { + const char *system_name; + uint32 unknown; + uint32 access_mask; + } in; + + struct { + struct policy_handle *handle; + NTSTATUS result; + } out; + +}; + +struct samr_UNICODE_CHANGE_PASSWORD_USER3 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_CONNECT5 { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_RID_TO_SID { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_SET_DSRM_PASSWORD { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +struct samr_VALIDATE_PASSWORD { + struct { + } in; + + struct { + NTSTATUS result; + } out; + +}; + +#define DCERPC_SAMR_CONNECT 0 +#define DCERPC_SAMR_CLOSE 1 +#define DCERPC_SAMR_SETSECURITY 2 +#define DCERPC_SAMR_QUERYSECURITY 3 +#define DCERPC_SAMR_SHUTDOWN 4 +#define DCERPC_SAMR_LOOKUPDOMAIN 5 +#define DCERPC_SAMR_ENUMDOMAINS 6 +#define DCERPC_SAMR_OPEN_DOMAIN 7 +#define DCERPC_SAMR_QUERY_DOMAIN_INFO 8 +#define DCERPC_SAMR_SET_DOMAIN_INFO 9 +#define DCERPC_SAMR_CREATE_DOM_GROUP 10 +#define DCERPC_SAMR_ENUM_DOM_GROUPS 11 +#define DCERPC_SAMR_CREATE_USER_IN_DOMAIN 12 +#define DCERPC_SAMR_ENUM_DOM_USERS 13 +#define DCERPC_SAMR_CREATE_DOM_ALIAS 14 +#define DCERPC_SAMR_ENUM_DOM_ALIASES 15 +#define DCERPC_SAMR_GET_ALIAS_MEMBERSHIP 16 +#define DCERPC_SAMR_LOOKUP_NAMES 17 +#define DCERPC_SAMR_LOOKUP_RIDS 18 +#define DCERPC_SAMR_OPEN_GROUP 19 +#define DCERPC_SAMR_QUERY_GROUPINFO 20 +#define DCERPC_SAMR_SET_GROUPINFO 21 +#define DCERPC_SAMR_ADD_GROUPMEM 22 +#define DCERPC_SAMR_DELETE_DOM_GROUP 23 +#define DCERPC_SAMR_DEL_GROUPMEM 24 +#define DCERPC_SAMR_QUERY_GROUPMEM 25 +#define DCERPC_SAMR_SET_MEMBER_ATTRIBUTES_OF_GROUP 26 +#define DCERPC_SAMR_OPEN_ALIAS 27 +#define DCERPC_SAMR_QUERY_ALIASINFO 28 +#define DCERPC_SAMR_SET_ALIASINFO 29 +#define DCERPC_SAMR_DELETE_DOM_ALIAS 30 +#define DCERPC_SAMR_ADD_ALIASMEM 31 +#define DCERPC_SAMR_DEL_ALIASMEM 32 +#define DCERPC_SAMR_GET_MEMBERS_IN_ALIAS 33 +#define DCERPC_SAMR_OPEN_USER 34 +#define DCERPC_SAMR_DELETE_DOM_USER 35 +#define DCERPC_SAMR_QUERY_USERINFO 36 +#define DCERPC_SAMR_SET_USERINFO 37 +#define DCERPC_SAMR_CHANGE_PASSWORD_USER 38 +#define DCERPC_SAMR_GET_GROUPS_FOR_USER 39 +#define DCERPC_SAMR_QUERY_DISPINFO 40 +#define DCERPC_SAMR_GET_DISPLAY_ENUMERATION_INDEX 41 +#define DCERPC_SAMR_TEST_PRIVATE_FUNCTIONS_DOMAIN 42 +#define DCERPC_SAMR_TEST_PRIVATE_FUNCTIONS_USER 43 +#define DCERPC_SAMR_GET_USRDOM_PWINFO 44 +#define DCERPC_SAMR_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN 45 +#define DCERPC_SAMR_QUERY_INFORMATION_DOMAIN2 46 +#define DCERPC_SAMR_QUERY_INFORMATION_USER2 47 +#define DCERPC_SAMR_QUERY_DISPINFO2 48 +#define DCERPC_SAMR_GET_DISPLAY_ENUMERATION_INDEX2 49 +#define DCERPC_SAMR_CREATE_USER2_IN_DOMAIN 50 +#define DCERPC_SAMR_QUERY_DISPINFO3 51 +#define DCERPC_SAMR_ADD_MULTIPLE_MEMBERS_TO_ALIAS 52 +#define DCERPC_SAMR_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS 53 +#define DCERPC_SAMR_OEM_CHANGE_PASSWORD_USER2 54 +#define DCERPC_SAMR_UNICODE_CHANGE_PASSWORD_USER2 55 +#define DCERPC_SAMR_GET_DOM_PWINFO 56 +#define DCERPC_SAMR_CONNECT2 57 +#define DCERPC_SAMR_SET_USERINFO2 58 +#define DCERPC_SAMR_SET_BOOT_KEY_INFORMATION 59 +#define DCERPC_SAMR_GET_BOOT_KEY_INFORMATION 60 +#define DCERPC_SAMR_CONNECT3 61 +#define DCERPC_SAMR_CONNECT4 62 +#define DCERPC_SAMR_UNICODE_CHANGE_PASSWORD_USER3 63 +#define DCERPC_SAMR_CONNECT5 64 +#define DCERPC_SAMR_RID_TO_SID 65 +#define DCERPC_SAMR_SET_DSRM_PASSWORD 66 +#define DCERPC_SAMR_VALIDATE_PASSWORD 67 diff --git a/source4/librpc/rpc/rpc_samr.c b/source4/librpc/rpc/rpc_samr.c new file mode 100644 index 0000000000..d007ebe07f --- /dev/null +++ b/source4/librpc/rpc/rpc_samr.c @@ -0,0 +1,956 @@ +/* dcerpc client calls auto-generated by pidl */ + +#include "includes.h" + + +NTSTATUS dcerpc_samr_Connect(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_Connect *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CONNECT, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_Connect, + (ndr_pull_fn_t) ndr_pull_samr_Connect, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_Close(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_Close *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CLOSE, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_Close, + (ndr_pull_fn_t) ndr_pull_samr_Close, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_SetSecurity(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_SetSecurity *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_SETSECURITY, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_SetSecurity, + (ndr_pull_fn_t) ndr_pull_samr_SetSecurity, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QuerySecurity(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QuerySecurity *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERYSECURITY, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QuerySecurity, + (ndr_pull_fn_t) ndr_pull_samr_QuerySecurity, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_Shutdown(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_Shutdown *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_SHUTDOWN, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_Shutdown, + (ndr_pull_fn_t) ndr_pull_samr_Shutdown, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_LookupDomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_LookupDomain *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_LOOKUPDOMAIN, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_LookupDomain, + (ndr_pull_fn_t) ndr_pull_samr_LookupDomain, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_EnumDomains(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_EnumDomains *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_ENUMDOMAINS, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_EnumDomains, + (ndr_pull_fn_t) ndr_pull_samr_EnumDomains, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_OPEN_DOMAIN(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_OPEN_DOMAIN *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_OPEN_DOMAIN, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_OPEN_DOMAIN, + (ndr_pull_fn_t) ndr_pull_samr_OPEN_DOMAIN, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QUERY_DOMAIN_INFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QUERY_DOMAIN_INFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERY_DOMAIN_INFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QUERY_DOMAIN_INFO, + (ndr_pull_fn_t) ndr_pull_samr_QUERY_DOMAIN_INFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_SET_DOMAIN_INFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_SET_DOMAIN_INFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_SET_DOMAIN_INFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_SET_DOMAIN_INFO, + (ndr_pull_fn_t) ndr_pull_samr_SET_DOMAIN_INFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_CREATE_DOM_GROUP(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_CREATE_DOM_GROUP *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CREATE_DOM_GROUP, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_CREATE_DOM_GROUP, + (ndr_pull_fn_t) ndr_pull_samr_CREATE_DOM_GROUP, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_ENUM_DOM_GROUPS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_ENUM_DOM_GROUPS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_ENUM_DOM_GROUPS, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_ENUM_DOM_GROUPS, + (ndr_pull_fn_t) ndr_pull_samr_ENUM_DOM_GROUPS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_CREATE_USER_IN_DOMAIN(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_CREATE_USER_IN_DOMAIN *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CREATE_USER_IN_DOMAIN, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_CREATE_USER_IN_DOMAIN, + (ndr_pull_fn_t) ndr_pull_samr_CREATE_USER_IN_DOMAIN, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_ENUM_DOM_USERS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_ENUM_DOM_USERS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_ENUM_DOM_USERS, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_ENUM_DOM_USERS, + (ndr_pull_fn_t) ndr_pull_samr_ENUM_DOM_USERS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_CREATE_DOM_ALIAS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_CREATE_DOM_ALIAS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CREATE_DOM_ALIAS, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_CREATE_DOM_ALIAS, + (ndr_pull_fn_t) ndr_pull_samr_CREATE_DOM_ALIAS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_ENUM_DOM_ALIASES(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_ENUM_DOM_ALIASES *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_ENUM_DOM_ALIASES, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_ENUM_DOM_ALIASES, + (ndr_pull_fn_t) ndr_pull_samr_ENUM_DOM_ALIASES, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_GET_ALIAS_MEMBERSHIP(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_GET_ALIAS_MEMBERSHIP *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_GET_ALIAS_MEMBERSHIP, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_GET_ALIAS_MEMBERSHIP, + (ndr_pull_fn_t) ndr_pull_samr_GET_ALIAS_MEMBERSHIP, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_LOOKUP_NAMES(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_LOOKUP_NAMES *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_LOOKUP_NAMES, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_LOOKUP_NAMES, + (ndr_pull_fn_t) ndr_pull_samr_LOOKUP_NAMES, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_LOOKUP_RIDS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_LOOKUP_RIDS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_LOOKUP_RIDS, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_LOOKUP_RIDS, + (ndr_pull_fn_t) ndr_pull_samr_LOOKUP_RIDS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_OPEN_GROUP(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_OPEN_GROUP *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_OPEN_GROUP, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_OPEN_GROUP, + (ndr_pull_fn_t) ndr_pull_samr_OPEN_GROUP, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QUERY_GROUPINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QUERY_GROUPINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERY_GROUPINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QUERY_GROUPINFO, + (ndr_pull_fn_t) ndr_pull_samr_QUERY_GROUPINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_SET_GROUPINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_SET_GROUPINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_SET_GROUPINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_SET_GROUPINFO, + (ndr_pull_fn_t) ndr_pull_samr_SET_GROUPINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_ADD_GROUPMEM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_ADD_GROUPMEM *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_ADD_GROUPMEM, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_ADD_GROUPMEM, + (ndr_pull_fn_t) ndr_pull_samr_ADD_GROUPMEM, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_DELETE_DOM_GROUP(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_DELETE_DOM_GROUP *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_DELETE_DOM_GROUP, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_DELETE_DOM_GROUP, + (ndr_pull_fn_t) ndr_pull_samr_DELETE_DOM_GROUP, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_DEL_GROUPMEM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_DEL_GROUPMEM *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_DEL_GROUPMEM, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_DEL_GROUPMEM, + (ndr_pull_fn_t) ndr_pull_samr_DEL_GROUPMEM, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QUERY_GROUPMEM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QUERY_GROUPMEM *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERY_GROUPMEM, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QUERY_GROUPMEM, + (ndr_pull_fn_t) ndr_pull_samr_QUERY_GROUPMEM, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_SET_MEMBER_ATTRIBUTES_OF_GROUP(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_SET_MEMBER_ATTRIBUTES_OF_GROUP *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_SET_MEMBER_ATTRIBUTES_OF_GROUP, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_SET_MEMBER_ATTRIBUTES_OF_GROUP, + (ndr_pull_fn_t) ndr_pull_samr_SET_MEMBER_ATTRIBUTES_OF_GROUP, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_OPEN_ALIAS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_OPEN_ALIAS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_OPEN_ALIAS, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_OPEN_ALIAS, + (ndr_pull_fn_t) ndr_pull_samr_OPEN_ALIAS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QUERY_ALIASINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QUERY_ALIASINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERY_ALIASINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QUERY_ALIASINFO, + (ndr_pull_fn_t) ndr_pull_samr_QUERY_ALIASINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_SET_ALIASINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_SET_ALIASINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_SET_ALIASINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_SET_ALIASINFO, + (ndr_pull_fn_t) ndr_pull_samr_SET_ALIASINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_DELETE_DOM_ALIAS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_DELETE_DOM_ALIAS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_DELETE_DOM_ALIAS, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_DELETE_DOM_ALIAS, + (ndr_pull_fn_t) ndr_pull_samr_DELETE_DOM_ALIAS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_ADD_ALIASMEM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_ADD_ALIASMEM *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_ADD_ALIASMEM, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_ADD_ALIASMEM, + (ndr_pull_fn_t) ndr_pull_samr_ADD_ALIASMEM, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_DEL_ALIASMEM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_DEL_ALIASMEM *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_DEL_ALIASMEM, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_DEL_ALIASMEM, + (ndr_pull_fn_t) ndr_pull_samr_DEL_ALIASMEM, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_GET_MEMBERS_IN_ALIAS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_GET_MEMBERS_IN_ALIAS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_GET_MEMBERS_IN_ALIAS, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_GET_MEMBERS_IN_ALIAS, + (ndr_pull_fn_t) ndr_pull_samr_GET_MEMBERS_IN_ALIAS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_OPEN_USER(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_OPEN_USER *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_OPEN_USER, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_OPEN_USER, + (ndr_pull_fn_t) ndr_pull_samr_OPEN_USER, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_DELETE_DOM_USER(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_DELETE_DOM_USER *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_DELETE_DOM_USER, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_DELETE_DOM_USER, + (ndr_pull_fn_t) ndr_pull_samr_DELETE_DOM_USER, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QUERY_USERINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QUERY_USERINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERY_USERINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QUERY_USERINFO, + (ndr_pull_fn_t) ndr_pull_samr_QUERY_USERINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_SET_USERINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_SET_USERINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_SET_USERINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_SET_USERINFO, + (ndr_pull_fn_t) ndr_pull_samr_SET_USERINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_CHANGE_PASSWORD_USER(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_CHANGE_PASSWORD_USER *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CHANGE_PASSWORD_USER, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_CHANGE_PASSWORD_USER, + (ndr_pull_fn_t) ndr_pull_samr_CHANGE_PASSWORD_USER, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_GET_GROUPS_FOR_USER(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_GET_GROUPS_FOR_USER *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_GET_GROUPS_FOR_USER, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_GET_GROUPS_FOR_USER, + (ndr_pull_fn_t) ndr_pull_samr_GET_GROUPS_FOR_USER, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QUERY_DISPINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QUERY_DISPINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERY_DISPINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QUERY_DISPINFO, + (ndr_pull_fn_t) ndr_pull_samr_QUERY_DISPINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_GET_DISPLAY_ENUMERATION_INDEX(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_GET_DISPLAY_ENUMERATION_INDEX *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_GET_DISPLAY_ENUMERATION_INDEX, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_GET_DISPLAY_ENUMERATION_INDEX, + (ndr_pull_fn_t) ndr_pull_samr_GET_DISPLAY_ENUMERATION_INDEX, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_TEST_PRIVATE_FUNCTIONS_DOMAIN(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_TEST_PRIVATE_FUNCTIONS_DOMAIN *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_TEST_PRIVATE_FUNCTIONS_DOMAIN, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_TEST_PRIVATE_FUNCTIONS_DOMAIN, + (ndr_pull_fn_t) ndr_pull_samr_TEST_PRIVATE_FUNCTIONS_DOMAIN, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_TEST_PRIVATE_FUNCTIONS_USER(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_TEST_PRIVATE_FUNCTIONS_USER *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_TEST_PRIVATE_FUNCTIONS_USER, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_TEST_PRIVATE_FUNCTIONS_USER, + (ndr_pull_fn_t) ndr_pull_samr_TEST_PRIVATE_FUNCTIONS_USER, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_GET_USRDOM_PWINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_GET_USRDOM_PWINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_GET_USRDOM_PWINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_GET_USRDOM_PWINFO, + (ndr_pull_fn_t) ndr_pull_samr_GET_USRDOM_PWINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN, + (ndr_pull_fn_t) ndr_pull_samr_REMOVE_MEMBER_FROM_FOREIGN_DOMAIN, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QUERY_INFORMATION_DOMAIN2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QUERY_INFORMATION_DOMAIN2 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERY_INFORMATION_DOMAIN2, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QUERY_INFORMATION_DOMAIN2, + (ndr_pull_fn_t) ndr_pull_samr_QUERY_INFORMATION_DOMAIN2, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QUERY_INFORMATION_USER2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QUERY_INFORMATION_USER2 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERY_INFORMATION_USER2, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QUERY_INFORMATION_USER2, + (ndr_pull_fn_t) ndr_pull_samr_QUERY_INFORMATION_USER2, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QUERY_DISPINFO2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QUERY_DISPINFO2 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERY_DISPINFO2, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QUERY_DISPINFO2, + (ndr_pull_fn_t) ndr_pull_samr_QUERY_DISPINFO2, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_GET_DISPLAY_ENUMERATION_INDEX2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_GET_DISPLAY_ENUMERATION_INDEX2 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_GET_DISPLAY_ENUMERATION_INDEX2, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_GET_DISPLAY_ENUMERATION_INDEX2, + (ndr_pull_fn_t) ndr_pull_samr_GET_DISPLAY_ENUMERATION_INDEX2, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_CREATE_USER2_IN_DOMAIN(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_CREATE_USER2_IN_DOMAIN *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CREATE_USER2_IN_DOMAIN, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_CREATE_USER2_IN_DOMAIN, + (ndr_pull_fn_t) ndr_pull_samr_CREATE_USER2_IN_DOMAIN, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_QUERY_DISPINFO3(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_QUERY_DISPINFO3 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_QUERY_DISPINFO3, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_QUERY_DISPINFO3, + (ndr_pull_fn_t) ndr_pull_samr_QUERY_DISPINFO3, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_ADD_MULTIPLE_MEMBERS_TO_ALIAS, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS, + (ndr_pull_fn_t) ndr_pull_samr_ADD_MULTIPLE_MEMBERS_TO_ALIAS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS, + (ndr_pull_fn_t) ndr_pull_samr_REMOVE_MULTIPLE_MEMBERS_FROM_ALIAS, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_OEM_CHANGE_PASSWORD_USER2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_OEM_CHANGE_PASSWORD_USER2 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_OEM_CHANGE_PASSWORD_USER2, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_OEM_CHANGE_PASSWORD_USER2, + (ndr_pull_fn_t) ndr_pull_samr_OEM_CHANGE_PASSWORD_USER2, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_UNICODE_CHANGE_PASSWORD_USER2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_UNICODE_CHANGE_PASSWORD_USER2 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_UNICODE_CHANGE_PASSWORD_USER2, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_UNICODE_CHANGE_PASSWORD_USER2, + (ndr_pull_fn_t) ndr_pull_samr_UNICODE_CHANGE_PASSWORD_USER2, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_GET_DOM_PWINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_GET_DOM_PWINFO *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_GET_DOM_PWINFO, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_GET_DOM_PWINFO, + (ndr_pull_fn_t) ndr_pull_samr_GET_DOM_PWINFO, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_CONNECT2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_CONNECT2 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CONNECT2, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_CONNECT2, + (ndr_pull_fn_t) ndr_pull_samr_CONNECT2, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_SET_USERINFO2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_SET_USERINFO2 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_SET_USERINFO2, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_SET_USERINFO2, + (ndr_pull_fn_t) ndr_pull_samr_SET_USERINFO2, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_SET_BOOT_KEY_INFORMATION(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_SET_BOOT_KEY_INFORMATION *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_SET_BOOT_KEY_INFORMATION, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_SET_BOOT_KEY_INFORMATION, + (ndr_pull_fn_t) ndr_pull_samr_SET_BOOT_KEY_INFORMATION, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_GET_BOOT_KEY_INFORMATION(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_GET_BOOT_KEY_INFORMATION *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_GET_BOOT_KEY_INFORMATION, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_GET_BOOT_KEY_INFORMATION, + (ndr_pull_fn_t) ndr_pull_samr_GET_BOOT_KEY_INFORMATION, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_CONNECT3(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_CONNECT3 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CONNECT3, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_CONNECT3, + (ndr_pull_fn_t) ndr_pull_samr_CONNECT3, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_CONNECT4(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_CONNECT4 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CONNECT4, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_CONNECT4, + (ndr_pull_fn_t) ndr_pull_samr_CONNECT4, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_UNICODE_CHANGE_PASSWORD_USER3(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_UNICODE_CHANGE_PASSWORD_USER3 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_UNICODE_CHANGE_PASSWORD_USER3, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_UNICODE_CHANGE_PASSWORD_USER3, + (ndr_pull_fn_t) ndr_pull_samr_UNICODE_CHANGE_PASSWORD_USER3, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_CONNECT5(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_CONNECT5 *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_CONNECT5, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_CONNECT5, + (ndr_pull_fn_t) ndr_pull_samr_CONNECT5, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_RID_TO_SID(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_RID_TO_SID *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_RID_TO_SID, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_RID_TO_SID, + (ndr_pull_fn_t) ndr_pull_samr_RID_TO_SID, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_SET_DSRM_PASSWORD(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_SET_DSRM_PASSWORD *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_SET_DSRM_PASSWORD, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_SET_DSRM_PASSWORD, + (ndr_pull_fn_t) ndr_pull_samr_SET_DSRM_PASSWORD, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} + +NTSTATUS dcerpc_samr_VALIDATE_PASSWORD(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_VALIDATE_PASSWORD *r) +{ + NTSTATUS status; + status = dcerpc_ndr_request(p, DCERPC_SAMR_VALIDATE_PASSWORD, mem_ctx, + (ndr_push_fn_t) ndr_push_samr_VALIDATE_PASSWORD, + (ndr_pull_fn_t) ndr_pull_samr_VALIDATE_PASSWORD, + r); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return r->out.result; +} diff --git a/source4/torture/rpc/lsa.c b/source4/torture/rpc/lsa.c index 726281e0d6..f65f49bafd 100644 --- a/source4/torture/rpc/lsa.c +++ b/source4/torture/rpc/lsa.c @@ -21,65 +21,6 @@ #include "includes.h" - -/* - these really shouldn't be here .... -*/ -static char *lsa_sid_string_talloc(TALLOC_CTX *mem_ctx, struct dom_sid *sid) -{ - int i, ofs, maxlen; - uint32 ia; - char *ret; - - if (!sid) { - return talloc_asprintf(mem_ctx, "(NULL SID)"); - } - - maxlen = sid->num_auths * 11 + 25; - ret = talloc(mem_ctx, maxlen); - if (!ret) return NULL; - - ia = (sid->id_auth[5]) + - (sid->id_auth[4] << 8 ) + - (sid->id_auth[3] << 16) + - (sid->id_auth[2] << 24); - - ofs = snprintf(ret, maxlen, "S-%u-%lu", - (unsigned int)sid->sid_rev_num, (unsigned long)ia); - - for (i = 0; i < sid->num_auths; i++) { - ofs += snprintf(ret + ofs, maxlen - ofs, "-%lu", (unsigned long)sid->sub_auths[i]); - } - - return ret; -} - -static int dom_sid_compare(struct dom_sid *sid1, struct dom_sid *sid2) -{ - int i; - - if (sid1 == sid2) return 0; - if (!sid1) return -1; - if (!sid2) return 1; - - /* Compare most likely different rids, first: i.e start at end */ - if (sid1->num_auths != sid2->num_auths) - return sid1->num_auths - sid2->num_auths; - - for (i = sid1->num_auths-1; i >= 0; --i) - if (sid1->sub_auths[i] != sid2->sub_auths[i]) - return sid1->sub_auths[i] - sid2->sub_auths[i]; - - if (sid1->sid_rev_num != sid2->sid_rev_num) - return sid1->sid_rev_num - sid2->sid_rev_num; - - for (i = 0; i < 6; i++) - if (sid1->id_auth[i] != sid2->id_auth[i]) - return sid1->id_auth[i] - sid2->id_auth[i]; - - return 0; -} - static BOOL test_OpenPolicy(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) { struct lsa_ObjectAttribute attr; @@ -335,8 +276,8 @@ static BOOL test_EnumAccountRights(struct dcerpc_pipe *p, static BOOL test_QuerySecObj(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, - struct policy_handle *acct_handle, - struct dom_sid *sid) + struct policy_handle *handle, + struct policy_handle *acct_handle) { NTSTATUS status; struct lsa_QuerySecObj r; @@ -366,7 +307,7 @@ static BOOL test_OpenAccount(struct dcerpc_pipe *p, struct lsa_OpenAccount r; struct policy_handle acct_handle; - printf("Testing OpenAccount(%s)\n", lsa_sid_string_talloc(mem_ctx, sid)); + printf("Testing OpenAccount\n"); r.in.handle = handle; r.in.sid = sid; @@ -590,7 +531,7 @@ static BOOL test_Close(struct dcerpc_pipe *p, status = dcerpc_lsa_Close(p, mem_ctx, &r); /* its really a fault - we need a status code for rpc fault */ - if (!NT_STATUS_EQUAL(status, NT_STATUS_INVALID_LEVEL)) { + if (!NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) { printf("Close failed - %s\n", nt_errstr(status)); return False; } diff --git a/source4/torture/rpc/samr.c b/source4/torture/rpc/samr.c new file mode 100644 index 0000000000..12d4ebbe93 --- /dev/null +++ b/source4/torture/rpc/samr.c @@ -0,0 +1,97 @@ +/* + Unix SMB/CIFS implementation. + test suite for samr rpc operations + + 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. +*/ + +#include "includes.h" + + +static BOOL test_EnumDomains(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, + struct policy_handle *handle) +{ + NTSTATUS status; + struct samr_EnumDomains r; + uint32 resume_handle = 0; + uint32 num_entries; + + r.in.handle = handle; + r.in.resume_handle = &resume_handle; + r.in.buf_size = (uint32)-1; + r.out.resume_handle = &resume_handle; + r.out.num_entries = &num_entries; + + status = dcerpc_samr_EnumDomains(p, mem_ctx, &r); + if (!NT_STATUS_IS_OK(status)) { + printf("EnumDomains failed - %s\n", nt_errstr(status)); + return False; + } + + NDR_PRINT_DEBUG(samr_SamArray, r.out.sam); + + return True; +} + + +static BOOL test_Connect(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, + struct policy_handle *handle) +{ + NTSTATUS status; + struct samr_Connect r; + + r.in.system_name = 0; + r.in.access_mask = SEC_RIGHTS_MAXIMUM_ALLOWED; + r.out.handle = handle; + + status = dcerpc_samr_Connect(p, mem_ctx, &r); + if (!NT_STATUS_IS_OK(status)) { + printf("Connect failed - %s\n", nt_errstr(status)); + return False; + } + + return True; +} + + +BOOL torture_rpc_samr(int dummy) +{ + NTSTATUS status; + struct dcerpc_pipe *p; + TALLOC_CTX *mem_ctx; + BOOL ret = True; + struct policy_handle handle; + + mem_ctx = talloc_init("torture_rpc_samr"); + + status = torture_rpc_connection(&p, "samr"); + if (!NT_STATUS_IS_OK(status)) { + return False; + } + + if (!test_Connect(p, mem_ctx, &handle)) { + ret = False; + } + + if (!test_EnumDomains(p, mem_ctx, &handle)) { + ret = False; + } + + torture_rpc_close(p); + + return ret; +} diff --git a/source4/torture/torture.c b/source4/torture/torture.c index 532dafe065..facfb832ec 100644 --- a/source4/torture/torture.c +++ b/source4/torture/torture.c @@ -3988,6 +3988,7 @@ static struct { {"RPC-ECHO", torture_rpc_echo, 0}, {"RPC-DFS", torture_rpc_dfs, 0}, {"RPC-SPOOLSS", torture_rpc_spoolss, 0}, + {"RPC-SAMR", torture_rpc_samr, 0}, {NULL, NULL, 0}}; -- cgit