|
|
|
|
@ -1014,6 +1014,9 @@ func (c *Conn) goDerpConnect(node int) { |
|
|
|
|
//
|
|
|
|
|
// c.mu must NOT be held.
|
|
|
|
|
func (c *Conn) determineEndpoints(ctx context.Context) ([]tailcfg.Endpoint, error) { |
|
|
|
|
if runtime.GOOS == "js" { |
|
|
|
|
return nil, nil |
|
|
|
|
} |
|
|
|
|
portmapExt, havePortmap := c.portMapper.GetCachedMappingOrStartCreatingOne() |
|
|
|
|
|
|
|
|
|
nr, err := c.updateNetInfo(ctx) |
|
|
|
|
@ -1140,6 +1143,9 @@ func endpointSetsEqual(x, y []tailcfg.Endpoint) bool { |
|
|
|
|
|
|
|
|
|
// LocalPort returns the current IPv4 listener's port number.
|
|
|
|
|
func (c *Conn) LocalPort() uint16 { |
|
|
|
|
if runtime.GOOS == "js" { |
|
|
|
|
return 12345 |
|
|
|
|
} |
|
|
|
|
laddr := c.pconn4.LocalAddr() |
|
|
|
|
return uint16(laddr.Port) |
|
|
|
|
} |
|
|
|
|
@ -2454,16 +2460,12 @@ func (c *connBind) Open(ignoredPort uint16) ([]conn.ReceiveFunc, uint16, error) |
|
|
|
|
} |
|
|
|
|
c.closed = false |
|
|
|
|
fns := []conn.ReceiveFunc{c.receiveIPv4, c.receiveIPv6, c.receiveDERP} |
|
|
|
|
var port uint16 |
|
|
|
|
if runtime.GOOS == "js" { |
|
|
|
|
fns = []conn.ReceiveFunc{c.receiveDERP} |
|
|
|
|
port = 12345 |
|
|
|
|
} else { |
|
|
|
|
port = c.LocalPort() |
|
|
|
|
} |
|
|
|
|
// TODO: Combine receiveIPv4 and receiveIPv6 and receiveIP into a single
|
|
|
|
|
// closure that closes over a *RebindingUDPConn?
|
|
|
|
|
return fns, port, nil |
|
|
|
|
return fns, c.LocalPort(), nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// SetMark is used by wireguard-go to set a mark bit for packets to avoid routing loops.
|
|
|
|
|
|