{
  "name": "traceroute",
  "description": "Print the route packets take to network host",
  "options": [
    {
      "names": [
        "--help",
        "-h"
      ],
      "description": "Show help for traceroute"
    },
    {
      "names": [
        "-a"
      ],
      "description": "Turn on AS# lookups for each hop encountered"
    },
    {
      "names": [
        "-A"
      ],
      "description": "Turn on AS# lookups and use the given server instead of the default",
      "takes_arg": true,
      "arg": {
        "name": "as_server"
      }
    },
    {
      "names": [
        "-d"
      ],
      "description": "Enable socket level debugging"
    },
    {
      "names": [
        "-D"
      ],
      "description": "When an ICMP response to our probe datagram is received, print the differences between the transmitted packet and the packet quoted by the ICMP response. A key showing the location of fields within th"
    },
    {
      "names": [
        "-e"
      ],
      "description": "Firewall evasion mode. Use fixed destination ports for UDP and TCP probes. The destination port does NOT increment with each packet sent"
    },
    {
      "names": [
        "-f"
      ],
      "description": "Set the initial time-to-live used in the first outgoing probe packet",
      "takes_arg": true,
      "arg": {
        "name": "first_ttl"
      }
    },
    {
      "names": [
        "-F"
      ],
      "description": "Set the `don't fragment` bit"
    },
    {
      "names": [
        "-g"
      ],
      "description": "Specify a loose source route gateway (8 maximum)",
      "takes_arg": true,
      "arg": {
        "name": "gateway"
      }
    },
    {
      "names": [
        "-i"
      ],
      "description": "Specify a network interface to obtain the source IP address for outgoing probe packets. This is normally only useful on a multihomed host. (See the -s flag for another way to do this.)",
      "takes_arg": true,
      "arg": {
        "name": "iface"
      }
    },
    {
      "names": [
        "-I"
      ],
      "description": "Use ICMP ECHO instead of UDP datagrams. (A synonym for `-P icmp`)"
    },
    {
      "names": [
        "-M"
      ],
      "description": "Set the initial time-to-live value used in outgoing probe packets. The default is 1, i.e., start with the first hop",
      "takes_arg": true,
      "arg": {
        "name": "first_ttl"
      }
    },
    {
      "names": [
        "-m"
      ],
      "description": "Set the max time-to-live (max number of hops) used in outgoing probe packets. The default is net.inet.ip.ttl hops (the same default used for TCP connections)",
      "takes_arg": true,
      "arg": {
        "name": "max_ttl"
      }
    },
    {
      "names": [
        "-n"
      ],
      "description": "Print hop addresses numerically rather than symbolically and numerically (saves a nameserver address-to-name lookup for each gateway found on the path)"
    },
    {
      "names": [
        "-P"
      ],
      "description": "Send packets of specified IP protocol. The currently supported protocols are: UDP, TCP, GRE and ICMP Other protocols may also be specified (either by name or by number), though traceroute does not imp",
      "takes_arg": true,
      "arg": {
        "name": "proto"
      }
    },
    {
      "names": [
        "-p"
      ],
      "description": "Protocol specific. For UDP and TCP, sets the base port number used in probes (default is 33434). traceroute hopes that nothing is listening on UDP ports base to base+nhops-1 at the destination host (s",
      "takes_arg": true,
      "arg": {
        "name": "port"
      }
    },
    {
      "names": [
        "-q"
      ],
      "description": "Set the number of probes per ``ttl'' to nqueries (default is three probes)",
      "takes_arg": true,
      "arg": {
        "name": "nqueries"
      }
    },
    {
      "names": [
        "-r"
      ],
      "description": "Bypass the normal routing tables and send directly to a host on an attached network. If the host is not on a directly-attached network, an error is returned. This option can be used to ping a local ho"
    },
    {
      "names": [
        "-s"
      ],
      "description": "Use the following IP address (which must be given as an IP number, not a hostname) as the source address in outgoing probe packets. On hosts with more than one IP address, this option can be used to f",
      "takes_arg": true,
      "arg": {
        "name": "src_addr"
      }
    },
    {
      "names": [
        "-S"
      ],
      "description": "Print a summary of how many probes were not answered for each hop"
    },
    {
      "names": [
        "-t"
      ],
      "description": "Set the type-of-service in probe packets to the following value (default zero). The value must be a decimal integer in the range 0 to 255. This option can be used to see if different types-of- service",
      "takes_arg": true,
      "arg": {
        "name": "tos"
      }
    },
    {
      "names": [
        "-v"
      ],
      "description": "Verbose output. Received ICMP packets other than TIME_EXCEEDED and UNREACHABLEs are listed"
    },
    {
      "names": [
        "-w"
      ],
      "description": "Set the time (in seconds) to wait for a response to a probe (default 5 sec.)"
    },
    {
      "names": [
        "-x"
      ],
      "description": "Toggle IP checksums. Normally, this prevents traceroute from calculating IP checksums. In some cases, the operating system can overwrite parts of the outgoing packet but not recalculate the checksum ("
    },
    {
      "names": [
        "-z"
      ],
      "description": "Set the time (in milliseconds) to pause between probes (default 0). Some systems such as Solaris and routers such as Ciscos rate limit ICMP messages. A good value to use with this this is 500 (e.g. 1/",
      "takes_arg": true,
      "arg": {
        "name": "pausemsecs"
      }
    }
  ],
  "args": [
    {
      "name": "host"
    }
  ]
}
