[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-talk] [tor-dev] Open streams on the fly
>>> The implementation of proposal 171 and subsequent release of tor
>>> 0.2.3.25
>>> fills my heart with joy. Yet, as far as I can tell, there is one use
>>> case
>>> that is not adequately covered. I would like to open and close Streams
>>> (TransPort's, DNSPort's and SOCKSPort's) at run-time without
>>> interfering
>>> with other, existing Streams and Circuits. SETCONF does not work here
>>> because it resets all existing streams.
>>
>> I think tor lacks an isolation flag which specifies to isolate each and
>> every stream, even those going to the same address and port.
>
> I see, tor already implements such a flag, ISO_STREAM.
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index 773fccf..6da4147 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -888,6 +888,8 @@ The following options are useful only for clients
(that is, if
**IsolateDestAddr**;;
Don't share circuits with streams targetting a different
destination address.
+ **IsolateDestAddr**;;
+ Don't share circuits with other streams at all.
**SessionGroup=**__INT__;;
If no other isolation rules would prevent it, allow streams
on this port to share circuits with streams from every other
diff --git a/src/or/config.c b/src/or/config.c
index 90a5dfb..1dc3d55 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -5919,7 +5919,9 @@ parse_port_config(smartlist_t *out,
if (!strcasecmpend(elt, "s"))
elt[strlen(elt)-1] = '\0'; /* kill plurals. */
- if (!strcasecmp(elt, "IsolateDestPort")) {
+ if (!strcasecmp(elt, "IsolateStream")) {
+ isoflag = ISO_STREAM;
+ } else if (!strcasecmp(elt, "IsolateDestPort")) {
isoflag = ISO_DESTPORT;
} else if (!strcasecmp(elt, "IsolateDestAddr")) {
isoflag = ISO_DESTADDR;
diff --git a/src/or/or.h b/src/or/or.h
index 51c23d3..8a21c09 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -2868,22 +2868,22 @@ typedef enum invalid_router_usage_t {
@{
*/
+/** Isolate all streams. */
+#define ISO_STREAM (1u<<0)
/** Isolate based on destination port */
-#define ISO_DESTPORT (1u<<0)
+#define ISO_DESTPORT (1u<<1)
/** Isolate based on destination address */
-#define ISO_DESTADDR (1u<<1)
+#define ISO_DESTADDR (1u<<2)
/** Isolate based on SOCKS authentication */
-#define ISO_SOCKSAUTH (1u<<2)
+#define ISO_SOCKSAUTH (1u<<3)
/** Isolate based on client protocol choice */
-#define ISO_CLIENTPROTO (1u<<3)
+#define ISO_CLIENTPROTO (1u<<4)
/** Isolate based on client address */
-#define ISO_CLIENTADDR (1u<<4)
+#define ISO_CLIENTADDR (1u<<5)
/** Isolate based on session group (always on). */
-#define ISO_SESSIONGRP (1u<<5)
+#define ISO_SESSIONGRP (1u<<6)
/** Isolate based on newnym epoch (always on). */
-#define ISO_NYM_EPOCH (1u<<6)
-/** Isolate all streams (Internal only). */
-#define ISO_STREAM (1u<<7)
+#define ISO_NYM_EPOCH (1u<<7)
/**@}*/
/** Default isolation level for ports. */
_______________________________________________
tor-talk mailing list
tor-talk@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-talk