2017年10月

https://go6lab.si/current-ipv6-tests/nat64dns64-public-test/

A10 Networks NAT64 implementation: set your DNS to 2001:67c:27e4:15::6411
NAT64 implementation is running on a A10 vThunder virtual appliance.
NAT64 routed prefix: 2001:67c:27e4:642::/64
Quick ping6 test if up&running: ping6 2001:67c:27e4:642::5bef:6015

PaloAlto Networks Firewall NAT64 with BIND9.9 DNS64: set your DNS to 2001:67c:27e4::64
NAT64 implementation is running in PAN500 firewall box.
NAT64 routed prefix: 2001:67c:27e4:64::/64
Quick ping6 test if up&running: ping6 2001:67c:27e4:64::5bef:6015

Jool NAT64 with BIND9 DNS64: set your DNS to 2001:67c:27e4:15::64
Jool NAT64 implementation is running in a virtual container on proxmox server.
NAT64 routed prefix: 2001:67c:27e4:1064::/64
Quick ping6 test if up&running: ping6 2001:67c:27e4:1064::5bef:6015

Cisco ASR1000 NAT64 with BIND9 DNS64: set your DNS to 2001:67c:27e4::60
NAT64 implementation is running in Cisco ASR1001.
NAT64 routed prefix: 2001:67c:27e4:11::/64
Quick ping6 test if up&running: ping6 2001:67c:27e4:11::5bef:6015

http://www.trex.fi/2011/dns64.html

dns64.trex.fi.    IN    AAAA    2001:67c:2b0::4
dns64.trex.fi.    IN    AAAA    2001:67c:2b0::6

When network condition is bad, calling getdnsdomainname in init.c blocks NeoMutt startup for a while if getaddrinfo is used in getdomain.c.

/* now get FQDN.  Use configured domain first, DNS next, then uname */
#ifdef DOMAIN
  /* we have a compile-time domain name, use that for Hostname */
  Hostname = safe_malloc(mutt_strlen(DOMAIN) + mutt_strlen(ShortHostname) + 2);
  sprintf(Hostname, "%s.%s", NONULL(ShortHostname), DOMAIN);
#else
  if (!(getdnsdomainname(buffer, sizeof(buffer))))
  {
    Hostname = safe_malloc(mutt_strlen(buffer) + mutt_strlen(ShortHostname) + 2);
    sprintf(Hostname, "%s.%s", NONULL(ShortHostname), buffer);
  }
  else
    /*
     * DNS failed, use the nodename.  Whether or not the nodename had a '.' in
     * it, we can use the nodename as the FQDN.  On hosts where DNS is not
     * being used, e.g. small network that relies on hosts files, a short host
     * name is all that is required for SMTP to work correctly.  It could be
     * wrong, but we've done the best we can, at this point the onus is on the
     * user to provide the correct hostname if the nodename won't work in their
     * network.
     */
    Hostname = safe_strdup(utsname.nodename);
#endif

# In `adb shell`
$ settings get global captive_portal_http_url
null
$ settings get global captive_portal_https_url
null

$ settings put global captive_portal_http_url https://204.vercel.app/generate_204
$ settings put global captive_portal_https_url https://204.vercel.app/generate_204

$ settings
Settings provider (settings) commands:
  help
      Print this help text.
  get [--user <USER_ID> | current] [--lineage] NAMESPACE KEY
      Retrieve the current value of KEY.
  put [--user <USER_ID> | current] [--lineage] NAMESPACE KEY VALUE [TAG] [default]
      Change the contents of KEY to VALUE.
      TAG to associate with the setting.
      {default} to set as the default, case-insensitive only for global/secure namespace
  delete [--lineage] NAMESPACE KEY
      Delete the entry for KEY.
  reset [--user <USER_ID> | current] NAMESPACE {PACKAGE_NAME | RESET_MODE}
      Reset the global/secure table for a package with mode.
      RESET_MODE is one of {untrusted_defaults, untrusted_clear, trusted_defaults}, case-insensitive
  list [--lineage] NAMESPACE
      Print all defined keys.
      NAMESPACE is one of {system, secure, global}, case-insensitive
# In `adb shell`
$ settings get global captive_portal_http_url
http://google.cn/generate_204
$ settings get global captive_portal_https_url
https://google.cn/generate_204

$ settings put global captive_portal_http_url https://204.vercel.app/generate_204
$ settings put global captive_portal_https_url https://204.vercel.app/generate_204

$ settings
usage:  settings [--user <USER_ID> | current] [--cm] get namespace key
        settings [--user <USER_ID> | current] [--cm] put namespace key value
        settings [--user <USER_ID> | current] [--cm] delete namespace key
        settings [--user <USER_ID> | current] [--cm] list namespace

'namespace' is one of {system, secure, global}, case-insensitive
If '--user <USER_ID> | current' is not given, the operations are performed on the system user.
If '--cm' is given, the operations are performed on the CMSettings provider.

Source: android-9.0.0\_r8, android-7.1.2\_r36