Merge of rpcecho pipe for testing large dcerpc requests and responses.
authorTim Potter <tpot@samba.org>
Mon, 14 Apr 2003 02:08:03 +0000 (02:08 +0000)
committerTim Potter <tpot@samba.org>
Mon, 14 Apr 2003 02:08:03 +0000 (02:08 +0000)
Only compiled in when --enable-developer argument passed to configure.

source/include/ntdomain.h
source/include/smb.h
source/rpc_parse/parse_rpc.c
source/rpc_server/srv_pipe.c
source/rpcclient/rpcclient.c
source/smbd/nttrans.c

index d02195b378b6a244123f1e2d76f5e4b5e9e9e272..dc0ffc80355e7cb67fcb41c4d7c78d35f01034d0 100644 (file)
@@ -382,5 +382,6 @@ struct acct_info
 #include "rpc_spoolss.h"
 #include "rpc_dfs.h"
 #include "rpc_ds.h"
+#include "rpc_echo.h"
 
 #endif /* _NT_DOMAIN_H */
index 5baec705f5a9e80e2f4e1b191d71ef82998534ed..f6c60644be29833a5f05128e4b000b249b94f847 100644 (file)
@@ -186,6 +186,7 @@ typedef smb_ucs2_t wfstring[FSTRING_LEN];
 #define PIPE_LSARPC   "\\PIPE\\lsarpc"
 #define PIPE_SPOOLSS  "\\PIPE\\spoolss"
 #define PIPE_NETDFS   "\\PIPE\\netdfs"
+#define PIPE_ECHO     "\\PIPE\\rpcecho"
 
 #define PIPE_NETLOGON_PLAIN "\\NETLOGON"
 
@@ -198,7 +199,8 @@ typedef smb_ucs2_t wfstring[FSTRING_LEN];
 #define PI_WINREG              6
 #define PI_SPOOLSS             7
 #define PI_NETDFS              8
-#define PI_MAX_PIPES           9
+#define PI_ECHO                9
+#define PI_MAX_PIPES           10
 
 /* 64 bit time (100usec) since ????? - cifs6.txt, section 3.5, page 30 */
 typedef struct nttime_info
index 656082e05ae0ee0fc4b0bc61040ee072bb50d18b..30909c69105fa9dc7206300bcaecc709ae7770d2 100644 (file)
@@ -138,6 +138,15 @@ interface/version dce/rpc pipe identification
         }, 0x03                             \
 }
 
+#define SYNT_ECHO_V1                        \
+{                                           \
+        {                                   \
+                0x60a15ec5, 0x4de8, 0x11d7, \
+                { 0xa6, 0x37, 0x00, 0x50,   \
+                  0x56, 0xa2, 0x01, 0x82 }  \
+        }, 0x01                             \
+}
+
 /*
  * IMPORTANT!!  If you update this structure, make sure to
  * update the index #defines in smb.h.
@@ -155,6 +164,7 @@ const struct pipe_id_info pipe_names [] =
        { PIPE_WINREG  , SYNT_WINREG_V1        , PIPE_WINREG   , TRANS_SYNT_V2 },
        { PIPE_SPOOLSS , SYNT_SPOOLSS_V1       , PIPE_SPOOLSS  , TRANS_SYNT_V2 },
        { PIPE_NETDFS  , SYNT_NETDFS_V3        , PIPE_NETDFS   , TRANS_SYNT_V2 },
+       { PIPE_ECHO    , SYNT_ECHO_V1          , PIPE_ECHO     , TRANS_SYNT_V2 },
        { NULL         , SYNT_NONE_V0          , NULL          , SYNT_NONE_V0  }
 };
 
index 80275e6070c5cede3410b0abb20afd16940f112c..1a48435c9d629c491d260028b718273101d02c3b 100644 (file)
@@ -537,6 +537,11 @@ static struct api_cmd api_fd_commands[] =
 #endif
 #ifndef RPC_DFS_DYNAMIC
     { "netdfs",   rpc_dfs_init },
+#endif
+#ifdef DEVELOPER
+#ifndef RPC_ECHO_DYNAMIC
+    { "rpcecho",   rpc_echo_init },
+#endif
 #endif
     { NULL, NULL }
 };
index 0cb4ba98c865b2da2b392e725f77167819c6dc78..7bdc2f6c845825ddc087ae72ae697212a8d4b15a 100644 (file)
@@ -422,6 +422,7 @@ extern struct cmd_set srvsvc_commands[];
 extern struct cmd_set dfs_commands[];
 extern struct cmd_set reg_commands[];
 extern struct cmd_set ds_commands[];
+extern struct cmd_set echo_commands[];
 
 static struct cmd_set *rpcclient_command_list[] = {
        rpcclient_commands,
@@ -433,6 +434,7 @@ static struct cmd_set *rpcclient_command_list[] = {
        srvsvc_commands,
        dfs_commands,
        reg_commands,
+       echo_commands,
        NULL
 };
 
@@ -486,13 +488,14 @@ static NTSTATUS do_cmd(struct cli_state *cli,
 
                if (!cli_nt_open_netlogon(cli, trust_password,
                                          SEC_CHAN_WKSTA)) {
-                       DEBUG(0, ("Could not initialize NETLOGON pipe\n"));
+                       DEBUG(0, ("Could not initialise NETLOGON pipe\n"));
                        return NT_STATUS_UNSUCCESSFUL;
                }
        } else {
                if (cmd_entry->pipe_idx != -1) {
                        if (!cli_nt_session_open(cli, cmd_entry->pipe_idx)) {
-                               DEBUG(0, ("Could not initialize pipe\n"));
+                               DEBUG(0, ("Could not initialise %s\n",
+                                         get_pipe_name_from_index(cmd_entry->pipe_idx)));
                                return NT_STATUS_UNSUCCESSFUL;
                        }
                }
index 6d9c649045904c866b9333da94898cc7f41e97d8..9f7fabb75e44225942db0936926e2c6dedeb8d95 100644 (file)
@@ -40,6 +40,7 @@ static const char *known_nt_pipes[] = {
        "\\winreg",
        "\\spoolss",
        "\\netdfs",
+       "\\rpcecho",
        NULL
 };