[tor-commits] [tor/master] Write initial documentation for the contents of the state file

nickm at torproject.org nickm at torproject.org
Wed Mar 28 08:05:15 UTC 2012


commit a9c0e9fec2ced629aefdc1436ec41467353cc9a0
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Mar 28 04:08:07 2012 -0400

    Write initial documentation for the contents of the state file
    
    Fixes bug 2987.  There is still some information to go, but now we
    have a place to put it.
---
 changes/bug2987        |    3 +
 doc/Makefile.am        |    3 +-
 doc/state-contents.txt |  105 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/or/config.c        |    2 +
 4 files changed, 112 insertions(+), 1 deletions(-)

diff --git a/changes/bug2987 b/changes/bug2987
new file mode 100644
index 0000000..727f376
--- /dev/null
+++ b/changes/bug2987
@@ -0,0 +1,3 @@
+  o Documentation
+    - Begin a state-contents.txt file in doc to explain the contents of the
+      Tor state file. Fixes bug 2987.
diff --git a/doc/Makefile.am b/doc/Makefile.am
index d8d9fbe..d26f830 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -37,7 +37,8 @@ endif
 EXTRA_DIST = HACKING asciidoc-helper.sh                      \
              $(html_in) $(man_in) $(txt_in)                  \
              tor-rpm-creation.txt                            \
-             tor-win32-mingw-creation.txt spec/README
+             tor-win32-mingw-creation.txt spec/README        \
+	     state-contents.txt
 
 docdir = @docdir@
 
diff --git a/doc/state-contents.txt b/doc/state-contents.txt
new file mode 100644
index 0000000..730e2fb
--- /dev/null
+++ b/doc/state-contents.txt
@@ -0,0 +1,105 @@
+
+Contents of the Tor state file
+==============================
+
+The state file is structured with more or less the same rules as torrc.
+Recognized fields are:
+
+  TorVersion
+
+     The version of Tor that wrote this file
+
+  LastWritten
+
+     Time when this state file was written.
+     Given in ISO format (YYYY-MM-DD HH:MM:SS)
+
+  AccountingBytesReadInInterval     (memory unit)
+  AccountingBytesWrittenInInterval  (memory unit)
+  AccountingExpectedUsage           (memory unit)
+  AccountingIntervalStart           (ISO time)
+  AccountingSecondsActive           (time interval)
+  AccountingSecondsToReachSoftLimit (time interval)
+  AccountingSoftLimitHitAt          (ISO time)
+  AccountingBytesAtSoftLimit        (memory unit)
+
+     These fields describe the state of the accounting subsystem.
+
+     The IntervalStart is the time at which the current accounting
+     interval began.  We were expecting to use ExpectedUsage over the
+     course of the interval.  BytesRead/BytesWritten are the total
+     number of bytes transferred over the whole interval.  If Tor has
+     been active during the interval, then AccountingSecondsActive is
+     the amount of time for which it has been active.  We were expecting
+     to hit the bandwidth soft limit in SecondsToReachSoftLimit after we
+     became active.  When we hit the soft limit, we record
+     BytesAtSoftLimit.  If we hit the soft limit already, we did so at
+     SoftLimitHitAt.
+
+  EntryGuard
+  EntryGuardDownSince
+  EntryGuardUnlistedSince
+  EntryGuardAddedBy
+
+      These lines form sections related to entry guards.  Each section
+      starts with a single EntryGuard line, and is then followed by
+      information on the state of the Entry guard.
+
+      The EntryGuard line contains a nickname, then an identity digest, of
+      the guard.
+
+      The EntryGuardDownSince and EntryGuardUnlistedSince lines are present
+      if the entry guard is believed to be non-running or non-listed.  If
+      present, they contain a line in ISO format (YYYY-MM-DD HH:MM:SS).
+
+      The EntryGuardAddedBy line is optional.  It contains three
+      space-separated fields: the identity of the entry guard, the version of
+      Tor that added it, and the ISO time at which it was added.
+
+  TransportProxy
+
+     One or more of these may be present.
+
+     The format is "transportname addr:port", to remember the address at
+     which a pluggable transport was listening.
+
+     [XXXX why?]
+
+  BWHistoryReadEnds           (ISO time)
+  BWHistoryReadInterval       (integer, number of seconds)
+  BWHistoryReadValues         (comma-separated list of integer)
+  BWHistoryReadMaxima         (comma-separated list of integer)
+  BWHistoryWriteEnds
+  BWHistoryWriteInterval
+  BWHistoryWriteValues
+  BWHistoryWriteMaxima
+  BWHistoryDirReadEnds
+  BWHistoryDirReadInterval
+  BWHistoryDirReadValues
+  BWHistoryDirReadMaxima
+  BWHistoryDirWriteEnds
+  BWHistoryDirWriteInterval
+  BWHistoryDirWriteValues
+  BWHistoryDirWriteMaxima
+
+     These values record bandwidth history.  The "Values" fields are a list, for
+     some number of "Intervals", of the total amount read/written during that
+     integer.  The "Maxima" are the highest burst for each interval.
+
+     Interval duration is set by the "Interval" field, in seconds.  The
+     "Ends" field is the ending time of the last interval in each list.
+
+     The *Read* and *Write* fields are the total amount read and
+     written; the *DirRead* and *DirWrite* variants are for directory
+     traffic only.
+
+  LastRotatedOnionKey
+
+     The last time that we changed our onion key for a new one.
+     Given in ISO format (YYYY-MM-DD HH:MM:SS)
+
+  TotalBuildTimes
+  CircuitBuildAbandonedCount
+  CircuitBuildTimeBin
+
+      XXXX writeme.
diff --git a/src/or/config.c b/src/or/config.c
index 3de8426..05f53bd 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -484,6 +484,8 @@ static const config_var_t testing_tor_network_defaults[] = {
 
 /** Array of "state" variables saved to the ~/.tor/state file. */
 static config_var_t _state_vars[] = {
+  /* Remember to document these in state-contents.txt ! */
+
   V(AccountingBytesReadInInterval,    MEMUNIT,  NULL),
   V(AccountingBytesWrittenInInterval, MEMUNIT,  NULL),
   V(AccountingExpectedUsage,          MEMUNIT,  NULL),



More information about the tor-commits mailing list