static struct bkrp_BackupKey *createRetrieveBackupKeyGUIDStruct(struct torture_context *tctx,
struct dcerpc_pipe *p, int version, DATA_BLOB *out)
{
+ const struct dcerpc_binding *bd =
+ dcerpc_binding_handle_get_binding(p->binding_handle);
struct dcerpc_binding *binding;
struct bkrp_client_side_wrapped data;
struct GUID *g = talloc(tctx, struct GUID);
return NULL;
}
- binding = dcerpc_binding_dup(tctx, p->binding);
+ binding = dcerpc_binding_dup(tctx, bd);
if (binding == NULL) {
return NULL;
}
const void *private_data)
{
struct dcerpc_binding *binding1 = NULL;
+ const struct dcerpc_binding *bd1 = NULL;
struct dcerpc_binding *binding2 = NULL;
struct dcerpc_pipe *p1 = NULL;
struct dcerpc_pipe *p2 = NULL;
"Unexpected EPM Lookup success");
/* Open second pipe, same association group. Handle is found */
- assoc_group_id = dcerpc_binding_get_assoc_group_id(p1->binding);
+ bd1 = dcerpc_binding_handle_get_binding(p1->binding_handle);
+ assoc_group_id = dcerpc_binding_get_assoc_group_id(bd1);
dcerpc_binding_set_assoc_group_id(binding2, assoc_group_id);
TALLOC_FREE(p2);
struct dcerpc_pipe *p2 = NULL;
TALLOC_CTX *mem_ctx = priv;
struct dcerpc_binding *binding = NULL;
+ const struct dcerpc_binding *binding2 = NULL;
struct policy_handle ds_bind_handle = { .handle_type = 0, };
torture_comment(tctx, "%s: starting...\n", testname);
tctx->lp_ctx),
"connect p1");
+ binding2 = dcerpc_binding_handle_get_binding(p1->binding_handle);
+
torture_assert_ntstatus_ok(tctx,
dcerpc_pipe_connect_b(tctx,
&p2,
- p1->binding,
+ binding2,
&ndr_table_drsuapi,
creds,
tctx->ev,
*/
static const char *torture_get_ldap_base_dn(struct torture_context *tctx, struct dcerpc_pipe *p)
{
- const char *hostname = dcerpc_binding_get_string_option(p->binding, "host");
+ struct dcerpc_binding_handle *b = p->binding_handle;
+ const struct dcerpc_binding *bd = dcerpc_binding_handle_get_binding(b);
+ const char *hostname = dcerpc_binding_get_string_option(bd, "host");
struct ldb_context *ldb;
const char *ldap_url = talloc_asprintf(p, "ldap://%s", hostname);
const char *attrs[] = { "defaultNamingContext", NULL };
int len;
struct echo_EchoData r;
struct dcerpc_binding_handle *b = p->binding_handle;
+ const struct dcerpc_binding *binding = dcerpc_binding_handle_get_binding(b);
+ uint16_t flags = dcerpc_binding_get_flags(binding);
if (torture_setting_bool(tctx, "quick", false) &&
- (p->conn->flags & DCERPC_DEBUG_VALIDATE_BOTH)) {
+ (flags & DCERPC_DEBUG_VALIDATE_BOTH)) {
len = 1 + (random() % 500);
} else {
len = 1 + (random() % 5000);
int len;
struct echo_SourceData r;
struct dcerpc_binding_handle *b = p->binding_handle;
+ const struct dcerpc_binding *binding = dcerpc_binding_handle_get_binding(b);
+ uint16_t flags = dcerpc_binding_get_flags(binding);
if (torture_setting_bool(tctx, "quick", false) &&
- (p->conn->flags & DCERPC_DEBUG_VALIDATE_BOTH)) {
+ (flags & DCERPC_DEBUG_VALIDATE_BOTH)) {
len = 100 + (random() % 500);
} else {
len = 200000 + (random() % 5000);
int len;
struct echo_SinkData r;
struct dcerpc_binding_handle *b = p->binding_handle;
+ const struct dcerpc_binding *binding = dcerpc_binding_handle_get_binding(b);
+ uint16_t flags = dcerpc_binding_get_flags(binding);
if (torture_setting_bool(tctx, "quick", false) &&
- (p->conn->flags & DCERPC_DEBUG_VALIDATE_BOTH)) {
+ (flags & DCERPC_DEBUG_VALIDATE_BOTH)) {
len = 100 + (random() % 5000);
} else {
len = 200000 + (random() % 5000);
struct timeval diff[ASYNC_COUNT];
int total_done = 0;
struct dcerpc_binding_handle *b = p->binding_handle;
+ const struct dcerpc_binding *bd = dcerpc_binding_handle_get_binding(b);
enum dcerpc_transport_t transport;
uint32_t assoc_group_id;
struct dcerpc_pipe *p2 = NULL;
}
torture_comment(tctx, "Testing TestSleep - use \"torture:quick=yes\" to disable\n");
- transport = dcerpc_binding_get_transport(p->binding);
- assoc_group_id = dcerpc_binding_get_assoc_group_id(p->binding);
+ transport = dcerpc_binding_get_transport(bd);
+ assoc_group_id = dcerpc_binding_get_assoc_group_id(bd);
torture_comment(tctx, "connect echo connection 2 with "
"DCERPC_CONCURRENT_MULTIPLEX\n");
NTSTATUS status;
struct dcerpc_pipe *p1, *p2, *p3, *p4, *p5;
struct dcerpc_binding_handle *b1, *b2, *b3, *b4;
+ const struct dcerpc_binding *bd1 = NULL, *bd2 = NULL;
struct policy_handle handle;
struct policy_handle handle2;
struct lsa_ObjectAttribute attr;
status = torture_rpc_connection(torture, &p1, &ndr_table_lsarpc);
torture_assert_ntstatus_ok(torture, status, "opening lsa pipe1");
b1 = p1->binding_handle;
+ bd1 = dcerpc_binding_handle_get_binding(b1);
- transport = p1->conn->transport.transport;
- assoc_group_id = dcerpc_binding_get_assoc_group_id(p1->binding);
+ transport = dcerpc_binding_get_transport(bd1);
+ assoc_group_id = dcerpc_binding_get_assoc_group_id(bd1);
torture_comment(torture, "use assoc_group_id[0x%08X] for new connections\n", assoc_group_id);
0);
torture_assert_ntstatus_ok(torture, status, "opening lsa pipe2");
b2 = p2->binding_handle;
+ bd2 = dcerpc_binding_handle_get_binding(b2);
torture_comment(torture, "got assoc_group_id[0x%08X] for p2\n",
- dcerpc_binding_get_assoc_group_id(p2->binding));
+ dcerpc_binding_get_assoc_group_id(bd2));
qos.len = 0;
qos.impersonation_level = 2;
NTSTATUS status;
struct dcerpc_pipe *p1, *p2, *p3, *p4, *p5, *p6;
struct dcerpc_binding_handle *b1, *b2;
+ const struct dcerpc_binding *bd1 = NULL, *bd2 = NULL;
struct policy_handle handle;
struct policy_handle handle2;
struct samr_Connect r;
status = torture_rpc_connection(torture, &p1, &ndr_table_samr);
torture_assert_ntstatus_ok(torture, status, "opening samr pipe1");
b1 = p1->binding_handle;
+ bd1 = dcerpc_binding_handle_get_binding(b1);
- transport = p1->conn->transport.transport;
- assoc_group_id = dcerpc_binding_get_assoc_group_id(p1->binding);
+ transport = dcerpc_binding_get_transport(bd1);
+ assoc_group_id = dcerpc_binding_get_assoc_group_id(bd1);
torture_comment(torture, "use assoc_group_id[0x%08X] for new connections\n", assoc_group_id);
0);
torture_assert_ntstatus_ok(torture, status, "opening lsa pipe2");
b2 = p2->binding_handle;
+ bd2 = dcerpc_binding_handle_get_binding(b2);
torture_comment(torture, "got assoc_group_id[0x%08X] for p2\n",
- dcerpc_binding_get_assoc_group_id(p2->binding));
+ dcerpc_binding_get_assoc_group_id(bd2));
r.in.system_name = 0;
r.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
r.out.connect_handle = &handle;
NTSTATUS status;
struct dcerpc_pipe *p1, *p2, *p3;
TALLOC_CTX *mem_ctx = talloc_new(torture);
+ const struct dcerpc_binding *bd1 = NULL;
enum dcerpc_transport_t transport;
uint32_t assoc_group_id;
status = torture_rpc_connection(torture, &p1, &ndr_table_samr);
torture_assert_ntstatus_ok(torture, status, "opening samr pipe1");
+ bd1 = dcerpc_binding_handle_get_binding(p1->binding_handle);
+ assoc_group_id = dcerpc_binding_get_assoc_group_id(bd1);
+
torture_comment(torture, "pipe1 uses assoc_group_id[0x%08X]\n",
- dcerpc_binding_get_assoc_group_id(p1->binding));
+ assoc_group_id);
+
+ transport = dcerpc_binding_get_transport(bd1);
- transport = p1->conn->transport.transport;
/*
* We use ~p1->assoc_group_id instead of p1->assoc_group_id, because
* this way we are less likely to use an id which is already in use.
*
* And make sure it doesn't wrap.
*/
- assoc_group_id = dcerpc_binding_get_assoc_group_id(p1->binding);
assoc_group_id = ~MIN(assoc_group_id, UINT32_MAX - 3);
torture_comment(torture, "connect samr pipe2 with assoc_group_id[0x%08X]- should fail\n", ++assoc_group_id);
struct dcerpc_pipe **_p2)
{
NTSTATUS status;
+ const struct dcerpc_binding *b1 =
+ dcerpc_binding_handle_get_binding(p1->binding_handle);
struct dcerpc_binding *b2 = NULL;
struct dcerpc_pipe *p2 = NULL;
- b2 = dcerpc_binding_dup(tctx, p1->binding);
+ b2 = dcerpc_binding_dup(tctx, b1);
torture_assert(tctx, b2 != NULL, "dcerpc_binding_dup");
dcerpc_binding_set_flags(b2,
DCERPC_SCHANNEL | additional_flags,
const char *machine_name;
const char *plain_pass;
struct dcerpc_binding_handle *b1 = p1->binding_handle;
+ const struct dcerpc_binding *bd1 = dcerpc_binding_handle_get_binding(b1);
struct dcerpc_pipe *p2 = NULL;
struct dcerpc_binding_handle *b2 = NULL;
torture_comment(tctx, "Testing ServerReqChallenge on b1\n");
torture_assert_ntstatus_ok(tctx,
- dcerpc_pipe_connect_b(tctx, &p2, p1->binding,
+ dcerpc_pipe_connect_b(tctx, &p2, bd1,
&ndr_table_netlogon,
machine_credentials,
tctx->ev, tctx->lp_ctx),
const char *machine_name;
const char *plain_pass;
struct dcerpc_binding_handle *b1 = p1->binding_handle;
+ const struct dcerpc_binding *bd1 = dcerpc_binding_handle_get_binding(b1);
struct dcerpc_pipe *p2 = NULL;
struct dcerpc_binding_handle *b2 = NULL;
struct dcerpc_pipe *p3 = NULL;
torture_comment(tctx, "Testing ServerReqChallenge on b1\n");
torture_assert_ntstatus_ok(tctx,
- dcerpc_pipe_connect_b(tctx, &p2, p1->binding,
+ dcerpc_pipe_connect_b(tctx, &p2, bd1,
&ndr_table_netlogon,
machine_credentials,
tctx->ev, tctx->lp_ctx),
b2 = p2->binding_handle;
torture_assert_ntstatus_ok(tctx,
- dcerpc_pipe_connect_b(tctx, &p3, p1->binding,
+ dcerpc_pipe_connect_b(tctx, &p3, bd1,
&ndr_table_netlogon,
machine_credentials,
tctx->ev, tctx->lp_ctx),
const char *machine_name;
const char *plain_pass;
struct dcerpc_binding_handle *b1 = p1->binding_handle;
+ const struct dcerpc_binding *bd1 = dcerpc_binding_handle_get_binding(b1);
struct dcerpc_pipe *p2 = NULL;
struct dcerpc_binding_handle *b2 = NULL;
torture_comment(tctx, "Testing ServerReqChallenge on b1\n");
torture_assert_ntstatus_ok(tctx,
- dcerpc_pipe_connect_b(tctx, &p2, p1->binding,
+ dcerpc_pipe_connect_b(tctx, &p2, bd1,
&ndr_table_netlogon,
machine_credentials,
tctx->ev, tctx->lp_ctx),
const char *machine_name;
const char *plain_pass;
struct dcerpc_binding_handle *b1 = p1->binding_handle;
+ const struct dcerpc_binding *bd1 = dcerpc_binding_handle_get_binding(b1);
struct dcerpc_pipe *p2 = NULL;
struct dcerpc_binding_handle *b2 = NULL;
torture_comment(tctx, "Testing ServerReqChallenge on b1\n");
torture_assert_ntstatus_ok(tctx,
- dcerpc_pipe_connect_b(tctx, &p2, p1->binding,
+ dcerpc_pipe_connect_b(tctx, &p2, bd1,
&ndr_table_netlogon,
machine_credentials,
tctx->ev, tctx->lp_ctx),
const char *machine_name;
const char *plain_pass;
struct dcerpc_binding_handle *b1 = p1->binding_handle;
+ const struct dcerpc_binding *bd1 = dcerpc_binding_handle_get_binding(b1);
struct dcerpc_pipe *p2 = NULL;
struct dcerpc_binding_handle *b2 = NULL;
torture_comment(tctx, "Testing ServerReqChallenge on b1\n");
torture_assert_ntstatus_ok(tctx,
- dcerpc_pipe_connect_b(tctx, &p2, p1->binding,
+ dcerpc_pipe_connect_b(tctx, &p2, bd1,
&ndr_table_netlogon,
machine_credentials,
tctx->ev, tctx->lp_ctx),
struct netr_GetAnyDCName d;
const char *dcname = NULL;
struct dcerpc_binding_handle *b = p->binding_handle;
+ const struct dcerpc_binding *bd = dcerpc_binding_handle_get_binding(b);
struct dcerpc_binding_handle *b2;
int i;
anon_creds = cli_credentials_init_anon(tctx);
torture_assert(tctx, anon_creds != NULL, "cli_credentials_init_anon failed");
- binding2 = dcerpc_binding_dup(tctx, p->binding);
+ binding2 = dcerpc_binding_dup(tctx, bd);
/* Swap the binding details from NETLOGON to LSA */
status = dcerpc_epm_map_binding(tctx, binding2, &ndr_table_lsarpc, tctx->ev, tctx->lp_ctx);
dcerpc_binding_set_assoc_group_id(binding2, 0);
anon_creds = cli_credentials_init_anon(tctx);
torture_assert(tctx, anon_creds != NULL, "cli_credentials_init_anon failed");
- binding2 = p->binding;
+ binding2 = dcerpc_binding_handle_get_binding(p->binding_handle);
status = dcerpc_secondary_auth_connection(p, binding2, &ndr_table_lsarpc,
anon_creds, tctx->lp_ctx,
anon_creds = cli_credentials_init_anon(tctx);
torture_assert(tctx, anon_creds != NULL, "cli_credentials_init_anon failed");
- binding2 = p->binding;
+ binding2 = dcerpc_binding_handle_get_binding(p->binding_handle);
status = dcerpc_secondary_auth_connection(p, binding2, &ndr_table_spoolss,
anon_creds, tctx->lp_ctx,
tctx, &p2);
uint32_t sec_info;
DATA_BLOB sdblob;
struct dcerpc_binding_handle *b = p->binding_handle;
+ const struct dcerpc_binding *binding = dcerpc_binding_handle_get_binding(b);
+ uint16_t flags = dcerpc_binding_get_flags(binding);
if (sec_info_ptr) {
sec_info = *sec_info_ptr;
(ndr_pull_flags_fn_t)ndr_pull_security_descriptor),
"pull_security_descriptor failed");
- if (p->conn->flags & DCERPC_DEBUG_PRINT_OUT) {
+ if (flags & DCERPC_DEBUG_PRINT_OUT) {
NDR_PRINT_DEBUG(security_descriptor, sd);
}
DATA_BLOB sdblob;
uint32_t sec_info;
struct dcerpc_binding_handle *b = p->binding_handle;
+ const struct dcerpc_binding *binding = dcerpc_binding_handle_get_binding(b);
+ uint16_t flags = dcerpc_binding_get_flags(binding);
ZERO_STRUCT(r);
- if (sd && (p->conn->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ if (sd && (flags & DCERPC_DEBUG_PRINT_OUT)) {
NDR_PRINT_DEBUG(security_descriptor, sd);
}