diff options
Diffstat (limited to 'source4')
-rw-r--r-- | source4/librpc/idl/netlogon.idl | 4 | ||||
-rw-r--r-- | source4/torture/rpc/netlogon.c | 19 |
2 files changed, 17 insertions, 6 deletions
diff --git a/source4/librpc/idl/netlogon.idl b/source4/librpc/idl/netlogon.idl index 8d61c27903..5bf8b027fa 100644 --- a/source4/librpc/idl/netlogon.idl +++ b/source4/librpc/idl/netlogon.idl @@ -885,8 +885,8 @@ interface netlogon [in,unique] [string,charset(UTF16)] uint16 *logon_server, [in] netr_LogonControlCode function_code, [in] uint32 level, - [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION data, - [out][switch_is(level)] netr_CONTROL_QUERY_INFORMATION query + [in,ref][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION *data, + [out,ref][switch_is(level)] netr_CONTROL_QUERY_INFORMATION *query ); diff --git a/source4/torture/rpc/netlogon.c b/source4/torture/rpc/netlogon.c index 755fa2538f..d4cad6e57a 100644 --- a/source4/torture/rpc/netlogon.c +++ b/source4/torture/rpc/netlogon.c @@ -945,12 +945,17 @@ static bool test_LogonControl2(struct torture_context *tctx, { NTSTATUS status; struct netr_LogonControl2 r; + union netr_CONTROL_DATA_INFORMATION data; + union netr_CONTROL_QUERY_INFORMATION query; int i; + data.domain = lp_workgroup(tctx->lp_ctx); + r.in.logon_server = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p)); r.in.function_code = NETLOGON_CONTROL_REDISCOVER; - r.in.data.domain = lp_workgroup(tctx->lp_ctx); + r.in.data = &data; + r.out.query = &query; for (i=1;i<4;i++) { r.in.level = i; @@ -962,8 +967,10 @@ static bool test_LogonControl2(struct torture_context *tctx, torture_assert_ntstatus_ok(tctx, status, "LogonControl"); } + data.domain = lp_workgroup(tctx->lp_ctx); + r.in.function_code = NETLOGON_CONTROL_TC_QUERY; - r.in.data.domain = lp_workgroup(tctx->lp_ctx); + r.in.data = &data; for (i=1;i<4;i++) { r.in.level = i; @@ -975,8 +982,10 @@ static bool test_LogonControl2(struct torture_context *tctx, torture_assert_ntstatus_ok(tctx, status, "LogonControl"); } + data.domain = lp_workgroup(tctx->lp_ctx); + r.in.function_code = NETLOGON_CONTROL_TRANSPORT_NOTIFY; - r.in.data.domain = lp_workgroup(tctx->lp_ctx); + r.in.data = &data; for (i=1;i<4;i++) { r.in.level = i; @@ -988,8 +997,10 @@ static bool test_LogonControl2(struct torture_context *tctx, torture_assert_ntstatus_ok(tctx, status, "LogonControl"); } + data.debug_level = ~0; + r.in.function_code = NETLOGON_CONTROL_SET_DBFLAG; - r.in.data.debug_level = ~0; + r.in.data = &data; for (i=1;i<4;i++) { r.in.level = i; |