Add endpoint mapper rpc definitions
authorJim McDonough <jmcd@samba.org>
Fri, 17 Oct 2003 15:02:38 +0000 (15:02 +0000)
committerJim McDonough <jmcd@samba.org>
Fri, 17 Oct 2003 15:02:38 +0000 (15:02 +0000)
source/include/rpc_epmapper.h [new file with mode: 0644]

diff --git a/source/include/rpc_epmapper.h b/source/include/rpc_epmapper.h
new file mode 100644 (file)
index 0000000..57ac8e2
--- /dev/null
@@ -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;
+