Require("IPV6")
# By default, Authorities are not configured as exits
Authority = Node(tag="a", authority=1, relay=1, ipv6_addr="[::1]",
                 torrc="authority-orport-v6.tmpl")
ExitRelay = Node(tag="r", relay=1, exit=1, ipv6_addr="[::1]",
                 torrc="relay-v6.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", launch_phase=2)
BridgeClient = Node(tag="bc", client=1, bridgeclient=1,
                    torrc="bridgeclient.tmpl",
                    launch_phase=3)

# 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)
