summaryrefslogtreecommitdiff
path: root/librpc
diff options
context:
space:
mode:
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>2009-07-22 21:01:52 +0200
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>2009-08-03 09:46:30 +0200
commit721402b8de9a94c4a7ca6ed2f039d0fe42f53351 (patch)
tree3685b9dd27356e1215ef3aba746025077f9145b8 /librpc
parente14b2ed8df12c1dadf907b96c5d6eb9192daa844 (diff)
downloadsamba-721402b8de9a94c4a7ca6ed2f039d0fe42f53351.tar.gz
samba-721402b8de9a94c4a7ca6ed2f039d0fe42f53351.tar.bz2
samba-721402b8de9a94c4a7ca6ed2f039d0fe42f53351.zip
netlogon.idl: Prework to enhance the "netr_LogonGetDomainInformation" call correctly
This enhances the "netlogon.idl" file to allow enhancements on the mentioned call. Therefore this is also the base for fixing up bug #4888.
Diffstat (limited to 'librpc')
-rw-r--r--librpc/idl/netlogon.idl162
1 files changed, 114 insertions, 48 deletions
diff --git a/librpc/idl/netlogon.idl b/librpc/idl/netlogon.idl
index 974de78fb5..1b3ef458a8 100644
--- a/librpc/idl/netlogon.idl
+++ b/librpc/idl/netlogon.idl
@@ -1227,25 +1227,93 @@ interface netlogon
NETR_TRUST_FLAG_AES = 0x00000100
} netr_TrustFlags;
+ typedef [bitmap32bit] bitmap {
+ NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS = 0x00000001,
+ NETR_WS_FLAG_HANDLES_SPN_UPDATE = 0x00000002
+ } netr_WorkstationFlags;
+
+ typedef [bitmap16bit] bitmap {
+ NETR_VER_SUITE_BACKOFFICE = 0x0004,
+ NETR_VER_SUITE_BLADE = 0x0400,
+ NETR_VER_SUITE_COMPUTE_SERVER = 0x4000,
+ NETR_VER_SUITE_DATACENTER = 0x0080,
+ NETR_VER_SUITE_ENTERPRISE = 0x0002,
+ NETR_VER_SUITE_EMBEDDEDNT = 0x0040,
+ NETR_VER_SUITE_PERSONAL = 0x0200,
+ NETR_VER_SUITE_SINGLEUSERTS = 0x0100,
+ NETR_VER_SUITE_SMALLBUSINESS = 0x0001,
+ NETR_VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x0020,
+ NETR_VER_SUITE_STORAGE_SERVER = 0x2000,
+ NETR_VER_SUITE_TERMINAL = 0x0010,
+ NETR_VER_SUITE_WH_SERVER = 0x8000
+ } netr_SuiteMask;
+
+ typedef [bitmap8bit] bitmap {
+ NETR_VER_NT_DOMAIN_CONTROLLER = 0x02,
+ NETR_VER_NT_SERVER = 0x03,
+ NETR_VER_NT_WORKSTATION = 0x01
+ } netr_ProductType;
+
+ typedef struct {
+ uint32 policy_size;
+ [size_is(policy_size)] uint8 *policy;
+ } netr_LsaPolicyInformation;
+
typedef struct {
- netr_Blob blob;
- [string,charset(UTF16)] uint16 *workstation_domain;
- [string,charset(UTF16)] uint16 *workstation_site;
- [string,charset(UTF16)] uint16 *unknown1;
- [string,charset(UTF16)] uint16 *unknown2;
- [string,charset(UTF16)] uint16 *unknown3;
- [string,charset(UTF16)] uint16 *unknown4;
- lsa_BinaryString blob2;
- lsa_String product;
- lsa_String unknown5;
- lsa_String unknown6;
- uint32 unknown7[4];
- } netr_DomainQuery1;
+ [value(284)] uint32 OSVersionInfoSize;
+ uint32 MajorVersion;
+ uint32 MinorVersion;
+ uint32 BuildNumber;
+ uint32 PlatformId;
+ [charset(UTF16)] uint16 CSDVersion[128];
+ uint16 ServicePackMajor;
+ uint16 ServicePackMinor;
+ netr_SuiteMask SuiteMask;
+ netr_ProductType ProductType;
+ uint8 Reserved;
+ } netr_OsVersionInfoEx;
+
+ typedef struct {
+ /* these first 3 values come from the fact windows
+ actually encodes this structure as a UNICODE_STRING
+ - see MS-NRPC section 2.2.1.3.9 */
+ /* 142 * 2 = 284 (length of structure "netr_OsVersionInfoEx") */
+ [value(142)] uint32 length;
+ [value(0)] uint32 dummy;
+ [value(142)] uint32 size;
+ netr_OsVersionInfoEx os;
+ } netr_OsVersion;
+
+ typedef struct {
+ /* value is 284 when info != os, otherwise 0 (for length and
+ size) */
+ [value(os == NULL ? 0 : 284)] uint16 length;
+ [value(os == NULL ? 0 : 284)] uint16 size;
+ netr_OsVersion *os;
+ } netr_OsVersionContainer;
+
+ typedef struct {
+ netr_LsaPolicyInformation lsa_policy;
+ [string,charset(UTF16)] uint16 *dns_hostname;
+ [string,charset(UTF16)] uint16 *sitename;
+ [string,charset(UTF16)] uint16 *dummy1;
+ [string,charset(UTF16)] uint16 *dummy2;
+ [string,charset(UTF16)] uint16 *dummy3;
+ [string,charset(UTF16)] uint16 *dummy4;
+ netr_OsVersionContainer os_version;
+ lsa_String os_name;
+ lsa_String dummy_string3;
+ lsa_String dummy_string4;
+ netr_WorkstationFlags workstation_flags;
+ uint32 dummy_long2;
+ uint32 dummy_long3;
+ uint32 dummy_long4;
+ } netr_WorkstationInformation;
typedef union {
- [case(1)] netr_DomainQuery1 *query1;
- [case(2)] netr_DomainQuery1 *query1;
- } netr_DomainQuery;
+ [case(1)] netr_WorkstationInformation *workstation_info;
+ [case(2)] netr_WorkstationInformation *lsa_policy_info;
+ } netr_WorkstationInfo;
typedef struct {
/* these first 3 values come from the fact windows
@@ -1268,64 +1336,62 @@ interface netlogon
typedef struct {
lsa_String domainname;
- lsa_String fulldomainname;
- lsa_String forest;
- GUID guid;
- dom_sid2 *sid;
+ lsa_String dns_domainname;
+ lsa_String dns_forestname;
+ GUID domain_guid;
+ dom_sid2 *domain_sid;
netr_trust_extension_container trust_extension;
- lsa_String dummystring[3];
- uint32 dummy[4];
- } netr_DomainTrustInfo;
-
- typedef struct {
- uint32 policy_size;
- [size_is(policy_size)] uint8 *policy;
- } netr_LsaPolicyInfo;
-
- typedef [public,bitmap32bit] bitmap {
- NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS = 0x00000001,
- NETR_WS_FLAG_HANDLES_SPN_UPDATE = 0x00000002
- } netr_WorkstationFlags;
+ lsa_String dummy_string2;
+ lsa_String dummy_string3;
+ lsa_String dummy_string4;
+ uint32 dummy_long1;
+ uint32 dummy_long2;
+ uint32 dummy_long3;
+ uint32 dummy_long4;
+ } netr_OneDomainInfo;
typedef struct {
- netr_DomainTrustInfo domaininfo;
- uint32 num_trusts;
- [size_is(num_trusts)] netr_DomainTrustInfo *trusts;
- netr_LsaPolicyInfo lsa_policy;
+ netr_OneDomainInfo primary_domain;
+ uint32 trusted_domain_count;
+ [size_is(trusted_domain_count)] netr_OneDomainInfo *trusted_domains;
+ netr_LsaPolicyInformation lsa_policy;
lsa_String dns_hostname;
- lsa_String dummystring[3];
+ lsa_String dummy_string2;
+ lsa_String dummy_string3;
+ lsa_String dummy_string4;
netr_WorkstationFlags workstation_flags;
uint32 supported_enc_types;
- uint32 dummy[2];
- } netr_DomainInfo1;
+ uint32 dummy_long3;
+ uint32 dummy_long4;
+ } netr_DomainInformation;
typedef union {
- [case(1)] netr_DomainInfo1 *info1;
- [case(2)] netr_DomainInfo1 *info2;
+ [case(1)] netr_DomainInformation *domain_info;
+ [case(2)] netr_LsaPolicyInformation *lsa_policy_info;
} netr_DomainInfo;
NTSTATUS netr_LogonGetDomainInfo(
- [in] [string,charset(UTF16)] uint16 server_name[],
+ [in] [string,charset(UTF16)] uint16 *server_name,
[in,unique] [string,charset(UTF16)] uint16 *computer_name,
[in,ref] netr_Authenticator *credential,
[in,out,ref] netr_Authenticator *return_authenticator,
[in] uint32 level,
- [in,switch_is(level)] netr_DomainQuery query,
+ [in,ref,switch_is(level)] netr_WorkstationInfo *query,
[out,ref,switch_is(level)] netr_DomainInfo *info
);
+ /*****************/
+ /* Function 0x1e */
typedef [flag(NDR_PAHEX)] struct {
uint8 data[512];
uint32 length;
} netr_CryptPassword;
- /*****************/
- /* Function 0x1e */
NTSTATUS netr_ServerPasswordSet2(
[in,unique] [string,charset(UTF16)] uint16 *server_name,
- [in] [string,charset(UTF16)] uint16 account_name[],
+ [in] [string,charset(UTF16)] uint16 *account_name,
[in] netr_SchannelType secure_channel_type,
- [in] [string,charset(UTF16)] uint16 computer_name[],
+ [in] [string,charset(UTF16)] uint16 *computer_name,
[in,ref] netr_Authenticator *credential,
[out,ref] netr_Authenticator *return_authenticator,
[in,ref] netr_CryptPassword *new_password