diff options
author | Andrew Tridgell <tridge@samba.org> | 2003-12-10 22:21:04 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2003-12-10 22:21:04 +0000 |
commit | 188b2054a80ec16e7fb9ed7b6b1e8fce9b52458f (patch) | |
tree | 211e23ff3fa9a7d1911acd3557ce970af6aa782d /source4/rpc_server/dcerpc_server.h | |
parent | 3c76426f2e343df2194825ae2e0ef84f4ad4c6ac (diff) | |
download | samba-188b2054a80ec16e7fb9ed7b6b1e8fce9b52458f.tar.gz samba-188b2054a80ec16e7fb9ed7b6b1e8fce9b52458f.tar.bz2 samba-188b2054a80ec16e7fb9ed7b6b1e8fce9b52458f.zip |
initial rpc server side infrastructure
(This used to be commit 3706af7a6cb2090e0baeff5ee54bf49ebda2cce1)
Diffstat (limited to 'source4/rpc_server/dcerpc_server.h')
-rw-r--r-- | source4/rpc_server/dcerpc_server.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/source4/rpc_server/dcerpc_server.h b/source4/rpc_server/dcerpc_server.h new file mode 100644 index 0000000000..b28f40768a --- /dev/null +++ b/source4/rpc_server/dcerpc_server.h @@ -0,0 +1,72 @@ +/* + Unix SMB/CIFS implementation. + + server side dcerpc defines + + Copyright (C) Andrew Tridgell 2003 + + 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. +*/ + + +enum endpoint_type {ENDPOINT_SMB, ENDPOINT_TCP}; + +/* a description of a single dcerpc endpoint */ +struct dcesrv_endpoint { + enum endpoint_type type; + union { + const char *smb_pipe; + uint32 tcp_port; + } info; +}; + + +/* the state associated with a dcerpc server connection */ +struct dcesrv_state { + TALLOC_CTX *mem_ctx; + + /* the endpoint that was opened */ + struct dcesrv_endpoint endpoint; + + /* endpoint operations provided by the endpoint server */ + const struct dcesrv_endpoint_ops *ops; + + /* private data for the endpoint server */ + void *private; +}; + + +struct dcesrv_endpoint_ops { + /* the query function is used to ask an endpoint server if it + handles a particular endpoint */ + BOOL (*query)(const struct dcesrv_endpoint *); + + /* connect() is called when a connection is made to an endpoint */ + NTSTATUS (*connect)(struct dcesrv_state *); + + /* disconnect() is called when the endpoint is disconnected */ + void (*disconnect)(struct dcesrv_state *); +}; + + +/* server-wide context information for the dcerpc server */ +struct dcesrv_context { + + /* the list of endpoints servers that have registered */ + struct dce_endpoint { + struct dce_endpoint *next, *prev; + const struct dcesrv_endpoint_ops *endpoint_ops; + } *endpoint_list; +}; |