diff --git a/main.cpp b/main.cpp index 4a202f1..ed364fa 100644 --- a/main.cpp +++ b/main.cpp @@ -28,6 +28,7 @@ public: const char *host; const char *tor; const char *ipv4_proxy; + const char *ipv6_proxy; CDnsSeedOpts() : nThreads(96), nDnsThreads(4), nPort(53), mbox(NULL), ns(NULL), host(NULL), tor(NULL), fUseTestNet(false), fWipeBan(false), fWipeIgnore(false) {} @@ -44,6 +45,7 @@ public: "-p UDP port to listen on (default 53)\n" "-o Tor proxy IP/Port\n" "-i IPV4 proxy IP/Port\n" + "-k IPV6 proxy IP/Port\n" "--testnet Use testnet\n" "--wipeban Wipe list of banned nodes\n" "--wipeignore Wipe list of ignored nodes\n" @@ -60,7 +62,8 @@ public: {"dnsthreads", required_argument, 0, 'd'}, {"port", required_argument, 0, 'p'}, {"onion", required_argument, 0, 'o'}, - {"proxy", required_argument, 0, 'i'}, + {"proxyipv4", required_argument, 0, 'i'}, + {"proxyipv6", required_argument, 0, 'ik'}, {"testnet", no_argument, &fUseTestNet, 1}, {"wipeban", no_argument, &fWipeBan, 1}, {"wipeignore", no_argument, &fWipeBan, 1}, @@ -68,7 +71,7 @@ public: {0, 0, 0, 0} }; int option_index = 0; - int c = getopt_long(argc, argv, "h:n:m:t:p:d:o:i:", long_options, &option_index); + int c = getopt_long(argc, argv, "h:n:m:t:p:d:o:i:k:", long_options, &option_index); if (c == -1) break; switch (c) { case 'h': { @@ -103,17 +106,22 @@ public: if (p > 0 && p < 65536) nPort = p; break; } - + case 'o': { tor = optarg; break; } - + case 'i': { ipv4_proxy = optarg; break; } + case 'k': { + ipv6_proxy = optarg; + break; + } + case '?': { showHelp = true; break; @@ -386,6 +394,13 @@ int main(int argc, char **argv) { SetProxy(NET_IPV4, service); } } + if (opts.ipv6_proxy) { + CService service(opts.ipv6_proxy, 9050); + if (service.IsValid()) { + printf("Using IPv6 proxy at %s\n", service.ToStringIPPort().c_str()); + SetProxy(NET_IPV6, service); + } + } bool fDNS = true; if (opts.fUseTestNet) { printf("Using testnet.\n");