/* open second dcerpc pipe using the same transport as for primary pipe */
switch (s->pipe->conn->transport.transport) {
case NCACN_NP:
- s->smb.conn = dcerpc_binding_get_pointer_option(s->pipe->binding,
- "connection",
- struct smbXcli_conn);
- s->smb.session = dcerpc_binding_get_pointer_option(s->pipe->binding,
- "connection",
- struct smbXcli_session);
- s->smb.tcon = dcerpc_binding_get_pointer_option(s->pipe->binding,
- "connection",
- struct smbXcli_tcon);
-
- if (!smbXcli_conn_is_connected(s->smb.conn)) {
+ c->status = dcerpc_binding_get_smbXcli_pointers(s->pipe->binding,
+ &s->smb.conn,
+ &s->smb.session,
+ &s->smb.tcon);
+ if (!NT_STATUS_IS_OK(c->status)) {
composite_error(c, NT_STATUS_INVALID_PARAMETER_MIX);
return c;
}
c->status = dcerpc_pipe_open_smb_recv(ctx);
if (!composite_is_ok(c)) return;
- c->status = dcerpc_binding_set_pointer_option(s->binding,
- "connection",
- struct smbXcli_conn,
- s->smb.conn);
- if (!composite_is_ok(c)) return;
-
- c->status = dcerpc_binding_set_pointer_option(s->binding,
- "connection",
- struct smbXcli_session,
- s->smb.session);
- if (!composite_is_ok(c)) return;
-
- c->status = dcerpc_binding_set_pointer_option(s->binding,
- "connection",
- struct smbXcli_tcon,
- s->smb.tcon);
+ c->status = dcerpc_binding_set_smbXcli_pointers(s->binding,
+ s->smb.conn,
+ s->smb.session,
+ s->smb.tcon);
if (!composite_is_ok(c)) return;
continue_pipe_open(c);