浏览代码

ConsensusParams config option lists key=value params

finishes the authority-operator interface side of proposal 167.
Roger Dingledine 15 年之前
父节点
当前提交
40bcab1faf
共有 4 个文件被更改,包括 18 次插入1 次删除
  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;