[SCM] Samba Shared Repository - branch master updated
Volker Lendecke
vlendec at samba.org
Mon Jan 11 14:26:02 UTC 2021
The branch, master has been updated
via 08da3439edd librpc: Use GUID_buf_string in dcerpc_binding_string()
via 912196f430b rpc_servers: Remove unused variables
via 79a73b44844 rpc_servers: Fix crash with many interfaces
via ca967485528 rpc_server: Add dcesrv_create_endpoint_list_fd_listen_fds()
via 9c9b0fd6160 rpc_server: Lift ph_listen_fd logic one level
via a00e3e8af3b rpc_server: Lift logic to fill in pf_listen_fd one level
via 666fc24a902 rpc_server: Use dcesrv_open_ncacn_ip_tcp_sockets() in dcesrv_setup_ncacn_ip_tcp_sockets()
via 276b9bc20aa rpc_server: Factor out dcesrv_open_ncacn_ip_tcp_sockets()
via 2e5d246b3b0 lib: Add samba_sockaddr_[gs]et_port()
via 4aa3ff574f2 lib: Move sockaddr_storage_to_samba_sockaddr() to lib/
from 564b62a6f7c vfs_fruit: fix close for fake_fd
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 08da3439eddf26bdeece1a4e3c729e4dfcbd5d5e
Author: Volker Lendecke <vl at samba.org>
Date: Thu Dec 31 10:11:04 2020 +0100
librpc: Use GUID_buf_string in dcerpc_binding_string()
Avoid a (small) memleak
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Samuel Cabrero <scabrero at samba.org>
Autobuild-User(master): Volker Lendecke <vl at samba.org>
Autobuild-Date(master): Mon Jan 11 14:25:04 UTC 2021 on sn-devel-184
commit 912196f430bff381bc0565966d95f5f46ec570c9
Author: Volker Lendecke <vl at samba.org>
Date: Thu Jan 7 20:53:17 2021 +0100
rpc_servers: Remove unused variables
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Samuel Cabrero <scabrero at samba.org>
commit 79a73b4484485092007edc0d025e5079dd9033db
Author: Volker Lendecke <vl at samba.org>
Date: Thu Dec 31 15:10:10 2020 +0100
rpc_servers: Fix crash with many interfaces
Previously, the lowlevel routines wrote into the pf_listen_fd arrays
without checking its size.
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Samuel Cabrero <scabrero at samba.org>
commit ca9674855284633f5d4a13ef8b79174054fdbfd3
Author: Volker Lendecke <vl at samba.org>
Date: Thu Dec 31 14:49:26 2020 +0100
rpc_server: Add dcesrv_create_endpoint_list_fd_listen_fds()
This encapsulates the loop in the three standalone rpc daemons walking
the endpoints in a dcesrv_context.
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Samuel Cabrero <scabrero at samba.org>
commit 9c9b0fd61605c67ecfa7ae63d062fa711d705a47
Author: Volker Lendecke <vl at samba.org>
Date: Thu Dec 31 10:47:03 2020 +0100
rpc_server: Lift ph_listen_fd logic one level
Push filling in struct pf_listen_fd into the daemons using
dcesrv_create_endpoint_sockets().
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Samuel Cabrero <scabrero at samba.org>
commit a00e3e8af3bd8916cca764cc8d16b0b37c637b7d
Author: Volker Lendecke <vl at samba.org>
Date: Thu Dec 31 09:54:15 2020 +0100
rpc_server: Lift logic to fill in pf_listen_fd one level
dcesrv_create_ncacn_ip_tcp_sockets() now returns a struct of fd's
instead of filling a preallocated array: Its only function beyond
dcesrv_open_ncacn_ip_tcp_sockets() is thus gone.
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Samuel Cabrero <scabrero at samba.org>
commit 666fc24a90251138b2ce9a50c2452fd25c057d72
Author: Volker Lendecke <vl at samba.org>
Date: Thu Dec 31 09:47:18 2020 +0100
rpc_server: Use dcesrv_open_ncacn_ip_tcp_sockets() in dcesrv_setup_ncacn_ip_tcp_sockets()
Avoid duplication of logic with "lp_interfaces_only()"
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Samuel Cabrero <scabrero at samba.org>
commit 276b9bc20aaa7e37c2a2faef8a50adc1bd5f3cf2
Author: Volker Lendecke <vl at samba.org>
Date: Thu Dec 31 09:21:25 2020 +0100
rpc_server: Factor out dcesrv_open_ncacn_ip_tcp_sockets()
The main change is to return an allocated array of file descriptors in
dcesrv_open_ncacn_ip_tcp_sockets() instead of filling a preallocated
array of pf_listen_fd structures.
Signed-off-by: Volker Lendecke <vl at samba.org>
commit 2e5d246b3b0ec0c5e4ec3cf4b833fc820f3cfcca
Author: Volker Lendecke <vl at samba.org>
Date: Wed Dec 30 22:50:36 2020 +0100
lib: Add samba_sockaddr_[gs]et_port()
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Samuel Cabrero <scabrero at samba.org>
commit 4aa3ff574f209d0fbd1e725cf06af03887db9fe0
Author: Volker Lendecke <vl at samba.org>
Date: Wed Dec 30 22:43:07 2020 +0100
lib: Move sockaddr_storage_to_samba_sockaddr() to lib/
This can be useful outside of source3/libsmb/namequery.c as Samba
moves towards samba_sockaddr.
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Samuel Cabrero <scabrero at samba.org>
-----------------------------------------------------------------------
Summary of changes:
lib/util/util_net.c | 56 ++++++++
lib/util/util_net.h | 5 +
librpc/rpc/binding.c | 6 +-
source3/libsmb/namequery.c | 26 ----
source3/libsmb/namequery.h | 2 -
source3/printing/spoolssd.c | 51 +++-----
source3/rpc_server/lsasd.c | 51 +++-----
source3/rpc_server/mdssd.c | 51 +++-----
source3/rpc_server/rpc_server.c | 32 +----
source3/rpc_server/rpc_server.h | 2 +-
source3/rpc_server/rpc_service_setup.c | 125 ++++++++++++++----
source3/rpc_server/rpc_service_setup.h | 13 +-
source3/rpc_server/rpc_sock_helper.c | 230 +++++++++++++++------------------
source3/rpc_server/rpc_sock_helper.h | 8 +-
14 files changed, 355 insertions(+), 303 deletions(-)
Changeset truncated at 500 lines:
diff --git a/lib/util/util_net.c b/lib/util/util_net.c
index b9b0621f45f..f97d4d43f3c 100644
--- a/lib/util/util_net.c
+++ b/lib/util/util_net.c
@@ -1065,3 +1065,59 @@ void set_socket_options(int fd, const char *options)
TALLOC_FREE(ctx);
print_socket_options(fd);
}
+
+/*
+ * Utility function that copes only with AF_INET and AF_INET6
+ * as that's all we're going to get out of DNS / NetBIOS / WINS
+ * name resolution functions.
+ */
+
+bool sockaddr_storage_to_samba_sockaddr(
+ struct samba_sockaddr *sa, const struct sockaddr_storage *ss)
+{
+ sa->u.ss = *ss;
+
+ switch (ss->ss_family) {
+ case AF_INET:
+ sa->sa_socklen = sizeof(struct sockaddr_in);
+ break;
+#ifdef HAVE_IPV6
+ case AF_INET6:
+ sa->sa_socklen = sizeof(struct sockaddr_in6);
+ break;
+#endif
+ default:
+ return false;
+ }
+ return true;
+}
+
+bool samba_sockaddr_set_port(struct samba_sockaddr *sa, uint16_t port)
+{
+ if (sa->u.sa.sa_family == AF_INET) {
+ sa->u.in.sin_port = port;
+ return true;
+ }
+#ifdef HAVE_IPV6
+ if (sa->u.sa.sa_family == AF_INET6) {
+ sa->u.in6.sin6_port = port;
+ return true;
+ }
+#endif
+ return false;
+}
+
+bool samba_sockaddr_get_port(const struct samba_sockaddr *sa, uint16_t *port)
+{
+ if (sa->u.sa.sa_family == AF_INET) {
+ *port = sa->u.in.sin_port;
+ return true;
+ }
+#ifdef HAVE_IPV6
+ if (sa->u.sa.sa_family == AF_INET6) {
+ *port = sa->u.in6.sin6_port;
+ return true;
+ }
+#endif
+ return false;
+}
diff --git a/lib/util/util_net.h b/lib/util/util_net.h
index 80a7e08b7e8..c95d90907fa 100644
--- a/lib/util/util_net.h
+++ b/lib/util/util_net.h
@@ -123,4 +123,9 @@ char *print_canonical_sockaddr(TALLOC_CTX *ctx,
void set_socket_options(int fd, const char *options);
+bool sockaddr_storage_to_samba_sockaddr(
+ struct samba_sockaddr *sa, const struct sockaddr_storage *ss);
+bool samba_sockaddr_set_port(struct samba_sockaddr *sa, uint16_t port);
+bool samba_sockaddr_get_port(const struct samba_sockaddr *sa, uint16_t *port);
+
#endif /* _SAMBA_UTIL_NET_H_ */
diff --git a/librpc/rpc/binding.c b/librpc/rpc/binding.c
index 75246dfd538..0a78be5bf16 100644
--- a/librpc/rpc/binding.c
+++ b/librpc/rpc/binding.c
@@ -227,9 +227,11 @@ _PUBLIC_ char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_bi
}
if (!GUID_all_zero(&b->object)) {
+ struct GUID_txt_buf buf;
+
o = s;
- s = talloc_asprintf_append_buffer(s, "%s@",
- GUID_string(mem_ctx, &b->object));
+ s = talloc_asprintf_append_buffer(
+ s, "%s@", GUID_buf_string(&b->object, &buf));
if (s == NULL) {
talloc_free(o);
return NULL;
diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c
index a385ac7cab2..047fff22ad9 100644
--- a/source3/libsmb/namequery.c
+++ b/source3/libsmb/namequery.c
@@ -39,32 +39,6 @@
/* nmbd.c sets this to True. */
bool global_in_nmbd = False;
-/*
- * Utility function that copes only with AF_INET and AF_INET6
- * as that's all we're going to get out of DNS / NetBIOS / WINS
- * name resolution functions.
- */
-
-bool sockaddr_storage_to_samba_sockaddr(struct samba_sockaddr *sa,
- const struct sockaddr_storage *ss)
-{
- sa->u.ss = *ss;
-
- switch (ss->ss_family) {
- case AF_INET:
- sa->sa_socklen = sizeof(struct sockaddr_in);
- break;
-#ifdef HAVE_IPV6
- case AF_INET6:
- sa->sa_socklen = sizeof(struct sockaddr_in6);
- break;
-#endif
- default:
- return false;
- }
- return true;
-}
-
/*
* Utility function to convert from a sockaddr_storage
* array to a struct samba_sockaddr array.
diff --git a/source3/libsmb/namequery.h b/source3/libsmb/namequery.h
index 37fb5c66c8c..16559f9cd26 100644
--- a/source3/libsmb/namequery.h
+++ b/source3/libsmb/namequery.h
@@ -23,8 +23,6 @@
#include <tevent.h>
/* The following definitions come from libsmb/namequery.c */
-bool sockaddr_storage_to_samba_sockaddr(struct samba_sockaddr *sa,
- const struct sockaddr_storage *ss);
bool saf_store( const char *domain, const char *servername );
bool saf_join_store( const char *domain, const char *servername );
bool saf_delete( const char *domain );
diff --git a/source3/printing/spoolssd.c b/source3/printing/spoolssd.c
index e56ebabd28f..8aef363fa91 100644
--- a/source3/printing/spoolssd.c
+++ b/source3/printing/spoolssd.c
@@ -580,41 +580,31 @@ static char *get_bq_logfile(void)
static NTSTATUS spoolssd_create_sockets(struct tevent_context *ev_ctx,
struct messaging_context *msg_ctx,
struct dcesrv_context *dce_ctx,
- struct pf_listen_fd *listen_fd,
- int *listen_fd_size)
+ TALLOC_CTX *mem_ctx,
+ struct pf_listen_fd **plisten_fds,
+ size_t *pnum_listen_fds)
{
NTSTATUS status;
- int fd = -1;
int rc;
enum rpc_service_mode_e epm_mode = rpc_epmapper_mode();
- int i;
- struct dcesrv_endpoint *e = NULL;
+ size_t i, num_fds;
+ struct pf_listen_fd *fds = NULL;
+ struct dcesrv_endpoint *e = dce_ctx->endpoint_list;
DBG_INFO("Initializing DCE/RPC connection endpoints\n");
- for (e = dce_ctx->endpoint_list; e; e = e->next) {
- status = dcesrv_create_endpoint_sockets(ev_ctx,
- msg_ctx,
- dce_ctx,
- e,
- listen_fd,
- listen_fd_size);
- if (!NT_STATUS_IS_OK(status)) {
- char *ep_string = dcerpc_binding_string(
- dce_ctx, e->ep_description);
- DBG_ERR("Failed to create endpoint '%s': %s\n",
- ep_string, nt_errstr(status));
- TALLOC_FREE(ep_string);
- goto done;
- }
+ status = dcesrv_create_endpoint_list_pf_listen_fds(
+ ev_ctx, msg_ctx, dce_ctx, e, mem_ctx, &num_fds, &fds);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
}
- for (i = 0; i < *listen_fd_size; i++) {
- rc = listen(listen_fd[i].fd, pf_spoolss_cfg.max_allowed_clients);
+ for (i = 0; i < num_fds; i++) {
+ rc = listen(fds[i].fd, pf_spoolss_cfg.max_allowed_clients);
if (rc == -1) {
char *ep_string = NULL;
+ e = fds[i].fd_data;
- e = listen_fd[i].fd_data;
ep_string = dcerpc_binding_string(dce_ctx,
e->ep_description);
DBG_ERR("Failed to listen on endpoint '%s': %s\n",
@@ -644,12 +634,11 @@ static NTSTATUS spoolssd_create_sockets(struct tevent_context *ev_ctx,
}
}
+ *plisten_fds = fds;
+ *pnum_listen_fds = num_fds;
+
status = NT_STATUS_OK;
done:
- if (fd != -1) {
- close(fd);
- }
-
return status;
}
@@ -659,8 +648,8 @@ pid_t start_spoolssd(struct tevent_context *ev_ctx,
{
pid_t pid;
NTSTATUS status;
- struct pf_listen_fd listen_fds[1];
- int listen_fds_size = 0;
+ struct pf_listen_fd *listen_fds = NULL;
+ size_t listen_fds_size = 0;
int ret;
bool ok;
const struct dcesrv_endpoint_server *ep_server = NULL;
@@ -774,7 +763,8 @@ pid_t start_spoolssd(struct tevent_context *ev_ctx,
status = spoolssd_create_sockets(ev_ctx,
msg_ctx,
dce_ctx,
- listen_fds,
+ dce_ctx,
+ &listen_fds,
&listen_fds_size);
if (!NT_STATUS_IS_OK(status)) {
DBG_ERR("Failed to create sockets: %s\n",
@@ -790,6 +780,7 @@ pid_t start_spoolssd(struct tevent_context *ev_ctx,
pf_spoolss_cfg.max_children,
&spoolss_children_main, dce_ctx,
&spoolss_pool);
+ TALLOC_FREE(listen_fds);
if (!ok) {
exit(1);
}
diff --git a/source3/rpc_server/lsasd.c b/source3/rpc_server/lsasd.c
index fe94f5a68a6..a5cc1dad17d 100644
--- a/source3/rpc_server/lsasd.c
+++ b/source3/rpc_server/lsasd.c
@@ -48,7 +48,6 @@
#define DBGC_CLASS DBGC_RPC_SRV
#define DAEMON_NAME "lsasd"
-#define LSASD_MAX_SOCKETS 64
static struct server_id parent_id;
static struct prefork_pool *lsasd_pool = NULL;
@@ -546,40 +545,30 @@ static void lsasd_check_children(struct tevent_context *ev_ctx,
static NTSTATUS lsasd_create_sockets(struct tevent_context *ev_ctx,
struct messaging_context *msg_ctx,
struct dcesrv_context *dce_ctx,
- struct pf_listen_fd *listen_fd,
- int *listen_fd_size)
+ TALLOC_CTX *mem_ctx,
+ struct pf_listen_fd **plisten_fds,
+ size_t *pnum_listen_fds)
{
NTSTATUS status;
- int i;
- int fd = -1;
+ size_t i, num_fds;
+ struct pf_listen_fd *fds = NULL;
int rc;
- struct dcesrv_endpoint *e = NULL;
+ struct dcesrv_endpoint *e = dce_ctx->endpoint_list;
DBG_INFO("Initializing DCE/RPC connection endpoints\n");
- for (e = dce_ctx->endpoint_list; e; e = e->next) {
- status = dcesrv_create_endpoint_sockets(ev_ctx,
- msg_ctx,
- dce_ctx,
- e,
- listen_fd,
- listen_fd_size);
- if (!NT_STATUS_IS_OK(status)) {
- char *ep_string = dcerpc_binding_string(
- dce_ctx, e->ep_description);
- DBG_ERR("Failed to create endpoint '%s': %s\n",
- ep_string, nt_errstr(status));
- TALLOC_FREE(ep_string);
- goto done;
- }
+ status = dcesrv_create_endpoint_list_pf_listen_fds(
+ ev_ctx, msg_ctx, dce_ctx, e, mem_ctx, &num_fds, &fds);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
}
- for (i = 0; i < *listen_fd_size; i++) {
- rc = listen(listen_fd[i].fd, pf_lsasd_cfg.max_allowed_clients);
+ for (i = 0; i < num_fds; i++) {
+ rc = listen(fds[i].fd, pf_lsasd_cfg.max_allowed_clients);
if (rc == -1) {
char *ep_string = NULL;
+ e = fds[i].fd_data;
- e = listen_fd[i].fd_data;
ep_string = dcerpc_binding_string(dce_ctx,
e->ep_description);
DBG_ERR("Failed to listen on endpoint '%s': %s\n",
@@ -606,11 +595,11 @@ static NTSTATUS lsasd_create_sockets(struct tevent_context *ev_ctx,
}
}
+ *plisten_fds = fds;
+ *pnum_listen_fds = num_fds;
+
status = NT_STATUS_OK;
done:
- if (fd != -1) {
- close(fd);
- }
return status;
}
@@ -619,8 +608,8 @@ void start_lsasd(struct tevent_context *ev_ctx,
struct dcesrv_context *dce_ctx)
{
NTSTATUS status;
- struct pf_listen_fd listen_fd[LSASD_MAX_SOCKETS];
- int listen_fd_size = 0;
+ struct pf_listen_fd *listen_fd = NULL;
+ size_t listen_fd_size = 0;
pid_t pid;
int rc;
bool ok;
@@ -738,7 +727,8 @@ void start_lsasd(struct tevent_context *ev_ctx,
status = lsasd_create_sockets(ev_ctx,
msg_ctx,
dce_ctx,
- listen_fd,
+ dce_ctx,
+ &listen_fd,
&listen_fd_size);
if (!NT_STATUS_IS_OK(status)) {
exit(1);
@@ -755,6 +745,7 @@ void start_lsasd(struct tevent_context *ev_ctx,
&lsasd_children_main,
dce_ctx,
&lsasd_pool);
+ TALLOC_FREE(listen_fd);
if (!ok) {
exit(1);
}
diff --git a/source3/rpc_server/mdssd.c b/source3/rpc_server/mdssd.c
index d74f9a2be8b..0c44b010aae 100644
--- a/source3/rpc_server/mdssd.c
+++ b/source3/rpc_server/mdssd.c
@@ -45,7 +45,6 @@
#define DBGC_CLASS DBGC_RPC_SRV
#define DAEMON_NAME "mdssd"
-#define MDSSD_MAX_SOCKETS 64
static struct server_id parent_id;
static struct prefork_pool *mdssd_pool = NULL;
@@ -496,40 +495,30 @@ static void mdssd_check_children(struct tevent_context *ev_ctx,
static NTSTATUS mdssd_create_sockets(struct tevent_context *ev_ctx,
struct messaging_context *msg_ctx,
struct dcesrv_context *dce_ctx,
- struct pf_listen_fd *listen_fd,
- int *listen_fd_size)
+ TALLOC_CTX *mem_ctx,
+ struct pf_listen_fd **plisten_fds,
+ size_t *pnum_listen_fds)
{
NTSTATUS status;
- int fd = -1;
+ size_t i, num_fds;
+ struct pf_listen_fd *fds = NULL;
int rc;
- int i;
- struct dcesrv_endpoint *e = NULL;
+ struct dcesrv_endpoint *e = dce_ctx->endpoint_list;
DBG_INFO("Initializing DCE/RPC connection endpoints\n");
- for (e = dce_ctx->endpoint_list; e; e = e->next) {
- status = dcesrv_create_endpoint_sockets(ev_ctx,
- msg_ctx,
- dce_ctx,
- e,
- listen_fd,
- listen_fd_size);
- if (!NT_STATUS_IS_OK(status)) {
- char *ep_string = dcerpc_binding_string(
- dce_ctx, e->ep_description);
- DBG_ERR("Failed to create endpoint '%s': %s\n",
- ep_string, nt_errstr(status));
- TALLOC_FREE(ep_string);
- goto done;
- }
+ status = dcesrv_create_endpoint_list_pf_listen_fds(
+ ev_ctx, msg_ctx, dce_ctx, e, mem_ctx, &num_fds, &fds);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
}
- for (i = 0; i < *listen_fd_size; i++) {
- rc = listen(listen_fd[i].fd, pf_mdssd_cfg.max_allowed_clients);
+ for (i = 0; i < num_fds; i++) {
+ rc = listen(fds[i].fd, pf_mdssd_cfg.max_allowed_clients);
if (rc == -1) {
char *ep_string = NULL;
+ e = fds[i].fd_data;
- e = listen_fd[i].fd_data;
ep_string = dcerpc_binding_string(dce_ctx,
e->ep_description);
DBG_ERR("Failed to listen on endpoint '%s': %s\n",
@@ -556,11 +545,11 @@ static NTSTATUS mdssd_create_sockets(struct tevent_context *ev_ctx,
}
}
+ *plisten_fds = fds;
+ *pnum_listen_fds = num_fds;
+
status = NT_STATUS_OK;
done:
- if (fd != -1) {
- close(fd);
- }
return status;
}
@@ -569,8 +558,8 @@ void start_mdssd(struct tevent_context *ev_ctx,
struct dcesrv_context *dce_ctx)
{
NTSTATUS status;
- struct pf_listen_fd listen_fd[MDSSD_MAX_SOCKETS];
- int listen_fd_size = 0;
+ struct pf_listen_fd *listen_fd = NULL;
+ size_t listen_fd_size = 0;
pid_t pid;
int rc;
bool ok;
@@ -655,7 +644,8 @@ void start_mdssd(struct tevent_context *ev_ctx,
status = mdssd_create_sockets(ev_ctx,
msg_ctx,
dce_ctx,
- listen_fd,
+ dce_ctx,
+ &listen_fd,
&listen_fd_size);
if (!NT_STATUS_IS_OK(status)) {
exit(1);
@@ -672,6 +662,7 @@ void start_mdssd(struct tevent_context *ev_ctx,
&mdssd_children_main,
dce_ctx,
&mdssd_pool);
+ TALLOC_FREE(listen_fd);
if (!ok) {
exit(1);
}
diff --git a/source3/rpc_server/rpc_server.c b/source3/rpc_server/rpc_server.c
index 9e57bc34559..e65d4a1b7c6 100644
--- a/source3/rpc_server/rpc_server.c
+++ b/source3/rpc_server/rpc_server.c
@@ -337,24 +337,15 @@ NTSTATUS dcesrv_setup_ncacn_ip_tcp_socket(struct tevent_context *ev_ctx,
struct messaging_context *msg_ctx,
struct dcesrv_context *dce_ctx,
struct dcesrv_endpoint *e,
- const struct sockaddr_storage *ifss,
+ int fd,
dcerpc_ncacn_termination_fn term_fn,
void *term_data)
{
struct dcerpc_ncacn_listen_state *state = NULL;
struct tevent_fd *fde = NULL;
- const char *endpoint = NULL;
- uint16_t port = 0;
- char port_str[6];
int rc;
NTSTATUS status;
- endpoint = dcerpc_binding_get_string_option(e->ep_description,
- "endpoint");
- if (endpoint != NULL) {
- port = atoi(endpoint);
- }
-
/* Alloc in endpoint context. If the endpoint is freed (for example
* when forked daemons reinit the dcesrv_context, the tevent_fd
* listener will be stopped and the socket closed */
--
Samba Shared Repository
More information about the samba-cvs
mailing list