[SCM] Samba Shared Repository - branch master updated - 3b9a03a7c374d6d8e93c729f4307417cbfe2d1a6

Günther Deschner gd at samba.org
Wed Oct 15 14:14:44 GMT 2008


The branch, master has been updated
       via  3b9a03a7c374d6d8e93c729f4307417cbfe2d1a6 (commit)
       via  bf38baba6d8607ea03599e8bb326925acbe8692f (commit)
       via  9b162bd3a940b2fe68468293fa99b8af23c5c251 (commit)
      from  0c840bd8d2f650e805bd7d03c2b3fe530b431a4f (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 3b9a03a7c374d6d8e93c729f4307417cbfe2d1a6
Author: Günther Deschner <gd at samba.org>
Date:   Wed Oct 15 16:14:15 2008 +0200

    s3: fix samlogon client and server calls.
    
    Guenther

commit bf38baba6d8607ea03599e8bb326925acbe8692f
Author: Günther Deschner <gd at samba.org>
Date:   Wed Oct 15 16:13:40 2008 +0200

    s3-build: re-run make samba3-idl.
    
    Guenther

commit 9b162bd3a940b2fe68468293fa99b8af23c5c251
Author: Günther Deschner <gd at samba.org>
Date:   Wed Oct 15 16:11:17 2008 +0200

    idl: merge netlogon IDL between s3 and s4 wrt LogonSamLogon.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source3/include/proto.h               |   18 +-
 source3/librpc/gen_ndr/cli_netlogon.c |   16 +-
 source3/librpc/gen_ndr/cli_netlogon.h |   16 +-
 source3/librpc/gen_ndr/ndr_netlogon.c |  483 +++++++++++++++++++++++++--------
 source3/librpc/gen_ndr/ndr_netlogon.h |   10 +-
 source3/librpc/gen_ndr/netlogon.h     |  101 +++++--
 source3/librpc/idl/netlogon.idl       |   89 ++++--
 source3/rpc_client/cli_netlogon.c     |   20 +-
 source3/rpc_server/srv_netlog_nt.c    |   10 +-
 source3/rpcclient/cmd_netlogon.c      |    2 +-
 source4/librpc/idl/netlogon.idl       |   12 +-
 11 files changed, 550 insertions(+), 227 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/proto.h b/source3/include/proto.h
index 180ae1a..9c08f08 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -2828,9 +2828,11 @@ _PUBLIC_ void ndr_print_netr_IdentityInfo(struct ndr_print *ndr, const char *nam
 _PUBLIC_ void ndr_print_netr_PasswordInfo(struct ndr_print *ndr, const char *name, const struct netr_PasswordInfo *r);
 _PUBLIC_ void ndr_print_netr_ChallengeResponse(struct ndr_print *ndr, const char *name, const struct netr_ChallengeResponse *r);
 _PUBLIC_ void ndr_print_netr_NetworkInfo(struct ndr_print *ndr, const char *name, const struct netr_NetworkInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_LogonInfo(struct ndr_push *ndr, int ndr_flags, const union netr_LogonInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr_flags, union netr_LogonInfo *r);
-_PUBLIC_ void ndr_print_netr_LogonInfo(struct ndr_print *ndr, const char *name, const union netr_LogonInfo *r);
+_PUBLIC_ void ndr_print_netr_GenericInfo(struct ndr_print *ndr, const char *name, const struct netr_GenericInfo *r);
+_PUBLIC_ void ndr_print_netr_LogonInfoClass(struct ndr_print *ndr, const char *name, enum netr_LogonInfoClass r);
+_PUBLIC_ enum ndr_err_code ndr_push_netr_LogonLevel(struct ndr_push *ndr, int ndr_flags, const union netr_LogonLevel *r);
+_PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonLevel(struct ndr_pull *ndr, int ndr_flags, union netr_LogonLevel *r);
+_PUBLIC_ void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, const union netr_LogonLevel *r);
 _PUBLIC_ enum ndr_err_code ndr_push_netr_UserSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_UserSessionKey *r);
 _PUBLIC_ enum ndr_err_code ndr_pull_netr_UserSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_UserSessionKey *r);
 _PUBLIC_ void ndr_print_netr_UserSessionKey(struct ndr_print *ndr, const char *name, const struct netr_UserSessionKey *r);
@@ -2848,6 +2850,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_SamInfo3(struct ndr_pull *ndr, int ndr_
 _PUBLIC_ void ndr_print_netr_SamInfo3(struct ndr_print *ndr, const char *name, const struct netr_SamInfo3 *r);
 _PUBLIC_ void ndr_print_netr_SamInfo6(struct ndr_print *ndr, const char *name, const struct netr_SamInfo6 *r);
 _PUBLIC_ void ndr_print_netr_PacInfo(struct ndr_print *ndr, const char *name, const struct netr_PacInfo *r);
+_PUBLIC_ void ndr_print_netr_GenericInfo2(struct ndr_print *ndr, const char *name, const struct netr_GenericInfo2 *r);
 _PUBLIC_ enum ndr_err_code ndr_push_netr_Validation(struct ndr_push *ndr, int ndr_flags, const union netr_Validation *r);
 _PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int ndr_flags, union netr_Validation *r);
 _PUBLIC_ void ndr_print_netr_Validation(struct ndr_print *ndr, const char *name, const union netr_Validation *r);
@@ -2857,7 +2860,6 @@ _PUBLIC_ void ndr_print_netr_Credential(struct ndr_print *ndr, const char *name,
 _PUBLIC_ enum ndr_err_code ndr_push_netr_Authenticator(struct ndr_push *ndr, int ndr_flags, const struct netr_Authenticator *r);
 _PUBLIC_ enum ndr_err_code ndr_pull_netr_Authenticator(struct ndr_pull *ndr, int ndr_flags, struct netr_Authenticator *r);
 _PUBLIC_ void ndr_print_netr_Authenticator(struct ndr_print *ndr, const char *name, const struct netr_Authenticator *r);
-_PUBLIC_ void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, enum netr_LogonLevel r);
 _PUBLIC_ void ndr_print_netr_DELTA_DELETE_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_USER *r);
 _PUBLIC_ void ndr_print_netr_USER_KEY16(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY16 *r);
 _PUBLIC_ void ndr_print_netr_PasswordHistory(struct ndr_print *ndr, const char *name, const struct netr_PasswordHistory *r);
@@ -2905,16 +2907,22 @@ _PUBLIC_ void ndr_print_netr_DsR_DcFlags(struct ndr_print *ndr, const char *name
 _PUBLIC_ enum ndr_err_code ndr_push_netr_DsRGetDCNameInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRGetDCNameInfo *r);
 _PUBLIC_ enum ndr_err_code ndr_pull_netr_DsRGetDCNameInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRGetDCNameInfo *r);
 _PUBLIC_ void ndr_print_netr_DsRGetDCNameInfo(struct ndr_print *ndr, const char *name, const struct netr_DsRGetDCNameInfo *r);
+_PUBLIC_ void ndr_print_netr_TrustFlags(struct ndr_print *ndr, const char *name, uint32_t r);
 _PUBLIC_ void ndr_print_netr_BinaryString(struct ndr_print *ndr, const char *name, const struct netr_BinaryString *r);
 _PUBLIC_ void ndr_print_netr_DomainQuery1(struct ndr_print *ndr, const char *name, const struct netr_DomainQuery1 *r);
 _PUBLIC_ void ndr_print_netr_DomainQuery(struct ndr_print *ndr, const char *name, const union netr_DomainQuery *r);
+_PUBLIC_ void ndr_print_netr_trust_extension(struct ndr_print *ndr, const char *name, const struct netr_trust_extension *r);
+_PUBLIC_ void ndr_print_netr_trust_extension_container(struct ndr_print *ndr, const char *name, const struct netr_trust_extension_container *r);
 _PUBLIC_ void ndr_print_netr_DomainTrustInfo(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustInfo *r);
+_PUBLIC_ void ndr_print_netr_LsaPolicyInfo(struct ndr_print *ndr, const char *name, const struct netr_LsaPolicyInfo *r);
+_PUBLIC_ enum ndr_err_code ndr_push_netr_WorkstationFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
+_PUBLIC_ enum ndr_err_code ndr_pull_netr_WorkstationFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
+_PUBLIC_ void ndr_print_netr_WorkstationFlags(struct ndr_print *ndr, const char *name, uint32_t r);
 _PUBLIC_ void ndr_print_netr_DomainInfo1(struct ndr_print *ndr, const char *name, const struct netr_DomainInfo1 *r);
 _PUBLIC_ void ndr_print_netr_DomainInfo(struct ndr_print *ndr, const char *name, const union netr_DomainInfo *r);
 _PUBLIC_ void ndr_print_netr_CryptPassword(struct ndr_print *ndr, const char *name, const struct netr_CryptPassword *r);
 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesWCtr(struct ndr_print *ndr, const char *name, const struct netr_DsRAddressToSitenamesWCtr *r);
 _PUBLIC_ void ndr_print_netr_DsRAddress(struct ndr_print *ndr, const char *name, const struct netr_DsRAddress *r);
-_PUBLIC_ void ndr_print_netr_TrustFlags(struct ndr_print *ndr, const char *name, uint32_t r);
 _PUBLIC_ void ndr_print_netr_TrustType(struct ndr_print *ndr, const char *name, enum netr_TrustType r);
 _PUBLIC_ void ndr_print_netr_TrustAttributes(struct ndr_print *ndr, const char *name, uint32_t r);
 _PUBLIC_ void ndr_print_netr_DomainTrust(struct ndr_print *ndr, const char *name, const struct netr_DomainTrust *r);
diff --git a/source3/librpc/gen_ndr/cli_netlogon.c b/source3/librpc/gen_ndr/cli_netlogon.c
index d6ac8b9..941273b 100644
--- a/source3/librpc/gen_ndr/cli_netlogon.c
+++ b/source3/librpc/gen_ndr/cli_netlogon.c
@@ -110,8 +110,8 @@ NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli,
 				   const char *computer_name /* [in] [unique,charset(UTF16)] */,
 				   struct netr_Authenticator *credential /* [in] [unique] */,
 				   struct netr_Authenticator *return_authenticator /* [in,out] [unique] */,
-				   enum netr_LogonLevel logon_level /* [in]  */,
-				   union netr_LogonInfo *logon /* [in] [ref,switch_is(logon_level)] */,
+				   enum netr_LogonInfoClass logon_level /* [in]  */,
+				   union netr_LogonLevel *logon /* [in] [ref,switch_is(logon_level)] */,
 				   uint16_t validation_level /* [in]  */,
 				   union netr_Validation *validation /* [out] [ref,switch_is(validation_level)] */,
 				   uint8_t *authoritative /* [out] [ref] */)
@@ -167,8 +167,8 @@ NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli,
 				    const char *computer_name /* [in] [unique,charset(UTF16)] */,
 				    struct netr_Authenticator *credential /* [in] [unique] */,
 				    struct netr_Authenticator *return_authenticator /* [in,out] [unique] */,
-				    enum netr_LogonLevel logon_level /* [in]  */,
-				    union netr_LogonInfo logon /* [in] [switch_is(logon_level)] */)
+				    enum netr_LogonInfoClass logon_level /* [in]  */,
+				    union netr_LogonLevel logon /* [in] [switch_is(logon_level)] */)
 {
 	struct netr_LogonSamLogoff r;
 	NTSTATUS status;
@@ -1934,8 +1934,8 @@ NTSTATUS rpccli_netr_LogonSamLogonEx(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,
 				     const char *server_name /* [in] [unique,charset(UTF16)] */,
 				     const char *computer_name /* [in] [unique,charset(UTF16)] */,
-				     enum netr_LogonLevel logon_level /* [in]  */,
-				     union netr_LogonInfo *logon /* [in] [ref,switch_is(logon_level)] */,
+				     enum netr_LogonInfoClass logon_level /* [in]  */,
+				     union netr_LogonLevel *logon /* [in] [ref,switch_is(logon_level)] */,
 				     uint16_t validation_level /* [in]  */,
 				     union netr_Validation *validation /* [out] [ref,switch_is(validation_level)] */,
 				     uint8_t *authoritative /* [out] [ref] */,
@@ -2241,8 +2241,8 @@ NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli,
 					    const char *computer_name /* [in] [unique,charset(UTF16)] */,
 					    struct netr_Authenticator *credential /* [in] [unique] */,
 					    struct netr_Authenticator *return_authenticator /* [in,out] [unique] */,
-					    enum netr_LogonLevel logon_level /* [in]  */,
-					    union netr_LogonInfo logon /* [in] [switch_is(logon_level)] */,
+					    enum netr_LogonInfoClass logon_level /* [in]  */,
+					    union netr_LogonLevel logon /* [in] [switch_is(logon_level)] */,
 					    uint16_t validation_level /* [in]  */,
 					    union netr_Validation *validation /* [out] [ref,switch_is(validation_level)] */,
 					    uint8_t *authoritative /* [out] [ref] */,
diff --git a/source3/librpc/gen_ndr/cli_netlogon.h b/source3/librpc/gen_ndr/cli_netlogon.h
index 2033315..0a0cfdf 100644
--- a/source3/librpc/gen_ndr/cli_netlogon.h
+++ b/source3/librpc/gen_ndr/cli_netlogon.h
@@ -21,8 +21,8 @@ NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli,
 				   const char *computer_name /* [in] [unique,charset(UTF16)] */,
 				   struct netr_Authenticator *credential /* [in] [unique] */,
 				   struct netr_Authenticator *return_authenticator /* [in,out] [unique] */,
-				   enum netr_LogonLevel logon_level /* [in]  */,
-				   union netr_LogonInfo *logon /* [in] [ref,switch_is(logon_level)] */,
+				   enum netr_LogonInfoClass logon_level /* [in]  */,
+				   union netr_LogonLevel *logon /* [in] [ref,switch_is(logon_level)] */,
 				   uint16_t validation_level /* [in]  */,
 				   union netr_Validation *validation /* [out] [ref,switch_is(validation_level)] */,
 				   uint8_t *authoritative /* [out] [ref] */);
@@ -32,8 +32,8 @@ NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli,
 				    const char *computer_name /* [in] [unique,charset(UTF16)] */,
 				    struct netr_Authenticator *credential /* [in] [unique] */,
 				    struct netr_Authenticator *return_authenticator /* [in,out] [unique] */,
-				    enum netr_LogonLevel logon_level /* [in]  */,
-				    union netr_LogonInfo logon /* [in] [switch_is(logon_level)] */);
+				    enum netr_LogonInfoClass logon_level /* [in]  */,
+				    union netr_LogonLevel logon /* [in] [switch_is(logon_level)] */);
 NTSTATUS rpccli_netr_ServerReqChallenge(struct rpc_pipe_client *cli,
 					TALLOC_CTX *mem_ctx,
 					const char *server_name /* [in] [unique,charset(UTF16)] */,
@@ -297,8 +297,8 @@ NTSTATUS rpccli_netr_LogonSamLogonEx(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,
 				     const char *server_name /* [in] [unique,charset(UTF16)] */,
 				     const char *computer_name /* [in] [unique,charset(UTF16)] */,
-				     enum netr_LogonLevel logon_level /* [in]  */,
-				     union netr_LogonInfo *logon /* [in] [ref,switch_is(logon_level)] */,
+				     enum netr_LogonInfoClass logon_level /* [in]  */,
+				     union netr_LogonLevel *logon /* [in] [ref,switch_is(logon_level)] */,
 				     uint16_t validation_level /* [in]  */,
 				     union netr_Validation *validation /* [out] [ref,switch_is(validation_level)] */,
 				     uint8_t *authoritative /* [out] [ref] */,
@@ -349,8 +349,8 @@ NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli,
 					    const char *computer_name /* [in] [unique,charset(UTF16)] */,
 					    struct netr_Authenticator *credential /* [in] [unique] */,
 					    struct netr_Authenticator *return_authenticator /* [in,out] [unique] */,
-					    enum netr_LogonLevel logon_level /* [in]  */,
-					    union netr_LogonInfo logon /* [in] [switch_is(logon_level)] */,
+					    enum netr_LogonInfoClass logon_level /* [in]  */,
+					    union netr_LogonLevel logon /* [in] [switch_is(logon_level)] */,
 					    uint16_t validation_level /* [in]  */,
 					    union netr_Validation *validation /* [out] [ref,switch_is(validation_level)] */,
 					    uint8_t *authoritative /* [out] [ref] */,
diff --git a/source3/librpc/gen_ndr/ndr_netlogon.c b/source3/librpc/gen_ndr/ndr_netlogon.c
index a3066fa..169d35e 100644
--- a/source3/librpc/gen_ndr/ndr_netlogon.c
+++ b/source3/librpc/gen_ndr/ndr_netlogon.c
@@ -538,32 +538,155 @@ _PUBLIC_ void ndr_print_netr_NetworkInfo(struct ndr_print *ndr, const char *name
 	}
 }
 
-_PUBLIC_ enum ndr_err_code ndr_push_netr_LogonInfo(struct ndr_push *ndr, int ndr_flags, const union netr_LogonInfo *r)
+static enum ndr_err_code ndr_push_netr_GenericInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_GenericInfo *r)
+{
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_push_align(ndr, 4));
+			NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
+			NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->package_name));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
+			NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+			NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
+			NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->package_name));
+			if (r->data) {
+				NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
+				NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
+			}
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_netr_GenericInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_GenericInfo *r)
+{
+	uint32_t _ptr_data;
+	TALLOC_CTX *_mem_save_data_0;
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_pull_align(ndr, 4));
+			NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
+			NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->package_name));
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
+			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
+			if (_ptr_data) {
+				NDR_PULL_ALLOC(ndr, r->data);
+			} else {
+				r->data = NULL;
+			}
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+			NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
+			NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->package_name));
+			if (r->data) {
+				_mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
+				NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
+				NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
+				NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
+				NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
+				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
+			}
+			if (r->data) {
+				NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
+			}
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_netr_GenericInfo(struct ndr_print *ndr, const char *name, const struct netr_GenericInfo *r)
+{
+	ndr_print_struct(ndr, name, "netr_GenericInfo");
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		ndr->depth++;
+		ndr_print_netr_IdentityInfo(ndr, "identity_info", &r->identity_info);
+		ndr_print_lsa_String(ndr, "package_name", &r->package_name);
+		ndr_print_uint32(ndr, "length", r->length);
+		ndr_print_ptr(ndr, "data", r->data);
+		ndr->depth++;
+		if (r->data) {
+			ndr_print_array_uint8(ndr, "data", r->data, r->length);
+		}
+		ndr->depth--;
+		ndr->depth--;
+		ndr->flags = _flags_save_STRUCT;
+	}
+}
+
+static enum ndr_err_code ndr_push_netr_LogonInfoClass(struct ndr_push *ndr, int ndr_flags, enum netr_LogonInfoClass r)
+{
+	NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_netr_LogonInfoClass(struct ndr_pull *ndr, int ndr_flags, enum netr_LogonInfoClass *r)
+{
+	uint16_t v;
+	NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_netr_LogonInfoClass(struct ndr_print *ndr, const char *name, enum netr_LogonInfoClass r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case NetlogonInteractiveInformation: val = "NetlogonInteractiveInformation"; break;
+		case NetlogonNetworkInformation: val = "NetlogonNetworkInformation"; break;
+		case NetlogonServiceInformation: val = "NetlogonServiceInformation"; break;
+		case NetlogonGenericInformation: val = "NetlogonGenericInformation"; break;
+		case NetlogonInteractiveTransitiveInformation: val = "NetlogonInteractiveTransitiveInformation"; break;
+		case NetlogonNetworkTransitiveInformation: val = "NetlogonNetworkTransitiveInformation"; break;
+		case NetlogonServiceTransitiveInformation: val = "NetlogonServiceTransitiveInformation"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_netr_LogonLevel(struct ndr_push *ndr, int ndr_flags, const union netr_LogonLevel *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
 		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
+		NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, level));
 		switch (level) {
-			case 1: {
+			case NetlogonInteractiveInformation: {
 				NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
 			break; }
 
-			case 2: {
+			case NetlogonNetworkInformation: {
 				NDR_CHECK(ndr_push_unique_ptr(ndr, r->network));
 			break; }
 
-			case 3: {
+			case NetlogonServiceInformation: {
 				NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
 			break; }
 
-			case 5: {
+			case NetlogonGenericInformation: {
+				NDR_CHECK(ndr_push_unique_ptr(ndr, r->generic));
+			break; }
+
+			case NetlogonInteractiveTransitiveInformation: {
 				NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
 			break; }
 
-			case 6: {
+			case NetlogonNetworkTransitiveInformation: {
 				NDR_CHECK(ndr_push_unique_ptr(ndr, r->network));
 			break; }
 
+			case NetlogonServiceTransitiveInformation: {
+				NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
+			break; }
+
 			default:
 				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
 		}
@@ -571,36 +694,48 @@ _PUBLIC_ enum ndr_err_code ndr_push_netr_LogonInfo(struct ndr_push *ndr, int ndr
 	if (ndr_flags & NDR_BUFFERS) {
 		int level = ndr_push_get_switch_value(ndr, r);
 		switch (level) {
-			case 1:
+			case NetlogonInteractiveInformation:
 				if (r->password) {
 					NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
 				}
 			break;
 
-			case 2:
+			case NetlogonNetworkInformation:
 				if (r->network) {
 					NDR_CHECK(ndr_push_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
 				}
 			break;
 
-			case 3:
+			case NetlogonServiceInformation:
 				if (r->password) {
 					NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
 				}
 			break;
 
-			case 5:
+			case NetlogonGenericInformation:
+				if (r->generic) {
+					NDR_CHECK(ndr_push_netr_GenericInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->generic));
+				}
+			break;
+
+			case NetlogonInteractiveTransitiveInformation:
 				if (r->password) {
 					NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
 				}
 			break;
 
-			case 6:
+			case NetlogonNetworkTransitiveInformation:
 				if (r->network) {
 					NDR_CHECK(ndr_push_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
 				}
 			break;
 
+			case NetlogonServiceTransitiveInformation:
+				if (r->password) {
+					NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
+				}
+			break;
+
 			default:
 				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
 		}
@@ -608,12 +743,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_netr_LogonInfo(struct ndr_push *ndr, int ndr
 	return NDR_ERR_SUCCESS;
 }
 
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr_flags, union netr_LogonInfo *r)
+_PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonLevel(struct ndr_pull *ndr, int ndr_flags, union netr_LogonLevel *r)
 {
 	int level;
 	uint16_t _level;
 	TALLOC_CTX *_mem_save_password_0;
 	TALLOC_CTX *_mem_save_network_0;
+	TALLOC_CTX *_mem_save_generic_0;
 	level = ndr_pull_get_switch_value(ndr, r);
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
@@ -621,7 +757,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
 			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
 		}
 		switch (level) {
-			case 1: {
+			case NetlogonInteractiveInformation: {
 				uint32_t _ptr_password;
 				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
 				if (_ptr_password) {
@@ -631,7 +767,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
 				}
 			break; }
 
-			case 2: {
+			case NetlogonNetworkInformation: {
 				uint32_t _ptr_network;
 				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_network));
 				if (_ptr_network) {
@@ -641,7 +777,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
 				}
 			break; }
 
-			case 3: {
+			case NetlogonServiceInformation: {
 				uint32_t _ptr_password;
 				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
 				if (_ptr_password) {
@@ -651,7 +787,17 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
 				}
 			break; }
 
-			case 5: {
+			case NetlogonGenericInformation: {
+				uint32_t _ptr_generic;
+				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_generic));
+				if (_ptr_generic) {
+					NDR_PULL_ALLOC(ndr, r->generic);
+				} else {
+					r->generic = NULL;
+				}
+			break; }
+
+			case NetlogonInteractiveTransitiveInformation: {
 				uint32_t _ptr_password;
 				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
 				if (_ptr_password) {
@@ -661,7 +807,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
 				}
 			break; }
 
-			case 6: {
+			case NetlogonNetworkTransitiveInformation: {
 				uint32_t _ptr_network;
 				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_network));
 				if (_ptr_network) {
@@ -671,13 +817,23 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
 				}
 			break; }
 
+			case NetlogonServiceTransitiveInformation: {
+				uint32_t _ptr_password;
+				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
+				if (_ptr_password) {
+					NDR_PULL_ALLOC(ndr, r->password);
+				} else {
+					r->password = NULL;
+				}
+			break; }
+
 			default:
 				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
 		}
 	}
 	if (ndr_flags & NDR_BUFFERS) {
 		switch (level) {
-			case 1:
+			case NetlogonInteractiveInformation:
 				if (r->password) {
 					_mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
 					NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
@@ -686,7 +842,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
 				}
 			break;
 
-			case 2:
+			case NetlogonNetworkInformation:
 				if (r->network) {
 					_mem_save_network_0 = NDR_PULL_GET_MEM_CTX(ndr);
 					NDR_PULL_SET_MEM_CTX(ndr, r->network, 0);
@@ -695,7 +851,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
 				}
 			break;
 
-			case 3:
+			case NetlogonServiceInformation:
 				if (r->password) {
 					_mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
 					NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
@@ -704,7 +860,16 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
 				}
 			break;
 
-			case 5:
+			case NetlogonGenericInformation:
+				if (r->generic) {
+					_mem_save_generic_0 = NDR_PULL_GET_MEM_CTX(ndr);
+					NDR_PULL_SET_MEM_CTX(ndr, r->generic, 0);
+					NDR_CHECK(ndr_pull_netr_GenericInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->generic));
+					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_generic_0, 0);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list