# README
NOTE: This repository is no longer maintained. The Netstack code will continue to be updated and maintained as part of gVisor, which now also maintains a branch that is useable with standard Go tools.
Netstack
Netstack is a network stack written in Go.
Getting started
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>
Contributions
Please see CONTRIBUTING.md for more details.
Issues/Bug Reports
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.
Disclaimer
This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.
# Packages
Package gate provides a usage Gate synchronization primitive.
Package ilist provides the implementation of intrusive linked lists.
Package rand implements a cryptographically secure pseudorandom number generator.
Package sleep allows goroutines to efficiently sleep on multiple sources of notifications (wakers).
Package tcpip provides the interfaces and related types that users of the tcpip stack will use in order to create endpoints used to send and receive data over the network stack.
Package tmutex provides the implementation of a mutex that implements an efficient TryLock function in addition to Lock and Unlock.
Package waiter provides the implementation of a wait queue, where waiters can be enqueued to be notified when an event of interest happens.