commit | 2b35a50146141494684737aabfb7b33290ca2424 | [log] [tgz] |
---|---|---|
author | Bhasker Hariharan <bhaskerh@google.com> | Tue Apr 23 17:46:13 2019 -0700 |
committer | Shentubot <shentubot@google.com> | Tue Apr 23 17:46:49 2019 -0700 |
tree | 4ac4aff2ef9e9557436d6470794bca1150f520df | |
parent | 168b7d4c0d73e2dd647f070467062f33ee7d2d73 [diff] |
Fixes to PacketMMap dispatcher. This CL fixes the following bugs: - Uses atomic to set/read status instead of binary.LittleEndian.PutUint32 etc which are not atomic. - Increments ringOffsets for frames that are truncated (i.e status is tpStatusCopy) - Does not ignore frames with tpStatusLost bit set as they are valid frames and only indicate that there some frames were lost before this one and metrics can be retrieved with a getsockopt call. - Adds checks to make sure blockSize is a multiple of page size. This is required as the kernel allocates in pages per block and rejects sizes that are not page aligned with an EINVAL. Updates #210 PiperOrigin-RevId: 244959464
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.
This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.