summaryrefslogtreecommitdiff
path: root/librpc/idl
diff options
context:
space:
mode:
Diffstat (limited to 'librpc/idl')
-rw-r--r--librpc/idl/browser.idl54
-rw-r--r--librpc/idl/lsa.idl2
-rw-r--r--librpc/idl/misc.idl2
-rw-r--r--librpc/idl/netlogon.idl20
-rw-r--r--librpc/idl/samr.idl18
-rw-r--r--librpc/idl/security.idl28
-rw-r--r--librpc/idl/srvsvc.idl4
-rw-r--r--librpc/idl/winreg.idl2
8 files changed, 102 insertions, 28 deletions
diff --git a/librpc/idl/browser.idl b/librpc/idl/browser.idl
index 5b05be9cbb..94d4ce6b62 100644
--- a/librpc/idl/browser.idl
+++ b/librpc/idl/browser.idl
@@ -1,4 +1,6 @@
-[
+import "srvsvc.idl";
+
+[
uuid("6bffd098-a112-3610-9833-012892020162"),
version(0.0),
helpstring("Browsing"),
@@ -9,50 +11,76 @@ interface browser
{
/******************/
/* Function 0x00 */
- [todo] NTSTATUS BrowserrServerEnum();
+ [todo] void BrowserrServerEnum();
/******************/
/* Function 0x01 */
- [todo] NTSTATUS BrowserrDebugCall();
+ [todo] void BrowserrDebugCall();
/******************/
/* Function 0x02 */
- [todo] NTSTATUS BrowserrQueryOtherDomains();
+
+ typedef struct {
+ uint32 entries_read;
+ [size_is(entries_read)] srvsvc_NetSrvInfo100 *entries;
+ } BrowserrSrvInfo100Ctr;
+
+ typedef struct {
+ uint32 entries_read;
+ [size_is(entries_read)] srvsvc_NetSrvInfo101 *entries;
+ } BrowserrSrvInfo101Ctr;
+
+ typedef [switch_type(uint32)] union {
+ [case(100)] BrowserrSrvInfo100Ctr *info100;
+ [case(101)] BrowserrSrvInfo101Ctr *info101;
+ [default] ;
+ } BrowserrSrvInfoUnion;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] BrowserrSrvInfoUnion info;
+ } BrowserrSrvInfo;
+
+ WERROR BrowserrQueryOtherDomains(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,out,ref] BrowserrSrvInfo *info,
+ [out,ref] uint32 *total_entries
+ );
/******************/
/* Function 0x03 */
- [todo] NTSTATUS BrowserrResetNetlogonState();
+ [todo] void BrowserrResetNetlogonState();
/******************/
/* Function 0x04 */
- [todo] NTSTATUS BrowserrDebugTrace();
+ [todo] void BrowserrDebugTrace();
/******************/
/* Function 0x05 */
- [todo] NTSTATUS BrowserrQueryStatistics();
+ [todo] void BrowserrQueryStatistics();
/******************/
/* Function 0x06 */
- [todo] NTSTATUS BrowserResetStatistics();
+ [todo] void BrowserResetStatistics();
/******************/
/* Function 0x07 */
- [todo] NTSTATUS NetrBrowserStatisticsClear();
+ [todo] void NetrBrowserStatisticsClear();
/******************/
/* Function 0x08 */
- [todo] NTSTATUS NetrBrowserStatisticsGet();
+ [todo] void NetrBrowserStatisticsGet();
/******************/
/* Function 0x09 */
- [todo] NTSTATUS BrowserrSetNetlogonState();
+ [todo] void BrowserrSetNetlogonState();
/******************/
/* Function 0x0a */
- [todo] NTSTATUS BrowserrQueryEmulatedDomains();
+ [todo] void BrowserrQueryEmulatedDomains();
/******************/
/* Function 0x0b */
- [todo] NTSTATUS BrowserrServerEnumEx();
+ [todo] void BrowserrServerEnumEx();
}
diff --git a/librpc/idl/lsa.idl b/librpc/idl/lsa.idl
index 003641d97a..db5ca31720 100644
--- a/librpc/idl/lsa.idl
+++ b/librpc/idl/lsa.idl
@@ -16,7 +16,7 @@ import "misc.idl", "security.idl";
typedef bitmap security_secinfo security_secinfo;
typedef bitmap kerb_EncTypes kerb_EncTypes;
- typedef [public,noejs] struct {
+ typedef [public] struct {
[value(2*strlen_m(string))] uint16 length;
[value(2*strlen_m(string))] uint16 size;
[charset(UTF16),size_is(size/2),length_is(length/2)] uint16 *string;
diff --git a/librpc/idl/misc.idl b/librpc/idl/misc.idl
index 1907195252..1ef0d913b9 100644
--- a/librpc/idl/misc.idl
+++ b/librpc/idl/misc.idl
@@ -7,7 +7,7 @@
]
interface misc
{
- typedef [public,noprint,gensize,noejs] struct {
+ typedef [public,noprint,gensize] struct {
uint32 time_low;
uint16 time_mid;
uint16 time_hi_and_version;
diff --git a/librpc/idl/netlogon.idl b/librpc/idl/netlogon.idl
index cf4da7adfa..f09e51e30f 100644
--- a/librpc/idl/netlogon.idl
+++ b/librpc/idl/netlogon.idl
@@ -1500,5 +1500,23 @@ interface netlogon
/****************/
/* Function 0x2e */
- [todo] WERROR netr_NETRSERVERGETTRUSTINFO();
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] uint32 *data;
+ uint32 entry_count;
+ [size_is(count)] lsa_String *entries;
+ } netr_TrustInfo;
+
+ NTSTATUS netr_ServerGetTrustInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *account_name,
+ [in] netr_SchannelType secure_channel_type,
+ [in,ref] [string,charset(UTF16)] uint16 *computer_name,
+ [in,ref] netr_Authenticator *credential,
+ [out,ref] netr_Authenticator *return_authenticator,
+ [out,ref] samr_Password *new_owf_password,
+ [out,ref] samr_Password *old_owf_password,
+ [out,ref] netr_TrustInfo **trust_info
+ );
}
diff --git a/librpc/idl/samr.idl b/librpc/idl/samr.idl
index 46478ee9e8..7d5d877bb1 100644
--- a/librpc/idl/samr.idl
+++ b/librpc/idl/samr.idl
@@ -410,8 +410,7 @@ import "misc.idl", "lsa.idl", "security.idl";
typedef struct {
hyper sequence_num;
NTTIME domain_create_time;
- uint32 unknown1;
- uint32 unknown2;
+ hyper modified_count_at_last_promotion;
} samr_DomInfo13;
typedef [switch_type(uint16)] union {
@@ -880,10 +879,11 @@ import "misc.idl", "lsa.idl", "security.idl";
} samr_Password;
typedef struct {
- samr_Password lm_pwd;
samr_Password nt_pwd;
- boolean8 lm_pwd_active;
+ samr_Password lm_pwd;
boolean8 nt_pwd_active;
+ boolean8 lm_pwd_active;
+ uint8 password_expired;
} samr_UserInfo18;
typedef struct {
@@ -916,8 +916,8 @@ import "misc.idl", "lsa.idl", "security.idl";
SAMR_FIELD_PARAMETERS = 0x00200000,
SAMR_FIELD_COUNTRY_CODE = 0x00400000,
SAMR_FIELD_CODE_PAGE = 0x00800000,
- SAMR_FIELD_PASSWORD = 0x01000000, /* either of these */
- SAMR_FIELD_PASSWORD2 = 0x02000000, /* two bits seems to work */
+ SAMR_FIELD_NT_PASSWORD_PRESENT = 0x01000000, /* either of these */
+ SAMR_FIELD_LM_PASSWORD_PRESENT = 0x02000000, /* two bits seems to work */
SAMR_FIELD_PRIVATE_DATA = 0x04000000,
SAMR_FIELD_EXPIRED_FLAG = 0x08000000,
SAMR_FIELD_SEC_DESC = 0x10000000,
@@ -945,8 +945,8 @@ import "misc.idl", "lsa.idl", "security.idl";
lsa_String workstations;
lsa_String comment;
lsa_BinaryString parameters;
- lsa_String unknown1;
- lsa_String unknown2;
+ lsa_BinaryString lm_owf_password;
+ lsa_BinaryString nt_owf_password;
lsa_String unknown3;
uint32 buf_count;
[size_is(buf_count)] uint8 *buffer;
@@ -959,8 +959,8 @@ import "misc.idl", "lsa.idl", "security.idl";
uint16 logon_count;
uint16 country_code;
uint16 code_page;
- uint8 nt_password_set;
uint8 lm_password_set;
+ uint8 nt_password_set;
uint8 password_expired;
uint8 unknown4;
} samr_UserInfo21;
diff --git a/librpc/idl/security.idl b/librpc/idl/security.idl
index 3f70e2c36e..4c6aa235d7 100644
--- a/librpc/idl/security.idl
+++ b/librpc/idl/security.idl
@@ -7,12 +7,39 @@
import "misc.idl";
import "dom_sid.idl";
+/*
+ use the same structure for dom_sid2 as dom_sid. A dom_sid2 is really
+ just a dom sid, but with the sub_auths represented as a conformant
+ array. As with all in-structure conformant arrays, the array length
+ is placed before the start of the structure. That's what gives rise
+ to the extra num_auths elemenent. We don't want the Samba code to
+ have to bother with such esoteric NDR details, so its easier to just
+ define it as a dom_sid and use pidl magic to make it all work. It
+ just means you need to mark a sid as a "dom_sid2" in the IDL when you
+ know it is of the conformant array variety
+*/
+cpp_quote("#define dom_sid2 dom_sid")
+
+/* same struct as dom_sid but inside a 28 bytes fixed buffer in NDR */
+cpp_quote("#define dom_sid28 dom_sid")
+
+/* same struct as dom_sid but in a variable byte buffer, which is maybe empty in NDR */
+cpp_quote("#define dom_sid0 dom_sid")
+
[
helper("librpc/gen_ndr/ndr_dom_sid.h"),
+ pyhelper("librpc/ndr/py_security.c"),
pointer_default(unique)
]
interface security
{
+
+ typedef [public,gensize,noprint,nosize,nopull,nopush] struct {
+ uint8 sid_rev_num; /**< SID revision number */
+ [range(0,15)] int8 num_auths; /**< Number of sub-authorities */
+ uint8 id_auth[6]; /**< Identifier Authority */
+ uint32 sub_auths[15];
+ } dom_sid;
/*
access masks are divided up like this:
0xabccdddd
@@ -388,4 +415,5 @@ interface security
KERB_ENCTYPE_AES128_CTS_HMAC_SHA1_96 = 0x00000008,
KERB_ENCTYPE_AES256_CTS_HMAC_SHA1_96 = 0x00000010
} kerb_EncTypes;
+
}
diff --git a/librpc/idl/srvsvc.idl b/librpc/idl/srvsvc.idl
index 3f24402c3f..153d8cfbbe 100644
--- a/librpc/idl/srvsvc.idl
+++ b/librpc/idl/srvsvc.idl
@@ -638,12 +638,12 @@ import "security.idl", "svcctl.idl";
PLATFORM_ID_VMS = 700
} srvsvc_PlatformId;
- typedef struct {
+ typedef [public] struct {
srvsvc_PlatformId platform_id;
[string,charset(UTF16)] uint16 *server_name;
} srvsvc_NetSrvInfo100;
- typedef struct {
+ typedef [public] struct {
srvsvc_PlatformId platform_id;
[string,charset(UTF16)] uint16 *server_name;
uint32 version_major;
diff --git a/librpc/idl/winreg.idl b/librpc/idl/winreg.idl
index 9216f9893b..2f108a090b 100644
--- a/librpc/idl/winreg.idl
+++ b/librpc/idl/winreg.idl
@@ -40,7 +40,7 @@ import "lsa.idl", "security.idl";
REG_QWORD = 11
} winreg_Type;
- typedef [public,noejs] struct {
+ typedef [public] struct {
[value(strlen_m_term(name)*2)] uint16 name_len;
[value(strlen_m_term(name)*2)] uint16 name_size;
[string,charset(UTF16)] uint16 *name;