(t *testing.T)
| 145 | } |
| 146 | |
| 147 | func freeUDPPort(t *testing.T) uint16 { |
| 148 | t.Helper() |
| 149 | |
| 150 | l, err := net.ListenUDP("udp", &net.UDPAddr{ |
| 151 | IP: net.ParseIP("127.0.0.1"), |
| 152 | Port: 0, |
| 153 | }) |
| 154 | require.NoError(t, err, "listen on random UDP port") |
| 155 | |
| 156 | localAddr := l.LocalAddr() |
| 157 | require.NotNil(t, localAddr, "local address is nil") |
| 158 | _, port, err := net.SplitHostPort(localAddr.String()) |
| 159 | require.NoError(t, err, "split host port") |
| 160 | |
| 161 | portUint, err := strconv.ParseUint(port, 10, 16) |
| 162 | require.NoError(t, err, "parse port") |
| 163 | |
| 164 | // This is prone to races, but since we have to tell wireguard to create the |
| 165 | // listener and can't pass in a net.Listener, we have to do this. |
| 166 | err = l.Close() |
| 167 | require.NoError(t, err, "close UDP listener") |
| 168 | |
| 169 | return uint16(portUint) |
| 170 | } |
| 171 | |
| 172 | type tunnelServer struct { |
| 173 | api *tunneld.API |
no test coverage detected