commit | 1b48a0328e573531aafb37fcc9b08e1a0f5dd162 | [log] [tgz] |
---|---|---|
author | Adin Scannell <ascannell@google.com> | Thu Sep 12 17:42:14 2019 -0700 |
committer | gVisor bot <gvisor-bot@google.com> | Thu Sep 12 17:42:47 2019 -0700 |
tree | b886c0420f885d7c4baaeb29d8dd5308813dad8e | |
parent | 3587e1c938e0581b42a8ed862b26ceae07f49eee [diff] |
Implement splice methods for pipes and sockets. This also allows the tee(2) implementation to be enabled, since dup can now be properly supported via WriteTo. Note that this change necessitated some minor restructoring with the fs.FileOperations splice methods. If the *fs.File is passed through directly, then only public API methods are accessible, which will deadlock immediately since the locking is already done by fs.Splice. Instead, we pass through an abstract io.Reader or io.Writer, which elide locks and use the underlying fs.FileOperations directly. PiperOrigin-RevId: 268805207
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.