Impossible to load ndr_* as shared objects :-(
Volker Lendecke
Volker.Lendecke at SerNet.DE
Sun Nov 8 15:30:33 MST 2009
On Sun, Nov 08, 2009 at 07:47:02PM +0100, Volker Lendecke wrote:
> After some weekends of work disentangling the ndr tables
> from the rest of the code I had to figure out that it is
> impossible to load them as shared objects: lsa_String and
> other datatypes are everywhere.
Attached find a patch that introduces "shared.idl" with all
shared stuff. Not good for a late night checkin, but that is
needed for making the large ndr_*.o shared objects.
I'll check it in together with the required build fixes once
make test has finished. But that's probably not going to be
before tomorrow.
Volker
-------------- next part --------------
librpc/idl/browser.idl | 2 +-
librpc/idl/drsblobs.idl | 2 +-
librpc/idl/drsuapi.idl | 2 +-
librpc/idl/eventlog.idl | 2 +-
librpc/idl/initshutdown.idl | 2 +-
librpc/idl/krb5pac.idl | 2 +-
librpc/idl/lsa.idl | 90 +------------
librpc/idl/misc.idl | 1 -
librpc/idl/named_pipe_auth.idl | 2 +-
librpc/idl/nbt.idl | 2 +-
librpc/idl/netlogon.idl | 97 +-------------
librpc/idl/samr.idl | 63 +--------
librpc/idl/schannel.idl | 2 +-
librpc/idl/shared.idl | 307 ++++++++++++++++++++++++++++++++++++++++
librpc/idl/spoolss.idl | 2 +-
librpc/idl/srvsvc.idl | 24 +---
librpc/idl/svcctl.idl | 31 ----
librpc/idl/winreg.idl | 2 +-
librpc/idl/wkssvc.idl | 2 +-
19 files changed, 323 insertions(+), 314 deletions(-)
diff --git a/librpc/idl/browser.idl b/librpc/idl/browser.idl
index 94d4ce6..8284fae 100644
--- a/librpc/idl/browser.idl
+++ b/librpc/idl/browser.idl
@@ -1,4 +1,4 @@
-import "srvsvc.idl";
+import "shared.idl";
[
uuid("6bffd098-a112-3610-9833-012892020162"),
diff --git a/librpc/idl/drsblobs.idl b/librpc/idl/drsblobs.idl
index 97f3b2d..5d093d8 100644
--- a/librpc/idl/drsblobs.idl
+++ b/librpc/idl/drsblobs.idl
@@ -1,6 +1,6 @@
#include "idl_types.h"
-import "drsuapi.idl", "misc.idl", "samr.idl", "lsa.idl";
+import "drsuapi.idl", "misc.idl", "shared.idl";
[
uuid("12345778-1234-abcd-0001-00000001"),
diff --git a/librpc/idl/drsuapi.idl b/librpc/idl/drsuapi.idl
index f53db00..d4f140d 100644
--- a/librpc/idl/drsuapi.idl
+++ b/librpc/idl/drsuapi.idl
@@ -1,6 +1,6 @@
#include "idl_types.h"
-import "security.idl", "misc.idl", "samr.idl";
+import "security.idl", "misc.idl", "shared.idl";
[
uuid("e3514235-4b06-11d1-ab04-00c04fc2dcd2"),
diff --git a/librpc/idl/eventlog.idl b/librpc/idl/eventlog.idl
index e269467..4d6fd3d 100644
--- a/librpc/idl/eventlog.idl
+++ b/librpc/idl/eventlog.idl
@@ -4,7 +4,7 @@
eventlog interface definition
*/
-import "lsa.idl", "security.idl";
+import "shared.idl", "security.idl";
[ uuid("82273fdc-e32a-18c3-3f78-827929dc23ea"),
version(0.0),
diff --git a/librpc/idl/initshutdown.idl b/librpc/idl/initshutdown.idl
index 13a1362..75265a8 100644
--- a/librpc/idl/initshutdown.idl
+++ b/librpc/idl/initshutdown.idl
@@ -4,7 +4,7 @@
initshutdown interface definition
*/
-import "lsa.idl";
+import "misc.idl", "shared.idl";
[
uuid("894de0c0-0d55-11d3-a322-00c04fa321a1"),
diff --git a/librpc/idl/krb5pac.idl b/librpc/idl/krb5pac.idl
index 24c55b8..3a5dba3 100644
--- a/librpc/idl/krb5pac.idl
+++ b/librpc/idl/krb5pac.idl
@@ -4,7 +4,7 @@
#include "idl_types.h"
-import "security.idl", "netlogon.idl", "samr.idl";
+import "security.idl", "shared.idl";
[
uuid("12345778-1234-abcd-0000-00000000"),
diff --git a/librpc/idl/lsa.idl b/librpc/idl/lsa.idl
index a893786..d903a57 100644
--- a/librpc/idl/lsa.idl
+++ b/librpc/idl/lsa.idl
@@ -4,7 +4,7 @@
lsa interface definition
*/
-import "misc.idl", "security.idl";
+import "misc.idl", "security.idl", "shared.idl";
[ uuid("12345778-1234-abcd-ef00-0123456789ab"),
version(0.0),
@@ -16,41 +16,6 @@ import "misc.idl", "security.idl";
typedef bitmap security_secinfo security_secinfo;
typedef bitmap kerb_EncTypes kerb_EncTypes;
- 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;
- } lsa_String;
-
- typedef [public] struct {
- [value(2*strlen_m(string))] uint16 length;
- [value(2*strlen_m_term(string))] uint16 size;
- [charset(UTF16),size_is(size/2),length_is(length/2)] uint16 *string;
- } lsa_StringLarge;
-
- typedef [public] struct {
- uint32 count;
- [size_is(count)] lsa_String *names;
- } lsa_Strings;
-
- typedef [public] struct {
- [value(strlen_m(string))] uint16 length;
- [value(strlen_m(string))] uint16 size;
- [charset(DOS),size_is(size),length_is(length)] uint8 *string;
- } lsa_AsciiString;
-
- typedef [public] struct {
- [value(strlen_m(string))] uint16 length;
- [value(strlen_m_term(string))] uint16 size;
- [charset(DOS),size_is(size),length_is(length)] uint8 *string;
- } lsa_AsciiStringLarge;
-
- typedef [public] struct {
- uint16 length;
- uint16 size;
- [size_is(size/2),length_is(length/2)] uint16 *array;
- } lsa_BinaryString;
-
/******************/
/* Function: 0x00 */
NTSTATUS lsa_Close (
@@ -446,15 +411,6 @@ import "misc.idl", "security.idl";
one privilege set
*/
/* Function: 0x0b */
- typedef struct {
- dom_sid2 *sid;
- } lsa_SidPtr;
-
- typedef [public] struct {
- [range(0,1000)] uint32 num_sids;
- [size_is(num_sids)] lsa_SidPtr *sids;
- } lsa_SidArray;
-
[public] NTSTATUS lsa_EnumAccounts(
[in] policy_handle *handle,
[in,out,ref] uint32 *resume_handle,
@@ -757,13 +713,6 @@ import "misc.idl", "security.idl";
lsa_TrustAttributes trust_attributes;
} lsa_TrustDomainInfoInfoEx;
- typedef [public,v1_enum] enum {
- TRUST_AUTH_TYPE_NONE = 0,
- TRUST_AUTH_TYPE_NT4OWF = 1,
- TRUST_AUTH_TYPE_CLEAR = 2,
- TRUST_AUTH_TYPE_VERSION = 3
- } lsa_TrustAuthType;
-
typedef struct {
NTTIME_hyper last_update_time;
lsa_TrustAuthType AuthType;
@@ -1267,43 +1216,6 @@ import "misc.idl", "security.idl";
[todo] NTSTATUS lsa_LSARUNREGISTERAUDITEVENT();
/* Function 0x49 */
- typedef struct {
- [range(0,131072)] uint3264 length;
- [size_is(length)] uint8 *data;
- } lsa_ForestTrustBinaryData;
-
- typedef struct {
- dom_sid2 *domain_sid;
- lsa_StringLarge dns_domain_name;
- lsa_StringLarge netbios_domain_name;
- } lsa_ForestTrustDomainInfo;
-
- typedef [switch_type(uint32)] union {
- [case(LSA_FOREST_TRUST_TOP_LEVEL_NAME)] lsa_String top_level_name;
- [case(LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX)] lsa_StringLarge top_level_name_ex;
- [case(LSA_FOREST_TRUST_DOMAIN_INFO)] lsa_ForestTrustDomainInfo domain_info;
- [default] lsa_ForestTrustBinaryData data;
- } lsa_ForestTrustData;
-
- typedef [v1_enum] enum {
- LSA_FOREST_TRUST_TOP_LEVEL_NAME = 0,
- LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX = 1,
- LSA_FOREST_TRUST_DOMAIN_INFO = 2,
- LSA_FOREST_TRUST_RECORD_TYPE_LAST = 3
- } lsa_ForestTrustRecordType;
-
- typedef struct {
- uint32 flags;
- lsa_ForestTrustRecordType level;
- hyper unknown;
- [switch_is(level)] lsa_ForestTrustData forest_trust_data;
- } lsa_ForestTrustRecord;
-
- typedef [public] struct {
- [range(0,4000)] uint32 count;
- [size_is(count)] lsa_ForestTrustRecord **entries;
- } lsa_ForestTrustInformation;
-
NTSTATUS lsa_lsaRQueryForestTrustInformation(
[in] policy_handle *handle,
[in,ref] lsa_String *trusted_domain_name,
diff --git a/librpc/idl/misc.idl b/librpc/idl/misc.idl
index 5a2bf75..ce44e86 100644
--- a/librpc/idl/misc.idl
+++ b/librpc/idl/misc.idl
@@ -4,7 +4,6 @@
miscellaneous IDL structures
*/
-
[
pyhelper("librpc/ndr/py_misc.c"),
pointer_default(unique)
diff --git a/librpc/idl/named_pipe_auth.idl b/librpc/idl/named_pipe_auth.idl
index 43db989..5a61dec 100644
--- a/librpc/idl/named_pipe_auth.idl
+++ b/librpc/idl/named_pipe_auth.idl
@@ -3,7 +3,7 @@
miscellaneous IDL structures
*/
-import "netlogon.idl";
+import "shared.idl";
[
pointer_default(unique)
diff --git a/librpc/idl/nbt.idl b/librpc/idl/nbt.idl
index a51132c..ccd1a5c 100644
--- a/librpc/idl/nbt.idl
+++ b/librpc/idl/nbt.idl
@@ -8,7 +8,7 @@
encoding if it doesn't work out
*/
-import "misc.idl", "security.idl", "svcctl.idl", "samr.idl";
+import "misc.idl", "security.idl", "shared.idl";
[
helper("../libcli/netlogon.h", "../libcli/nbt/libnbt.h")
]
diff --git a/librpc/idl/netlogon.idl b/librpc/idl/netlogon.idl
index 82a60c7..316a0f1 100644
--- a/librpc/idl/netlogon.idl
+++ b/librpc/idl/netlogon.idl
@@ -4,7 +4,7 @@
who contributed!
*/
-import "misc.idl", "lsa.idl", "samr.idl", "security.idl", "nbt.idl";
+import "misc.idl", "shared.idl", "security.idl", "nbt.idl";
#include "idl_types.h"
@@ -181,73 +181,11 @@ interface netlogon
[case(NetlogonServiceTransitiveInformation)] netr_PasswordInfo *password;
} netr_LogonLevel;
- typedef [public,flag(NDR_PAHEX)] struct {
- uint8 key[16];
- } netr_UserSessionKey;
-
- typedef [public,flag(NDR_PAHEX)] struct {
- uint8 key[8];
- } netr_LMSessionKey;
-
- /* Flags for user_flags below */
- typedef [public,bitmap32bit] bitmap {
- NETLOGON_GUEST = 0x00000001,
- NETLOGON_NOENCRYPTION = 0x00000002,
- NETLOGON_CACHED_ACCOUNT = 0x00000004,
- NETLOGON_USED_LM_PASSWORD = 0x00000008,
- NETLOGON_EXTRA_SIDS = 0x00000020,
- NETLOGON_SUBAUTH_SESSION_KEY = 0x00000040,
- NETLOGON_SERVER_TRUST_ACCOUNT = 0x00000080,
- NETLOGON_NTLMV2_ENABLED = 0x00000100,
- NETLOGON_RESOURCE_GROUPS = 0x00000200,
- NETLOGON_PROFILE_PATH_RETURNED = 0x00000400,
- NETLOGON_GRACE_LOGON = 0x01000000
- } netr_UserFlags;
-
- typedef struct {
- NTTIME last_logon;
- NTTIME last_logoff;
- NTTIME acct_expiry;
- NTTIME last_password_change;
- NTTIME allow_password_change;
- NTTIME force_password_change;
- lsa_String account_name;
- lsa_String full_name;
- lsa_String logon_script;
- lsa_String profile_path;
- lsa_String home_directory;
- lsa_String home_drive;
- uint16 logon_count;
- uint16 bad_password_count;
- uint32 rid;
- uint32 primary_gid;
- samr_RidWithAttributeArray groups;
- netr_UserFlags user_flags;
- netr_UserSessionKey key;
- lsa_StringLarge logon_server;
- lsa_StringLarge domain;
- dom_sid2 *domain_sid;
- netr_LMSessionKey LMSessKey;
- samr_AcctFlags acct_flags;
- uint32 unknown[7];
- } netr_SamBaseInfo;
-
typedef struct {
netr_SamBaseInfo base;
} netr_SamInfo2;
typedef struct {
- dom_sid2 *sid;
- samr_GroupAttrs attributes;
- } netr_SidAttr;
-
- typedef [public] struct {
- netr_SamBaseInfo base;
- uint32 sidcount;
- [size_is(sidcount)] netr_SidAttr *sids;
- } netr_SamInfo3;
-
- typedef struct {
netr_SamBaseInfo base;
uint32 sidcount;
[size_is(sidcount)] netr_SidAttr *sids;
@@ -293,10 +231,6 @@ interface netlogon
[case(NetlogonValidationSamInfo4)] netr_SamInfo6 *sam6;
} netr_Validation;
- typedef [public, flag(NDR_PAHEX)] struct {
- uint8 data[8];
- } netr_Credential;
-
typedef [public] struct {
netr_Credential cred;
time_t timestamp;
@@ -944,35 +878,6 @@ interface netlogon
/*****************/
/* Function 0x0F */
- typedef [public,bitmap32bit] bitmap {
- NETLOGON_NEG_ACCOUNT_LOCKOUT = 0x00000001,
- NETLOGON_NEG_PERSISTENT_SAMREPL = 0x00000002,
- NETLOGON_NEG_ARCFOUR = 0x00000004,
- NETLOGON_NEG_PROMOTION_COUNT = 0x00000008,
- NETLOGON_NEG_CHANGELOG_BDC = 0x00000010,
- NETLOGON_NEG_FULL_SYNC_REPL = 0x00000020,
- NETLOGON_NEG_MULTIPLE_SIDS = 0x00000040,
- NETLOGON_NEG_REDO = 0x00000080,
- NETLOGON_NEG_PASSWORD_CHANGE_REFUSAL = 0x00000100,
- NETLOGON_NEG_SEND_PASSWORD_INFO_PDC = 0x00000200,
- NETLOGON_NEG_GENERIC_PASSTHROUGH = 0x00000400,
- NETLOGON_NEG_CONCURRENT_RPC = 0x00000800,
- NETLOGON_NEG_AVOID_ACCOUNT_DB_REPL = 0x00001000,
- NETLOGON_NEG_AVOID_SECURITYAUTH_DB_REPL = 0x00002000,
- NETLOGON_NEG_STRONG_KEYS = 0x00004000,
- NETLOGON_NEG_TRANSITIVE_TRUSTS = 0x00008000,
- NETLOGON_NEG_DNS_DOMAIN_TRUSTS = 0x00010000,
- NETLOGON_NEG_PASSWORD_SET2 = 0x00020000,
- NETLOGON_NEG_GETDOMAININFO = 0x00040000,
- NETLOGON_NEG_CROSS_FOREST_TRUSTS = 0x00080000,
- NETLOGON_NEG_NEUTRALIZE_NT4_EMULATION = 0x00100000,
- NETLOGON_NEG_RODC_PASSTHROUGH = 0x00200000,
- NETLOGON_NEG_SUPPORTS_AES_SHA2 = 0x00400000,
- NETLOGON_NEG_SUPPORTS_AES = 0x01000000,
- NETLOGON_NEG_AUTHENTICATED_RPC_LSASS = 0x20000000,
- NETLOGON_NEG_AUTHENTICATED_RPC = 0x40000000
- } netr_NegotiateFlags;
-
const uint32 NETLOGON_NEG_128BIT = NETLOGON_NEG_STRONG_KEYS;
const uint32 NETLOGON_NEG_SCHANNEL = NETLOGON_NEG_AUTHENTICATED_RPC;
diff --git a/librpc/idl/samr.idl b/librpc/idl/samr.idl
index da7b1aa..0400c31 100644
--- a/librpc/idl/samr.idl
+++ b/librpc/idl/samr.idl
@@ -3,7 +3,7 @@
/*
samr interface definition
*/
-import "misc.idl", "lsa.idl", "security.idl";
+import "misc.idl", "security.idl", "shared.idl";
/*
Thanks to Todd Sabin for some information from his samr.idl in acltools
@@ -17,36 +17,6 @@ import "misc.idl", "lsa.idl", "security.idl";
{
typedef bitmap security_secinfo security_secinfo;
- /* SAM database types */
- typedef [public,v1_enum] enum {
- SAM_DATABASE_DOMAIN = 0, /* Domain users and groups */
- SAM_DATABASE_BUILTIN = 1, /* BUILTIN users and groups */
- SAM_DATABASE_PRIVS = 2 /* Privileges */
- } netr_SamDatabaseID;
-
- /* account control (acct_flags) bits */
- typedef [public,bitmap32bit] bitmap {
- ACB_DISABLED = 0x00000001, /* 1 = User account disabled */
- ACB_HOMDIRREQ = 0x00000002, /* 1 = Home directory required */
- ACB_PWNOTREQ = 0x00000004, /* 1 = User password not required */
- ACB_TEMPDUP = 0x00000008, /* 1 = Temporary duplicate account */
- ACB_NORMAL = 0x00000010, /* 1 = Normal user account */
- ACB_MNS = 0x00000020, /* 1 = MNS logon user account */
- ACB_DOMTRUST = 0x00000040, /* 1 = Interdomain trust account */
- ACB_WSTRUST = 0x00000080, /* 1 = Workstation trust account */
- ACB_SVRTRUST = 0x00000100, /* 1 = Server trust account */
- ACB_PWNOEXP = 0x00000200, /* 1 = User password does not expire */
- ACB_AUTOLOCK = 0x00000400, /* 1 = Account auto locked */
- ACB_ENC_TXT_PWD_ALLOWED = 0x00000800, /* 1 = Encryped text password is allowed */
- ACB_SMARTCARD_REQUIRED = 0x00001000, /* 1 = Smart Card required */
- ACB_TRUSTED_FOR_DELEGATION = 0x00002000, /* 1 = Trusted for Delegation */
- ACB_NOT_DELEGATED = 0x00004000, /* 1 = Not delegated */
- ACB_USE_DES_KEY_ONLY = 0x00008000, /* 1 = Use DES key only */
- ACB_DONT_REQUIRE_PREAUTH = 0x00010000, /* 1 = Preauth not required */
- ACB_PW_EXPIRED = 0x00020000, /* 1 = Password Expired */
- ACB_NO_AUTH_DATA_REQD = 0x00080000 /* 1 = No authorization data required */
- } samr_AcctFlags;
-
/* SAM server specific access rights */
typedef [bitmap32bit] bitmap {
@@ -569,17 +539,6 @@ import "misc.idl", "lsa.idl", "security.idl";
[out,ref] policy_handle *group_handle
);
- /* Group attributes */
- typedef [public,bitmap32bit] bitmap {
- SE_GROUP_MANDATORY = 0x00000001,
- SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002,
- SE_GROUP_ENABLED = 0x00000004,
- SE_GROUP_OWNER = 0x00000008,
- SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010,
- SE_GROUP_RESOURCE = 0x20000000,
- SE_GROUP_LOGON_ID = 0xC0000000
- } samr_GroupAttrs;
-
/************************/
/* Function 0x14 */
@@ -811,12 +770,6 @@ import "misc.idl", "lsa.idl", "security.idl";
uint16 code_page;
} samr_UserInfo2;
- /* this is also used in samr and netlogon */
- typedef [public, flag(NDR_PAHEX)] struct {
- uint16 units_per_week;
- [size_is(1260), length_is(units_per_week/8)] uint8 *bits;
- } samr_LogonHours;
-
typedef struct {
lsa_String account_name;
lsa_String full_name;
@@ -909,10 +862,6 @@ import "misc.idl", "lsa.idl", "security.idl";
NTTIME acct_expiry;
} samr_UserInfo17;
- typedef [public, flag(NDR_PAHEX)] struct {
- uint8 hash[16];
- } samr_Password;
-
typedef struct {
samr_Password nt_pwd;
samr_Password lm_pwd;
@@ -1092,16 +1041,6 @@ import "misc.idl", "lsa.idl", "security.idl";
/************************/
/* Function 0x27 */
- typedef [public] struct {
- uint32 rid;
- samr_GroupAttrs attributes;
- } samr_RidWithAttribute;
-
- typedef [public] struct {
- uint32 count;
- [size_is(count)] samr_RidWithAttribute *rids;
- } samr_RidWithAttributeArray;
-
NTSTATUS samr_GetGroupsForUser(
[in,ref] policy_handle *user_handle,
[out,ref] samr_RidWithAttributeArray **rids
diff --git a/librpc/idl/schannel.idl b/librpc/idl/schannel.idl
index a30e292..55fedef 100644
--- a/librpc/idl/schannel.idl
+++ b/librpc/idl/schannel.idl
@@ -4,7 +4,7 @@
schannel structures
*/
-import "netlogon.idl", "nbt.idl";
+import "shared.idl", "nbt.idl";
[
pointer_default(unique),
diff --git a/librpc/idl/shared.idl b/librpc/idl/shared.idl
new file mode 100644
index 0000000..0ecbf6b
--- /dev/null
+++ b/librpc/idl/shared.idl
@@ -0,0 +1,307 @@
+#include "idl_types.h"
+
+import "misc.idl", "security.idl";
+
+[
+ pointer_default(unique)
+]
+interface shared
+{
+ /* SAM database types */
+
+ 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;
+ } lsa_String;
+
+ typedef [public] struct {
+ [value(2*strlen_m(string))] uint16 length;
+ [value(2*strlen_m_term(string))] uint16 size;
+ [charset(UTF16),size_is(size/2),length_is(length/2)] uint16 *string;
+ } lsa_StringLarge;
+
+ typedef [public] struct {
+ uint16 length;
+ uint16 size;
+ [size_is(size/2),length_is(length/2)] uint16 *array;
+ } lsa_BinaryString;
+
+ typedef [public] struct {
+ [value(strlen_m(string))] uint16 length;
+ [value(strlen_m(string))] uint16 size;
+ [charset(DOS),size_is(size),length_is(length)] uint8 *string;
+ } lsa_AsciiString;
+
+ typedef [public] struct {
+ [value(strlen_m(string))] uint16 length;
+ [value(strlen_m_term(string))] uint16 size;
+ [charset(DOS),size_is(size),length_is(length)] uint8 *string;
+ } lsa_AsciiStringLarge;
+
+ typedef struct {
+ dom_sid2 *sid;
+ } lsa_SidPtr;
+
+ typedef [public] struct {
+ [range(0,1000)] uint32 num_sids;
+ [size_is(num_sids)] lsa_SidPtr *sids;
+ } lsa_SidArray;
+
+ typedef [public] struct {
+ uint32 count;
+ [size_is(count)] lsa_String *names;
+ } lsa_Strings;
+
+ /* account control (acct_flags) bits */
+ typedef [public,bitmap32bit] bitmap {
+ ACB_DISABLED = 0x00000001, /* 1 = User account disabled */
+ ACB_HOMDIRREQ = 0x00000002, /* 1 = Home directory required */
+ ACB_PWNOTREQ = 0x00000004, /* 1 = User password not required */
+ ACB_TEMPDUP = 0x00000008, /* 1 = Temporary duplicate account */
+ ACB_NORMAL = 0x00000010, /* 1 = Normal user account */
+ ACB_MNS = 0x00000020, /* 1 = MNS logon user account */
+ ACB_DOMTRUST = 0x00000040, /* 1 = Interdomain trust account */
+ ACB_WSTRUST = 0x00000080, /* 1 = Workstation trust account */
+ ACB_SVRTRUST = 0x00000100, /* 1 = Server trust account */
+ ACB_PWNOEXP = 0x00000200, /* 1 = User password does not expire */
+ ACB_AUTOLOCK = 0x00000400, /* 1 = Account auto locked */
+ ACB_ENC_TXT_PWD_ALLOWED = 0x00000800, /* 1 = Encryped text password is allowed */
+ ACB_SMARTCARD_REQUIRED = 0x00001000, /* 1 = Smart Card required */
+ ACB_TRUSTED_FOR_DELEGATION = 0x00002000, /* 1 = Trusted for Delegation */
+ ACB_NOT_DELEGATED = 0x00004000, /* 1 = Not delegated */
+ ACB_USE_DES_KEY_ONLY = 0x00008000, /* 1 = Use DES key only */
+ ACB_DONT_REQUIRE_PREAUTH = 0x00010000, /* 1 = Preauth not required */
+ ACB_PW_EXPIRED = 0x00020000, /* 1 = Password Expired */
+ ACB_NO_AUTH_DATA_REQD = 0x00080000 /* 1 = No authorization data required */
+ } samr_AcctFlags;
+
+ /* Group attributes */
+ typedef [public,bitmap32bit] bitmap {
+ SE_GROUP_MANDATORY = 0x00000001,
+ SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002,
+ SE_GROUP_ENABLED = 0x00000004,
+ SE_GROUP_OWNER = 0x00000008,
+ SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010,
+ SE_GROUP_RESOURCE = 0x20000000,
+ SE_GROUP_LOGON_ID = 0xC0000000
+ } samr_GroupAttrs;
+
+ typedef [public, flag(NDR_PAHEX)] struct {
+ uint8 hash[16];
+ } samr_Password;
+
+ typedef [public] struct {
+ uint32 rid;
+ samr_GroupAttrs attributes;
+ } samr_RidWithAttribute;
+
+ typedef [public] struct {
+ uint32 count;
+ [size_is(count)] samr_RidWithAttribute *rids;
+ } samr_RidWithAttributeArray;
+
+ /* this is also used in samr and netlogon */
+ typedef [public, flag(NDR_PAHEX)] struct {
+ uint16 units_per_week;
+ [size_is(1260), length_is(units_per_week/8)] uint8 *bits;
+ } samr_LogonHours;
+
+ typedef struct {
+ [range(0,131072)] uint3264 length;
+ [size_is(length)] uint8 *data;
+ } lsa_ForestTrustBinaryData;
+
+ typedef struct {
+ dom_sid2 *domain_sid;
+ lsa_StringLarge dns_domain_name;
+ lsa_StringLarge netbios_domain_name;
+ } lsa_ForestTrustDomainInfo;
+
+ typedef [switch_type(uint32)] union {
+ [case(LSA_FOREST_TRUST_TOP_LEVEL_NAME)] lsa_String top_level_name;
+ [case(LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX)] lsa_StringLarge top_level_name_ex;
+ [case(LSA_FOREST_TRUST_DOMAIN_INFO)] lsa_ForestTrustDomainInfo domain_info;
+ [default] lsa_ForestTrustBinaryData data;
+ } lsa_ForestTrustData;
+
+ typedef [v1_enum] enum {
+ LSA_FOREST_TRUST_TOP_LEVEL_NAME = 0,
+ LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX = 1,
+ LSA_FOREST_TRUST_DOMAIN_INFO = 2,
+ LSA_FOREST_TRUST_RECORD_TYPE_LAST = 3
+ } lsa_ForestTrustRecordType;
+
+ typedef struct {
+ uint32 flags;
+ lsa_ForestTrustRecordType level;
+ hyper unknown;
+ [switch_is(level)] lsa_ForestTrustData forest_trust_data;
+ } lsa_ForestTrustRecord;
+
+ typedef [public] struct {
+ [range(0,4000)] uint32 count;
+ [size_is(count)] lsa_ForestTrustRecord **entries;
+ } lsa_ForestTrustInformation;
+
+ typedef [public,v1_enum] enum {
+ TRUST_AUTH_TYPE_NONE = 0,
+ TRUST_AUTH_TYPE_NT4OWF = 1,
+ TRUST_AUTH_TYPE_CLEAR = 2,
+ TRUST_AUTH_TYPE_VERSION = 3
+ } lsa_TrustAuthType;
+
+ typedef [public,v1_enum] enum {
+ SAM_DATABASE_DOMAIN = 0, /* Domain users and groups */
+ SAM_DATABASE_BUILTIN = 1, /* BUILTIN users and groups */
+ SAM_DATABASE_PRIVS = 2 /* Privileges */
+ } netr_SamDatabaseID;
+
+ typedef [public,flag(NDR_PAHEX)] struct {
+ uint8 key[16];
+ } netr_UserSessionKey;
+
+ typedef [public,flag(NDR_PAHEX)] struct {
+ uint8 key[8];
+ } netr_LMSessionKey;
+
+ /* Flags for user_flags below */
+ typedef [public,bitmap32bit] bitmap {
+ NETLOGON_GUEST = 0x00000001,
+ NETLOGON_NOENCRYPTION = 0x00000002,
+ NETLOGON_CACHED_ACCOUNT = 0x00000004,
+ NETLOGON_USED_LM_PASSWORD = 0x00000008,
+ NETLOGON_EXTRA_SIDS = 0x00000020,
+ NETLOGON_SUBAUTH_SESSION_KEY = 0x00000040,
+ NETLOGON_SERVER_TRUST_ACCOUNT = 0x00000080,
+ NETLOGON_NTLMV2_ENABLED = 0x00000100,
+ NETLOGON_RESOURCE_GROUPS = 0x00000200,
+ NETLOGON_PROFILE_PATH_RETURNED = 0x00000400,
+ NETLOGON_GRACE_LOGON = 0x01000000
+ } netr_UserFlags;
+
+ typedef [public] struct {
+ NTTIME last_logon;
+ NTTIME last_logoff;
+ NTTIME acct_expiry;
+ NTTIME last_password_change;
+ NTTIME allow_password_change;
+ NTTIME force_password_change;
+ lsa_String account_name;
+ lsa_String full_name;
+ lsa_String logon_script;
+ lsa_String profile_path;
+ lsa_String home_directory;
+ lsa_String home_drive;
+ uint16 logon_count;
+ uint16 bad_password_count;
+ uint32 rid;
+ uint32 primary_gid;
+ samr_RidWithAttributeArray groups;
+ netr_UserFlags user_flags;
+ netr_UserSessionKey key;
+ lsa_StringLarge logon_server;
+ lsa_StringLarge domain;
+ dom_sid2 *domain_sid;
+ netr_LMSessionKey LMSessKey;
+ samr_AcctFlags acct_flags;
+ uint32 unknown[7];
+ } netr_SamBaseInfo;
+
+ typedef [public] struct {
+ dom_sid2 *sid;
+ samr_GroupAttrs attributes;
+ } netr_SidAttr;
+
+ typedef [public] struct {
+ netr_SamBaseInfo base;
+ uint32 sidcount;
+ [size_is(sidcount)] netr_SidAttr *sids;
+ } netr_SamInfo3;
+
+ typedef [public,v1_enum] enum {
+ PLATFORM_ID_DOS = 300,
+ PLATFORM_ID_OS2 = 400,
+ PLATFORM_ID_NT = 500,
+ PLATFORM_ID_OSF = 600,
+ PLATFORM_ID_VMS = 700
+ } srvsvc_PlatformId;
+
+ typedef [public,bitmap32bit] bitmap {
+ SV_TYPE_WORKSTATION = 0x00000001,
+ SV_TYPE_SERVER = 0x00000002,
+ SV_TYPE_SQLSERVER = 0x00000004,
+ SV_TYPE_DOMAIN_CTRL = 0x00000008,
+ SV_TYPE_DOMAIN_BAKCTRL = 0x00000010,
+ SV_TYPE_TIME_SOURCE = 0x00000020,
+ SV_TYPE_AFP = 0x00000040,
+ SV_TYPE_NOVELL = 0x00000080,
+
+ SV_TYPE_DOMAIN_MEMBER = 0x00000100,
+ SV_TYPE_PRINTQ_SERVER = 0x00000200,
+ SV_TYPE_DIALIN_SERVER = 0x00000400,
+ SV_TYPE_SERVER_UNIX = 0x00000800,
+ SV_TYPE_NT = 0x00001000,
+ SV_TYPE_WFW = 0x00002000,
+ SV_TYPE_SERVER_MFPN = 0x00004000,
+ SV_TYPE_SERVER_NT = 0x00008000,
+ SV_TYPE_POTENTIAL_BROWSER = 0x00010000,
+ SV_TYPE_BACKUP_BROWSER = 0x00020000,
+ SV_TYPE_MASTER_BROWSER = 0x00040000,
+ SV_TYPE_DOMAIN_MASTER = 0x00080000,
+ SV_TYPE_SERVER_OSF = 0x00100000,
+ SV_TYPE_SERVER_VMS = 0x00200000,
+ SV_TYPE_WIN95_PLUS = 0x00400000,
+ SV_TYPE_DFS_SERVER = 0x00800000,
+ SV_TYPE_ALTERNATE_XPORT = 0x20000000,
+ SV_TYPE_LOCAL_LIST_ONLY = 0x40000000,
+ SV_TYPE_DOMAIN_ENUM = 0x80000000
+ } svcctl_ServerType;
+
+ typedef [public,bitmap32bit] bitmap {
+ NETLOGON_NEG_ACCOUNT_LOCKOUT = 0x00000001,
+ NETLOGON_NEG_PERSISTENT_SAMREPL = 0x00000002,
+ NETLOGON_NEG_ARCFOUR = 0x00000004,
+ NETLOGON_NEG_PROMOTION_COUNT = 0x00000008,
+ NETLOGON_NEG_CHANGELOG_BDC = 0x00000010,
+ NETLOGON_NEG_FULL_SYNC_REPL = 0x00000020,
+ NETLOGON_NEG_MULTIPLE_SIDS = 0x00000040,
+ NETLOGON_NEG_REDO = 0x00000080,
+ NETLOGON_NEG_PASSWORD_CHANGE_REFUSAL = 0x00000100,
+ NETLOGON_NEG_SEND_PASSWORD_INFO_PDC = 0x00000200,
+ NETLOGON_NEG_GENERIC_PASSTHROUGH = 0x00000400,
+ NETLOGON_NEG_CONCURRENT_RPC = 0x00000800,
+ NETLOGON_NEG_AVOID_ACCOUNT_DB_REPL = 0x00001000,
+ NETLOGON_NEG_AVOID_SECURITYAUTH_DB_REPL = 0x00002000,
+ NETLOGON_NEG_STRONG_KEYS = 0x00004000,
+ NETLOGON_NEG_TRANSITIVE_TRUSTS = 0x00008000,
+ NETLOGON_NEG_DNS_DOMAIN_TRUSTS = 0x00010000,
+ NETLOGON_NEG_PASSWORD_SET2 = 0x00020000,
+ NETLOGON_NEG_GETDOMAININFO = 0x00040000,
+ NETLOGON_NEG_CROSS_FOREST_TRUSTS = 0x00080000,
+ NETLOGON_NEG_NEUTRALIZE_NT4_EMULATION = 0x00100000,
+ NETLOGON_NEG_RODC_PASSTHROUGH = 0x00200000,
+ NETLOGON_NEG_SUPPORTS_AES_SHA2 = 0x00400000,
+ NETLOGON_NEG_SUPPORTS_AES = 0x01000000,
+ NETLOGON_NEG_AUTHENTICATED_RPC_LSASS = 0x20000000,
+ NETLOGON_NEG_AUTHENTICATED_RPC = 0x40000000
+ } netr_NegotiateFlags;
+
+ typedef [public, flag(NDR_PAHEX)] struct {
+ uint8 data[8];
+ } netr_Credential;
+
+ typedef [public] struct {
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ } srvsvc_NetSrvInfo100;
+
+ typedef [public] struct {
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ uint32 version_major;
+ uint32 version_minor;
+ svcctl_ServerType server_type;
+ [string,charset(UTF16)] uint16 *comment;
+ } srvsvc_NetSrvInfo101;
+}
\ No newline at end of file
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index 04681bf..5a66673 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -3,7 +3,7 @@
/*
spoolss interface definitions
*/
-import "misc.idl", "security.idl", "winreg.idl";
+import "misc.idl", "security.idl";
[ uuid("12345678-1234-abcd-ef00-0123456789ab"),
version(1.0),
diff --git a/librpc/idl/srvsvc.idl b/librpc/idl/srvsvc.idl
index 153d8cf..9e91fce 100644
--- a/librpc/idl/srvsvc.idl
+++ b/librpc/idl/srvsvc.idl
@@ -3,7 +3,7 @@
/*
srvsvc interface definitions
*/
-import "security.idl", "svcctl.idl";
+import "security.idl", "shared.idl";
[ uuid("4b324fc8-1670-01d3-1278-5a47bf6ee188"),
version(3.0),
@@ -630,28 +630,6 @@ import "security.idl", "svcctl.idl";
/**************************/
/* srvsvc_NetSrv */
/**************************/
- typedef [public,v1_enum] enum {
- PLATFORM_ID_DOS = 300,
- PLATFORM_ID_OS2 = 400,
- PLATFORM_ID_NT = 500,
- PLATFORM_ID_OSF = 600,
- PLATFORM_ID_VMS = 700
- } srvsvc_PlatformId;
-
- typedef [public] struct {
- srvsvc_PlatformId platform_id;
- [string,charset(UTF16)] uint16 *server_name;
- } srvsvc_NetSrvInfo100;
-
- typedef [public] struct {
- srvsvc_PlatformId platform_id;
- [string,charset(UTF16)] uint16 *server_name;
- uint32 version_major;
- uint32 version_minor;
- svcctl_ServerType server_type;
- [string,charset(UTF16)] uint16 *comment;
- } srvsvc_NetSrvInfo101;
-
typedef struct {
srvsvc_PlatformId platform_id;
[string,charset(UTF16)] uint16 *server_name;
diff --git a/librpc/idl/svcctl.idl b/librpc/idl/svcctl.idl
index 19866d2..44723d1 100644
--- a/librpc/idl/svcctl.idl
+++ b/librpc/idl/svcctl.idl
@@ -80,37 +80,6 @@ import "misc.idl", "security.idl";
const int SERVICE_TYPE_WIN32=SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS;
const int SERVICE_TYPE_INTERACTIVE_PROCESS = 0x100;
- typedef [public,bitmap32bit] bitmap {
- SV_TYPE_WORKSTATION = 0x00000001,
- SV_TYPE_SERVER = 0x00000002,
- SV_TYPE_SQLSERVER = 0x00000004,
- SV_TYPE_DOMAIN_CTRL = 0x00000008,
- SV_TYPE_DOMAIN_BAKCTRL = 0x00000010,
- SV_TYPE_TIME_SOURCE = 0x00000020,
- SV_TYPE_AFP = 0x00000040,
- SV_TYPE_NOVELL = 0x00000080,
-
- SV_TYPE_DOMAIN_MEMBER = 0x00000100,
- SV_TYPE_PRINTQ_SERVER = 0x00000200,
- SV_TYPE_DIALIN_SERVER = 0x00000400,
- SV_TYPE_SERVER_UNIX = 0x00000800,
- SV_TYPE_NT = 0x00001000,
- SV_TYPE_WFW = 0x00002000,
- SV_TYPE_SERVER_MFPN = 0x00004000,
- SV_TYPE_SERVER_NT = 0x00008000,
- SV_TYPE_POTENTIAL_BROWSER = 0x00010000,
- SV_TYPE_BACKUP_BROWSER = 0x00020000,
- SV_TYPE_MASTER_BROWSER = 0x00040000,
- SV_TYPE_DOMAIN_MASTER = 0x00080000,
- SV_TYPE_SERVER_OSF = 0x00100000,
- SV_TYPE_SERVER_VMS = 0x00200000,
- SV_TYPE_WIN95_PLUS = 0x00400000,
- SV_TYPE_DFS_SERVER = 0x00800000,
- SV_TYPE_ALTERNATE_XPORT = 0x20000000,
- SV_TYPE_LOCAL_LIST_ONLY = 0x40000000,
- SV_TYPE_DOMAIN_ENUM = 0x80000000
- } svcctl_ServerType;
-
const uint32 SV_TYPE_ALL = 0xFFFFFFFF;
/*****************/
diff --git a/librpc/idl/winreg.idl b/librpc/idl/winreg.idl
index f1f4dfb..c2dbccc 100644
--- a/librpc/idl/winreg.idl
+++ b/librpc/idl/winreg.idl
@@ -2,7 +2,7 @@
winreg interface definition
*/
-import "lsa.idl", "security.idl", "misc.idl";
+import "security.idl", "misc.idl", "shared.idl";
[
uuid("338cd001-2244-31f1-aaaa-900038001003"),
diff --git a/librpc/idl/wkssvc.idl b/librpc/idl/wkssvc.idl
index 9e92ed7..9c8694d 100644
--- a/librpc/idl/wkssvc.idl
+++ b/librpc/idl/wkssvc.idl
@@ -4,7 +4,7 @@
wkssvc interface definitions
*/
-import "srvsvc.idl", "lsa.idl";
+import "misc.idl", "shared.idl";
[ uuid("6bffd098-a112-3610-9833-46c3f87e345a"),
version(1.0),
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20091108/2650f945/attachment.pgp>
More information about the samba-technical
mailing list