summaryrefslogtreecommitdiff
path: root/source3/librpc
diff options
context:
space:
mode:
Diffstat (limited to 'source3/librpc')
-rw-r--r--source3/librpc/gen_ndr/cli_netlogon.c16
-rw-r--r--source3/librpc/gen_ndr/cli_netlogon.h16
-rw-r--r--source3/librpc/gen_ndr/ndr_netlogon.c483
-rw-r--r--source3/librpc/gen_ndr/ndr_netlogon.h10
-rw-r--r--source3/librpc/gen_ndr/netlogon.h101
5 files changed, 457 insertions, 169 deletions
diff --git a/source3/librpc/gen_ndr/cli_netlogon.c b/source3/librpc/gen_ndr/cli_netlogon.c
index d6ac8b9ede..941273bddc 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 2033315a5d..0a0cfdf6e4 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 a3066fa401..169d35e326 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);
+ }
+ break;
+
+ case NetlogonInteractiveTransitiveInformation:
if (r->password) {
_mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
@@ -713,7 +878,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
}
break;
- case 6:
+ case NetlogonNetworkTransitiveInformation:
if (r->network) {
_mem_save_network_0 = NDR_PULL_GET_MEM_CTX(ndr);
NDR_PULL_SET_MEM_CTX(ndr, r->network, 0);
@@ -722,6 +887,15 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
}
break;
+ case NetlogonServiceTransitiveInformation:
+ if (r->password) {
+ _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
+ NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
+ NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
+ }
+ break;
+
default:
return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
}
@@ -729,13 +903,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr
return NDR_ERR_SUCCESS;
}
-_PUBLIC_ void ndr_print_netr_LogonInfo(struct ndr_print *ndr, const char *name, const union netr_LogonInfo *r)
+_PUBLIC_ void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, const union netr_LogonLevel *r)
{
int level;
level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "netr_LogonInfo");
+ ndr_print_union(ndr, name, level, "netr_LogonLevel");
switch (level) {
- case 1:
+ case NetlogonInteractiveInformation:
ndr_print_ptr(ndr, "password", r->password);
ndr->depth++;
if (r->password) {
@@ -744,7 +918,7 @@ _PUBLIC_ void ndr_print_netr_LogonInfo(struct ndr_print *ndr, const char *name,
ndr->depth--;
break;
- case 2:
+ case NetlogonNetworkInformation:
ndr_print_ptr(ndr, "network", r->network);
ndr->depth++;
if (r->network) {
@@ -753,7 +927,7 @@ _PUBLIC_ void ndr_print_netr_LogonInfo(struct ndr_print *ndr, const char *name,
ndr->depth--;
break;
- case 3:
+ case NetlogonServiceInformation:
ndr_print_ptr(ndr, "password", r->password);
ndr->depth++;
if (r->password) {
@@ -762,7 +936,16 @@ _PUBLIC_ void ndr_print_netr_LogonInfo(struct ndr_print *ndr, const char *name,
ndr->depth--;
break;
- case 5:
+ case NetlogonGenericInformation:
+ ndr_print_ptr(ndr, "generic", r->generic);
+ ndr->depth++;
+ if (r->generic) {
+ ndr_print_netr_GenericInfo(ndr, "generic", r->generic);
+ }
+ ndr->depth--;
+ break;
+
+ case NetlogonInteractiveTransitiveInformation:
ndr_print_ptr(ndr, "password", r->password);
ndr->depth++;
if (r->password) {
@@ -771,7 +954,7 @@ _PUBLIC_ void ndr_print_netr_LogonInfo(struct ndr_print *ndr, const char *name,
ndr->depth--;
break;
- case 6:
+ case NetlogonNetworkTransitiveInformation:
ndr_print_ptr(ndr, "network", r->network);
ndr->depth++;
if (r->network) {
@@ -780,6 +963,15 @@ _PUBLIC_ void ndr_print_netr_LogonInfo(struct ndr_print *ndr, const char *name,
ndr->depth--;
break;
+ case NetlogonServiceTransitiveInformation:
+ ndr_print_ptr(ndr, "password", r->password);
+ ndr->depth++;
+ if (r->password) {
+ ndr_print_netr_PasswordInfo(ndr, "password", r->password);
+ }
+ ndr->depth--;
+ break;
+
default:
ndr_print_bad_level(ndr, name, level);
}
@@ -1511,17 +1703,92 @@ _PUBLIC_ void ndr_print_netr_PacInfo(struct ndr_print *ndr, const char *name, co
ndr->depth--;
}
+static enum ndr_err_code ndr_push_netr_GenericInfo2(struct ndr_push *ndr, int ndr_flags, const struct netr_GenericInfo2 *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_uint32(ndr, NDR_SCALARS, r->length));
+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
+ }
+ if (ndr_flags & NDR_BUFFERS) {
+ 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_GenericInfo2(struct ndr_pull *ndr, int ndr_flags, struct netr_GenericInfo2 *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_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) {
+ 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_GenericInfo2(struct ndr_print *ndr, const char *name, const struct netr_GenericInfo2 *r)
+{
+ ndr_print_struct(ndr, name, "netr_GenericInfo2");
+ {
+ uint32_t _flags_save_STRUCT = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+ ndr->depth++;
+ 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;
+ }
+}
+
_PUBLIC_ enum ndr_err_code ndr_push_netr_Validation(struct ndr_push *ndr, int ndr_flags, const union netr_Validation *r)
{
if (ndr_flags & NDR_SCALARS) {
int level = ndr_push_get_switch_value(ndr, r);
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
switch (level) {
- case 2: {
+ case NetlogonValidationSamInfo: {
NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam2));
break; }
- case 3: {
+ case NetlogonValidationSamInfo2: {
NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam3));
break; }
@@ -1529,11 +1796,11 @@ _PUBLIC_ enum ndr_err_code ndr_push_netr_Validation(struct ndr_push *ndr, int nd
NDR_CHECK(ndr_push_unique_ptr(ndr, r->pac));
break; }
- case 5: {
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->pac));
+ case NetlogonValidationGenericInfo2: {
+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->generic));
break; }
- case 6: {
+ case NetlogonValidationSamInfo4: {
NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam6));
break; }
@@ -1544,13 +1811,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_netr_Validation(struct ndr_push *ndr, int nd
if (ndr_flags & NDR_BUFFERS) {
int level = ndr_push_get_switch_value(ndr, r);
switch (level) {
- case 2:
+ case NetlogonValidationSamInfo:
if (r->sam2) {
NDR_CHECK(ndr_push_netr_SamInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam2));
}
break;
- case 3:
+ case NetlogonValidationSamInfo2:
if (r->sam3) {
NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam3));
}
@@ -1562,13 +1829,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_netr_Validation(struct ndr_push *ndr, int nd
}
break;
- case 5:
- if (r->pac) {
- NDR_CHECK(ndr_push_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
+ case NetlogonValidationGenericInfo2:
+ if (r->generic) {
+ NDR_CHECK(ndr_push_netr_GenericInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->generic));
}
break;
- case 6:
+ case NetlogonValidationSamInfo4:
if (r->sam6) {
NDR_CHECK(ndr_push_netr_SamInfo6(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam6));
}
@@ -1588,6 +1855,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int nd
TALLOC_CTX *_mem_save_sam2_0;
TALLOC_CTX *_mem_save_sam3_0;
TALLOC_CTX *_mem_save_pac_0;
+ TALLOC_CTX *_mem_save_generic_0;
TALLOC_CTX *_mem_save_sam6_0;
level = ndr_pull_get_switch_value(ndr, r);
if (ndr_flags & NDR_SCALARS) {
@@ -1596,7 +1864,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int nd
return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
}
switch (level) {
- case 2: {
+ case NetlogonValidationSamInfo: {
uint32_t _ptr_sam2;
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam2));
if (_ptr_sam2) {
@@ -1606,7 +1874,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int nd
}
break; }
- case 3: {
+ case NetlogonValidationSamInfo2: {
uint32_t _ptr_sam3;
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam3));
if (_ptr_sam3) {
@@ -1626,17 +1894,17 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int nd
}
break; }
- case 5: {
- uint32_t _ptr_pac;
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_pac));
- if (_ptr_pac) {
- NDR_PULL_ALLOC(ndr, r->pac);
+ case NetlogonValidationGenericInfo2: {
+ uint32_t _ptr_generic;
+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_generic));
+ if (_ptr_generic) {
+ NDR_PULL_ALLOC(ndr, r->generic);
} else {
- r->pac = NULL;
+ r->generic = NULL;
}
break; }
- case 6: {
+ case NetlogonValidationSamInfo4: {
uint32_t _ptr_sam6;
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam6));
if (_ptr_sam6) {
@@ -1652,7 +1920,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int nd
}
if (ndr_flags & NDR_BUFFERS) {
switch (level) {
- case 2:
+ case NetlogonValidationSamInfo:
if (r->sam2) {
_mem_save_sam2_0 = NDR_PULL_GET_MEM_CTX(ndr);
NDR_PULL_SET_MEM_CTX(ndr, r->sam2, 0);
@@ -1661,7 +1929,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int nd
}
break;
- case 3:
+ case NetlogonValidationSamInfo2:
if (r->sam3) {
_mem_save_sam3_0 = NDR_PULL_GET_MEM_CTX(ndr);
NDR_PULL_SET_MEM_CTX(ndr, r->sam3, 0);
@@ -1679,16 +1947,16 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int nd
}
break;
- case 5:
- if (r->pac) {
- _mem_save_pac_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->pac, 0);
- NDR_CHECK(ndr_pull_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pac_0, 0);
+ case NetlogonValidationGenericInfo2:
+ 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_GenericInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->generic));
+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_generic_0, 0);
}
break;
- case 6:
+ case NetlogonValidationSamInfo4:
if (r->sam6) {
_mem_save_sam6_0 = NDR_PULL_GET_MEM_CTX(ndr);
NDR_PULL_SET_MEM_CTX(ndr, r->sam6, 0);
@@ -1710,7 +1978,7 @@ _PUBLIC_ void ndr_print_netr_Validation(struct ndr_print *ndr, const char *name,
level = ndr_print_get_switch_value(ndr, r);
ndr_print_union(ndr, name, level, "netr_Validation");
switch (level) {
- case 2:
+ case NetlogonValidationSamInfo:
ndr_print_ptr(ndr, "sam2", r->sam2);
ndr->depth++;
if (r->sam2) {
@@ -1719,7 +1987,7 @@ _PUBLIC_ void ndr_print_netr_Validation(struct ndr_print *ndr, const char *name,
ndr->depth--;
break;
- case 3:
+ case NetlogonValidationSamInfo2:
ndr_print_ptr(ndr, "sam3", r->sam3);
ndr->depth++;
if (r->sam3) {
@@ -1737,16 +2005,16 @@ _PUBLIC_ void ndr_print_netr_Validation(struct ndr_print *ndr, const char *name,
ndr->depth--;
break;
- case 5:
- ndr_print_ptr(ndr, "pac", r->pac);
+ case NetlogonValidationGenericInfo2:
+ ndr_print_ptr(ndr, "generic", r->generic);
ndr->depth++;
- if (r->pac) {
- ndr_print_netr_PacInfo(ndr, "pac", r->pac);
+ if (r->generic) {
+ ndr_print_netr_GenericInfo2(ndr, "generic", r->generic);
}
ndr->depth--;
break;
- case 6:
+ case NetlogonValidationSamInfo4:
ndr_print_ptr(ndr, "sam6", r->sam6);
ndr->depth++;
if (r->sam6) {
@@ -1838,31 +2106,6 @@ _PUBLIC_ void ndr_print_netr_Authenticator(struct ndr_print *ndr, const char *na
ndr->depth--;
}
-static enum ndr_err_code ndr_push_netr_LogonLevel(struct ndr_push *ndr, int ndr_flags, enum netr_LogonLevel r)
-{
- NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
- return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_netr_LogonLevel(struct ndr_pull *ndr, int ndr_flags, enum netr_LogonLevel *r)
-{
- uint16_t v;
- NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
- *r = v;
- return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, enum netr_LogonLevel r)
-{
- const char *val = NULL;
-
- switch (r) {
- case INTERACTIVE_LOGON_TYPE: val = "INTERACTIVE_LOGON_TYPE"; break;
- case NET_LOGON_TYPE: val = "NET_LOGON_TYPE"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
static enum ndr_err_code ndr_push_netr_DELTA_DELETE_USER(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DELETE_USER *r)
{
if (ndr_flags & NDR_SCALARS) {
@@ -2404,7 +2647,7 @@ static enum ndr_err_code ndr_push_netr_DELTA_DOMAIN(struct ndr_push *ndr, int nd
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_align(ndr, 4));
NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->comment));
+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->oem_information));
NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->force_logoff_time));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->min_password_length));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->password_history_length));
@@ -2425,7 +2668,7 @@ static enum ndr_err_code ndr_push_netr_DELTA_DOMAIN(struct ndr_push *ndr, int nd
}
if (ndr_flags & NDR_BUFFERS) {
NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
- NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->comment));
+ NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->oem_information));
NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_BUFFERS, &r->account_lockout));
NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
@@ -2440,7 +2683,7 @@ static enum ndr_err_code ndr_pull_netr_DELTA_DOMAIN(struct ndr_pull *ndr, int nd
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_align(ndr, 4));
NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->comment));
+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->oem_information));
NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->force_logoff_time));
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->min_password_length));
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->password_history_length));
@@ -2461,7 +2704,7 @@ static enum ndr_err_code ndr_pull_netr_DELTA_DOMAIN(struct ndr_pull *ndr, int nd
}
if (ndr_flags & NDR_BUFFERS) {
NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
- NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->comment));
+ NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->oem_information));
NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_BUFFERS, &r->account_lockout));
NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
@@ -2476,7 +2719,7 @@ _PUBLIC_ void ndr_print_netr_DELTA_DOMAIN(struct ndr_print *ndr, const char *nam
ndr_print_struct(ndr, name, "netr_DELTA_DOMAIN");
ndr->depth++;
ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
- ndr_print_lsa_String(ndr, "comment", &r->comment);
+ ndr_print_lsa_String(ndr, "oem_information", &r->oem_information);
ndr_print_dlong(ndr, "force_logoff_time", r->force_logoff_time);
ndr_print_uint16(ndr, "min_password_length", r->min_password_length);
ndr_print_uint16(ndr, "password_history_length", r->password_history_length);
@@ -8449,12 +8692,12 @@ static enum ndr_err_code ndr_push_netr_LogonSamLogon(struct ndr_push *ndr, int f
if (r->in.return_authenticator) {
NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
}
- NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS, r->in.logon_level));
+ NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
if (r->in.logon == NULL) {
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
}
NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_push_netr_LogonInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
+ NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
}
if (flags & NDR_OUT) {
@@ -8552,14 +8795,14 @@ static enum ndr_err_code ndr_pull_netr_LogonSamLogon(struct ndr_pull *ndr, int f
NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
}
- NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS, &r->in.logon_level));
+ NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
NDR_PULL_ALLOC(ndr, r->in.logon);
}
_mem_save_logon_0 = NDR_PULL_GET_MEM_CTX(ndr);
NDR_PULL_SET_MEM_CTX(ndr, r->in.logon, LIBNDR_FLAG_REF_ALLOC);
NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_pull_netr_LogonInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
+ NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_0, LIBNDR_FLAG_REF_ALLOC);
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
NDR_PULL_ALLOC(ndr, r->out.validation);
@@ -8634,11 +8877,11 @@ _PUBLIC_ void ndr_print_netr_LogonSamLogon(struct ndr_print *ndr, const char *na
ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
}
ndr->depth--;
- ndr_print_netr_LogonLevel(ndr, "logon_level", r->in.logon_level);
+ ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
ndr_print_ptr(ndr, "logon", r->in.logon);
ndr->depth++;
ndr_print_set_switch_value(ndr, r->in.logon, r->in.logon_level);
- ndr_print_netr_LogonInfo(ndr, "logon", r->in.logon);
+ ndr_print_netr_LogonLevel(ndr, "logon", r->in.logon);
ndr->depth--;
ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
ndr->depth--;
@@ -8692,9 +8935,9 @@ static enum ndr_err_code ndr_push_netr_LogonSamLogoff(struct ndr_push *ndr, int
if (r->in.return_authenticator) {
NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
}
- NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS, r->in.logon_level));
+ NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_push_netr_LogonInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
+ NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
}
if (flags & NDR_OUT) {
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
@@ -8779,9 +9022,9 @@ static enum ndr_err_code ndr_pull_netr_LogonSamLogoff(struct ndr_pull *ndr, int
NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
}
- NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS, &r->in.logon_level));
+ NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_pull_netr_LogonInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
+ NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
}
if (flags & NDR_OUT) {
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
@@ -8835,9 +9078,9 @@ _PUBLIC_ void ndr_print_netr_LogonSamLogoff(struct ndr_print *ndr, const char *n
ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
}
ndr->depth--;
- ndr_print_netr_LogonLevel(ndr, "logon_level", r->in.logon_level);
+ ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
ndr_print_set_switch_value(ndr, &r->in.logon, r->in.logon_level);
- ndr_print_netr_LogonInfo(ndr, "logon", &r->in.logon);
+ ndr_print_netr_LogonLevel(ndr, "logon", &r->in.logon);
ndr->depth--;
}
if (flags & NDR_OUT) {
@@ -13672,12 +13915,12 @@ static enum ndr_err_code ndr_push_netr_LogonSamLogonEx(struct ndr_push *ndr, int
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
}
- NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS, r->in.logon_level));
+ NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
if (r->in.logon == NULL) {
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
}
NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_push_netr_LogonInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
+ NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
if (r->in.flags == NULL) {
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
@@ -13752,14 +13995,14 @@ static enum ndr_err_code ndr_pull_netr_LogonSamLogonEx(struct ndr_pull *ndr, int
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
}
- NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS, &r->in.logon_level));
+ NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
NDR_PULL_ALLOC(ndr, r->in.logon);
}
_mem_save_logon_0 = NDR_PULL_GET_MEM_CTX(ndr);
NDR_PULL_SET_MEM_CTX(ndr, r->in.logon, LIBNDR_FLAG_REF_ALLOC);
NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_pull_netr_LogonInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
+ NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_0, LIBNDR_FLAG_REF_ALLOC);
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
@@ -13826,11 +14069,11 @@ _PUBLIC_ void ndr_print_netr_LogonSamLogonEx(struct ndr_print *ndr, const char *
ndr_print_string(ndr, "computer_name", r->in.computer_name);
}
ndr->depth--;
- ndr_print_netr_LogonLevel(ndr, "logon_level", r->in.logon_level);
+ ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
ndr_print_ptr(ndr, "logon", r->in.logon);
ndr->depth++;
ndr_print_set_switch_value(ndr, r->in.logon, r->in.logon_level);
- ndr_print_netr_LogonInfo(ndr, "logon", r->in.logon);
+ ndr_print_netr_LogonLevel(ndr, "logon", r->in.logon);
ndr->depth--;
ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
ndr_print_ptr(ndr, "flags", r->in.flags);
@@ -14650,9 +14893,9 @@ static enum ndr_err_code ndr_push_netr_LogonSamLogonWithFlags(struct ndr_push *n
if (r->in.return_authenticator) {
NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
}
- NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS, r->in.logon_level));
+ NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_push_netr_LogonInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
+ NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
if (r->in.flags == NULL) {
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
@@ -14758,9 +15001,9 @@ static enum ndr_err_code ndr_pull_netr_LogonSamLogonWithFlags(struct ndr_pull *n
NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
}
- NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS, &r->in.logon_level));
+ NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
- NDR_CHECK(ndr_pull_netr_LogonInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
+ NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
NDR_PULL_ALLOC(ndr, r->in.flags);
@@ -14850,9 +15093,9 @@ _PUBLIC_ void ndr_print_netr_LogonSamLogonWithFlags(struct ndr_print *ndr, const
ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
}
ndr->depth--;
- ndr_print_netr_LogonLevel(ndr, "logon_level", r->in.logon_level);
+ ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
ndr_print_set_switch_value(ndr, &r->in.logon, r->in.logon_level);
- ndr_print_netr_LogonInfo(ndr, "logon", &r->in.logon);
+ ndr_print_netr_LogonLevel(ndr, "logon", &r->in.logon);
ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
ndr_print_ptr(ndr, "flags", r->in.flags);
ndr->depth++;
diff --git a/source3/librpc/gen_ndr/ndr_netlogon.h b/source3/librpc/gen_ndr/ndr_netlogon.h
index f778f89fbb..2a3c0fbf84 100644
--- a/source3/librpc/gen_ndr/ndr_netlogon.h
+++ b/source3/librpc/gen_ndr/ndr_netlogon.h
@@ -118,9 +118,11 @@ void ndr_print_netr_IdentityInfo(struct ndr_print *ndr, const char *name, const
void ndr_print_netr_PasswordInfo(struct ndr_print *ndr, const char *name, const struct netr_PasswordInfo *r);
void ndr_print_netr_ChallengeResponse(struct ndr_print *ndr, const char *name, const struct netr_ChallengeResponse *r);
void ndr_print_netr_NetworkInfo(struct ndr_print *ndr, const char *name, const struct netr_NetworkInfo *r);
-enum ndr_err_code ndr_push_netr_LogonInfo(struct ndr_push *ndr, int ndr_flags, const union netr_LogonInfo *r);
-enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr_flags, union netr_LogonInfo *r);
-void ndr_print_netr_LogonInfo(struct ndr_print *ndr, const char *name, const union netr_LogonInfo *r);
+void ndr_print_netr_GenericInfo(struct ndr_print *ndr, const char *name, const struct netr_GenericInfo *r);
+void ndr_print_netr_LogonInfoClass(struct ndr_print *ndr, const char *name, enum netr_LogonInfoClass r);
+enum ndr_err_code ndr_push_netr_LogonLevel(struct ndr_push *ndr, int ndr_flags, const union netr_LogonLevel *r);
+enum ndr_err_code ndr_pull_netr_LogonLevel(struct ndr_pull *ndr, int ndr_flags, union netr_LogonLevel *r);
+void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, const union netr_LogonLevel *r);
enum ndr_err_code ndr_push_netr_UserSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_UserSessionKey *r);
enum ndr_err_code ndr_pull_netr_UserSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_UserSessionKey *r);
void ndr_print_netr_UserSessionKey(struct ndr_print *ndr, const char *name, const struct netr_UserSessionKey *r);
@@ -138,6 +140,7 @@ enum ndr_err_code ndr_pull_netr_SamInfo3(struct ndr_pull *ndr, int ndr_flags, st
void ndr_print_netr_SamInfo3(struct ndr_print *ndr, const char *name, const struct netr_SamInfo3 *r);
void ndr_print_netr_SamInfo6(struct ndr_print *ndr, const char *name, const struct netr_SamInfo6 *r);
void ndr_print_netr_PacInfo(struct ndr_print *ndr, const char *name, const struct netr_PacInfo *r);
+void ndr_print_netr_GenericInfo2(struct ndr_print *ndr, const char *name, const struct netr_GenericInfo2 *r);
enum ndr_err_code ndr_push_netr_Validation(struct ndr_push *ndr, int ndr_flags, const union netr_Validation *r);
enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int ndr_flags, union netr_Validation *r);
void ndr_print_netr_Validation(struct ndr_print *ndr, const char *name, const union netr_Validation *r);
@@ -147,7 +150,6 @@ void ndr_print_netr_Credential(struct ndr_print *ndr, const char *name, const st
enum ndr_err_code ndr_push_netr_Authenticator(struct ndr_push *ndr, int ndr_flags, const struct netr_Authenticator *r);
enum ndr_err_code ndr_pull_netr_Authenticator(struct ndr_pull *ndr, int ndr_flags, struct netr_Authenticator *r);
void ndr_print_netr_Authenticator(struct ndr_print *ndr, const char *name, const struct netr_Authenticator *r);
-void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, enum netr_LogonLevel r);
void ndr_print_netr_DELTA_DELETE_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_USER *r);
void ndr_print_netr_USER_KEY16(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY16 *r);
void ndr_print_netr_PasswordHistory(struct ndr_print *ndr, const char *name, const struct netr_PasswordHistory *r);
diff --git a/source3/librpc/gen_ndr/netlogon.h b/source3/librpc/gen_ndr/netlogon.h
index 4e4c74d167..cf3959b199 100644
--- a/source3/librpc/gen_ndr/netlogon.h
+++ b/source3/librpc/gen_ndr/netlogon.h
@@ -79,10 +79,41 @@ struct netr_NetworkInfo {
struct netr_ChallengeResponse lm;
}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-union netr_LogonInfo {
- struct netr_PasswordInfo *password;/* [unique,case] */
- struct netr_NetworkInfo *network;/* [unique,case(2)] */
-}/* [public,switch_type(uint16)] */;
+struct netr_GenericInfo {
+ struct netr_IdentityInfo identity_info;
+ struct lsa_String package_name;
+ uint32_t length;
+ uint8_t *data;/* [unique,size_is(length)] */
+}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
+
+enum netr_LogonInfoClass
+#ifndef USE_UINT_ENUMS
+ {
+ NetlogonInteractiveInformation=1,
+ NetlogonNetworkInformation=2,
+ NetlogonServiceInformation=3,
+ NetlogonGenericInformation=4,
+ NetlogonInteractiveTransitiveInformation=5,
+ NetlogonNetworkTransitiveInformation=6,
+ NetlogonServiceTransitiveInformation=7
+}
+#else
+ { __donnot_use_enum_netr_LogonInfoClass=0x7FFFFFFF}
+#define NetlogonInteractiveInformation ( 1 )
+#define NetlogonNetworkInformation ( 2 )
+#define NetlogonServiceInformation ( 3 )
+#define NetlogonGenericInformation ( 4 )
+#define NetlogonInteractiveTransitiveInformation ( 5 )
+#define NetlogonNetworkTransitiveInformation ( 6 )
+#define NetlogonServiceTransitiveInformation ( 7 )
+#endif
+;
+
+union netr_LogonLevel {
+ struct netr_PasswordInfo *password;/* [unique,case(NetlogonInteractiveInformation)] */
+ struct netr_NetworkInfo *network;/* [unique,case(NetlogonNetworkInformation)] */
+ struct netr_GenericInfo *generic;/* [unique,case(NetlogonGenericInformation)] */
+}/* [public,switch_type(netr_LogonInfoClass)] */;
struct netr_UserSessionKey {
uint8_t key[16];
@@ -173,11 +204,36 @@ struct netr_PacInfo {
struct lsa_String unknown4;
};
+struct netr_GenericInfo2 {
+ uint32_t length;
+ uint8_t *data;/* [unique,size_is(length)] */
+}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
+
+enum netr_ValidationInfoClass
+#ifndef USE_UINT_ENUMS
+ {
+ NetlogonValidationUasInfo=1,
+ NetlogonValidationSamInfo=2,
+ NetlogonValidationSamInfo2=3,
+ NetlogonValidationGenericInfo2=5,
+ NetlogonValidationSamInfo4=6
+}
+#else
+ { __donnot_use_enum_netr_ValidationInfoClass=0x7FFFFFFF}
+#define NetlogonValidationUasInfo ( 1 )
+#define NetlogonValidationSamInfo ( 2 )
+#define NetlogonValidationSamInfo2 ( 3 )
+#define NetlogonValidationGenericInfo2 ( 5 )
+#define NetlogonValidationSamInfo4 ( 6 )
+#endif
+;
+
union netr_Validation {
- struct netr_SamInfo2 *sam2;/* [unique,case(2)] */
- struct netr_SamInfo3 *sam3;/* [unique,case(3)] */
+ struct netr_SamInfo2 *sam2;/* [unique,case(NetlogonValidationSamInfo)] */
+ struct netr_SamInfo3 *sam3;/* [unique,case(NetlogonValidationSamInfo2)] */
struct netr_PacInfo *pac;/* [unique,case(4)] */
- struct netr_SamInfo6 *sam6;/* [unique,case(6)] */
+ struct netr_GenericInfo2 *generic;/* [unique,case(NetlogonValidationGenericInfo2)] */
+ struct netr_SamInfo6 *sam6;/* [unique,case(NetlogonValidationSamInfo4)] */
}/* [public,switch_type(uint16)] */;
struct netr_Credential {
@@ -189,19 +245,6 @@ struct netr_Authenticator {
time_t timestamp;
}/* [public] */;
-enum netr_LogonLevel
-#ifndef USE_UINT_ENUMS
- {
- INTERACTIVE_LOGON_TYPE=1,
- NET_LOGON_TYPE=2
-}
-#else
- { __donnot_use_enum_netr_LogonLevel=0x7FFFFFFF}
-#define INTERACTIVE_LOGON_TYPE ( 1 )
-#define NET_LOGON_TYPE ( 2 )
-#endif
-;
-
enum netr_SchannelType;
enum netr_SamDatabaseID;
@@ -299,7 +342,7 @@ struct netr_DELTA_USER {
struct netr_DELTA_DOMAIN {
struct lsa_String domain_name;
- struct lsa_String comment;
+ struct lsa_String oem_information;
int64_t force_logoff_time;
uint16_t min_password_length;
uint16_t password_history_length;
@@ -929,8 +972,8 @@ struct netr_LogonSamLogon {
const char *server_name;/* [unique,charset(UTF16)] */
const char *computer_name;/* [unique,charset(UTF16)] */
struct netr_Authenticator *credential;/* [unique] */
- enum netr_LogonLevel logon_level;
- union netr_LogonInfo *logon;/* [ref,switch_is(logon_level)] */
+ enum netr_LogonInfoClass logon_level;
+ union netr_LogonLevel *logon;/* [ref,switch_is(logon_level)] */
uint16_t validation_level;
struct netr_Authenticator *return_authenticator;/* [unique] */
} in;
@@ -950,8 +993,8 @@ struct netr_LogonSamLogoff {
const char *server_name;/* [unique,charset(UTF16)] */
const char *computer_name;/* [unique,charset(UTF16)] */
struct netr_Authenticator *credential;/* [unique] */
- enum netr_LogonLevel logon_level;
- union netr_LogonInfo logon;/* [switch_is(logon_level)] */
+ enum netr_LogonInfoClass logon_level;
+ union netr_LogonLevel logon;/* [switch_is(logon_level)] */
struct netr_Authenticator *return_authenticator;/* [unique] */
} in;
@@ -1515,8 +1558,8 @@ struct netr_LogonSamLogonEx {
struct {
const char *server_name;/* [unique,charset(UTF16)] */
const char *computer_name;/* [unique,charset(UTF16)] */
- enum netr_LogonLevel logon_level;
- union netr_LogonInfo *logon;/* [ref,switch_is(logon_level)] */
+ enum netr_LogonInfoClass logon_level;
+ union netr_LogonLevel *logon;/* [ref,switch_is(logon_level)] */
uint16_t validation_level;
uint32_t *flags;/* [ref] */
} in;
@@ -1617,8 +1660,8 @@ struct netr_LogonSamLogonWithFlags {
const char *server_name;/* [unique,charset(UTF16)] */
const char *computer_name;/* [unique,charset(UTF16)] */
struct netr_Authenticator *credential;/* [unique] */
- enum netr_LogonLevel logon_level;
- union netr_LogonInfo logon;/* [switch_is(logon_level)] */
+ enum netr_LogonInfoClass logon_level;
+ union netr_LogonLevel logon;/* [switch_is(logon_level)] */
uint16_t validation_level;
struct netr_Authenticator *return_authenticator;/* [unique] */
uint32_t *flags;/* [ref] */