6d3a4f1db8
When preparing a tutorial for netxlite, I figured it is easier to tell people "hey, this is the package you should use for all low-level networking stuff" rather than introducing people to a set of packages working together where some piece of functionality is here and some other piece is there. Part of https://github.com/ooni/probe/issues/1591
22 lines
587 B
Go
22 lines
587 B
Go
package netxlite
|
|
|
|
import "context"
|
|
|
|
// DNSTransport represents an abstract DNS transport.
|
|
type DNSTransport interface {
|
|
// RoundTrip sends a DNS query and receives the reply.
|
|
RoundTrip(ctx context.Context, query []byte) (reply []byte, err error)
|
|
|
|
// RequiresPadding return true for DoH and DoT according to RFC8467
|
|
RequiresPadding() bool
|
|
|
|
// Network is the network of the round tripper (e.g. "dot")
|
|
Network() string
|
|
|
|
// Address is the address of the round tripper (e.g. "1.1.1.1:853")
|
|
Address() string
|
|
|
|
// CloseIdleConnections closes idle connections.
|
|
CloseIdleConnections()
|
|
}
|