int opt_attrs = 0;
int opt_timestamps = 0;
const char *opt_exclude = NULL;
+const char *opt_destination = NULL;
BOOL opt_have_ip = False;
struct in_addr opt_dest_ip;
}
/**
- * Connect the local server and open a given pipe
+ * Connect a server and open a given pipe
*
- * @param cli_local A cli_state
+ * @param cli_dst A cli_state
* @param pipe The pipe to open
* @param got_pipe boolean that stores if we got a pipe
*
* @return Normal NTSTATUS return.
**/
-NTSTATUS connect_local_pipe(struct cli_state **cli_local, int pipe_num, BOOL *got_pipe)
+NTSTATUS connect_pipe(struct cli_state **cli_dst, int pipe_num, BOOL *got_pipe)
{
NTSTATUS nt_status;
- extern struct in_addr loopback_ip;
char *server_name = strdup("127.0.0.1");
struct cli_state *cli_tmp = NULL;
- /* make a connection to local named pipe via loopback */
- nt_status = connect_to_ipc(&cli_tmp, &loopback_ip, server_name);
+ if (opt_destination)
+ server_name = strdup(opt_destination);
+
+ /* make a connection to a named pipe */
+ nt_status = connect_to_ipc(&cli_tmp, NULL, server_name);
if (!NT_STATUS_IS_OK(nt_status))
return nt_status;
return NT_STATUS_UNSUCCESSFUL;
}
- *cli_local = cli_tmp;
+ *cli_dst = cli_tmp;
*got_pipe = True;
return nt_status;
{"ntname", 'N', POPT_ARG_STRING, &opt_newntname},
{"rid", 'R', POPT_ARG_INT, &opt_rid},
/* Options for 'net rpc share migrate' */
- {"acls", 0, POPT_ARG_NONE, &opt_acls},
- {"attrs", 0, POPT_ARG_NONE, &opt_attrs},
- {"timestamps", 0, POPT_ARG_NONE, &opt_timestamps},
+ {"acls", 0, POPT_ARG_NONE, &opt_acls},
+ {"attrs", 0, POPT_ARG_NONE, &opt_attrs},
+ {"timestamps", 0, POPT_ARG_NONE, &opt_timestamps},
{"exclude", 'e', POPT_ARG_STRING, &opt_exclude},
+ {"destination", 0, POPT_ARG_STRING, &opt_destination},
POPT_COMMON_SAMBA
{ 0, 0, 0, 0}
extern int opt_attrs;
extern int opt_timestamps;
extern const char *opt_exclude;
+extern const char *opt_destination;
extern BOOL opt_have_ip;
extern struct in_addr opt_dest_ip;
goto done;
/* connect local PI_SRVSVC */
- nt_status = connect_local_pipe(&cli_dst, PI_SRVSVC, &got_dst_srvsvc_pipe);
+ nt_status = connect_pipe(&cli_dst, PI_SRVSVC, &got_dst_srvsvc_pipe);
if (!NT_STATUS_IS_OK(nt_status))
return nt_status;
BOOL got_src_share = False;
BOOL got_dst_share = False;
pstring mask;
- extern struct in_addr loopback_ip;
+ char *dst = NULL;
+
+ dst = strdup(opt_destination?opt_destination:"127.0.0.1");
init_enum_hnd(&hnd, 0);
/* open share destination */
- nt_status = connect_to_service(&cli_share_dst, &loopback_ip,
- "127.0.0.1", netname, "A:");
+ nt_status = connect_to_service(&cli_share_dst, NULL,
+ dst, netname, "A:");
if (!NT_STATUS_IS_OK(nt_status))
goto done;
DEBUG(3,("copying printer ACLs\n"));
- /* connect local PI_SPOOLSS */
- nt_status = connect_local_pipe(&cli_dst, PI_SPOOLSS, &got_dst_spoolss_pipe);
+ /* connect destination PI_SPOOLSS */
+ nt_status = connect_pipe(&cli_dst, PI_SPOOLSS, &got_dst_spoolss_pipe);
if (!NT_STATUS_IS_OK(nt_status))
return nt_status;
- /* enum remote printers */
+ /* enum source printers */
if (!get_printer_info(cli, mem_ctx, level, argc, argv, &num_printers, &ctr_enum)) {
nt_status = NT_STATUS_UNSUCCESSFUL;
goto done;
DEBUG(3,("copying forms\n"));
- /* connect local PI_SPOOLSS */
- nt_status = connect_local_pipe(&cli_dst, PI_SPOOLSS, &got_dst_spoolss_pipe);
+ /* connect destination PI_SPOOLSS */
+ nt_status = connect_pipe(&cli_dst, PI_SPOOLSS, &got_dst_spoolss_pipe);
if (!NT_STATUS_IS_OK(nt_status))
return nt_status;
DEBUG(3,("copying printer-drivers\n"));
- nt_status = connect_local_pipe(&cli_dst, PI_SPOOLSS, &got_dst_spoolss_pipe);
+ nt_status = connect_pipe(&cli_dst, PI_SPOOLSS, &got_dst_spoolss_pipe);
if (!NT_STATUS_IS_OK(nt_status))
return nt_status;
DEBUG(3,("copying printers\n"));
- /* connect local PI_SPOOLSS */
- nt_status = connect_local_pipe(&cli_dst, PI_SPOOLSS, &got_dst_spoolss_pipe);
+ /* connect destination PI_SPOOLSS */
+ nt_status = connect_pipe(&cli_dst, PI_SPOOLSS, &got_dst_spoolss_pipe);
if (!NT_STATUS_IS_OK(nt_status))
return nt_status;
DEBUG(3,("copying printer settings\n"));
- /* connect local PI_SPOOLSS */
- nt_status = connect_local_pipe(&cli_dst, PI_SPOOLSS, &got_dst_spoolss_pipe);
+ /* connect destination PI_SPOOLSS */
+ nt_status = connect_pipe(&cli_dst, PI_SPOOLSS, &got_dst_spoolss_pipe);
if (!NT_STATUS_IS_OK(nt_status))
return nt_status;