summaryrefslogtreecommitdiff
path: root/source4/smbd/service.h
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-01-30 00:54:57 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:22 -0500
commit55d4d36993293fee914a009f1d8f05810e347f2b (patch)
tree587a9bafd1c8df901aad8766acb0fe9ef4c3d8c0 /source4/smbd/service.h
parent5540449f1cd9d9a6efab59f2bf47be4e1487ffc2 (diff)
downloadsamba-55d4d36993293fee914a009f1d8f05810e347f2b.tar.gz
samba-55d4d36993293fee914a009f1d8f05810e347f2b.tar.bz2
samba-55d4d36993293fee914a009f1d8f05810e347f2b.zip
r5102: This is a major simplification of the logic for controlling top level
servers in smbd. The old code still contained a fairly bit of legacy from the time when smbd was only handling SMB connection. The new code gets rid of all of the smb_server specific code in smbd/, and creates a much simpler infrastructures for new server code. Major changes include: - simplified the process model code a lot. - got rid of the top level server and service structures completely. The top level context is now the event_context. This got rid of service.h and server.h completely (they were the most confusing parts of the old code) - added service_stream.[ch] for the helper functions that are specific to stream type services (services that handle streams, and use a logically separate process per connection) - got rid of the builtin idle_handler code in the service logic, as none of the servers were using it, and it can easily be handled by a server in future by adding its own timed_event to the event context. - fixed some major memory leaks in the rpc server code. - added registration of servers, rather than hard coding our list of possible servers. This allows for servers as modules in the future. - temporarily disabled the winbind code until I add the helper functions for that type of server - added error checking on service startup. If a configured server fails to startup then smbd doesn't startup. - cleaned up the command line handling in smbd, removing unused options (This used to be commit cf6a46c3cbde7b1eb1b86bd3882b953a2de3a42e)
Diffstat (limited to 'source4/smbd/service.h')
-rw-r--r--source4/smbd/service.h165
1 files changed, 0 insertions, 165 deletions
diff --git a/source4/smbd/service.h b/source4/smbd/service.h
deleted file mode 100644
index d5335b1cef..0000000000
--- a/source4/smbd/service.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- SERVER SERVICE code
-
- Copyright (C) Stefan (metze) Metzmacher 2004
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef _SERVER_SERVICE_H
-#define _SERVER_SERVICE_H
-
-struct event_context;
-struct model_ops;
-struct server_context;
-
-struct server_connection;
-struct server_service;
-
-/* modules can use the following to determine if the interface has changed
- * please increment the version number after each interface change
- * with a comment and maybe update struct process_model_critical_sizes.
- */
-/* version 1 - initial version - metze */
-#define SERVER_SERVICE_VERSION 1
-
-struct server_service_ops {
- /* the name of the server_service */
- const char *name;
-
- /* called at startup when the server_service is selected */
- void (*service_init)(struct server_service *service);
-};
-
-struct server_stream_socket;
-
-struct server_stream_ops {
- /* the name of the server_service */
- const char *name;
-
- /* called at startup when the server_service is selected */
- void (*socket_init)(struct server_stream_socket *socket);
-
- /* function to accept new connection */
- void (*accept_connection)(struct server_connection *);
-
- void (*recv_handler)(struct server_connection *, struct timeval, uint16_t);
-
- void (*send_handler)(struct server_connection *, struct timeval, uint16_t);
-
- /* function to be called when the server is idle */
- void (*idle_handler)(struct server_connection *, struct timeval);
-
- /* function to close a connection */
- void (*close_connection)(struct server_connection *, const char *reason);
-};
-
-struct socket_context;
-
-struct server_stream_socket {
- struct server_stream_socket *next,*prev;
- struct {
- const struct server_stream_ops *ops;
- void *private_data;
- } stream;
-
- struct {
- struct event_context *ctx;
- struct fd_event *fde;
- } event;
-
- struct socket_context *socket;
-
- struct server_service *service;
-};
-
-struct server_service {
- struct server_service *next,*prev;
- struct {
- const struct server_service_ops *ops;
- void *private_data;
- } service;
-
- struct server_context *server;
-};
-
-/* the concept of whether two operations are on the same server
- connection or different connections is an important one in SMB, especially
- for locking and share modes. We will use a servid_t to distinguish different
- connections
-
- this means that (for example) a unique open file is distinguished by the triple
- of
- servid_t server;
- uint16 tid;
- uint16 fnum;
-*/
-typedef uint32_t servid_t;
-
-struct server_connection {
- struct server_connection *next,*prev;
- struct {
- void *private_data;
- servid_t id;
- } connection;
-
- struct {
- struct event_context *ctx;
- struct fd_event *fde;
- struct timed_event *idle;
- struct timeval idle_time;
- } event;
-
- struct socket_context *socket;
-
- struct server_stream_socket *stream_socket;
-
- struct {
- struct messaging_context *ctx;
- } messaging;
-};
-
-struct server_task;
-
-struct server_task_ops {
- /* the name of the server_task */
- const char *name;
-
- /* called at startup when the server_task is selected */
- void (*task_init)(struct server_task *task);
-};
-
-struct server_task {
- struct server_task *next,*prev;
- struct {
- const struct server_task_ops *ops;
- void *private_data;
- servid_t id;
- } task;
-
- struct {
- struct event_context *ctx;
- } event;
-
- struct {
- struct messaging_context *ctx;
- } messaging;
-
- struct server_service *service;
-};
-
-#endif /* _SERVER_SERVICE_H */