aboutsummaryrefslogtreecommitdiff
path: root/spec/tor-spec/remote-hostname-lookup.md
diff options
context:
space:
mode:
Diffstat (limited to 'spec/tor-spec/remote-hostname-lookup.md')
-rw-r--r--spec/tor-spec/remote-hostname-lookup.md43
1 files changed, 43 insertions, 0 deletions
diff --git a/spec/tor-spec/remote-hostname-lookup.md b/spec/tor-spec/remote-hostname-lookup.md
new file mode 100644
index 0000000..2793411
--- /dev/null
+++ b/spec/tor-spec/remote-hostname-lookup.md
@@ -0,0 +1,43 @@
+<a id="tor-spec.txt-6.4"></a>
+
+# Remote hostname lookup
+
+To find the address associated with a hostname, the OP sends a
+RELAY_RESOLVE message containing the hostname to be resolved with a NUL
+terminating byte. (For a reverse lookup, the OP sends a RELAY_RESOLVE
+message containing an in-addr.arpa address.) The OR replies with a
+RELAY_RESOLVED message containing any number of answers. Each answer is
+of the form:
+
+```text
+ Type (1 octet)
+ Length (1 octet)
+ Value (variable-width)
+ TTL (4 octets)
+ "Length" is the length of the Value field.
+ "Type" is one of:
+
+ 0x00 -- Hostname
+ 0x04 -- IPv4 address
+ 0x06 -- IPv6 address
+ 0xF0 -- Error, transient
+ 0xF1 -- Error, nontransient
+
+ If any answer has a type of 'Error', then no other answer may be
+ given.
+
+ The 'Value' field encodes the answer:
+ IP addresses are given in network order.
+ Hostnames are given in standard DNS order ("www.example.com")
+ and not NUL-terminated.
+ The content of Errors is currently ignored. Relays currently
+ set it to the string "Error resolving hostname" with no
+ terminating NUL. Implementations MUST ignore this value.
+
+ For backward compatibility, if there are any IPv4 answers, one of those
+ must be given as the first answer.
+
+ The RELAY_RESOLVE messge must use a nonzero, distinct streamID; the
+ corresponding RELAY_RESOLVED message must use the same streamID. No stream
+ is actually created by the OR when resolving the name.
+```