* move the current mdns discovery implementation to discovery_legacy
* use libp2p/zeroconf for mDNS discovery
* rename the discovery package to mdns
* don't store the context
* use a wait group for clean shutdown of the mdns resolver
* add comment about port numbers
* move the mdns packages p2p/discovery
* v2 client scaffolding
* gomod: go-libp2p-core and go-libp2p-transport-upgrader feature dependencies
* Conn implements network.ConnStat
* add reservation stub
* utilities
* dial scaffolding and v1 compat dialing
* stream handling scaffolding and v1 incoming connection handling
* implement hop tagging
* export timeout variables
* v2 protobuf
* v2 client protocol implementation
* implement Reserve
* go get go-libp2p-swarm@feat/transient-conns
* implement client.New
* rework pb status codes
* client responds with UNEXPECTED_MESSAGE when it's actually an unexpected message
* relay scaffolding, reservation implementation
* implement relaying
* implement missing details
* add options for resources/limit
* gc idle conn counts
* fix clown shoes in cancellation check
* end to end relay test
* untag peers with expired reservations
* add time limit test
* better debug log for accepted conns
* add data limit test
* add v2-v1 compatibility tests
* godocs
* add WithACL relay option
* only return public relay addrs in reservation record
* remove the refresh restriction madness
* set default limit Data to 128K
* fix typo in AllowReserve godoc
* fix some small issues
- remove context from constructor
- remove stream handler when closing the host
- remove the awkward cancellation check from handleStream
* fix tests
* address review comments
- Add deadline for Reserve calls
- Add deadline for dials
- Add some comments for things that confuse aarsh.
* humor aarsh and add initializers for slices
* comment nitpicks
* fix bug in slice pre-allocations
* add deadline to connectV1
* make Relay.Close thread-safe
* untag peers with reservations when closing the relay
* gomod: get go-libp2p-asn-util
* add IP/ASN reservation constraints
* gomod: update deps
* fix e2e test
* increase default limit duration to 2min
* update protocol for vouched relay addrs; provide absolute expiration time instead of TTL
* update for reservation changes
* add voucher to the reservation pb
* TODO about reservation vouchers
* deduplicate protocol ID definitions between relay and client
* add reservation vouchers
* emit and consume reservation vouchers
* improve limit data test
* deduplicate concurrent relay dials to the samke peer
* improve dialer deduplication
* add a short timeout to dialing the relay in order to aid deduplication
* gomod: fix go1.16 madness
* spec compliance: don't include p2p-circuit in reservation addrs
* spec compliance: refuse reservation and connection attempts over relayed connections
* test shim: add empty file in test directory
* spec compliance: update protobuf
* spec compliance: use libp2p envelopes for reservation vouchers
* fix staticcheck
Co-authored-by: Marten Seemann <martenseemann@gmail.com>