aboutsummaryrefslogtreecommitdiff
path: root/src/tool_getparam.c
diff options
context:
space:
mode:
authorBen Greear <greearb@candelatech.com>2013-02-09 13:18:02 -0800
committerDaniel Stenberg <daniel@haxx.se>2013-09-12 21:11:47 +0200
commit32352ed6adddcb9275eb6f19f8aaeadf9476b0fd (patch)
treea1add10a47b3540bc1400d05e46b6b5eb5f13a9a /src/tool_getparam.c
parentdf69440d05f1133a9053e19a9bf576c8b13514b9 (diff)
curl: Add support for various DNS binding options.
(Passed on to c-ares.) Allows something like this: curl --dns-interface sta8 --dns-ipv4-addr 8.8.1.111 --interface sta8 \ --localaddr 8.8.1.111 --dns-servers 8.8.8.1 www.google.com Signed-off-by: Ben Greear <greearb@candelatech.com>
Diffstat (limited to 'src/tool_getparam.c')
-rw-r--r--src/tool_getparam.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index a6a14c0d5..d23084f57 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -73,11 +73,14 @@ static const struct LongShort aliases[]= {
/* all these ones, starting with "*" or "$" as a short-option have *no*
short option to mention. */
{"*", "url", TRUE},
+ {"*4", "dns-ipv4-addr", TRUE},
+ {"*6", "dns-ipv6-addr", TRUE},
{"*a", "random-file", TRUE},
{"*b", "egd-file", TRUE},
{"*B", "bearer", TRUE},
{"*c", "connect-timeout", TRUE},
{"*d", "ciphers", TRUE},
+ {"*D", "dns-interface", TRUE},
{"*e", "disable-epsv", FALSE},
{"*E", "epsv", FALSE},
/* 'epsv' made like this to make --no-epsv and --epsv to work
@@ -85,6 +88,7 @@ static const struct LongShort aliases[]= {
#ifdef USE_ENVIRONMENT
{"*f", "environment", FALSE},
#endif
+ {"*F", "dns-servers", TRUE},
{"*g", "trace", TRUE},
{"*h", "trace-ascii", TRUE},
{"*i", "limit-rate", TRUE},
@@ -496,6 +500,14 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
switch(letter) {
case '*': /* options without a short option */
switch(subletter) {
+ case '4': /* --dns-ipv4-addr */
+ /* addr in dot notation */
+ GetStr(&config->dns_ipv4_addr, nextarg);
+ break;
+ case '6': /* --dns-ipv6-addr */
+ /* addr in dot notation */
+ GetStr(&config->dns_ipv6_addr, nextarg);
+ break;
case 'a': /* random-file */
GetStr(&config->random_file, nextarg);
break;
@@ -513,6 +525,10 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
case 'd': /* ciphers */
GetStr(&config->cipher_list, nextarg);
break;
+ case 'D': /* --dns-interface */
+ /* interface name */
+ GetStr(&config->dns_interface, nextarg);
+ break;
case 'e': /* --disable-epsv */
config->disable_epsv = toggle;
break;
@@ -524,6 +540,10 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
config->writeenv = toggle;
break;
#endif
+ case 'F': /* --dns-servers */
+ /* IP addrs of DNS servers */
+ GetStr(&config->dns_servers, nextarg);
+ break;
case 'g': /* --trace */
GetStr(&config->trace_dump, nextarg);
if(config->tracetype && (config->tracetype != TRACE_BIN))
@@ -1802,4 +1822,3 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
return PARAM_OK;
}
-