Browse Source

ConsensusParams config option lists key=value params

finishes the authority-operator interface side of proposal 167.
Roger Dingledine 16 years ago
parent
commit
40bcab1faf
4 changed files with 18 additions and 1 deletions
  1. 6 1
      doc/tor.1.in
  2. 1 0
      src/or/config.c
  3. 7 0
      src/or/dirserv.c
  4. 4 0
      src/or/or.h

+ 6 - 1
doc/tor.1.in

@@ -1,4 +1,4 @@
-.TH TOR 1 "August 2009" "TOR"
+.TH TOR 1 "September 2009" "TOR"
 .SH NAME
 .SH NAME
 tor \- The second-generation onion router
 tor \- The second-generation onion router
 .SH SYNOPSIS
 .SH SYNOPSIS
@@ -1243,6 +1243,11 @@ When this is set then
 \fBVersioningAuthoritativeDirectory\fP should be set too.
 \fBVersioningAuthoritativeDirectory\fP should be set too.
 .LP
 .LP
 .TP
 .TP
+\fBConsensusParams \fR\fISTRING\fP
+STRING is a space-separated list of key=value pairs that Tor will
+include in the "params" line of its networkstatus vote.
+.LP
+.TP
 \fBDirAllowPrivateAddresses \fR\fB0\fR|\fB1\fR\fP
 \fBDirAllowPrivateAddresses \fR\fB0\fR|\fB1\fR\fP
 If set to 1, Tor will accept router descriptors with arbitrary "Address"
 If set to 1, Tor will accept router descriptors with arbitrary "Address"
 elements. Otherwise, if the address is not an IP address or is a private
 elements. Otherwise, if the address is not an IP address or is a private

+ 1 - 0
src/or/config.c

@@ -168,6 +168,7 @@ static config_var_t _option_vars[] = {
   V(CircuitIdleTimeout,          INTERVAL, "1 hour"),
   V(CircuitIdleTimeout,          INTERVAL, "1 hour"),
   V(ClientDNSRejectInternalAddresses, BOOL,"1"),
   V(ClientDNSRejectInternalAddresses, BOOL,"1"),
   V(ClientOnly,                  BOOL,     "0"),
   V(ClientOnly,                  BOOL,     "0"),
+  V(ConsensusParams,             STRING,   NULL),
   V(ConnLimit,                   UINT,     "1000"),
   V(ConnLimit,                   UINT,     "1000"),
   V(ConstrainedSockets,          BOOL,     "0"),
   V(ConstrainedSockets,          BOOL,     "0"),
   V(ConstrainedSockSize,         MEMUNIT,  "8192"),
   V(ConstrainedSockSize,         MEMUNIT,  "8192"),

+ 7 - 0
src/or/dirserv.c

@@ -2553,6 +2553,13 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key,
   }
   }
   smartlist_sort_strings(v3_out->known_flags);
   smartlist_sort_strings(v3_out->known_flags);
 
 
+  if (options->ConsensusParams) {
+    v3_out->net_params = smartlist_create();
+    smartlist_split_string(v3_out->net_params,
+                           options->ConsensusParams, NULL, 0, 0);
+    smartlist_sort_strings(v3_out->net_params);
+  }
+
   voter = tor_malloc_zero(sizeof(networkstatus_voter_info_t));
   voter = tor_malloc_zero(sizeof(networkstatus_voter_info_t));
   voter->nickname = tor_strdup(options->Nickname);
   voter->nickname = tor_strdup(options->Nickname);
   memcpy(voter->identity_digest, identity_digest, DIGEST_LEN);
   memcpy(voter->identity_digest, identity_digest, DIGEST_LEN);

+ 4 - 0
src/or/or.h

@@ -2587,6 +2587,10 @@ typedef struct {
   /** Location of bandwidth measurement file */
   /** Location of bandwidth measurement file */
   char *V3BandwidthsFile;
   char *V3BandwidthsFile;
 
 
+  /** Authority only: key=value pairs that we add to our networkstatus
+   * consensus vote on the 'params' line. */
+  char *ConsensusParams;
+
   /** The length of time that we think an initial consensus should be fresh.
   /** The length of time that we think an initial consensus should be fresh.
    * Only altered on testing networks. */
    * Only altered on testing networks. */
   int TestingV3AuthInitialVotingInterval;
   int TestingV3AuthInitialVotingInterval;