in net/port.go [111:137]
func openLocalPort(lp *LocalPort) (Closeable, error) {
var socket Closeable
hostPort := net.JoinHostPort(lp.IP, strconv.Itoa(lp.Port))
switch lp.Protocol {
case TCP:
network := "tcp" + string(lp.IPFamily)
listener, err := net.Listen(network, hostPort)
if err != nil {
return nil, err
}
socket = listener
case UDP:
network := "udp" + string(lp.IPFamily)
addr, err := net.ResolveUDPAddr(network, hostPort)
if err != nil {
return nil, err
}
conn, err := net.ListenUDP(network, addr)
if err != nil {
return nil, err
}
socket = conn
default:
return nil, fmt.Errorf("unknown protocol %q", lp.Protocol)
}
return socket, nil
}