chiark / gitweb /
Support IPv6 in addr queries.
[adns.git] / client / adh-opts.c
index fa5cceb7b072aa6894db2f2f5a50cfcda765878f..1521b5cadb35c090a4c46d5630f4c622de8b71a1 100644 (file)
@@ -4,12 +4,11 @@
  *   option handling tables etc.
  */
 /*
- *  This file is
- *    Copyright (C) 1997-2000 Ian Jackson <ian@davenant.greenend.org.uk>
- *
- *  It is part of adns, which is
- *    Copyright (C) 1997-2000 Ian Jackson <ian@davenant.greenend.org.uk>
- *    Copyright (C) 1999-2000 Tony Finch <dot@dotat.at>
+ *  This file is part of adns, which is
+ *    Copyright (C) 1997-2000,2003,2006  Ian Jackson
+ *    Copyright (C) 1999-2000,2003,2006  Tony Finch
+ *    Copyright (C) 1991 Massachusetts Institute of Technology
+ *  (See the file INSTALL for full details.)
  *  
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -32,7 +31,7 @@ int ov_env=1, ov_pipe=0, ov_asynch=0;
 int ov_verbose= 0;
 adns_rrtype ov_type= adns_r_none;
 int ov_search=0, ov_qc_query=0, ov_qc_anshost=0, ov_qc_cname=1;
-int ov_tcp=0, ov_cname=0, ov_format=fmt_default;
+int ov_tcp=0, ov_cname=0, ov_afflags=0, ov_v6map=0, ov_format=fmt_default;
 char *ov_id= 0;
 struct perqueryflags_remember ov_pqfr = { 1,1,1, tm_none };
 
@@ -64,6 +63,8 @@ static const struct optioninfo global_options[]= {
   { ot_desconly, "other global options:" },
   { ot_funcarg,          "Configuration to use instead of /etc/resolv.conf",
     0, "config",           0,0, of_config, "<config-text>" },
+  { ot_func,             "Print version number",
+    0, "version",          0,0, of_version },
   { ot_func,             "Print usage information",
     0, "help",             0,0, of_help },
 
@@ -104,6 +105,16 @@ static const struct optioninfo perquery_options[]= {
     "Ta", "ttl-abs",       &ov_pqfr.ttl, tm_abs },
   { ot_value,            "Do not show the TTL (default)",
     "Tn", "no-ttl",        &ov_pqfr.ttl, tm_none },
+
+  { ot_desconly, "per-query address family options (for `addr' etc.):" },
+  { ot_value,           "Only return IPv4 addresses",
+    "A4", "--addr-ipv4-only", &ov_afflags, adns_qf_want_ipv4 },
+  { ot_value,           "Only return IPv6 addresses",
+    "A6", "--addr-ipv6-only", &ov_afflags, adns_qf_want_ipv6 },
+  { ot_value,           "Return all available addresses (default)",
+    "Aa", "--addr-all",           &ov_afflags, 0 },
+  { ot_flag,            "Return IPv4 addresses as IPv6-mapped",
+    "Am", "--addr-ipv6-mapped", &ov_v6map, 1 },
   
   { ot_desconly, "per-query CNAME handling mode:" },
   { ot_value,            "Call it an error if a CNAME is found",
@@ -261,14 +272,19 @@ static void printusage(void) {
        " 11   usage problems\n"
        "\n"
        "Query types (see adns.h; default is addr):\n"
-       "  ns  soa  ptr  mx  rp  addr       - enhanced versions\n"
-       "  cname  hinfo  txt                - types with only one version\n"
-       "  a  ns-  soa-  ptr-  mx-  rp-     - _raw versions\n"
+       "  ns  soa  ptr  mx  rp  srv  addr           - enhanced versions\n"
+       "  cname  hinfo  txt                         - types with only one version\n"
+       "  a  aaaa  ns-  soa-  ptr-  mx-  rp-  srv-  - _raw versions\n"
+       "  type<number>                              - `unknown' type, RFC3597\n"
        "Default is addr, or ptr for -i/--ptr queries\n",
        stdout);
   if (ferror(stdout)) sysfail("write usage message",errno);
 }
 
+void of_version(const struct optioninfo *oi, const char *arg, const char *arg2) {
+  VERSION_PRINT_QUIT("adnshost");
+}
+
 void of_help(const struct optioninfo *oi, const char *arg, const char *arg2) {
   printusage();
   if (fclose(stdout)) sysfail("finish writing output",errno);