1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-22 22:04:08 +03:00

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 <abartlet@samba.org>

Autobuild-User: Andrew Bartlett <abartlet@samba.org>
Autobuild-Date: Sun May  8 12:01:13 CEST 2011 on sn-devel-104
This commit is contained in:
Andrew Tridgell 2011-05-03 09:32:01 +10:00 committed by Andrew Bartlett
parent 2c569cd8ba
commit 45e26fdeec
3 changed files with 30 additions and 29 deletions

View File

@ -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);

View File

@ -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)));
}

View File

@ -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();