X-Git-Url: http://git.samba.org/samba.git/?p=gd%2Fsamba-autobuild%2F.git;a=blobdiff_plain;f=source4%2Fclient%2Fcifsdd.c;h=302d470afdb747b0e88430afb58481c6ca657a4f;hp=a48235d047862ce33bf441c5b4c1cfb6fde07799;hb=183c379fe58ca60f5ef2d1f2033d035d4117ac8f;hpb=2fa338cdc99276a5f85ad54cb88b372ffe8ab063;ds=sidebyside diff --git a/source4/client/cifsdd.c b/source4/client/cifsdd.c index a48235d0478..302d470afdb 100644 --- a/source4/client/cifsdd.c +++ b/source4/client/cifsdd.c @@ -22,6 +22,9 @@ #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" @@ -351,7 +354,14 @@ static void print_transfer_stats(void) } } -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; @@ -371,13 +381,21 @@ static struct dd_iohandle * open_file(const char * which) 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); @@ -390,15 +408,7 @@ static struct dd_iohandle * open_file(const char * which) return(handle); } -static void set_max_xmit(uint64_t iomax) -{ - char buf[64]; - - snprintf(buf, sizeof(buf), "%llu", (unsigned long long)iomax); - lp_set_cmdline(global_loadparm, "max xmit", buf); -} - -static int copy_files(void) +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. */ @@ -411,10 +421,16 @@ static int copy_files(void) 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. */ @@ -426,16 +442,25 @@ static int copy_files(void) return(EOM_EXIT_CODE); } - set_max_xmit(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(global_loadparm))); + (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); } @@ -443,7 +468,7 @@ static int copy_files(void) 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(global_loadparm))); + DEBUG(4, ("max xmit was negotiated to be %d\n", options.max_xmit)); for (data_size = 0;;) { @@ -524,6 +549,7 @@ int main(int argc, const char ** argv) { int i; const char ** dd_args; + struct tevent_context *ev; poptContext pctx; struct poptOption poptions[] = { @@ -574,7 +600,9 @@ int main(int argc, const char ** argv) } } - gensec_init(global_loadparm); + ev = s4_event_context_init(talloc_autofree_context()); + + gensec_init(cmdline_lp_ctx); dump_args(); if (check_arg_numeric("ibs") == 0 || check_arg_numeric("ibs") == 0) { @@ -595,7 +623,7 @@ int main(int argc, const char ** argv) CatchSignal(SIGINT, dd_handle_signal); CatchSignal(SIGUSR1, dd_handle_signal); - return(copy_files()); + return(copy_files(ev, cmdline_lp_ctx)); } /* vim: set sw=8 sts=8 ts=8 tw=79 : */