X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/040f7b659595c500a5faf06032be066bbe195ea6..7ef6aa6405c90db2d64cc1ec230cef258af43791:/options.c diff --git a/options.c b/options.c index 2b45512a..0316be7d 100644 --- a/options.c +++ b/options.c @@ -52,7 +52,7 @@ int io_error = 0; int read_only = 0; int module_id = -1; int am_server = 0; -int am_sender=0; +int am_sender = 0; int recurse = 0; int am_daemon=0; int do_stats=0; @@ -74,6 +74,9 @@ int modify_window=0; #endif int blocking_io=0; +/** Network address family. **/ +int af = AF_INET; + int read_batch=0; /* dw */ int write_batch=0; /* dw */ @@ -97,8 +100,10 @@ char *batch_ext = NULL; static int modify_window_set; - -struct in_addr socket_address = {INADDR_ANY}; +/** Local address to bind. As a character string because it's + * interpreted by the IPv6 layer: should be a numeric IP4 or ip6 + * address, or a hostname. **/ +char *bind_address; static void print_rsync_version(int f) @@ -126,7 +131,7 @@ static void print_rsync_version(int f) rprintf(f, "\n"); rprintf(f, "Capabilities: %d-bit files, %ssocketpairs, " "%shard links, %ssymlinks, batchfiles\n\n", - (int) (sizeof(int64) * 8), + (int) (sizeof(OFF_T) * 8), got_socketpair, hardlinks, links); @@ -215,6 +220,10 @@ void usage(enum logcode F) rprintf(F," -f --read-batch=EXT read batch file\n"); rprintf(F," -F --write-batch write batch file\n"); rprintf(F," -h, --help show this help screen\n"); +#ifdef INET6 + rprintf(F," -4 prefer IPv4\n"); + rprintf(F," -6 prefer IPv6\n"); +#endif rprintf(F,"\n"); @@ -295,14 +304,19 @@ static struct poptOption long_options[] = { {"port", 0, POPT_ARG_INT, &rsync_port}, {"log-format", 0, POPT_ARG_STRING, &log_format}, {"bwlimit", 0, POPT_ARG_INT, &bwlimit}, - {"address", 0, POPT_ARG_STRING, 0, OPT_ADDRESS}, + {"address", 0, POPT_ARG_STRING, &bind_address, 0}, {"backup-dir", 0, POPT_ARG_STRING, &backup_dir}, {"hard-links", 'H', POPT_ARG_NONE, &preserve_hard_links}, {"read-batch", 'f', POPT_ARG_STRING, &batch_ext, 'f'}, {"write-batch", 'F', POPT_ARG_NONE, &write_batch, 0}, +#ifdef INET6 + {0, '4', POPT_ARG_VAL, &af, AF_INET }, + {0, '6', POPT_ARG_VAL, &af, AF_INET6 }, +#endif {0,0,0,0} }; + static char err_buf[100]; @@ -473,14 +487,6 @@ int parse_arguments(int *argc, const char ***argv, int frommain) keep_partial = 1; break; - case OPT_ADDRESS: - { - struct in_addr *ia; - if ((ia = ip_address (poptGetOptArg (pc)))) { - socket_address = *ia; - } - } - break; case 'f': /* The filename is stored for us by popt */