diff --git a/source3/lib/sessionid_tdb.c b/source3/lib/sessionid_tdb.c index 2376fd42a25..53bb9aeebbc 100644 --- a/source3/lib/sessionid_tdb.c +++ b/source3/lib/sessionid_tdb.c @@ -24,6 +24,7 @@ #include "session.h" #include "util_tdb.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" struct sessionid_traverse_read_state { int (*fn)(const char *key, struct sessionid *session, diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index 4928d1f4fb8..bec4ce0f64e 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -546,77 +546,6 @@ NTSTATUS smb2srv_client_mc_negprot_recv(struct tevent_req *req); NTSTATUS smbXsrv_connection_init_tables(struct smbXsrv_connection *conn, enum protocol_types protocol); -NTSTATUS smbXsrv_session_global_init(struct messaging_context *msg_ctx); -NTSTATUS smbXsrv_session_create(struct smbXsrv_connection *conn, - NTTIME now, - struct smbXsrv_session **_session); -NTSTATUS smbXsrv_session_add_channel(struct smbXsrv_session *session, - struct smbXsrv_connection *conn, - NTTIME now, - struct smbXsrv_channel_global0 **_c); -NTSTATUS smbXsrv_session_remove_channel(struct smbXsrv_session *session, - struct smbXsrv_connection *xconn); -NTSTATUS smbXsrv_session_disconnect_xconn(struct smbXsrv_connection *xconn); -NTSTATUS smbXsrv_session_update(struct smbXsrv_session *session); -struct smbXsrv_channel_global0; -NTSTATUS smbXsrv_session_find_channel(const struct smbXsrv_session *session, - const struct smbXsrv_connection *conn, - struct smbXsrv_channel_global0 **_c); -NTSTATUS smbXsrv_session_find_auth(const struct smbXsrv_session *session, - const struct smbXsrv_connection *conn, - NTTIME now, - struct smbXsrv_session_auth0 **_a); -NTSTATUS smbXsrv_session_create_auth(struct smbXsrv_session *session, - struct smbXsrv_connection *conn, - NTTIME now, - uint8_t in_flags, - uint8_t in_security_mode, - struct smbXsrv_session_auth0 **_a); -struct tevent_req *smb2srv_session_shutdown_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct smbXsrv_session *session, - struct smbd_smb2_request *current_req); -NTSTATUS smb2srv_session_shutdown_recv(struct tevent_req *req); -NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session *session); -NTSTATUS smbXsrv_session_logoff_all(struct smbXsrv_client *client); -NTSTATUS smb1srv_session_table_init(struct smbXsrv_connection *conn); -NTSTATUS smb1srv_session_lookup(struct smbXsrv_connection *conn, - uint16_t vuid, NTTIME now, - struct smbXsrv_session **session); -NTSTATUS smbXsrv_session_info_lookup(struct smbXsrv_client *client, - uint64_t session_wire_id, - struct auth_session_info **si); -NTSTATUS smb2srv_session_table_init(struct smbXsrv_connection *conn); -NTSTATUS smb2srv_session_lookup_conn(struct smbXsrv_connection *conn, - uint64_t session_id, NTTIME now, - struct smbXsrv_session **session); -NTSTATUS smb2srv_session_lookup_client(struct smbXsrv_client *client, - uint64_t session_id, NTTIME now, - struct smbXsrv_session **session); -NTSTATUS smb2srv_session_lookup_global(struct smbXsrv_client *client, - uint64_t session_wire_id, - TALLOC_CTX *mem_ctx, - struct smbXsrv_session **session); -NTSTATUS get_valid_smbXsrv_session(struct smbXsrv_client *client, - uint64_t session_wire_id, - struct smbXsrv_session **session); -NTSTATUS smbXsrv_session_local_traverse( - struct smbXsrv_client *client, - int (*caller_cb)(struct smbXsrv_session *session, - void *caller_data), - void *caller_data); -struct smbXsrv_session_global0; -NTSTATUS smbXsrv_session_global_traverse( - int (*fn)(struct smbXsrv_session_global0 *, void *), - void *private_data); -struct tevent_req *smb2srv_session_close_previous_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct smbXsrv_connection *conn, - struct auth_session_info *session_info, - uint64_t previous_session_id, - uint64_t current_session_id); -NTSTATUS smb2srv_session_close_previous_recv(struct tevent_req *req); - NTSTATUS smbXsrv_tcon_global_init(void); NTSTATUS smbXsrv_tcon_update(struct smbXsrv_tcon *tcon); NTSTATUS smbXsrv_tcon_disconnect(struct smbXsrv_tcon *tcon, uint64_t vuid); diff --git a/source3/smbd/password.c b/source3/smbd/password.c index 9709a51a109..696c0fffffd 100644 --- a/source3/smbd/password.c +++ b/source3/smbd/password.c @@ -22,6 +22,7 @@ #include "system/passwd.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "../librpc/gen_ndr/netlogon.h" #include "auth.h" #include "../libcli/security/security.h" diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 42abfa948e6..277e36789f0 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -29,6 +29,7 @@ #include "locking/share_mode_lock.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "smbd/smbXsrv_open.h" #include "registry/reg_init_full.h" #include "libcli/auth/schannel.h" diff --git a/source3/smbd/server_exit.c b/source3/smbd/server_exit.c index 5e0c386e090..cde0044d3d3 100644 --- a/source3/smbd/server_exit.c +++ b/source3/smbd/server_exit.c @@ -26,6 +26,7 @@ #include "locking/share_mode_lock.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "ntdomain.h" #include "librpc/rpc/dcesrv_core.h" #include "printing/notify.h" diff --git a/source3/smbd/smb1_lanman.c b/source3/smbd/smb1_lanman.c index 9f703ebe184..846d6f3b900 100644 --- a/source3/smbd/smb1_lanman.c +++ b/source3/smbd/smb1_lanman.c @@ -28,6 +28,7 @@ #include "includes.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "rpc_client/rpc_client.h" #include "../librpc/gen_ndr/ndr_samr_c.h" #include "../librpc/gen_ndr/ndr_spoolss_c.h" diff --git a/source3/smbd/smb1_process.c b/source3/smbd/smb1_process.c index e4f6cdf4578..535561ae6ce 100644 --- a/source3/smbd/smb1_process.c +++ b/source3/smbd/smb1_process.c @@ -23,6 +23,7 @@ #include "system/filesys.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "smbd/smbXsrv_open.h" #include "librpc/gen_ndr/netlogon.h" #include "../lib/async_req/async_sock.h" diff --git a/source3/smbd/smb1_reply.c b/source3/smbd/smb1_reply.c index b2f317a1db9..c217259f26b 100644 --- a/source3/smbd/smb1_reply.c +++ b/source3/smbd/smb1_reply.c @@ -31,6 +31,7 @@ #include "locking/share_mode_lock.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "smbd/smbXsrv_open.h" #include "fake_file.h" #include "rpc_client/rpc_client.h" diff --git a/source3/smbd/smb1_sesssetup.c b/source3/smbd/smb1_sesssetup.c index 6c668fffa7b..443791bcc0d 100644 --- a/source3/smbd/smb1_sesssetup.c +++ b/source3/smbd/smb1_sesssetup.c @@ -27,6 +27,7 @@ #include "lib/util/server_id.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "auth.h" #include "messages.h" #include "smbprofile.h" diff --git a/source3/smbd/smb2_process.c b/source3/smbd/smb2_process.c index 73664273359..2783ac23822 100644 --- a/source3/smbd/smb2_process.c +++ b/source3/smbd/smb2_process.c @@ -23,6 +23,7 @@ #include "system/filesys.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "smbd/smbXsrv_open.h" #include "librpc/gen_ndr/netlogon.h" #include "../lib/async_req/async_sock.h" diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c index afb86abf2fc..17971b40d1c 100644 --- a/source3/smbd/smb2_server.c +++ b/source3/smbd/smb2_server.c @@ -23,6 +23,7 @@ #include "system/network.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "smbd/smbXsrv_open.h" #include "lib/param/param.h" #include "../libcli/smb/smb_common.h" diff --git a/source3/smbd/smb2_sesssetup.c b/source3/smbd/smb2_sesssetup.c index ac71e550264..3005385ac9c 100644 --- a/source3/smbd/smb2_sesssetup.c +++ b/source3/smbd/smb2_sesssetup.c @@ -22,6 +22,7 @@ #include "includes.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "../libcli/smb/smb_common.h" #include "../auth/gensec/gensec.h" #include "auth.h" diff --git a/source3/smbd/smbXsrv_session.c b/source3/smbd/smbXsrv_session.c index a88b7c10195..0f7aa875059 100644 --- a/source3/smbd/smbXsrv_session.c +++ b/source3/smbd/smbXsrv_session.c @@ -19,6 +19,7 @@ */ #include "includes.h" +#include "smbXsrv_session.h" #include "system/filesys.h" #include #include "lib/util/server_id.h" diff --git a/source3/smbd/smbXsrv_session.h b/source3/smbd/smbXsrv_session.h new file mode 100644 index 00000000000..e2a28e0d136 --- /dev/null +++ b/source3/smbd/smbXsrv_session.h @@ -0,0 +1,110 @@ +/* + * Unix SMB/CIFS implementation. + * + * Copyright (C) Stefan Metzmacher 2011-2012 + * Copyright (C) Michael Adam 2012 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __SMBXSRV_SESSION_H__ +#define __SMBXSRV_SESSION_H__ + +#include "replace.h" +#include +#include "libcli/util/ntstatus.h" +#include "lib/util/time.h" + +struct messaging_context; +struct smbXsrv_client; +struct smbXsrv_connection; +struct smbXsrv_session; +struct smbXsrv_session_global0; +struct smbXsrv_channel_global0; +struct smbXsrv_session_auth0; + +NTSTATUS smbXsrv_session_global_init(struct messaging_context *msg_ctx); +NTSTATUS smbXsrv_session_create(struct smbXsrv_connection *conn, + NTTIME now, + struct smbXsrv_session **_session); +NTSTATUS smbXsrv_session_add_channel(struct smbXsrv_session *session, + struct smbXsrv_connection *conn, + NTTIME now, + struct smbXsrv_channel_global0 **_c); +NTSTATUS smbXsrv_session_remove_channel(struct smbXsrv_session *session, + struct smbXsrv_connection *xconn); +NTSTATUS smbXsrv_session_disconnect_xconn(struct smbXsrv_connection *xconn); +NTSTATUS smbXsrv_session_update(struct smbXsrv_session *session); +NTSTATUS smbXsrv_session_find_channel(const struct smbXsrv_session *session, + const struct smbXsrv_connection *conn, + struct smbXsrv_channel_global0 **_c); +NTSTATUS smbXsrv_session_find_auth(const struct smbXsrv_session *session, + const struct smbXsrv_connection *conn, + NTTIME now, + struct smbXsrv_session_auth0 **_a); +NTSTATUS smbXsrv_session_create_auth(struct smbXsrv_session *session, + struct smbXsrv_connection *conn, + NTTIME now, + uint8_t in_flags, + uint8_t in_security_mode, + struct smbXsrv_session_auth0 **_a); +struct tevent_req *smb2srv_session_shutdown_send( + TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct smbXsrv_session *session, + struct smbd_smb2_request *current_req); +NTSTATUS smb2srv_session_shutdown_recv(struct tevent_req *req); +NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session *session); +NTSTATUS smbXsrv_session_logoff_all(struct smbXsrv_client *client); +NTSTATUS smb1srv_session_table_init(struct smbXsrv_connection *conn); +NTSTATUS smb1srv_session_lookup(struct smbXsrv_connection *conn, + uint16_t vuid, + NTTIME now, + struct smbXsrv_session **session); +NTSTATUS smbXsrv_session_info_lookup(struct smbXsrv_client *client, + uint64_t session_wire_id, + struct auth_session_info **si); +NTSTATUS smb2srv_session_table_init(struct smbXsrv_connection *conn); +NTSTATUS smb2srv_session_lookup_conn(struct smbXsrv_connection *conn, + uint64_t session_id, + NTTIME now, + struct smbXsrv_session **session); +NTSTATUS smb2srv_session_lookup_client(struct smbXsrv_client *client, + uint64_t session_id, + NTTIME now, + struct smbXsrv_session **session); +NTSTATUS smb2srv_session_lookup_global(struct smbXsrv_client *client, + uint64_t session_wire_id, + TALLOC_CTX *mem_ctx, + struct smbXsrv_session **session); +NTSTATUS get_valid_smbXsrv_session(struct smbXsrv_client *client, + uint64_t session_wire_id, + struct smbXsrv_session **session); +NTSTATUS smbXsrv_session_local_traverse( + struct smbXsrv_client *client, + int (*caller_cb)(struct smbXsrv_session *session, void *caller_data), + void *caller_data); +NTSTATUS smbXsrv_session_global_traverse( + int (*fn)(struct smbXsrv_session_global0 *, void *), + void *private_data); +struct tevent_req *smb2srv_session_close_previous_send( + TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct smbXsrv_connection *conn, + struct auth_session_info *session_info, + uint64_t previous_session_id, + uint64_t current_session_id); +NTSTATUS smb2srv_session_close_previous_recv(struct tevent_req *req); + +#endif diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c index 52918c4f181..585f3f169a6 100644 --- a/source3/smbd/uid.c +++ b/source3/smbd/uid.c @@ -21,6 +21,7 @@ #include "system/passwd.h" #include "smbd/smbd.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "../librpc/gen_ndr/netlogon.h" #include "libcli/security/security.h" #include "passdb/lookup_sid.h" diff --git a/source3/utils/conn_tdb.c b/source3/utils/conn_tdb.c index 3724bd42493..1109f08541c 100644 --- a/source3/utils/conn_tdb.c +++ b/source3/utils/conn_tdb.c @@ -20,6 +20,7 @@ #include "includes.h" #include "system/filesys.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "dbwrap/dbwrap.h" #include "dbwrap/dbwrap_open.h" #include "dbwrap/dbwrap_rbt.h" diff --git a/source3/utils/net_serverid.c b/source3/utils/net_serverid.c index 435b63b2224..25c7b04a07e 100644 --- a/source3/utils/net_serverid.c +++ b/source3/utils/net_serverid.c @@ -25,6 +25,7 @@ #include "serverid.h" #include "session.h" #include "smbd/globals.h" +#include "source3/smbd/smbXsrv_session.h" #include "smbd/smbXsrv_open.h" #include "util_tdb.h" #include "librpc/gen_ndr/ndr_open_files.h"