root/source4/smbd/service_stream.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* 
   2    Unix SMB/CIFS implementation.
   3 
   4    structures specific to stream servers
   5 
   6    Copyright (C) Stefan (metze) Metzmacher      2004
   7    Copyright (C) Andrew Tridgell                2005
   8    
   9    This program is free software; you can redistribute it and/or modify
  10    it under the terms of the GNU General Public License as published by
  11    the Free Software Foundation; either version 3 of the License, or
  12    (at your option) any later version.
  13    
  14    This program is distributed in the hope that it will be useful,
  15    but WITHOUT ANY WARRANTY; without even the implied warranty of
  16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17    GNU General Public License for more details.
  18    
  19    You should have received a copy of the GNU General Public License
  20    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  21 */
  22 
  23 #ifndef __SERVICE_STREAM_H__
  24 #define __SERVICE_STREAM_H__
  25 
  26 #include "librpc/gen_ndr/server_id.h"
  27 
  28 /* modules can use the following to determine if the interface has changed
  29  * please increment the version number after each interface change
  30  * with a comment and maybe update struct stream_connection_critical_sizes.
  31  */
  32 /* version 0 - initial version - metze */
  33 #define SERVER_SERVICE_VERSION 0
  34 
  35 /*
  36   top level context for an established stream connection
  37 */
  38 struct stream_connection {
  39         const struct stream_server_ops *ops;
  40         const struct model_ops *model_ops;
  41         struct server_id server_id;
  42         void *private_data;
  43 
  44         struct {
  45                 struct tevent_context *ctx;
  46                 struct tevent_fd *fde;
  47         } event;
  48 
  49         struct socket_context *socket;
  50         struct messaging_context *msg_ctx;
  51         struct loadparm_context *lp_ctx;
  52 
  53         /*
  54          * this transport layer session info, normally NULL
  55          * which means the same as an anonymous session info
  56          */
  57         struct auth_session_info *session_info;
  58 
  59         bool processing;
  60         const char *terminate;
  61 };
  62 
  63 
  64 /* operations passed to the service_stream code */
  65 struct stream_server_ops {
  66         /* the name of the server_service */
  67         const char *name;
  68         void (*accept_connection)(struct stream_connection *);
  69         void (*recv_handler)(struct stream_connection *, uint16_t);
  70         void (*send_handler)(struct stream_connection *, uint16_t);
  71 };
  72 
  73 #endif /* __SERVICE_STREAM_H__ */

/* [<][>][^][v][top][bottom][index][help] */