From 45e26fdeec4c6d3c4e75d648399ce2a8b3e26364 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 3 May 2011 09:32:01 +1000 Subject: s3-smbd: expose smbd_set_server_fd() this allows the fd to be setup by subsystems that want to use the s3 server core code Pair-Programmed-With: Andrew Bartlett Autobuild-User: Andrew Bartlett Autobuild-Date: Sun May 8 12:01:13 CEST 2011 on sn-devel-104 --- source3/include/proto.h | 1 + source3/smbd/globals.c | 29 +++++++++++++++++++++++++++++ source3/smbd/server.c | 29 ----------------------------- 3 files changed, 30 insertions(+), 29 deletions(-) (limited to 'source3') diff --git a/source3/include/proto.h b/source3/include/proto.h index e0bdabc780..7e25f8e3ad 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -1856,6 +1856,7 @@ void send_stat_cache_delete_message(struct messaging_context *msg_ctx, NTSTATUS can_delete_directory(struct connection_struct *conn, const char *dirname); bool change_to_root_user(void); +void smbd_set_server_fd(int fd); struct event_context *smbd_event_context(void); void contend_level2_oplocks_begin(files_struct *fsp, enum level2_contention_type type); diff --git a/source3/smbd/globals.c b/source3/smbd/globals.c index 8e6f46fe5c..6f7f200b01 100644 --- a/source3/smbd/globals.c +++ b/source3/smbd/globals.c @@ -160,3 +160,32 @@ void smbd_init_globals(void) smbd_server_conn->smb1.echo_handler.trusted_fd = -1; smbd_server_conn->smb1.echo_handler.socket_lock_fd = -1; } + +void smbd_set_server_fd(int fd) +{ + struct smbd_server_connection *sconn = smbd_server_conn; + char addr[INET6_ADDRSTRLEN]; + const char *name; + + sconn->sock = fd; + + /* + * Initialize sconn->client_id: If we can't find the client's + * name, default to its address. + */ + + client_addr(fd, sconn->client_id.addr, sizeof(sconn->client_id.addr)); + + name = client_name(sconn->sock); + if (strcmp(name, "UNKNOWN") != 0) { + name = talloc_strdup(sconn, name); + } else { + name = NULL; + } + sconn->client_id.name = + (name != NULL) ? name : sconn->client_id.addr; + + sub_set_socket_ids(sconn->client_id.addr, sconn->client_id.name, + client_socket_addr(sconn->sock, addr, + sizeof(addr))); +} diff --git a/source3/smbd/server.c b/source3/smbd/server.c index a4857756a1..29acf8d221 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -51,35 +51,6 @@ extern void start_spoolssd(struct event_context *ev_ctx, extern int dcelogin_atmost_once; #endif /* WITH_DFS */ -static void smbd_set_server_fd(int fd) -{ - struct smbd_server_connection *sconn = smbd_server_conn; - char addr[INET6_ADDRSTRLEN]; - const char *name; - - sconn->sock = fd; - - /* - * Initialize sconn->client_id: If we can't find the client's - * name, default to its address. - */ - - client_addr(fd, sconn->client_id.addr, sizeof(sconn->client_id.addr)); - - name = client_name(sconn->sock); - if (strcmp(name, "UNKNOWN") != 0) { - name = talloc_strdup(sconn, name); - } else { - name = NULL; - } - sconn->client_id.name = - (name != NULL) ? name : sconn->client_id.addr; - - sub_set_socket_ids(sconn->client_id.addr, sconn->client_id.name, - client_socket_addr(sconn->sock, addr, - sizeof(addr))); -} - struct event_context *smbd_event_context(void) { return server_event_context(); -- cgit