wgengine/magicsock: update comments on what implements conn.Bind
The comment still said *magicsock.Conn implemented wireguard-go conn.Bind. That wasn't accurate anymore. A doc #cleanup. Change-Id: I7fd003b939497889cc81147bfb937b93e4f6865c Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
10f1c90f4d
commit
4b49ca4a12
|
@ -268,7 +268,6 @@ func (m *peerMap) deleteEndpoint(ep *endpoint) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// A Conn routes UDP packets and actively manages a list of its endpoints.
|
// A Conn routes UDP packets and actively manages a list of its endpoints.
|
||||||
// It implements wireguard/conn.Bind.
|
|
||||||
type Conn struct {
|
type Conn struct {
|
||||||
// This block mirrors the contents and field order of the Options
|
// This block mirrors the contents and field order of the Options
|
||||||
// struct. Initialized once at construction, then constant.
|
// struct. Initialized once at construction, then constant.
|
||||||
|
@ -1280,6 +1279,9 @@ var errNetworkDown = errors.New("magicsock: network down")
|
||||||
|
|
||||||
func (c *Conn) networkDown() bool { return !c.networkUp.Load() }
|
func (c *Conn) networkDown() bool { return !c.networkUp.Load() }
|
||||||
|
|
||||||
|
// Send implements conn.Bind.
|
||||||
|
//
|
||||||
|
// See https://pkg.go.dev/golang.zx2c4.com/wireguard/conn#Bind.Send
|
||||||
func (c *Conn) Send(buffs [][]byte, ep conn.Endpoint) error {
|
func (c *Conn) Send(buffs [][]byte, ep conn.Endpoint) error {
|
||||||
n := int64(len(buffs))
|
n := int64(len(buffs))
|
||||||
metricSendData.Add(n)
|
metricSendData.Add(n)
|
||||||
|
@ -1952,7 +1954,7 @@ func (c *connBind) receiveDERP(buffs [][]byte, sizes []int, eps []conn.Endpoint)
|
||||||
defer health.ReceiveDERP.Exit()
|
defer health.ReceiveDERP.Exit()
|
||||||
|
|
||||||
for dm := range c.derpRecvCh {
|
for dm := range c.derpRecvCh {
|
||||||
if c.Closed() {
|
if c.isClosed() {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
n, ep := c.processDERPReadResult(dm, buffs[0])
|
n, ep := c.processDERPReadResult(dm, buffs[0])
|
||||||
|
@ -2989,6 +2991,8 @@ func (c *Conn) DERPs() int {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bind returns the wireguard-go conn.Bind for c.
|
// Bind returns the wireguard-go conn.Bind for c.
|
||||||
|
//
|
||||||
|
// See https://pkg.go.dev/golang.zx2c4.com/wireguard/conn#Bind
|
||||||
func (c *Conn) Bind() conn.Bind {
|
func (c *Conn) Bind() conn.Bind {
|
||||||
return c.bind
|
return c.bind
|
||||||
}
|
}
|
||||||
|
@ -3004,6 +3008,12 @@ type connBind struct {
|
||||||
closed bool
|
closed bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ conn.Bind = (*connBind)(nil)
|
||||||
|
|
||||||
|
// BatchSize returns the number of buffers expected to be passed to
|
||||||
|
// the ReceiveFuncs, and the maximum expected to be passed to SendBatch.
|
||||||
|
//
|
||||||
|
// See https://pkg.go.dev/golang.zx2c4.com/wireguard/conn#Bind.BatchSize
|
||||||
func (c *connBind) BatchSize() int {
|
func (c *connBind) BatchSize() int {
|
||||||
// TODO(raggi): determine by properties rather than hardcoding platform behavior
|
// TODO(raggi): determine by properties rather than hardcoding platform behavior
|
||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
|
@ -3017,6 +3027,8 @@ func (c *connBind) BatchSize() int {
|
||||||
// Open is called by WireGuard to create a UDP binding.
|
// Open is called by WireGuard to create a UDP binding.
|
||||||
// The ignoredPort comes from wireguard-go, via the wgcfg config.
|
// The ignoredPort comes from wireguard-go, via the wgcfg config.
|
||||||
// We ignore that port value here, since we have the local port available easily.
|
// We ignore that port value here, since we have the local port available easily.
|
||||||
|
//
|
||||||
|
// See https://pkg.go.dev/golang.zx2c4.com/wireguard/conn#Bind.Open
|
||||||
func (c *connBind) Open(ignoredPort uint16) ([]conn.ReceiveFunc, uint16, error) {
|
func (c *connBind) Open(ignoredPort uint16) ([]conn.ReceiveFunc, uint16, error) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
@ -3035,11 +3047,15 @@ func (c *connBind) Open(ignoredPort uint16) ([]conn.ReceiveFunc, uint16, error)
|
||||||
|
|
||||||
// SetMark is used by wireguard-go to set a mark bit for packets to avoid routing loops.
|
// SetMark is used by wireguard-go to set a mark bit for packets to avoid routing loops.
|
||||||
// We handle that ourselves elsewhere.
|
// We handle that ourselves elsewhere.
|
||||||
|
//
|
||||||
|
// See https://pkg.go.dev/golang.zx2c4.com/wireguard/conn#Bind.SetMark
|
||||||
func (c *connBind) SetMark(value uint32) error {
|
func (c *connBind) SetMark(value uint32) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close closes the connBind, unless it is already closed.
|
// Close closes the connBind, unless it is already closed.
|
||||||
|
//
|
||||||
|
// See https://pkg.go.dev/golang.zx2c4.com/wireguard/conn#Bind.Close
|
||||||
func (c *connBind) Close() error {
|
func (c *connBind) Close() error {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
@ -3063,8 +3079,8 @@ func (c *connBind) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Closed reports whether c is closed.
|
// isClosed reports whether c is closed.
|
||||||
func (c *connBind) Closed() bool {
|
func (c *connBind) isClosed() bool {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
return c.closed
|
return c.closed
|
||||||
|
@ -3370,7 +3386,9 @@ func packIPPort(ua netip.AddrPort) []byte {
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParseEndpoint is called by WireGuard to connect to an endpoint.
|
// ParseEndpoint implements conn.Bind; it's called by WireGuard to connect to an endpoint.
|
||||||
|
//
|
||||||
|
// See https://pkg.go.dev/golang.zx2c4.com/wireguard/conn#Bind.ParseEndpoint
|
||||||
func (c *Conn) ParseEndpoint(nodeKeyStr string) (conn.Endpoint, error) {
|
func (c *Conn) ParseEndpoint(nodeKeyStr string) (conn.Endpoint, error) {
|
||||||
k, err := key.ParseNodePublicUntyped(mem.S(nodeKeyStr))
|
k, err := key.ParseNodePublicUntyped(mem.S(nodeKeyStr))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue