Hi Nick, thanks for the feedback!<br><br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">I&#39;m fine with most of these, but the names are no good.  *Everything*<br>



that&#39;s returned from GETINFO is &quot;info&quot; after all<br></blockquote><br>Heh, good point. Changed.<br><br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">


The only one I wouldn&#39;t want to add as-is the ns/authorities option,<br>
since it says that it uses the v2 directory format.<br></blockquote><br>I chose the v2 directory format since that&#39;s what all the other &quot;ns&quot; entries use and it seems weird to have this be a black sheep. If this is really a problem I&#39;m happy to change it, though conformity to the rest of the spec struck me as being important.<br>
<br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">Three reasons off the top of my head.  First: That&#39;s the format that<br>
RFCs use.  Second: we like to be able to use diff to compare different<br>
versions of a spec, and making every paragraph a single line makes<br>
diff&#39;s output much less useful.  Third: we like to version-control our<br>
specs, and it&#39;s a lot easier to resolve conflicts when every paragraph<br>
is not a single line.<br></blockquote><br>I don&#39;t want to dwell on this too much since it&#39;s a pretty trivial issue, but I disagree with points two and three. If you add or remove words, the rewrapping throws off the diff and version control resolution for any text following it anyway. That said, &quot;conformity with the other specs, and since most people here prefer it&quot; strike me as perfectly fine reasons. ;)<br>
<br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">Do you mean their IDs, or their entries in the format specified above, or what?<br></blockquote>
<br>I was tempted to go with just the IDs, but it seems like the other &quot;/all&quot; getinfo options provide all the content so going with that to try and fit in.<br><br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">
Probably a &quot;process-owner&quot; notion is closer to what you want here.<br>
Also remember that it needs to work on Windows. ;)<br></blockquote>
<br>Yup, that&#39;s why the user entry states that an empty string is provided if none exists. I&#39;m not yet sold on the usefulness of the uid, euid, gid, and egid but happy to include them if others think it would be handy.<br>
<br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">At this point we&#39;re probably ready for another proposal revision<br></blockquote><br>
Your wish is my command! I&#39;ve split it up into two proposals (see attached), one concerning the circ options and the other listing the expansion of relay/process getinfo options. Other changes include:<br>- added &quot;relay/flags&quot; and &quot;desc/time&quot; getinfo options<br>
- changed the bandwidth entries to be both inbound and outbound (not sure how it would make sense otherwise...)<br>- changed the circ results to have a unix timestamp for when the circuit was created rather than the uptime (more generally useful and avoids the question of when the results were last updated)<br>
<br>Cheers! -Damian<br><br><div class="gmail_quote">On Tue, Jun 1, 2010 at 8:47 AM, Nick Mathewson <span dir="ltr">&lt;<a href="mailto:nickm@freehaven.net" target="_blank">nickm@freehaven.net</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I&#39;ll try to follow up to this whole thread and push things forward even more.<br>
<br>
On April 14, Damian wrote:<br>
[...]<br>
<div>&gt;Also, could we move forward on the other (less controversial) items? For instance, bandwidth totals tend to be a very highly requested piece of information and pipe&#39;s already provided a nice patch to get it (<a href="http://www.mail-archive.com/or-talk@freehaven.net/msg13085.html" target="_blank">http://www.mail-archive.com/or-talk@freehaven.net/msg13085.html</a>). For reference, here&#39;s the not-so-controversial GETINFO options I proposed:<br>



<br>
</div>I&#39;m fine with most of these, but the names are no good.  *Everything*<br>
that&#39;s returned from GETINFO is &quot;info&quot; after all, so prefixing all of<br>
these with &quot;info&quot; is redundant; they need to be put into a grouping<br>
that actually says what they mean.<br>
<br>
The only one I wouldn&#39;t want to add as-is the ns/authorities option,<br>
since it says that it uses the v2 directory format.  That format is<br>
obsolescent; we shouldn&#39;t be adding new things that use it.  A<br>
non-deprecated format would be fine.<br>
<br>
 [...]<br>
<div>&gt;I&#39;m not planning on converting the following to the customary 80-character width until it&#39;s at<br>
&gt; least past being a first draft for a couple reasons:<br>
&gt;1. I find editing fixed-width documents to be a time consuming pain in the ass.<br>
<br>
</div>Maybe use a text editor that will re-wrap paragraphs for you?  There<br>
are dozens of them.<br>
<div><br>
&gt; 2. I&#39;ve yet to hear why we do this. Is it just to cater to mail clients too dumb to know how to line wrap?<br>
<br>
</div>Three reasons off the top of my head.  First: That&#39;s the format that<br>
RFCs use.  Second: we like to be able to use diff to compare different<br>
versions of a spec, and making every paragraph a single line makes<br>
diff&#39;s output much less useful.  Third: we like to version-control our<br>
specs, and it&#39;s a lot easier to resolve conflicts when every paragraph<br>
is not a single line.<br>
<br>
There may be more benefits too.<br>
<div><div></div><div><br>
<br>
On Fri, Apr 16, 2010 at 3:17 PM, Jacob Appelbaum &lt;<a href="mailto:jacob@appelbaum.net" target="_blank">jacob@appelbaum.net</a>&gt; wrote:<br>
&gt; Damian Johnson wrote:<br>
&gt;&gt; Yesterday Jake met with me to discuss this proposal, making the very<br>
&gt;&gt; good points that both:<br>
&gt;&gt;   1. It&#39;s completely ineffectual for the auditing purposes I&#39;ve<br>
&gt;&gt; mentioned since either (a) these results can be fetched from netstat<br>
&gt;&gt; already or (b) the information would only be provided via tor and<br>
&gt;&gt; can&#39;t be validated.<br>
&gt;&gt;   2. The things I&#39;m really interested in can be fetched with much less<br>
&gt;&gt; (and safer) information.<br>
&gt;<br>
&gt; I still think that anything that can be used to track circuits (and the<br>
&gt; clients associated with them) is not a good idea - in Tor or using arm.<br>
&gt; We shouldn&#39;t encourage people to log, look or otherwise track Tor.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; In particular we discussed making the proposal circuit based rather<br>
&gt;&gt; than connection based, being something like the following:<br>
&gt;&gt;<br>
&gt;&gt;   &quot;circ/&lt;Circuit identity&gt;&quot; -- Provides entry for the associated circuit,<br>
&gt;&gt;     formatted as:<br>
&gt;&gt;       CIRC_ID IN_TYPE OUT_TYPE READ WRITE UPTIME<br>
&gt;&gt;<br>
&gt;&gt;     none of the parameters contain whitespace, and additional results must be<br>
&gt;&gt;     ignored to allow for future expansion. Parameters are defined as follows:<br>
&gt;&gt;       CIRC_ID - Unique identifier for the circuit this belongs to.<br>
&gt;&gt;       IN_TYPE/OUT_TYPE - Single character flags indicating the purpose of the<br>
&gt;&gt;         inbound or outbound connection. If no connection is established then<br>
&gt;&gt;         this provides an empty string. Otherwise, it consists of one from each<br>
&gt;&gt;         of the following categories (this may become longer in future<br>
&gt;&gt;         expansion):<br>
&gt;&gt;           Usage Type:<br>
&gt;&gt;             C: client traffic, R: relaying traffic,<br>
&gt;&gt;             X: control, H: hidden service, D: directory<br>
&gt;&gt;           Destination:<br>
&gt;&gt;             I: inter-tor connection, O: outside the tor network, L: localhost<br>
&gt;&gt;         For instance, &quot;RO&quot; would indicate that this was an established<br>
&gt;&gt;         1st-hop (or bridged) relay connection.<br>
&gt;&gt;       READ/WRITE - Total bytes read/written over the life of this connection.<br>
&gt;&gt;       UPTIME - Time the connection&#39;s been established in seconds.<br>
<br>
</div></div>This looks a lot better; I don&#39;t see a good way to cause problems with this.<br>
<div><br>
&gt;&gt;   &quot;circ/all&quot; -- Newline separated listing of all current circuits.<br>
<br>
</div>Do you mean their IDs, or their entries in the format specified above, or what?<br>
<br>
 [...]<br>
<div>&gt;&gt;   SafeControlPort 0|1<br>
&gt;&gt;     Restricts access of the control port to only include read-only operations.<br>
&gt;&gt;     (Default: 0)<br>
&gt;&gt;<br>
&gt;&gt; Making this the default would be a no-go due to vidalia (though still<br>
&gt;&gt; a nice option to have...). If this is implemented its setting should<br>
&gt;&gt; be part of the PROTOCOLINFO response.<br>
<br>
</div>I agree with Jake that this probably wants to be another proposal of<br>
its own, and get implemented independently.<br>
<div><br>
&gt;&gt; Finally, the other proposed GETINFO options still seem useful (with<br>
&gt;&gt; the possible exception of &quot;info/uptime-reset&quot;), and could be improved<br>
&gt;&gt; with the addition of:<br>
&gt;&gt;<br>
&gt;&gt;   &quot;info/user&quot; -- User under which the tor process is running, providing an<br>
&gt;&gt;     empty string if none exists.<br>
&gt;&gt;<br>
&gt;<br>
&gt; You may also want something like the following:<br>
&gt;<br>
&gt; &quot;info/uid&quot;<br>
&gt; &quot;info/euid&quot;<br>
&gt; &quot;info/gid&quot;<br>
&gt; &quot;info/egid&quot;<br>
<br>
</div>Probably a &quot;process-owner&quot; notion is closer to what you want here.<br>
Also remember that it needs to work on Windows. ;)<br>
<br>
Also see above caveat on the &quot;info/&quot; prefix.<br>
<div><br>
&gt;&gt;   &quot;info/pid&quot; -- Process id belonging to the tor process, -1 if none exists for<br>
&gt;&gt;     the platform.<br>
&gt;&gt;<br>
&gt;&gt; * this one is both useful and surprisingly difficult for me to<br>
&gt;&gt; retrieve at present (arm attempts to get it from pidof, ps, and<br>
&gt;&gt; netstat yet still fails on some systems...)<br>
&gt;<br>
&gt; The good news is that it&#39;s pretty easy to do in C:<br>
&gt;<br>
&gt;    pid_t pid;<br>
&gt;    pid = getpid(); // see also getppid();<br>
&gt;    printf(&quot;PID is: %d\n&quot;, pid);<br>
<br>
</div>Fine by me, modulo calling it &quot;info&quot;.<br>
<br>
At this point we&#39;re probably ready for another proposal revision, and<br>
a draft patch to implement all of the above. :)<br>
<br>
--<br>
<font color="#888888">Nick<br>
</font></blockquote></div><br>