|
View:
New views
5 Messages
—
Rating Filter:
Alert me
|
|
|
Impossible to load ndr_* as shared objects :-(Hi!
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. Just in case someone wondered about the revert checkins that just flew in, they were in preparation and are not pretty worthless. On lesson learnt: Never push anything until the feature you want is 100% done :-(( Sorry for the noise. Volker |
|
|
Re: Impossible to load ndr_* as shared objects :-(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 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), |
|
|
Re: Impossible to load ndr_* as shared objects :-(On Sun, 2009-11-08 at 23:30 +0100, Volker Lendecke wrote:
> 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. shared with every other part of the system? Otherwise, most of the definitions look reasonable, and it's good to have the 'common to most of Samba', but not 'common to all of RPC' definitions in once place. Andrew Bartlett -- Andrew Bartlett http://samba.org/~abartlet/ Authentication Developer, Samba Team http://samba.org Samba Developer, Cisco Inc. |
|
|
Re: Impossible to load ndr_* as shared objects :-(On Mon, Nov 09, 2009 at 02:59:04PM +1100, Andrew Bartlett wrote:
> > 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. > > The netr_SamBaseInfo looks out of place. What makes it need to be > shared with every other part of the system? via the info3 struct. Volker |
|
|
|
| Free embeddable forum powered by Nabble | Forum Help |