#include "system/filesys.h"
#include "auth/gensec/gensec.h"
#include "lib/cmdline/popt_common.h"
+#include "libcli/resolve/resolve.h"
+#include "libcli/raw/libcliraw.h"
+#include "lib/events/events.h"
#include "cifsdd.h"
#include "param/param.h"
}
}
-static struct dd_iohandle * open_file(const char * which)
+static struct dd_iohandle * open_file(struct resolve_context *resolve_ctx,
+ struct tevent_context *ev,
+ const char * which, const char **ports,
+ struct smbcli_options *smb_options,
+ const char *socket_options,
+ struct smbcli_session_options *smb_session_options,
+ struct smb_iconv_convenience *iconv_convenience,
+ struct gensec_settings *gensec_settings)
{
int options = 0;
const char * path = NULL;
if (strcmp(which, "if") == 0) {
path = check_arg_pathname("if");
- handle = dd_open_path(path, check_arg_numeric("ibs"),
- options);
+ handle = dd_open_path(resolve_ctx, ev, path, ports,
+ check_arg_numeric("ibs"), options,
+ socket_options,
+ smb_options, smb_session_options,
+ iconv_convenience,
+ gensec_settings);
} else if (strcmp(which, "of") == 0) {
options |= DD_WRITE;
path = check_arg_pathname("of");
- handle = dd_open_path(path, check_arg_numeric("obs"),
- options);
+ handle = dd_open_path(resolve_ctx, ev, path, ports,
+ check_arg_numeric("obs"), options,
+ socket_options,
+ smb_options, smb_session_options,
+ iconv_convenience,
+ gensec_settings);
} else {
SMB_ASSERT(0);
return(NULL);
return(handle);
}
-static void set_max_xmit(struct loadparm_context *lp_ctx, uint64_t iomax)
-{
- char buf[64];
-
- snprintf(buf, sizeof(buf), "%llu", (unsigned long long)iomax);
- lp_set_cmdline(lp_ctx, "max xmit", buf);
-}
-
-static int copy_files(struct loadparm_context *lp_ctx)
+static int copy_files(struct tevent_context *ev, struct loadparm_context *lp_ctx)
{
uint8_t * iobuf; /* IO buffer. */
uint64_t iomax; /* Size of the IO buffer. */
struct dd_iohandle * ifile;
struct dd_iohandle * ofile;
+ struct smbcli_options options;
+ struct smbcli_session_options session_options;
+
ibs = check_arg_numeric("ibs");
obs = check_arg_numeric("obs");
count = check_arg_numeric("count");
+ lp_smbcli_options(lp_ctx, &options);
+ lp_smbcli_session_options(lp_ctx, &session_options);
+
/* Allocate IO buffer. We need more than the max IO size because we
* could accumulate a remainder if ibs and obs don't match.
*/
return(EOM_EXIT_CODE);
}
- set_max_xmit(lp_ctx, MAX(ibs, obs));
+ options.max_xmit = MAX(ibs, obs);
DEBUG(4, ("IO buffer size is %llu, max xmit is %d\n",
- (unsigned long long)iomax, lp_max_xmit(lp_ctx)));
+ (unsigned long long)iomax, options.max_xmit));
- if (!(ifile = open_file("if"))) {
+ if (!(ifile = open_file(lp_resolve_context(lp_ctx), ev, "if",
+ lp_smb_ports(lp_ctx), &options,
+ lp_socket_options(lp_ctx),
+ &session_options, lp_iconv_convenience(lp_ctx),
+ lp_gensec_settings(lp_ctx, lp_ctx)))) {
return(FILESYS_EXIT_CODE);
}
- if (!(ofile = open_file("of"))) {
+ if (!(ofile = open_file(lp_resolve_context(lp_ctx), ev, "of",
+ lp_smb_ports(lp_ctx), &options,
+ lp_socket_options(lp_ctx),
+ &session_options,
+ lp_iconv_convenience(lp_ctx),
+ lp_gensec_settings(lp_ctx, lp_ctx)))) {
return(FILESYS_EXIT_CODE);
}
ifile->io_seek(ifile, check_arg_numeric("skip") * ibs);
ofile->io_seek(ofile, check_arg_numeric("seek") * obs);
- DEBUG(4, ("max xmit was negotiated to be %d\n", lp_max_xmit(lp_ctx)));
+ DEBUG(4, ("max xmit was negotiated to be %d\n", options.max_xmit));
for (data_size = 0;;) {
{
int i;
const char ** dd_args;
+ struct tevent_context *ev;
poptContext pctx;
struct poptOption poptions[] = {
}
}
+ ev = s4_event_context_init(talloc_autofree_context());
+
gensec_init(cmdline_lp_ctx);
dump_args();
CatchSignal(SIGINT, dd_handle_signal);
CatchSignal(SIGUSR1, dd_handle_signal);
- return(copy_files(cmdline_lp_ctx));
+ return(copy_files(ev, cmdline_lp_ctx));
}
/* vim: set sw=8 sts=8 ts=8 tw=79 : */