summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/rpc_epmapper.h115
1 files changed, 115 insertions, 0 deletions
diff --git a/source3/include/rpc_epmapper.h b/source3/include/rpc_epmapper.h
new file mode 100644
index 0000000000..57ac8e2522
--- /dev/null
+++ b/source3/include/rpc_epmapper.h
@@ -0,0 +1,115 @@
+/*
+ Unix SMB/CIFS implementation.
+ Endpoint mapper data definitions
+ Copyright (C) Jim McDonough (jmcd@us.ibm.com) 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.
+*/
+
+#define EPM_HANDLE_LEN 20
+
+/* ordinal for the mapping interface */
+
+#define EPM_MAP_PIPE_NAME 0x03
+
+/* some of the different connection protocols and their IDs from Windows */
+
+#define EPM_FLOOR_UUID 0x0d /* floor contains UUID */
+#define EPM_FLOOR_RPC 0x0b /* tower is for connection-oriented rpc */
+#define EPM_FLOOR_TCP 0x07 /* floor contains tcp port number */
+#define EPM_FLOOR_IP 0x09 /* floor contains IP address */
+#define EPM_FLOOR_NMPIPES 0x10 /* floor contains remote named pipe name */
+#define EPM_FLOOR_NETBIOS 0x11 /* floor contains netbios address */
+#define EPM_FLOOR_NETBEUI 0x12 /* floor contains netbeui address */
+#define EPM_FLOOR_SOCKET 0x20
+
+#define EPM_PIPE_NM "epmapper"
+
+#define MAX_TOWERS 1
+
+typedef struct
+{
+ uint8 data[EPM_HANDLE_LEN];
+} EPM_HANDLE;
+
+typedef struct
+{
+ struct {
+ uint16 length;
+ uint8 protocol;
+ struct {
+ RPC_UUID uuid;
+ uint16 version;
+ } uuid;
+ } lhs;
+ struct {
+ uint16 length;
+ uint16 unknown;
+ struct {
+ uint16 port;
+ } tcp;
+ struct {
+ uint8 addr[4];
+ } ip;
+ } rhs;
+} EPM_FLOOR;
+
+typedef struct
+{
+ uint32 referent_id;
+ uint32 max_length;
+ uint32 length;
+ uint16 num_floors;
+ EPM_FLOOR *floors;
+ uint8 unknown;
+} EPM_TOWER;
+
+typedef struct
+{
+ EPM_HANDLE handle;
+ EPM_TOWER *tower;
+ EPM_HANDLE term_handle; /* in/out */
+ uint32 max_towers;
+} EPM_Q_MAP;
+
+typedef struct
+{
+ uint32 max_count;
+ uint32 offset;
+ uint32 count;
+ EPM_TOWER *towers;
+} EPM_TOWER_ARRAY;
+
+typedef struct
+{
+ EPM_HANDLE handle;
+ uint32 num_results;
+ EPM_TOWER_ARRAY *results;
+ uint32 status;
+} EPM_R_MAP;
+
+
+/* port mapping entries to be read */
+
+typedef struct _mapper_entries{
+ uint8 protocol ;
+ RPC_IFACE uuid_info ; /* needs to be zeroed if no specific uuid */
+ uint16 port ;
+ char pipe_name[40] ;
+ char srv_name[20] ;
+ uint8 srv_port[4] ;
+ char func_name[16][16]; /* array of up to 16 functions available */
+} mapper_entries;
+