#include "smbd/process_model.h"
#include "lib/messaging/irpc.h"
#include "librpc/rpc/rpc_common.h"
+#include "lib/util/samba_modules.h"
/* this is only used when the client asks for an unknown interface */
#define DUMMY_ASSOC_GROUP 0x0FFFFFFF
const struct dcesrv_endpoint *ep,
struct auth_session_info *session_info,
struct tevent_context *event_ctx,
- struct messaging_context *msg_ctx,
+ struct imessaging_context *msg_ctx,
struct server_id server_id,
uint32_t state_flags,
struct dcesrv_connection **_p)
}
initialized = true;
- shared_init = load_samba_modules(NULL, lp_ctx, "dcerpc_server");
+ shared_init = load_samba_modules(NULL, "dcerpc_server");
run_init_functions(static_init);
run_init_functions(shared_init);
ret = tstream_writev_queue_recv(subreq, &sys_errno);
TALLOC_FREE(subreq);
if (ret == -1) {
- status = map_nt_error_from_unix(sys_errno);
+ status = map_nt_error_from_unix_common(sys_errno);
dcesrv_terminate_connection(substate->dce_conn, nt_errstr(status));
return;
}
socket_get_fd(srv_conn->socket),
&dcesrv_conn->stream);
if (ret == -1) {
- status = map_nt_error_from_unix(errno);
+ status = map_nt_error_from_unix_common(errno);
DEBUG(0, ("dcesrv_sock_accept: "
"failed to setup tstream: %s\n",
nt_errstr(status)));
status = stream_setup_socket(dcesrv_sock, event_ctx, dce_ctx->lp_ctx,
model_ops, &dcesrv_stream_ops,
- "ipv4", address, &port,
+ "ip", address, &port,
lpcfg_socket_options(dce_ctx->lp_ctx),
dcesrv_sock);
if (!NT_STATUS_IS_OK(status)) {
int i;
struct interface *ifaces;
- load_interfaces(dce_ctx, lpcfg_interfaces(lp_ctx), &ifaces);
+ load_interface_list(dce_ctx, lp_ctx, &ifaces);
- num_interfaces = iface_count(ifaces);
+ num_interfaces = iface_list_count(ifaces);
for(i = 0; i < num_interfaces; i++) {
- const char *address = iface_n_ip(ifaces, i);
+ const char *address = iface_list_n_ip(ifaces, i);
status = add_socket_rpc_tcp_iface(dce_ctx, e, event_ctx, model_ops, address);
NT_STATUS_NOT_OK_RETURN(status);
}
} else {
- status = add_socket_rpc_tcp_iface(dce_ctx, e, event_ctx, model_ops,
- lpcfg_socket_address(lp_ctx));
- NT_STATUS_NOT_OK_RETURN(status);
+ const char **wcard;
+ int i;
+ wcard = iface_list_wildcard(dce_ctx, lp_ctx);
+ NT_STATUS_HAVE_NO_MEMORY(wcard);
+ for (i=0; wcard[i]; i++) {
+ status = add_socket_rpc_tcp_iface(dce_ctx, e, event_ctx, model_ops, wcard[i]);
+ NT_STATUS_NOT_OK_RETURN(status);
+ }
+ talloc_free(wcard);
}
return NT_STATUS_OK;
level = security_session_user_level(dce_call->conn->auth_state.session_info, NULL);
return level >= SECURITY_USER;
}
+
+/**
+ * retrieve account_name for a dce_call
+ */
+_PUBLIC_ const char *dcesrv_call_account_name(struct dcesrv_call_state *dce_call)
+{
+ return dce_call->context->conn->auth_state.session_info->info->account_name;
+}