diff options
author | Peter Palfrader <peter@palfrader.org> | 2009-09-21 13:16:44 +0200 |
---|---|---|
committer | Peter Palfrader <peter@palfrader.org> | 2009-09-21 13:16:44 +0200 |
commit | b69f6fe82d6cd4efd4cb96bdc987cf88a46ad3b2 (patch) | |
tree | 882cf0d7d8a6786a1f976e77df22054628cdc282 /doc | |
parent | b440a4d9369c4a6c4501b289f2e6ff089ba9a519 (diff) | |
parent | 20225895a36519139655be056138c0b1eb96f029 (diff) | |
download | tor-b69f6fe82d6cd4efd4cb96bdc987cf88a46ad3b2.tar tor-b69f6fe82d6cd4efd4cb96bdc987cf88a46ad3b2.tar.gz |
Merge branch 'debian-merge' into debian
* debian-merge: (95 commits)
New upstream version: 0.2.2.2-alpha
downgrade a log severity, since this event has been known
Update to the "September 4 2009" ip-to-country file.
bump to 0.2.2.2-alpha
Revert "Teach connection_ap_can_use_exit about Exclude*Nodes"
fix grammar / add changelog for the torify commit
Fix compile on Snow Leopard
Fix build warnings on OSX 10.5.8
Change the condition on the nonlive timeout counting.
Add a couple of time helper functions.
Fix typos and comments, plus two bugs
Implement and document new network liveness algorithm.
Fix some precision-related asserts in unit tests.
replace contrib/auto-naming with a readme saying where it went
clarify our rules for assigning the Named flag
disable the end of circuitbuildtimeout units tests
draw in a lot of 0.2.1.20 changelog items into 0.2.2.2-alpha
Fix compile on freebsd
Let our config abbreviations rewrite more than once
a mish-mash of stuff in my sandbox
...
Diffstat (limited to 'doc')
-rw-r--r-- | doc/HACKING | 5 | ||||
-rw-r--r-- | doc/spec/control-spec.txt | 52 | ||||
-rw-r--r-- | doc/spec/dir-spec.txt | 21 | ||||
-rw-r--r-- | doc/spec/proposals/000-index.txt | 4 | ||||
-rw-r--r-- | doc/spec/proposals/151-path-selection-improvements.txt | 158 | ||||
-rw-r--r-- | doc/spec/proposals/167-params-in-consensus.txt | 4 | ||||
-rw-r--r-- | doc/tor-osx-dmg-creation.txt | 107 | ||||
-rw-r--r-- | doc/tor.1.in | 7 |
8 files changed, 233 insertions, 125 deletions
diff --git a/doc/HACKING b/doc/HACKING index 3d3f2c1df..210f09f4b 100644 --- a/doc/HACKING +++ b/doc/HACKING @@ -3,10 +3,7 @@ 0.0 The buildbot. - http://tor-buildbot.freehaven.net:8010/ - - - Down because nickm isn't running services at home any more. ioerror says - he will resurrect it. + https://buildbot.vidalia-project.net/one_line_per_build 0.1. Useful command-lines that are non-trivial to reproduce but can help with tracking bugs or leaks. diff --git a/doc/spec/control-spec.txt b/doc/spec/control-spec.txt index fc4242ea1..f968fa851 100644 --- a/doc/spec/control-spec.txt +++ b/doc/spec/control-spec.txt @@ -557,6 +557,7 @@ "status/circuit-established" "status/enough-dir-info" "status/good-server-descriptor" + "status/accepted-server-descriptor" "status/..." These provide the current internal Tor values for various Tor states. See Section 4.1.10 for explanations. (Only a few of the @@ -1254,20 +1255,26 @@ CLOCK_SKEW SKEW="+" / "-" SECONDS MIN_SKEW="+" / "-" SECONDS. - SOURCE="DIRSERV:IP:Port" / "NETWORKSTATUS:IP:PORT" / "CONSENSUS" + SOURCE="DIRSERV:" IP ":" Port / + "NETWORKSTATUS:" IP ":" Port / + "OR:" IP ":" Port / + "CONSENSUS" If "SKEW" is present, it's an estimate of how far we are from the time declared in the source. (In other words, if we're an hour in the past, the value is -3600.) "MIN_SKEW" is present, it's a lower bound. If the source is a DIRSERV, we got the current time from a connection to a dirserver. If the source is a NETWORKSTATUS, we decided we're skewed because we got a v2 networkstatus from far in - the future. If the source is CONSENSUS, we decided we're skewed - because we got a networkstatus consensus from the future. + the future. If the source is OR, the skew comes from a NETINFO + cell from a connection to another relay. If the source is + CONSENSUS, we decided we're skewed because we got a networkstatus + consensus from the future. - {Controllers may want to warn the user if the skew is high, or if - multiple skew messages appear at severity WARN. Controllers - shouldn't blindly adjust the clock, since the more accurate source - of skew info (DIRSERV) is currently unauthenticated.} + {Tor should send this message to controllers when it thinks the + skew is so high that it will interfere with proper Tor operation. + Controllers shouldn't blindly adjust the clock, since the more + accurate source of skew info (DIRSERV) is currently + unauthenticated.} BAD_LIBEVENT "METHOD=" libevent method @@ -1481,18 +1488,39 @@ We successfully uploaded our server descriptor to at least one of the directory authorities, with no complaints. - {This event could affect the controller's idea of server status, but - the controller should not interrupt the user to tell them so.} + {Originally, the goal of this event was to declare "every authority + has accepted the descriptor, so there will be no complaints + about it." But since some authorities might be offline, it's + harder to get certainty than we had thought. As such, this event + is equivalent to ACCEPTED_SERVER_DESCRIPTOR below. Controllers + should just look at ACCEPTED_SERVER_DESCRIPTOR and should ignore + this event for now.} + + SERVER_DESCRIPTOR_STATUS + "STATUS=" "LISTED" / "UNLISTED" + We just got a new networkstatus consensus, and whether we're in + it or not in it has changed. Specifically, status is "listed" + if we're listed in it but previous to this point we didn't know + we were listed in a consensus; and status is "unlisted" if we + thought we should have been listed in it (e.g. we were listed in + the last one), but we're not. + + {Moving from listed to unlisted is not necessarily cause for + alarm. The relay might have failed a few reachability tests, + or the Internet might have had some routing problems. So this + feature is mainly to let relay operators know when their relay + has successfully been listed in the consensus.} + + [Not implemented yet. We should do this in 0.2.2.x. -RD] NAMESERVER_STATUS "NS=addr" "STATUS=" "UP" / "DOWN" "ERR=" message One of our nameservers has changed status. - // actually notice - {This event could affect the controller's idea of server status, but - the controller should not interrupt the user to tell them so.} + {This event could affect the controller's idea of server status, but + the controller should not interrupt the user to tell them so.} NAMESERVER_ALL_DOWN All of our nameservers have gone down. diff --git a/doc/spec/dir-spec.txt b/doc/spec/dir-spec.txt index 16f121a19..faa3a6609 100644 --- a/doc/spec/dir-spec.txt +++ b/doc/spec/dir-spec.txt @@ -1098,6 +1098,20 @@ enough votes were counted for the consensus for an authoritative opinion to have been formed about their status. + "params" SP [Parameters] NL + + [At most once] + + Parameter ::= Keyword '=' Int32 + Int32 ::= A decimal integer between -2147483648 and 2147483647. + Parameters ::= Parameter | Parameters SP Parameter + + The parameters list, if present, contains a space-separated list of + key-value pairs, sorted in lexical order by their keyword. Each + parameter has its own meaning. + + (Only included when the vote is generated with consensus-method 7 or + later.) The authority section of a vote contains the following items, followed in turn by the authority's current key certificate: @@ -1406,6 +1420,10 @@ Known-flags is the union of all flags known by any voter. + Entries are given on the "params" line for every keyword on which any + authority voted. The values given are the low-median of all votes on + that keyword. + "client-versions" and "server-versions" are sorted in ascending order; A version is recommended in the consensus if it is recommended by more than half of the voting authorities that included a @@ -1473,6 +1491,9 @@ a router, the authorities produce a consensus containing a Bandwidth= keyword equal to the median of the Measured= votes. + * If consensus-method 7 or later is in use, the params line is + included in the output. + The signatures at the end of a consensus document are sorted in ascending order by identity digest. diff --git a/doc/spec/proposals/000-index.txt b/doc/spec/proposals/000-index.txt index d2d3ca5d7..93dc0299d 100644 --- a/doc/spec/proposals/000-index.txt +++ b/doc/spec/proposals/000-index.txt @@ -87,6 +87,8 @@ Proposals by number: 164 Reporting the status of server votes [OPEN] 165 Easy migration for voting authority sets [OPEN] 166 Including Network Statistics in Extra-Info Documents [ACCEPTED] +167 Vote on network parameters in consensus [CLOSED] +168 Reduce default circuit window [OPEN] Proposals by status: @@ -114,6 +116,7 @@ Proposals by status: 163 Detecting whether a connection comes from a client [for 0.2.2] 164 Reporting the status of server votes [for 0.2.2] 165 Easy migration for voting authority sets + 168 Reduce default circuit window [for 0.2.2] ACCEPTED: 110 Avoiding infinite length circuits [for 0.2.1.x] [in 0.2.1.3-alpha] 117 IPv6 exits [for 0.2.1.x] @@ -157,6 +160,7 @@ Proposals by status: 148 Stream end reasons from the client side should be uniform [in 0.2.1.9-alpha] 150 Exclude Exit Nodes from a circuit [in 0.2.1.3-alpha] 152 Optionally allow exit from single-hop circuits [in 0.2.1.6-alpha] + 167 Vote on network parameters in consensus [in 0.2.2] SUPERSEDED: 112 Bring Back Pathlen Coin Weight 113 Simplifying directory authority administration diff --git a/doc/spec/proposals/151-path-selection-improvements.txt b/doc/spec/proposals/151-path-selection-improvements.txt index 3d5f07d3a..e0e9e0743 100644 --- a/doc/spec/proposals/151-path-selection-improvements.txt +++ b/doc/spec/proposals/151-path-selection-improvements.txt @@ -2,13 +2,13 @@ Filename: 151-path-selection-improvements.txt Title: Improving Tor Path Selection Author: Fallon Chen, Mike Perry Created: 5-Jul-2008 -Status: Draft +Status: Implemented Overview The performance of paths selected can be improved by adjusting the CircuitBuildTimeout and avoiding failing guard nodes. This proposal - describes a method of tracking buildtime statistics at the client, and + describes a method of tracking buildtime statistics at the client, and using those statistics to adjust the CircuitBuildTimeout. Motivation @@ -20,121 +20,123 @@ Motivation Implementation - Storing Build Times + Gathering Build Times - Circuit build times will be stored in the circular array - 'circuit_build_times' consisting of uint16_t elements as milliseconds. - The total size of this array will be based on the number of circuits + Circuit build times are stored in the circular array + 'circuit_build_times' consisting of uint32_t elements as milliseconds. + The total size of this array is based on the number of circuits it takes to converge on a good fit of the long term distribution of the circuit builds for a fixed link. We do not want this value to be too large, because it will make it difficult for clients to adapt to moving between different links. - From our initial observations, this value appears to be on the order - of 1000, but will be configurable in a #define NCIRCUITS_TO_OBSERVE. - The exact value for this #define will be determined by performing - goodness of fit tests using measurments obtained from the shufflebt.py - script from TorFlow. - + From our observations, the minimum value for a reasonable fit appears + to be on the order of 500 (MIN_CIRCUITS_TO_OBSERVE). However, to keep + a good fit over the long term, we store 5000 most recent circuits in + the array (NCIRCUITS_TO_OBSERVE). + + The Tor client will build test circuits at a rate of one per + minute (BUILD_TIMES_TEST_FREQUENCY) up to the point of + MIN_CIRCUITS_TO_OBSERVE. This allows a fresh Tor to have + a CircuitBuildTimeout estimated within 8 hours after install, + upgrade, or network change (see below). + Long Term Storage - The long-term storage representation will be implemented by storing a - histogram with BUILDTIME_BIN_WIDTH millisecond buckets (default 50) when - writing out the statistics to disk. The format of this histogram on disk - is yet to be finalized, but it will likely be of the format - 'CircuitBuildTime <bin> <count>', with the total specified as - 'TotalBuildTimes <total>' + The long-term storage representation is implemented by storing a + histogram with BUILDTIME_BIN_WIDTH millisecond buckets (default 50) when + writing out the statistics to disk. The format this takes in the + state file is 'CircuitBuildTime <bin-ms> <count>', with the total + specified as 'TotalBuildTimes <total>' Example: TotalBuildTimes 100 - CircuitBuildTimeBin 1 50 - CircuitBuildTimeBin 2 25 - CircuitBuildTimeBin 3 13 + CircuitBuildTimeBin 25 50 + CircuitBuildTimeBin 75 25 + CircuitBuildTimeBin 125 13 ... - Reading the histogram in will entail multiplying each bin by the - BUILDTIME_BIN_WIDTH and then inserting <count> values into the - circuit_build_times array each with the value of - <bin>*BUILDTIME_BIN_WIDTH. In order to evenly distribute the - values in the circular array, a form of index skipping must - be employed. Values from bin #N with bin count C and total T - will occupy indexes specified by N+((T/C)*k)-1, where k is the - set of integers ranging from 0 to C-1. - - For example, this would mean that the values from bin 1 would - occupy indexes 1+(100/50)*k-1, or 0, 2, 4, 6, 8, 10 and so on. - The values for bin 2 would occupy positions 1, 5, 9, 13. Collisions - will be inserted at the first empty position in the array greater - than the selected index (which may requiring looping around the - array back to index 0). + Reading the histogram in will entail inserting <count> values + into the circuit_build_times array each with the value of + <bin-ms> milliseconds. In order to evenly distribute the values + in the circular array, the Fisher-Yates shuffle will be performed + after reading values from the bins. Learning the CircuitBuildTimeout Based on studies of build times, we found that the distribution of - circuit buildtimes appears to be a Pareto distribution. + circuit buildtimes appears to be a Frechet distribution. However, + estimators and quantile functions of the Frechet distribution are + difficult to work with and slow to converge. So instead, since we + are only interested in the accuracy of the tail, we approximate + the tail of the distribution with a Pareto curve starting at + the mode of the circuit build time sample set. We will calculate the parameters for a Pareto distribution fitting the data using the estimators at http://en.wikipedia.org/wiki/Pareto_distribution#Parameter_estimation. - The timeout itself will be calculated by solving the CDF for the - a percentile cutoff BUILDTIME_PERCENT_CUTOFF. This value - represents the percentage of paths the Tor client will accept out of - the total number of paths. We have not yet determined a good - cutoff for this mathematically, but 85% seems a good choice for now. + The timeout itself is calculated by using the Quartile function (the + inverted CDF) to give us the value on the CDF such that + BUILDTIME_PERCENT_CUTOFF (80%) of the mass of the distribution is + below the timeout value. + + Thus, we expect that the Tor client will accept the fastest 80% of + the total number of paths on the network. + + Detecting Changing Network Conditions - From http://en.wikipedia.org/wiki/Pareto_distribution#Definition, - the calculation we need is pow(BUILDTIME_PERCENT_CUTOFF/100.0, k)/Xm. + We attempt to detect both network connectivity loss and drastic + changes in the timeout characteristics. + + We assume that we've had network connectivity loss if 3 circuits + timeout and we've received no cells or TLS handshakes since those + circuits began. We then set the timeout to 60 seconds and stop + counting timeouts. + + If 3 more circuits timeout and the network still has not been + live within this new 60 second timeout window, we then discard + the previous timeouts during this period from our history. + + To detect changing network conditions, we keep a history of + the timeout or non-timeout status of the past RECENT_CIRCUITS (20) + that successfully completed at least one hop. If more than 75% + of these circuits timeout, we discard all buildtimes history, + reset the timeout to 60, and then begin recomputing the timeout. Testing After circuit build times, storage, and learning are implemented, the resulting histogram should be checked for consistency by - verifying it persists across successive Tor invocations where + verifying it persists across successive Tor invocations where no circuits are built. In addition, we can also use the existing - buildtime scripts to record build times, and verify that the histogram + buildtime scripts to record build times, and verify that the histogram the python produces matches that which is output to the state file in Tor, and verify that the Pareto parameters and cutoff points also match. - - Soft timeout vs Hard Timeout - - At some point, it may be desirable to change the cutoff from a - single hard cutoff that destroys the circuit to a soft cutoff and - a hard cutoff, where the soft cutoff merely triggers the building - of a new circuit, and the hard cutoff triggers destruction of the - circuit. - - Good values for hard and soft cutoffs seem to be 85% and 65% - respectively, but we should eventually justify this with observation. - - When to Begin Calculation - The number of circuits to observe (NCIRCUITS_TO_CUTOFF) before - changing the CircuitBuildTimeout will be tunable via a #define. From - our measurements, a good value for NCIRCUITS_TO_CUTOFF appears to be - on the order of 100. + We will also verify that there are no unexpected large deviations from + node selection, such as nodes from distant geographical locations being + completely excluded. Dealing with Timeouts - Timeouts should be counted as the expectation of the region of - of the Pareto distribution beyond the cutoff. The proposal will - be updated with this value soon. + Timeouts should be counted as the expectation of the region of + of the Pareto distribution beyond the cutoff. This is done by + generating a random sample for each timeout at points on the + curve beyond the current timeout cutoff. - Also, in the event of network failure, the observation mechanism - should stop collecting timeout data. + Future Work - Client Hints + At some point, it may be desirable to change the cutoff from a + single hard cutoff that destroys the circuit to a soft cutoff and + a hard cutoff, where the soft cutoff merely triggers the building + of a new circuit, and the hard cutoff triggers destruction of the + circuit. - Some research still needs to be done to provide initial values - for CircuitBuildTimeout based on values learned from modem - users, DSL users, Cable Modem users, and dedicated links. A - radiobutton in Vidalia should eventually be provided that - sets CircuitBuildTimeout to one of these values and also - provide the option of purging all learned data, should any exist. + It may also be beneficial to learn separate timeouts for each + guard node, as they will have slightly different distributions. + This will take longer to generate initial values though. - These values can either be published in the directory, or - shipped hardcoded for a particular Tor version. - Issues Impact on anonymity diff --git a/doc/spec/proposals/167-params-in-consensus.txt b/doc/spec/proposals/167-params-in-consensus.txt index 7649c040c..d23bc9c01 100644 --- a/doc/spec/proposals/167-params-in-consensus.txt +++ b/doc/spec/proposals/167-params-in-consensus.txt @@ -2,8 +2,8 @@ Filename: 167-params-in-consensus.txt Title: Vote on network parameters in consensus Author: Roger Dingledine Created: 18-Aug-2009 -Status: Open -Target: 0.2.2 +Status: Closed +Implemented-In: 0.2.2 0. History diff --git a/doc/tor-osx-dmg-creation.txt b/doc/tor-osx-dmg-creation.txt index 6728e24ae..9a89e9875 100644 --- a/doc/tor-osx-dmg-creation.txt +++ b/doc/tor-osx-dmg-creation.txt @@ -1,31 +1,62 @@ ## Instructions for building the official dmgs for OSX. ## +## The loose table of contents: +## Summary +## Single Architecture Binaries for PPC or X86, not both. +## Backwards compatible single-architecture binaries for OSX x86 10.4 from newer versions of OS X. +## Universal Binaries for OSX PPC and X86 +## Each section is delineated by ###. The following steps are the exact steps used to produce the "official" OSX builds of tor. -Summary: +### Summary: 1) Compile and install a static version of the latest release of libevent. 2) Acquire and install your preferred version of tor. Extract. 3) "make dist-osx" 4) You now have a dmg from which you can install Tor. -## Universal Binaries for OSX PPC and X86 -## This method works in OSX 10.4 (Tiger) and newer OSX versions. -## See far below if you don't care about cross compiling for PPC and X86. -## The single architecture process starts with "###" +### Single Architecture Binaries for PPC or X86, not both. +### This method works in all versions of OSX 10.3 through 10.6 + +## Compiling libevent ## + +1) Download the latest stable libevent from +http://www.monkey.org/~provos/libevent/ + +2) The first step of compiling libevent is to configure it as +follows: + ./configure --enable-static --disable-shared + +3) Complete the "make" and "make install". You will need to be root, +or sudo -s, to complete the "make install". + +## Compiling Tor ## + +4) Get your preferred version of the tor source from https://www.torproject.org. Extract the +tarball. + +5) In the top level, this means /path/to/tor/, not tor/contrib/osx, +do a configure with these parameters: + CONFDIR=/Library/Tor ./configure --prefix=/Library/Tor \ + --bindir=/Library/Tor --sysconfdir=/Library + +6) In same top level dir, do a "make dist-osx". There now exists a +.dmg file in the same directory. Install from this dmg. + +### Backwards compatible single-architecture binaries for OSX x86 10.4 from newer versions of OS X. 1) Install the latest XCode updates available from http://developer.apple.com. -## Compiling libevent +## Compiling libevent ## 2) Download latest stable libevent from http://www.monkey.org/~provos/libevent/ 3) The first step of compiling libevent is to configure it as follows: -CFLAGS="-O -g -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" \ +CFLAGS="-O -g -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386" \ LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk" \ ./configure --enable-static --disable-shared --disable-dependency-tracking @@ -37,16 +68,14 @@ or sudo -s, to complete the "make install". "file /usr/local/lib/libevent.a" Your output should be: -/usr/local/lib/libevent.a: Mach-O fat file with 2 architectures /usr/local/lib/libevent.a (for architecture i386): current ar archive random library -/usr/local/lib/libevent.a (for architecture ppc): current ar archive 6) Get your preferred version of the tor source from https://www.torproject.org/download. Extract the tarball. 7) In the top level, this means /path/to/tor/, not tor/contrib/osx, do a configure with these parameters: -CFLAGS="-O -g -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" \ +CFLAGS="-O -g -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386" \ LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk" \ CONFDIR=/Library/Tor \ ./configure --prefix=/Library/Tor --bindir=/Library/Tor \ @@ -56,39 +85,61 @@ CONFDIR=/Library/Tor \ 9) Confirm you have created a universal binary by issuing the follow command: "file src/or/tor". Its output should be as follows: -src/or/tor: Mach-O fat file with 2 architectures src/or/tor (for architecture i386): Mach-O executable i386 -src/or/tor (for architecture ppc): Mach-O executable ppc 10) There should exist in the top-level directory a Tor-$VERSION-universal-Bundle.dmg -11) Congrats. You have a universal binary. You are now ready to install Tor. +11) Congrats. You have a backwards-compatible binary. You are now ready to install Tor. -### Single Architecture Binaries for PPC or X86, not both. -### This method works in all versions of OSX 10.3 through 10.5 +### Universal Binaries for OSX PPC and X86 +### This method works in OSX 10.4 (Tiger) and newer OSX versions. + +1) Install the latest XCode updates available from http://developer.apple.com. -### Compiling libevent +## Compiling libevent ## -1) Download the latest stable libevent from +2) Download latest stable libevent from http://www.monkey.org/~provos/libevent/ -2) The first step of compiling libevent is to configure it as +3) The first step of compiling libevent is to configure it as follows: - ./configure --enable-static --disable-shared +CFLAGS="-O -g -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" \ +LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk" \ +./configure --enable-static --disable-shared --disable-dependency-tracking -3) Complete the "make" and "make install". You will need to be root, +4) Complete the "make" and "make install". You will need to be root, or sudo -s, to complete the "make install". -### Compiling Tor +5) Check for a successful universal binary of libevent.a in, by default, +/usr/local/lib by using the following command: + "file /usr/local/lib/libevent.a" -4) Get your preferred version of the tor source from https://www.torproject.org. Extract the -tarball. + Your output should be: +/usr/local/lib/libevent.a: Mach-O fat file with 2 architectures +/usr/local/lib/libevent.a (for architecture i386): current ar archive random library +/usr/local/lib/libevent.a (for architecture ppc): current ar archive -5) In the top level, this means /path/to/tor/, not tor/contrib/osx, +6) Get your preferred version of the tor source from https://www.torproject.org/download. +Extract the tarball. + +7) In the top level, this means /path/to/tor/, not tor/contrib/osx, do a configure with these parameters: - CONFDIR=/Library/Tor ./configure --prefix=/Library/Tor \ - --bindir=/Library/Tor --sysconfdir=/Library +CFLAGS="-O -g -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" \ +LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk" \ +CONFDIR=/Library/Tor \ +./configure --prefix=/Library/Tor --bindir=/Library/Tor \ +--sysconfdir=/Library --disable-dependency-tracking -6) In same top level dir, do a "make dist-osx". There now exists a -.dmg file in the same directory. Install from this dmg. +8) "make dist-osx" + +9) Confirm you have created a universal binary by issuing the follow command: +"file src/or/tor". Its output should be as follows: +src/or/tor: Mach-O fat file with 2 architectures +src/or/tor (for architecture i386): Mach-O executable i386 +src/or/tor (for architecture ppc): Mach-O executable ppc + +10) There should exist in the top-level directory a +Tor-$VERSION-universal-Bundle.dmg + +11) Congrats. You have a universal binary. You are now ready to install Tor. diff --git a/doc/tor.1.in b/doc/tor.1.in index a0f8e8b0f..a4dac0e07 100644 --- a/doc/tor.1.in +++ b/doc/tor.1.in @@ -1243,6 +1243,11 @@ When this is set then \fBVersioningAuthoritativeDirectory\fP should be set too. .LP .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 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 @@ -1514,7 +1519,7 @@ The most recently downloaded network status document for each authority. Each f .LP .TP .B \fIDataDirectory\fB/cached-descriptors\fR and \fBcached-descriptors.new\fR -These files hold downloaded router statuses. Some routers may appear more than once; if so, the most recently published descriptor is used. Lines beginning with @-signs are annotations that contain more information about a given router. The ".new" file is an append-only journal; when it gets too large, all entries are merged into a new cached-routers file. +These files hold downloaded router statuses. Some routers may appear more than once; if so, the most recently published descriptor is used. Lines beginning with @-signs are annotations that contain more information about a given router. The ".new" file is an append-only journal; when it gets too large, all entries are merged into a new cached-descriptors file. .LP .TP .B \fIDataDirectory\fB/cached-routers\fR and \fBcached-routers.new\fR |