aboutsummaryrefslogtreecommitdiff
path: root/control-spec.txt
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2019-11-25 08:43:50 -0500
committerNick Mathewson <nickm@torproject.org>2019-11-25 08:43:50 -0500
commitcf66598f44f104d3322536764e43d0a7a49ff588 (patch)
treead0dc4226e27022f61e722e53a2916253788f95f /control-spec.txt
parent7c222131ba32bc22d3f34baa13eecaa6e8bd7546 (diff)
parent54a7ad226cba634ae321a9f3f542ce2ff03ef302 (diff)
downloadtorspec-cf66598f44f104d3322536764e43d0a7a49ff588.tar.gz
torspec-cf66598f44f104d3322536764e43d0a7a49ff588.zip
Merge remote-tracking branch 'JeremyRand/stream-event-isolation'
Diffstat (limited to 'control-spec.txt')
-rw-r--r--control-spec.txt58
1 files changed, 57 insertions, 1 deletions
diff --git a/control-spec.txt b/control-spec.txt
index f09640c..11f62ba 100644
--- a/control-spec.txt
+++ b/control-spec.txt
@@ -2184,7 +2184,10 @@
"650" SP "STREAM" SP StreamID SP StreamStatus SP CircuitID SP Target
[SP "REASON=" Reason [ SP "REMOTE_REASON=" Reason ]]
[SP "SOURCE=" Source] [ SP "SOURCE_ADDR=" Address ":" Port ]
- [SP "PURPOSE=" Purpose]
+ [SP "PURPOSE=" Purpose] [SP "SOCKS_USERNAME=" EscapedUsername]
+ [SP "SOCKS_PASSWORD=" EscapedPassword]
+ [SP "CLIENT_PROTOCOL=" ClientProtocol] [SP "NYM_EPOCH=" NymEpoch]
+ [SP "SESSION_GROUP=" SessionGroup] [SP "ISO_FIELDS=" IsoFields]
CRLF
StreamStatus =
@@ -2202,6 +2205,30 @@
Port = an integer from 0 to 65535 inclusive
TargetAddress = Address / "(Tor_internal)"
+ EscapedUsername = QuotedString
+ EscapedPassword = QuotedString
+
+ ClientProtocol =
+ "SOCKS4" /
+ "SOCKS5" /
+ "TRANS" /
+ "NATD" /
+ "DNS" /
+ "HTTPCONNECT" /
+ "UNKNOWN"
+
+ NymEpoch = a nonnegative integer
+ SessionGroup = an integer
+
+ IsoFields = a comma-separated list of IsoField values
+
+ IsoField =
+ "CLIENTADDR" /
+ "CLIENTPORT" /
+ "DESTADDR" /
+ "DESTPORT" /
+ the name of a field that is valid for STREAM events
+
The circuit ID designates which circuit this stream is attached to. If
the stream is unattached, the circuit ID "0" is given. The target
indicates the address which the stream is meant to resolve or connect to;
@@ -2259,6 +2286,35 @@
"USER" -- This stream is handling user traffic, OR it's internal
to Tor, but it doesn't match one of the purposes above.
+ The "SOCKS_USERNAME" and "SOCKS_PASSWORD" fields indicate the credentials
+ that were used by a SOCKS client to connect to Tor's SOCKS port and
+ initiate this stream. (Streams for SOCKS clients connected with different
+ usernames and/or passwords are isolated on separate circuits if the
+ IsolateSOCKSAuth flag is active; see Proposal 171.)
+
+ The "CLIENT_PROTOCOL" field indicates the protocol that was used by a client
+ to initiate this stream. (Streams for clients connected with different
+ protocols are isolated on separate circuits if the IsolateClientProtocol
+ flag is active.) Controllers MUST tolerate unrecognized client protocols.
+
+ The "NYM_EPOCH" field indicates the nym epoch that was active when a client
+ initiated this stream. The epoch increments when the NEWNYM signal is
+ received. (Streams with different nym epochs are isolated on separate
+ circuits.)
+
+ The "SESSION_GROUP" field indicates the session group of the listener port
+ that a client used to initiate this stream. By default, the session group is
+ different for each listener port, but this can be overridden for a listener
+ via the "SessionGroup" option in torrc. (Streams with different session
+ groups are isolated on separate circuits.)
+
+ The "ISO_FIELDS" field indicates the set of STREAM event fields for which
+ stream isolation is enabled for the listener port that a client used to
+ initiate this stream. The special values "CLIENTADDR", "CLIENTPORT",
+ "DESTADDR", and "DESTPORT", if their correspondingly named fields are not
+ present, refer to the Address and Port components of the "SOURCE_ADDR" and
+ Target fields.
+
4.1.3. OR Connection status changed
The syntax is: