commit | cf1e44a60ad56cc81894415b79456f3a3706b048 | [log] [tgz] |
---|---|---|
author | Ian Gudger <igudger@google.com> | Mon Sep 09 14:00:51 2019 -0700 |
committer | gVisor bot <gvisor-bot@google.com> | Mon Sep 09 14:01:18 2019 -0700 |
tree | 626c4ce1f68277e2d47d489ffc27aaf6d873240d | |
parent | 74095258933af0be272a8faa0e6a9c8502e0c6ed [diff] |
Fix ephemeral port leak. Fix a bug where udp.(*endpoint).Disconnect [accessible in gVisor via epsocket.(*SocketOperations).Connect with AF_UNSPEC] would leak a port reservation if the socket/endpoint had an ephemeral port assigned to it. glibc's getaddrinfo uses connect with AF_UNSPEC, causing each call of getaddrinfo to leak a port. Call getaddrinfo too many times and you run out of ports (shows up as connect returning EAGAIN and getaddrinfo returning EAI_NONAME "Name or service not known"). PiperOrigin-RevId: 268071160
Netstack is a network stack written in Go.
Try it out on Linux by installing the tun_tcp_echo demo:
go install github.com/google/netstack/tcpip/sample/tun_tcp_echo
Create a TUN device with:
[sudo] ip tuntap add user <username> mode tun <device-name> [sudo] ip link set <device-name> up [sudo] ip addr add <ipv4-address>/<mask-length> dev <device-name>
Then run with:
tun_tcp_echo <device-name> <ipv4-address> <port>
Please see CONTRIBUTING.md for more details.
Netstack is primarily developed as part of gVisor and any issues/bugs should be filed against the gVisor repository as this repo is not actively monitored for bug reports.
This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.