diff options
-rw-r--r-- | source/include/rpc_epmapper.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/source/include/rpc_epmapper.h b/source/include/rpc_epmapper.h new file mode 100644 index 00000000000..57ac8e25222 --- /dev/null +++ b/source/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; + |