Require("IPV6")
# By default, Authorities are not configured as exits
Authority = Node(tag="a", authority=1, relay=1, torrc="authority.tmpl")
ExitRelay = Node(tag="r", relay=1, exit=1, torrc="relay.tmpl")

BridgeAuthority = Node(tag="ba", authority=1, bridgeauthority=1,
                       relay=1, torrc="bridgeauthority.tmpl")
BridgeIPv6 = Node(tag="br", bridge=1, relay=1, ipv6_addr="[::1]",
                  torrc="bridge-v6.tmpl")
BridgeClient = Node(tag="bc", client=1, bridgeclient=1, torrc="bridgeclient.tmpl")

# Since only 25% of relays get the guard flag,
# TestingDirAuthVoteGuard * may need to be used in small networks
# (However, bridge clients use bridges instead of guards, so this
# is only an issue for the exit bootstrapping)

# The minimum number of authorities/relays/exits is 3, the minimum path length
# But relays and authorities need 1 extra node, because they won't make a path
# that includes themselves.
# (Bridges don't count, because they're not in the consensus.)
NODES = Authority.getN(2) + BridgeAuthority.getN(1) + ExitRelay.getN(1) + \
        BridgeIPv6.getN(1) + BridgeClient.getN(1)

ConfigureNodes(NODES)
