)]}'
{
  "log": [
    {
      "commit": "352b003b39b1ac7943134171cc934c0dbb38bf13",
      "tree": "09e3c5573b23e702858936e86cb08ac3ffe2e3ef",
      "parents": [
        "ab5ffb230cb6e433f4a60fabdac14563788f207f",
        "c68c440d9d683158594fcac493095b26d241374b"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Oct 25 15:55:29 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Oct 25 15:55:29 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: I04ae80c5f0d2e616b2a5771d8e6f6dda30abc90d\n"
    },
    {
      "commit": "c68c440d9d683158594fcac493095b26d241374b",
      "tree": "4f4162fc761e45f107d04cb97d7783dd6f541e7e",
      "parents": [
        "a4437b2921892a68f23c260492c0920d02291238"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Thu Oct 24 16:51:41 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Oct 24 16:52:09 2019 -0700"
      },
      "message": "Add a type to represent the NDP Prefix Information option.\n\nThis change is in preparation for NDP Prefix Discovery and SLAAC where the stack\nwill need to handle NDP Prefix Information options.\n\nTests: Test that given an NDP Prefix Information option buffer, correct values\nare returned by the field getters.\nPiperOrigin-RevId: 276594592\n"
    },
    {
      "commit": "a4437b2921892a68f23c260492c0920d02291238",
      "tree": "d80259d4beeed982ef9dfb256342ec756ac90757",
      "parents": [
        "b3b7130a2996243202acc638298cf1f3fa8cb10f"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Thu Oct 24 15:18:43 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Oct 24 15:19:15 2019 -0700"
      },
      "message": "Remove the amss field from tcpip.tcp.handshake as it was unused\n\nThe amss field in the tcpip.tcp.handshake was not used anywhere. Removed it to\nnot cause confusion with the amss field in the tcpip.tcp.endpoint struct, which\nwas documented to be used (and is actually being used) for the same purpose.\n\nPiperOrigin-RevId: 276577088\n"
    },
    {
      "commit": "b3b7130a2996243202acc638298cf1f3fa8cb10f",
      "tree": "74d2c264e67e58742852adff2f9d907dfe5073ca",
      "parents": [
        "f0c7b8df68d6715da6467a35baf5fc510a589a9a"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Thu Oct 24 11:07:58 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Oct 24 11:08:25 2019 -0700"
      },
      "message": "Use interface-specific NDP configurations instead of the stack-wide default.\n\nThis change makes it so that NDP work is done using the per-interface NDP\nconfigurations instead of the stack-wide default NDP configurations to correctly\nimplement RFC 4861 section 6.3.2 (note here, a host is a single NIC operating\nas a host device), and RFC 4862 section 5.1.\n\nTest: Test that we can set NDP configurations on a per-interface basis without\naffecting the configurations of other interfaces or the stack-wide default. Also\nmake sure that after the configurations are updated, the updated configurations\nare used for NDP processes (e.g. Duplicate Address Detection).\nPiperOrigin-RevId: 276525661\n"
    },
    {
      "commit": "f0c7b8df68d6715da6467a35baf5fc510a589a9a",
      "tree": "bf80304277c4e2a0e502840aeb2e67129ca8a5cb",
      "parents": [
        "3c29784ac600eda5b2ea6422a20e74d48897f4f6"
      ],
      "author": {
        "name": "Jianfeng Tan",
        "email": "tanjianfeng777@gmail.com",
        "time": "Wed Oct 23 16:54:00 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Oct 23 16:54:34 2019 -0700"
      },
      "message": "Support /proc/net/dev, /proc/net/route, /proc/net/snmp\n\nSupport for /proc/net/dev, /proc/net/route, and /proc/net/snmp [1]. This should enable the use of tools such as route[2].\n\n[1] https://tools.ietf.org/html/rfc2013\n[2] http://man7.org/linux/man-pages/man8/route.8.html\n\nPiperOrigin-RevId: 276380008\n"
    },
    {
      "commit": "3c29784ac600eda5b2ea6422a20e74d48897f4f6",
      "tree": "83b1e75f808e594d4e418e20b8a774b59a32b7e1",
      "parents": [
        "1ac269f4fba5145d17a953e8f2b2e7945ea7a394"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Wed Oct 23 13:25:14 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Oct 23 13:25:58 2019 -0700"
      },
      "message": "Inform netstack integrator when Duplicate Address Detection completes\n\nThis change introduces a new interface, stack.NDPDispatcher. It can be\nimplemented by the netstack integrator to receive NDP related events. As of this\nchange, only DAD related events are supported.\n\nTests: Existing tests were modified to use the NDPDispatcher\u0027s DAD events for\nDAD tests where it needed to wait for DAD completing (failing and resolving).\nPiperOrigin-RevId: 276338733\n"
    },
    {
      "commit": "1ac269f4fba5145d17a953e8f2b2e7945ea7a394",
      "tree": "df45ebaa77cacac6be880db0467f12607967db17",
      "parents": [
        "325363d09f6e87b77021a1be7ab6da67e453b829"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Tue Oct 22 14:40:27 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Oct 22 14:40:57 2019 -0700"
      },
      "message": "Add a type to represent the NDP Router Advertisement message.\n\nThis change is in preparation for NDP Router Discovery where the stack will need\nto handle NDP Router Advertisments.\n\nTests: Test that given an NDP Router Advertisement buffer (body of an ICMPv6\npacket, correct values are returned by the field getters).\nPiperOrigin-RevId: 276146817\n"
    },
    {
      "commit": "325363d09f6e87b77021a1be7ab6da67e453b829",
      "tree": "d7f47aa8b1bbaff32af72caa43a8a4b98b88ffdd",
      "parents": [
        "aeeb455bd857fee83b1316e70c8e8c277346704a"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Tue Oct 22 13:53:01 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Oct 22 13:53:31 2019 -0700"
      },
      "message": "Respect new PrimaryEndpointBehavior when addresses gets promoted to permanent\n\nThis change makes sure that when an address which is already known by a NIC and\nhas kind \u003d permanentExpired gets promoted to permanent, the new\nPrimaryEndpointBehavior is respected.\n\nPiperOrigin-RevId: 276136317\n"
    },
    {
      "commit": "aeeb455bd857fee83b1316e70c8e8c277346704a",
      "tree": "aa7cf017f3b53c892c53286fd1475761b6eedd03",
      "parents": [
        "ba5a7f4f9f05b69fdeec036bbfc2826d63b07b74"
      ],
      "author": {
        "name": "Andrei Vagin",
        "email": "avagin@google.com",
        "time": "Tue Oct 22 11:54:14 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Oct 22 11:54:41 2019 -0700"
      },
      "message": "netstack/tcp: software segmentation offload\n\nRight now, we send each tcp packet separately, we call one system\ncall per-packet. This patch allows to generate multiple tcp packets\nand send them by sendmmsg.\n\nThe arguable part of this CL is a way how to handle multiple headers.\nThis CL adds the next field to the Prepandable buffer.\n\nNginx test results:\n\nServer Software:        nginx/1.15.9\nServer Hostname:        10.138.0.2\nServer Port:            8080\n\nDocument Path:          /10m.txt\nDocument Length:        10485760 bytes\n\nw/o gso:\nConcurrency Level:      5\nTime taken for tests:   5.491 seconds\nComplete requests:      100\nFailed requests:        0\nTotal transferred:      1048600200 bytes\nHTML transferred:       1048576000 bytes\nRequests per second:    18.21 [#/sec] (mean)\nTime per request:       274.525 [ms] (mean)\nTime per request:       54.905 [ms] (mean, across all concurrent requests)\nTransfer rate:          186508.03 [Kbytes/sec] received\n\nsw-gso:\n\nConcurrency Level:      5\nTime taken for tests:   3.852 seconds\nComplete requests:      100\nFailed requests:        0\nTotal transferred:      1048600200 bytes\nHTML transferred:       1048576000 bytes\nRequests per second:    25.96 [#/sec] (mean)\nTime per request:       192.576 [ms] (mean)\nTime per request:       38.515 [ms] (mean, across all concurrent requests)\nTransfer rate:          265874.92 [Kbytes/sec] received\n\nw/o gso:\n$ ./tcp_benchmark --client --duration 15  --ideal\n[SUM]  0.0-15.1 sec  2.20 GBytes  1.25 Gbits/sec\n\nsoftware gso:\n$ tcp_benchmark --client --duration 15  --ideal --gso $((1\u003c\u003c16)) --swgso\n[SUM]  0.0-15.1 sec  3.99 GBytes  2.26 Gbits/sec\n\nPiperOrigin-RevId: 276112677\n"
    },
    {
      "commit": "ba5a7f4f9f05b69fdeec036bbfc2826d63b07b74",
      "tree": "1446dc29c1b1c1bd28858005c176c983a5340a3f",
      "parents": [
        "15e69a7a21af2508c7c2dfe97c263c661cf37b49"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Tue Oct 22 07:25:35 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Oct 22 07:26:03 2019 -0700"
      },
      "message": "Auto-generate an IPv6 link-local address based on the NIC\u0027s MAC Address.\n\nThis change adds support for optionally auto-generating an IPv6 link-local\naddress based on the NIC\u0027s MAC Address on NIC enable.\n\nNote, this change will not break existing uses of netstack as the default\nconfiguration for the stack options is set in such a way that a link-local\naddress will not be auto-generated unless the stack is explicitly configured.\nSee `stack.Options` for more details. Specifically, see\n`stack.Options.AutoGenIPv6LinkLocal`.\n\nTests: Tests to make sure that the IPb6 link-local address is only\nauto-generated if the stack is specifically configured to do so. Also tests to\nmake sure that an auto-generated address goes through the DAD process.\nPiperOrigin-RevId: 276059813\n"
    },
    {
      "commit": "15e69a7a21af2508c7c2dfe97c263c661cf37b49",
      "tree": "3630d298c4091e164f7642ab85c01a63633adeaa",
      "parents": [
        "1d290fb9066eb45fa4f29706d81a59d8b7662801"
      ],
      "author": {
        "name": "Kevin Krakauer",
        "email": "krakauer@google.com",
        "time": "Mon Oct 21 13:21:58 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Oct 21 13:22:27 2019 -0700"
      },
      "message": "AF_PACKET support for netstack (aka epsocket).\n\nLike (AF_INET, SOCK_RAW) sockets, AF_PACKET sockets require CAP_NET_RAW. With\nrunsc, you\u0027ll need to pass `--net-raw\u003dtrue` to enable them.\n\nBinding isn\u0027t supported yet.\n\nPiperOrigin-RevId: 275909366\n"
    },
    {
      "commit": "1d290fb9066eb45fa4f29706d81a59d8b7662801",
      "tree": "04ae195a82c054e9e31b3fa4304b970a7df32e5f",
      "parents": [
        "108c2617cb966d2c450f367ae87297c2a4bc4c78"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Oct 18 16:12:48 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Oct 18 16:13:14 2019 -0700"
      },
      "message": "Store primary endpoints in a slice\n\nThere\u0027s no need for a linked list here.\n\nPiperOrigin-RevId: 275565920\n"
    },
    {
      "commit": "108c2617cb966d2c450f367ae87297c2a4bc4c78",
      "tree": "8cad3ba04d9db2cdd5384c7f5bc32b38d9002a01",
      "parents": [
        "948f596d84b9065758710da30aab1d330e1e1c55"
      ],
      "author": {
        "name": "Mithun Iyer",
        "email": "iyerm@google.com",
        "time": "Fri Oct 18 15:58:40 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Oct 18 15:59:11 2019 -0700"
      },
      "message": "Fix typo while initializing protocol for UDP endpoints.\n\nFixes #763\n\nPiperOrigin-RevId: 275563222\n"
    },
    {
      "commit": "ab5ffb230cb6e433f4a60fabdac14563788f207f",
      "tree": "03916dd721ebfe635d7b190f296d1e47f64da82e",
      "parents": [
        "6d4bbead0465f0ff8f82d98c8007017323ea7106",
        "948f596d84b9065758710da30aab1d330e1e1c55"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Oct 18 17:04:41 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Oct 18 17:04:41 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: I4741f31b22bc5a1dedcd61adc5790dfd9c9ef779\n"
    },
    {
      "commit": "948f596d84b9065758710da30aab1d330e1e1c55",
      "tree": "0817223ee42d062274105d400f1de182cf35dc43",
      "parents": [
        "484dce7fc7091c44da63e4ca3d7bb9bf5975c94e"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Oct 18 14:02:52 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Oct 18 14:03:25 2019 -0700"
      },
      "message": "Remove restrictions on the sending address\n\nIt is quite legal to send from the ANY address (it is required for\nDHCP). I can\u0027t figure out why the broadcast address was included here,\nso removing that as well.\n\nPiperOrigin-RevId: 275541954\n"
    },
    {
      "commit": "484dce7fc7091c44da63e4ca3d7bb9bf5975c94e",
      "tree": "86304f2ea12fdc224f241816ff2b884d080c6757",
      "parents": [
        "e04df1b027d882c71cf63a5e886a496926dde5a0"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Thu Oct 17 13:05:03 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Oct 17 13:05:42 2019 -0700"
      },
      "message": "NDP Neighbor Solicitations sent during DAD must have an IP hop limit of 255\n\nNDP Neighbor Solicitations sent during Duplicate Address Detection must have an\nIP hop limit of 255, as all NDP Neighbor Solicitations should have.\n\nTest: Test that DAD messages have the IPv6 hop limit field set to 255.\nPiperOrigin-RevId: 275321680\n"
    },
    {
      "commit": "e04df1b027d882c71cf63a5e886a496926dde5a0",
      "tree": "cbb656c70c7b4f28b29e3e477325100a2bd6f54c",
      "parents": [
        "8a0ff5749a2c032f6a1cba9f2a5b9f03a3ac70d3"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Wed Oct 16 22:53:20 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Oct 16 22:53:55 2019 -0700"
      },
      "message": "Do Duplicate Address Detection on permanent IPv6 addresses.\n\nThis change adds support for Duplicate Address Detection on IPv6 addresses\nas defined by RFC 4862 section 5.4.\n\nNote, this change will not break existing uses of netstack as the default\nconfiguration for the stack options is set in such a way that DAD will not be\nperformed. See `stack.Options` and `stack.NDPConfigurations` for more details.\n\nTests: Tests to make sure that the DAD process properly resolves or fails.\nThat is, tests make sure that DAD resolves only if:\n  - No other node is performing DAD for the same address\n  - No other node owns the same address\nPiperOrigin-RevId: 275189471\n"
    },
    {
      "commit": "8a0ff5749a2c032f6a1cba9f2a5b9f03a3ac70d3",
      "tree": "165061382b5f3fbb9597a088f2f61d7b1709320f",
      "parents": [
        "d2dba94a4c22208fb1266b8bd695515b6f02bcfa"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Tue Oct 15 17:03:13 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Oct 15 17:03:44 2019 -0700"
      },
      "message": "Remove panic when reassembly fails.\n\nReassembly can fail due to an invalid sequence of fragments\nbeing received. eg. Multiple fragments with same id which\nclaim to be the last one by setting the more flag to 0 etc.\nIt\u0027s safer to just drop the reassembler and increment a metric\nthan to panic when reassembly fails.\n\nPiperOrigin-RevId: 274920901\n"
    },
    {
      "commit": "6d4bbead0465f0ff8f82d98c8007017323ea7106",
      "tree": "4bcf4975d21e2b9469045a6da0475f39dcd44583",
      "parents": [
        "74a0667146c850fcd6388cba36cc387d4f2072a4",
        "d2dba94a4c22208fb1266b8bd695515b6f02bcfa"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Tue Oct 15 16:21:33 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Tue Oct 15 16:21:33 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: I76d0405304d5fbe420a4b924a2b86dfff1ad94f5\n"
    },
    {
      "commit": "d2dba94a4c22208fb1266b8bd695515b6f02bcfa",
      "tree": "17e89ad78acc32e7b1b2efcf1dd63b9db90168a0",
      "parents": [
        "f16afe66888aeda750529d8d7d891bc3a365e221"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Tue Oct 15 12:41:57 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Oct 15 12:42:23 2019 -0700"
      },
      "message": "Set NDP hop limit in accordance with RFC 4861\n\n...and do not populate link address cache at dispatch. This partially\nreverts 313c767b0001bf6271405f1b765b60a334d6e911, which caused malformed\npackets (e.g. NDP Neighbor Adverts with incorrect hop limit values) to\npopulate the address cache. In particular, this masked a bug that was\nintroduced to the Neighbor Advert generation code in\n7c1587e3401a010d1865df61dbaf117c77dd062e.\n\nPiperOrigin-RevId: 274865182\n"
    },
    {
      "commit": "f16afe66888aeda750529d8d7d891bc3a365e221",
      "tree": "20851c28b99e3464523e0308159846d8fcc0a9fd",
      "parents": [
        "a9435b35fca0897d0593f764f3ea7d519e2d2147"
      ],
      "author": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Oct 14 17:45:29 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Oct 14 17:45:58 2019 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 274700093\n"
    },
    {
      "commit": "74a0667146c850fcd6388cba36cc387d4f2072a4",
      "tree": "967ba59b65daba541309fd6a9742d04fbffe373c",
      "parents": [
        "8e57818ee74c32a78cae6bfcf663dffd23236510",
        "a9435b35fca0897d0593f764f3ea7d519e2d2147"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Mon Oct 14 16:49:18 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Mon Oct 14 16:49:18 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: I4967959ff0f725019734eee773e64613ef88f63b\n"
    },
    {
      "commit": "a9435b35fca0897d0593f764f3ea7d519e2d2147",
      "tree": "0ebabd48616907d85d3df7cdec4e030ea03a1a9e",
      "parents": [
        "ec95ff307ca042ef8c642607ba5c471e5eec4999"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Mon Oct 14 12:49:50 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Oct 14 13:00:26 2019 -0700"
      },
      "message": "Use a different fanoutID for each new fdbased endpoint.\n\nPiperOrigin-RevId: 274638272\n"
    },
    {
      "commit": "ec95ff307ca042ef8c642607ba5c471e5eec4999",
      "tree": "5965c690a627eb363f453b2ac3b63620779d3225",
      "parents": [
        "b298b28eb88517b942ffa4d37b49567ab68b0cd3"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Thu Oct 10 15:13:39 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Oct 10 15:14:14 2019 -0700"
      },
      "message": "Fix bugs in fragment handling.\n\nStrengthen the header.IPv4.IsValid check to correctly check\nfor IHL/TotalLength fields. Also add a check to make sure\nfragmentOffsets + size of the fragment do not cause a wrap\naround for the end of the fragment.\n\nPiperOrigin-RevId: 274049313\n"
    },
    {
      "commit": "b298b28eb88517b942ffa4d37b49567ab68b0cd3",
      "tree": "a45c45e558a13e9d05e6596bbdd7699680373c24",
      "parents": [
        "964b57cc9e6e2d40b99d259eed13065b0b216e31"
      ],
      "author": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Oct 09 17:54:51 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Oct 09 17:55:19 2019 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 273861936\n"
    },
    {
      "commit": "964b57cc9e6e2d40b99d259eed13065b0b216e31",
      "tree": "d8ed9a4fd4951cfd4bc35a7c8d389e99ad5f6382",
      "parents": [
        "f13dfd5dc0dc2535d025c04ae0b55c7a233a7a8f"
      ],
      "author": {
        "name": "xiaobo55x",
        "email": "Haibo.Xu@arm.com",
        "time": "Tue Oct 08 21:09:45 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Oct 08 21:10:10 2019 -0700"
      },
      "message": "Enable pkg/sleep support on arm64.\n\nSigned-off-by: Haibo Xu \u003chaibo.xu@arm.com\u003e\nChange-Id: I9071e698c1f222e0fdf3b567ec4cbd97f0a8dde9\nPiperOrigin-RevId: 273668431\n"
    },
    {
      "commit": "f13dfd5dc0dc2535d025c04ae0b55c7a233a7a8f",
      "tree": "d66a97f110eee29524379b1fb2372fd8b8896e14",
      "parents": [
        "1f16905240981262236d03c7879147b3a4e9944e"
      ],
      "author": {
        "name": "Ian Gudger",
        "email": "igudger@google.com",
        "time": "Mon Oct 07 19:28:26 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Oct 07 19:28:57 2019 -0700"
      },
      "message": "Implement IP_TTL.\n\nAlso change the default TTL to 64 to match Linux.\n\nPiperOrigin-RevId: 273430341\n"
    },
    {
      "commit": "1f16905240981262236d03c7879147b3a4e9944e",
      "tree": "135ed6c508010bfe759f8f85cb49eca48fbb4e75",
      "parents": [
        "8331aa64840ea66cfd7a64b2d09c04992e751787"
      ],
      "author": {
        "name": "Chris Kuiper",
        "email": "ckuiper@google.com",
        "time": "Thu Oct 03 19:30:01 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Oct 03 19:40:41 2019 -0700"
      },
      "message": "Implement proper local broadcast behavior\n\nThe behavior for sending and receiving local broadcast (255.255.255.255)\ntraffic is as follows:\n\nOutgoing\n--------\n* A broadcast packet sent on a socket that is bound to an interface goes out\n  that interface\n* A broadcast packet sent on an unbound socket follows the route table to\n  select the outgoing interface\n  + if an explicit route entry exists for 255.255.255.255/32, use that one\n  + else use the default route\n* Broadcast packets are looped back and delivered following the rules for\n  incoming packets (see next). This is the same behavior as for multicast\n  packets, except that it cannot be disabled via sockopt.\n\nIncoming\n--------\n* Sockets wishing to receive broadcast packets must bind to either INADDR_ANY\n  (0.0.0.0) or INADDR_BROADCAST (255.255.255.255). No other socket receives\n  broadcast packets.\n* Broadcast packets are multiplexed to all sockets matching it. This is the\n  same behavior as for multicast packets.\n* A socket can bind to 255.255.255.255:\u003cport\u003e and then receive its own\n  broadcast packets sent to 255.255.255.255:\u003cport\u003e\n\nIn addition, this change implicitly fixes an issue with multicast reception. If\ntwo sockets want to receive a given multicast stream and one is bound to ANY\nwhile the other is bound to the multicast address, only one of them will\nreceive the traffic.\n\nPiperOrigin-RevId: 272792377\n"
    },
    {
      "commit": "8331aa64840ea66cfd7a64b2d09c04992e751787",
      "tree": "6f1cc00cd44bc6135f02d7809744510137dbf3c2",
      "parents": [
        "d1c0df123b3b3afef7df9a9a08cda4601ed751d8"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Mon Sep 30 15:51:35 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Sep 30 15:52:03 2019 -0700"
      },
      "message": "Add a Stringer implementation to PacketDispatchMode\n\nPiperOrigin-RevId: 272083936\n"
    },
    {
      "commit": "d1c0df123b3b3afef7df9a9a08cda4601ed751d8",
      "tree": "9ef66f0751ef2c31ffd1135f542b5ebeb5a531e4",
      "parents": [
        "37d7a98dc6f6a342b87e8be506ffa30b2dbd8e2b"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Mon Sep 30 13:54:03 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Sep 30 13:54:29 2019 -0700"
      },
      "message": "Fix bugs in PickEphemeralPort for TCP.\n\nNetstack always picks a random start point everytime PickEphemeralPort\nis called. While this is required for UDP so that DNS requests go\nout through a randomized set of ports it is not required for TCP. Infact\nLinux explicitly hashes the (srcip, dstip, dstport) and a one time secret\ninitialized at start of the application to get a random offset. But to\nensure it doesn\u0027t start from the same point on every scan it uses a static\nhint that is incremented by 2 in every call to pick ephemeral ports.\n\nThe reason for 2 is Linux seems to split the port ranges where active connects\nseem to use even ones while odd ones are used by listening sockets.\n\nThis CL implements a similar strategy where we use a hash + hint to generate\nthe offset to start the search for a free Ephemeral port.\n\nThis ensures that we cycle through the available port space in order for\nrepeated connects to the same destination and significantly reduces the\nchance of picking a recently released port.\n\nPiperOrigin-RevId: 272058370\n"
    },
    {
      "commit": "37d7a98dc6f6a342b87e8be506ffa30b2dbd8e2b",
      "tree": "63300817ccff1532582cab9ed5a30ab2349cf1f2",
      "parents": [
        "02f51d8751bb5287701c2f4af6eeb1b6e44c3084"
      ],
      "author": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Sep 27 14:12:35 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Sep 27 14:13:11 2019 -0700"
      },
      "message": "Implement SO_BINDTODEVICE sockopt\n\nPiperOrigin-RevId: 271644926\n"
    },
    {
      "commit": "8e57818ee74c32a78cae6bfcf663dffd23236510",
      "tree": "5d6bf85ac91beb85f3df3db38f8b54980e38b487",
      "parents": [
        "7d933b4e604bdf7fe11e6586010eef0ca5ce0ee9",
        "49820faa35c884822096285d95492bcbd535006f"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Thu Sep 26 10:47:53 2019 +0000"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Thu Sep 26 10:47:53 2019 +0000"
      },
      "message": "Merge \"Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\""
    },
    {
      "commit": "49820faa35c884822096285d95492bcbd535006f",
      "tree": "5d6bf85ac91beb85f3df3db38f8b54980e38b487",
      "parents": [
        "9ba2fdab0e13fbb95949b14af564e3549a02936d",
        "02f51d8751bb5287701c2f4af6eeb1b6e44c3084"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Thu Sep 26 06:45:31 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Thu Sep 26 06:45:31 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: Ie17f317c7a3c1d1fcd807687927bc4f17312dadd\n"
    },
    {
      "commit": "02f51d8751bb5287701c2f4af6eeb1b6e44c3084",
      "tree": "0a4cb92715af9042a5cd0e910f9acc2d88b6996b",
      "parents": [
        "3de8da15996dc57aaa4c891c66f3f67ce7eaefae"
      ],
      "author": {
        "name": "Kevin Krakauer",
        "email": "krakauer@google.com",
        "time": "Wed Sep 25 12:56:00 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Sep 25 12:56:32 2019 -0700"
      },
      "message": "Remove centralized registration of protocols.\n\nAlso removes the need for protocol names.\n\nPiperOrigin-RevId: 271186030\n"
    },
    {
      "commit": "3de8da15996dc57aaa4c891c66f3f67ce7eaefae",
      "tree": "71ceff57cde20c4dc2325973ae351fe06ca9638a",
      "parents": [
        "31f8eaa34db03a4e4fd470b516c14dde13f6f4a7"
      ],
      "author": {
        "name": "Chris Kuiper",
        "email": "ckuiper@google.com",
        "time": "Tue Sep 24 13:18:19 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Sep 24 13:20:42 2019 -0700"
      },
      "message": "Return only primary addresses in Stack.NICInfo()\n\nNon-primary addresses are used for endpoints created to accept multicast and\nbroadcast packets, as well as \"helper\" endpoints (0.0.0.0) that allow sending\npackets when no proper address has been assigned yet (e.g., for DHCP). These\naddresses are not real addresses from a user point of view and should not be\npart of the NICInfo() value. Also see b/127321246 for more info.\n\nThis switches NICInfo() to call a new NIC.PrimaryAddresses() function. To still\nallow an option to get all addresses (mostly for testing) I added\nStack.GetAllAddresses() and NIC.AllAddresses().\n\nIn addition, the return value for GetMainNICAddress() was changed for the case\nwhere the NIC has no primary address. Instead of returning an error here,\nit now returns an empty AddressWithPrefix() value. The rational for this\nchange is that it is a valid case for a NIC to have no primary addresses.\n\nLastly, I refactored the code based on the new additions.\n\nPiperOrigin-RevId: 270971764\n"
    },
    {
      "commit": "31f8eaa34db03a4e4fd470b516c14dde13f6f4a7",
      "tree": "227b86147d5bdf99f9cc8af9ea1de6ed6db30c80",
      "parents": [
        "d1ea2f91c7f724c94a452bc35cdf641a6e42040e"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Tue Sep 24 09:49:28 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Sep 24 09:50:02 2019 -0700"
      },
      "message": "Simplify ICMPRateLimiter\n\nhttps://github.com/golang/time/commit/c4c64ca added SetBurst upstream.\n\nPiperOrigin-RevId: 270925077\n"
    },
    {
      "commit": "d1ea2f91c7f724c94a452bc35cdf641a6e42040e",
      "tree": "cea953f705a3f3ddbc2adb2f51c181b0f7edf5cd",
      "parents": [
        "813403db5c5eae34d277f3c5eec56015db1433da"
      ],
      "author": {
        "name": "Andrei Vagin",
        "email": "avagin@google.com",
        "time": "Mon Sep 23 14:37:39 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Sep 23 14:38:09 2019 -0700"
      },
      "message": "netstack: convert more socket options to {Set,Get}SockOptInt\n\nPiperOrigin-RevId: 270763208\n"
    },
    {
      "commit": "813403db5c5eae34d277f3c5eec56015db1433da",
      "tree": "baabd5411fd7fcdedfd6562c995b12e0625bfd98",
      "parents": [
        "74aeafee4688187d4d2c5ec6c5f4a7a07274494a"
      ],
      "author": {
        "name": "Ian Gudger",
        "email": "igudger@google.com",
        "time": "Fri Sep 20 14:08:46 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Sep 20 14:09:17 2019 -0700"
      },
      "message": "Allow waiting for LinkEndpoint worker goroutines to finish.\n\nPreviously, the only safe way to use an fdbased endpoint was to leak the FD.\nThis change makes it possible to safely close the FD.\n\nThis is the first step towards having stoppable stacks.\n\nUpdates #837\n\nPiperOrigin-RevId: 270346582\n"
    },
    {
      "commit": "74aeafee4688187d4d2c5ec6c5f4a7a07274494a",
      "tree": "5345c97f38076cf8f406b8aab129ca89780abb92",
      "parents": [
        "a5288d846e752f0cae6c6d8b4da037918d0bd6f9"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Tue Sep 17 14:45:41 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Sep 17 14:46:07 2019 -0700"
      },
      "message": "Automated rollback of changelist 268047073\n\nPiperOrigin-RevId: 269658971\n"
    },
    {
      "commit": "a5288d846e752f0cae6c6d8b4da037918d0bd6f9",
      "tree": "1ee682397ec99ec5853c4b65da2456f6831b2786",
      "parents": [
        "1b48a0328e573531aafb37fcc9b08e1a0f5dd162"
      ],
      "author": {
        "name": "Ian Gudger",
        "email": "igudger@google.com",
        "time": "Tue Sep 17 11:29:03 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Sep 17 11:29:36 2019 -0700"
      },
      "message": "Update remaining users of LinkEndpoints to not refer to them as an ID.\n\nPiperOrigin-RevId: 269614517\n"
    },
    {
      "commit": "1b48a0328e573531aafb37fcc9b08e1a0f5dd162",
      "tree": "b886c0420f885d7c4baaeb29d8dd5308813dad8e",
      "parents": [
        "3587e1c938e0581b42a8ed862b26ceae07f49eee"
      ],
      "author": {
        "name": "Adin Scannell",
        "email": "ascannell@google.com",
        "time": "Thu Sep 12 17:42:14 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Sep 12 17:42:47 2019 -0700"
      },
      "message": "Implement splice methods for pipes and sockets.\n\nThis also allows the tee(2) implementation to be enabled, since dup can now be\nproperly supported via WriteTo.\n\nNote that this change necessitated some minor restructoring with the\nfs.FileOperations splice methods. If the *fs.File is passed through directly,\nthen only public API methods are accessible, which will deadlock immediately\nsince the locking is already done by fs.Splice. Instead, we pass through an\nabstract io.Reader or io.Writer, which elide locks and use the underlying\nfs.FileOperations directly.\n\nPiperOrigin-RevId: 268805207\n"
    },
    {
      "commit": "3587e1c938e0581b42a8ed862b26ceae07f49eee",
      "tree": "ba03cee112ef7fb1a8911f6476eaa91e43dddcc3",
      "parents": [
        "cf1e44a60ad56cc81894415b79456f3a3706b048"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Thu Sep 12 13:50:58 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Sep 12 13:51:25 2019 -0700"
      },
      "message": "Automated rollback of changelist 268047073\n\nPiperOrigin-RevId: 268757842\n"
    },
    {
      "commit": "cf1e44a60ad56cc81894415b79456f3a3706b048",
      "tree": "626c4ce1f68277e2d47d489ffc27aaf6d873240d",
      "parents": [
        "74095258933af0be272a8faa0e6a9c8502e0c6ed"
      ],
      "author": {
        "name": "Ian Gudger",
        "email": "igudger@google.com",
        "time": "Mon Sep 09 14:00:51 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Sep 09 14:01:18 2019 -0700"
      },
      "message": "Fix ephemeral port leak.\n\nFix a bug where udp.(*endpoint).Disconnect [accessible in gVisor via\nepsocket.(*SocketOperations).Connect with AF_UNSPEC] would leak a port\nreservation if the socket/endpoint had an ephemeral port assigned to it.\n\nglibc\u0027s getaddrinfo uses connect with AF_UNSPEC, causing each call of\ngetaddrinfo to leak a port. Call getaddrinfo too many times and you run out of\nports (shows up as connect returning EAGAIN and getaddrinfo returning\nEAI_NONAME \"Name or service not known\").\n\nPiperOrigin-RevId: 268071160\n"
    },
    {
      "commit": "74095258933af0be272a8faa0e6a9c8502e0c6ed",
      "tree": "5a27974e687d5c647c0a82ccd1c3f7fde307d858",
      "parents": [
        "b0da8833b4843fed8e98b9243ab0c6ab3e310995"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Mon Sep 09 12:04:33 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Sep 09 12:05:02 2019 -0700"
      },
      "message": "Join IPv6 all-nodes and solicited-node multicast addresses where appropriate.\n\nThe IPv6 all-nodes multicast address will be joined on NIC enable, and the\nappropriate IPv6 solicited-node multicast address will be joined when IPv6\naddresses are added.\n\nTests: Test receiving packets destined to the IPv6 link-local all-nodes\nmulticast address and the IPv6 solicted node address of an added IPv6 address.\nPiperOrigin-RevId: 268047073\n"
    },
    {
      "commit": "b0da8833b4843fed8e98b9243ab0c6ab3e310995",
      "tree": "a23a64dc33d268084e8617066e9d3b63afc9a1e2",
      "parents": [
        "a7a3d49150633c048556fd87bc9fbf0c47d9b9e7"
      ],
      "author": {
        "name": "Ian Gudger",
        "email": "igudger@google.com",
        "time": "Fri Sep 06 17:59:46 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Sep 06 18:00:11 2019 -0700"
      },
      "message": "Remove reundant global tcpip.LinkEndpointID.\n\nPiperOrigin-RevId: 267709597\n"
    },
    {
      "commit": "a7a3d49150633c048556fd87bc9fbf0c47d9b9e7",
      "tree": "996701b875af02330ebb01ef908d561d22b86bd2",
      "parents": [
        "3176446aa7dac099291e526ba36fedf9f2f86ba6"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Wed Sep 04 14:58:32 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Sep 04 14:58:57 2019 -0700"
      },
      "message": "Fix RST generation bugs.\n\nThere are a few cases addressed by this change\n\n- We no longer generate a RST in response to a RST packet.\n\n- When we receive a RST we cleanup and release all reservations immediately as\n  the connection is now aborted.\n\n- An ACK received by a listening socket generates a RST when SYN cookies are not\n  in-use. The only reason an ACK should land at the listening socket is if we\n  are using SYN cookies otherwise the goroutine for the handshake in progress\n  should have gotten the packet and it should never have arrived at the\n  listening endpoint.\n\n- Also fixes the error returned when a connection times out due to a\n  Keepalive timer expiration from ECONNRESET to a ETIMEDOUT.\n\nPiperOrigin-RevId: 267238427\n"
    },
    {
      "commit": "3176446aa7dac099291e526ba36fedf9f2f86ba6",
      "tree": "d2a8eca99270e47f9edc662d8a3c9d6e5055361f",
      "parents": [
        "80dd6e8dc3a8436a5b0341fbad8fa3bc83ece203"
      ],
      "author": {
        "name": "Chris Kuiper",
        "email": "ckuiper@google.com",
        "time": "Wed Sep 04 14:18:02 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Sep 04 14:18:28 2019 -0700"
      },
      "message": "Handle subnet and broadcast addresses correctly with NIC.subnets\n\nThis also renames \"subnet\" to \"addressRange\" to avoid any more confusion with\nan interface IP\u0027s subnet.\n\nLastly, this also removes the Stack.ContainsSubnet(..) API since it isn\u0027t used\nby anyone. Plus the same information can be obtained from\nStack.NICAddressRanges().\n\nPiperOrigin-RevId: 267229843\n"
    },
    {
      "commit": "80dd6e8dc3a8436a5b0341fbad8fa3bc83ece203",
      "tree": "1be95463e56c01f1c0555626de47995802e5afe0",
      "parents": [
        "232969fa1cc8dbbf84b725729098f82229fe4f0b"
      ],
      "author": {
        "name": "Ghanan Gowripalan",
        "email": "ghanan@google.com",
        "time": "Tue Sep 03 18:41:40 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Sep 03 18:42:01 2019 -0700"
      },
      "message": "Validate IPv6 Hop Limit field for received NDP packets\n\nMake sure that NDP packets are only received if their IP header\u0027s hop limit\nfield is set to 255, as per RFC 4861.\n\nPiperOrigin-RevId: 267061457\n"
    },
    {
      "commit": "232969fa1cc8dbbf84b725729098f82229fe4f0b",
      "tree": "c4f199dc4a408b3e05e5e005f4deff9536a1260d",
      "parents": [
        "ad398967898d3b8d20869278a10b025c36c97298"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Tue Sep 03 15:59:58 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Sep 03 16:00:27 2019 -0700"
      },
      "message": "Make UDP traceroute work.\n\nAdds support to generate Port Unreachable messages for UDP\ndatagrams received on a port for which there is no valid\nendpoint.\n\nFixes #703\n\nPiperOrigin-RevId: 267034418\n"
    },
    {
      "commit": "ad398967898d3b8d20869278a10b025c36c97298",
      "tree": "5f0c0847f89886231e06cb4fd69d739ed1688c18",
      "parents": [
        "d4bbb0eab35eb6c78dd58fcee85508994b7b9b10"
      ],
      "author": {
        "name": "Haibo",
        "email": "Haibo.Xu@arm.com",
        "time": "Tue Sep 03 11:30:42 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Sep 03 11:31:08 2019 -0700"
      },
      "message": "Remove duplicated file in pkg/tcpip/link/rawfile.\n\nThe blockingpoll_unsafe.go was copied to blockingpoll_noyield_unsafe.go\nduring merging commit 7206202bb9439499. If it still stay here, it would\ncause build errors on non-amd64 platform.\n\nERROR:\npkg/tcpip/link/rawfile/BUILD:5:1:\nGoCompilePkg\npkg/tcpip/link/rawfile.a\nfailed (Exit 1) builder failed: error executing command\nbazel-out/host/bin/external/go_sdk/builder compilepkg -sdk\nexternal/go_sdk -installsuffix linux_arm64 -src\npkg/tcpip/link/rawfile/blockingpoll_noyield_unsafe.go -src ...\n(remaining 33 argument(s) skipped)\n\nUse --sandbox_debug to see verbose messages from the sandbox\ncompilepkg: error running subcommand: exit status 2\npkg/tcpip/link/rawfile/blockingpoll_yield_unsafe.go:35:6:\nBlockingPoll redeclared in this block\n        previous declaration at\npkg/tcpip/link/rawfile/blockingpoll_unsafe.go:26:78\nTarget //pkg/tcpip/link/rawfile:rawfile failed to build\nUse --verbose_failures to see the command lines of failed build steps.\nINFO: Elapsed time: 25.531s, Critical Path: 21.08s\nINFO: 262 processes: 262 linux-sandbox.\nFAILED: Build did NOT complete successfully\n\nSigned-off-by: Haibo Xu \u003chaibo.xu@arm.com\u003e\nChange-Id: I4e21f82984225d0aa173de456f7a7c66053a053e\nPiperOrigin-RevId: 266976315\n"
    },
    {
      "commit": "d4bbb0eab35eb6c78dd58fcee85508994b7b9b10",
      "tree": "fa6eea3f7e9fad7dc1098f7c3825e7e5e78ca863",
      "parents": [
        "154869c8b4c38015b4a1d4eb03b4d9c6946ab998"
      ],
      "author": {
        "name": "Chris Kuiper",
        "email": "ckuiper@google.com",
        "time": "Fri Aug 30 17:18:05 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Aug 30 17:18:32 2019 -0700"
      },
      "message": "Fix data race accessing referencedNetworkEndpoint.kind\n\nWrapping \"kind\" into atomic access functions.\n\nFixes #789\n\nPiperOrigin-RevId: 266485501\n"
    },
    {
      "commit": "154869c8b4c38015b4a1d4eb03b4d9c6946ab998",
      "tree": "dc75ba7b28466dc3533d435ad454229d53ce4ce2",
      "parents": [
        "94fb60fd787c1607c1742355a87725351ea4741b"
      ],
      "author": {
        "name": "Rahat Mahmood",
        "email": "rahat@google.com",
        "time": "Thu Aug 29 14:29:43 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Aug 29 14:30:12 2019 -0700"
      },
      "message": "Implement /proc/net/udp.\n\nPiperOrigin-RevId: 266229756\n"
    },
    {
      "commit": "7d933b4e604bdf7fe11e6586010eef0ca5ce0ee9",
      "tree": "6f09be4cffa7bd014bae0c954ec5db231721f575",
      "parents": [
        "fef71758cd7caed1e1c1438b9be16d9a87e6dd5e",
        "94fb60fd787c1607c1742355a87725351ea4741b"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Aug 28 18:04:40 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Aug 28 18:04:40 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: I96f48bb1f78d65a856f5ec008ce15dab78e67cc3\n"
    },
    {
      "commit": "94fb60fd787c1607c1742355a87725351ea4741b",
      "tree": "30641a03d1839063cd4ce572666e558fa1efb9bc",
      "parents": [
        "8ad5ca9918e0ff2e1983d631da38c3ab5588213d"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Aug 28 14:55:05 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Aug 28 14:55:30 2019 -0700"
      },
      "message": "Export generated linkAddrEntryEntry\n\nPiperOrigin-RevId: 266000128\n"
    },
    {
      "commit": "fef71758cd7caed1e1c1438b9be16d9a87e6dd5e",
      "tree": "22c6366d7a56f4047eb63d2b094c8b90d2139892",
      "parents": [
        "9ba2fdab0e13fbb95949b14af564e3549a02936d",
        "8ad5ca9918e0ff2e1983d631da38c3ab5588213d"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Aug 28 10:19:29 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Aug 28 10:19:29 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: Id3c90ecf27135f97e563c39d0b2288e3faf9dcf7\n"
    },
    {
      "commit": "8ad5ca9918e0ff2e1983d631da38c3ab5588213d",
      "tree": "8dc22d551bb9f6a2d1913ebe7134e273fc148d3f",
      "parents": [
        "51b3ef0bcaf31ba7056539172a2105c3176241b8"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Tue Aug 27 18:53:34 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Aug 27 18:54:00 2019 -0700"
      },
      "message": "Populate link address cache at dispatch\n\nThis allows the stack to learn remote link addresses on incoming\npackets, reducing the need to ARP to send responses.\n\nThis also reduces the number of round trips to the system clock,\nsince that may also prove to be performance-sensitive.\n\nFixes #739.\n\nPiperOrigin-RevId: 265815816\n"
    },
    {
      "commit": "51b3ef0bcaf31ba7056539172a2105c3176241b8",
      "tree": "6563add3bdb17928573ecd3104b4f50009ad7d49",
      "parents": [
        "904746c83919f38b5b378d5dbceca3eef6cd204c"
      ],
      "author": {
        "name": "Rahat Mahmood",
        "email": "rahat@google.com",
        "time": "Mon Aug 26 16:38:04 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Aug 26 16:38:40 2019 -0700"
      },
      "message": "netstack/tcp: Add LastAck transition.\n\nAdd missing state transition to LastAck, which should happen when the\nendpoint has already recieved a FIN from the remote side, and is\nsending its own FIN.\n\nPiperOrigin-RevId: 265568314\n"
    },
    {
      "commit": "904746c83919f38b5b378d5dbceca3eef6cd204c",
      "tree": "547a360966b5c07bb13dfb1428f6e0fd7b9956e3",
      "parents": [
        "552e0d20765700a9b05f9d9a6eaf887887eea6e0"
      ],
      "author": {
        "name": "Haibo",
        "email": "Haibo.Xu@arm.com",
        "time": "Mon Aug 26 14:02:31 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Aug 26 14:03:03 2019 -0700"
      },
      "message": "Enabling pkg/tcpip/link support on arm64.\n\nSigned-off-by: Haibo Xu \u003chaibo.xu@arm.com\u003e\nChange-Id: I39b0ef928c53ed318a0f1ff404d79d7e62e73d21\nPiperOrigin-RevId: 265534854\n"
    },
    {
      "commit": "9ba2fdab0e13fbb95949b14af564e3549a02936d",
      "tree": "da8fdba09d8897036ac9fac8a8a008871e30c1fd",
      "parents": [
        "9ccffd77a2c2caa190b4e2aaeb917686135ca519",
        "552e0d20765700a9b05f9d9a6eaf887887eea6e0"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Mon Aug 26 16:04:43 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Mon Aug 26 16:05:08 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: I618bf26dba1b62b530940feec76e7280858bfbb0\n"
    },
    {
      "commit": "552e0d20765700a9b05f9d9a6eaf887887eea6e0",
      "tree": "458fabde235814340a1a66f97629c63511cbb4d8",
      "parents": [
        "a24973aa5333c349b5de7ff615275d44150b25b0"
      ],
      "author": {
        "name": "Chris Kuiper",
        "email": "ckuiper@google.com",
        "time": "Mon Aug 26 12:28:26 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Aug 26 12:28:55 2019 -0700"
      },
      "message": "Prevent a network endpoint to send/rcv if its address was removed\n\nThis addresses the problem where an endpoint has its address removed but still\nhas outstanding references held by routes used in connected TCP/UDP sockets\nwhich prevent the removal of the endpoint.\n\nThe fix adds a new \"expired\" flag to the referenced network endpoint, which is\nset when an endpoint has its address removed. Incoming packets are not\ndelivered to an expired endpoint (unless in promiscuous mode), while sending\noutgoing packets triggers an error to the caller (unless in spoofing mode).\n\nIn addition, a few helper functions were added to stack_test.go to reduce\ncode duplications.\n\nPiperOrigin-RevId: 265514326\n"
    },
    {
      "commit": "a24973aa5333c349b5de7ff615275d44150b25b0",
      "tree": "bbc293b37fcd3dc74b00567158a05fc94e46f5ab",
      "parents": [
        "a6072d1308d28709ead0d61a5145d4eb1a2ed3a6"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Aug 23 10:42:53 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Aug 23 10:43:17 2019 -0700"
      },
      "message": "Implement fmt.Stringer on Route by value\n\nThis is more convenient, since it implements the interface for both\nvalue and pointer.\n\nPiperOrigin-RevId: 265086510\n"
    },
    {
      "commit": "a6072d1308d28709ead0d61a5145d4eb1a2ed3a6",
      "tree": "75d8fef390a9d993a9eec65c2f9c8b517859ee0c",
      "parents": [
        "9af8e409acfc27bd76f9d96891216d2cdfbf0341"
      ],
      "author": {
        "name": "Chris Kuiper",
        "email": "ckuiper@google.com",
        "time": "Wed Aug 21 22:53:07 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Aug 21 22:53:30 2019 -0700"
      },
      "message": "Support binding to multicast and broadcast addresses\n\nThis fixes the issue of not being able to bind to either a multicast or\nbroadcast address as well as to send and receive data from it. The way to solve\nthis is to treat these addresses similar to the ANY address and register their\ntransport endpoint ID with the global stack\u0027s demuxer rather than the NIC\u0027s.\nThat way there is no need to require an endpoint with that multicast or\nbroadcast address. The stack\u0027s demuxer is in fact the only correct one to use,\nbecause neither broadcast- nor multicast-bound sockets care which NIC a\npacket was received on (for multicast a join is still needed to receive packets\non a NIC).\n\nI also took the liberty of refactoring udp_test.go to consolidate a lot of\nduplicate code and make it easier to create repetitive tests that test the same\nfeature for a variety of packet and socket types. For this purpose I created a\n\"flowType\" that represents two things: 1) the type of packet being sent or\nreceived and 2) the type of socket used for the test. E.g., a \"multicastV4in6\"\nflow represents a V4-mapped multicast packet run through a V6-dual socket.\n\nThis allows writing significantly simpler tests. A nice example is testTTL().\n\nPiperOrigin-RevId: 264766909\n"
    },
    {
      "commit": "9af8e409acfc27bd76f9d96891216d2cdfbf0341",
      "tree": "c07d0649d9869cdb2cf754612d66438297dc4032",
      "parents": [
        "8d1386a7824fec6095b9dd5b8e0e0507ba3e4bed"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Aug 21 15:30:13 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Aug 21 15:30:43 2019 -0700"
      },
      "message": "Use tcpip.Subnet in tcpip.Route\n\nThis is the first step in replacing some of the redundant types with the\nstandard library equivalents.\n\nPiperOrigin-RevId: 264706552\n"
    },
    {
      "commit": "8d1386a7824fec6095b9dd5b8e0e0507ba3e4bed",
      "tree": "5418a055ea0d4f5ad9bd8ea04f17e9e9563d2ed2",
      "parents": [
        "3306d5d2ece40b274965862462fc3cdfe1ca92c3"
      ],
      "author": {
        "name": "Chris Kuiper",
        "email": "ckuiper@google.com",
        "time": "Tue Aug 20 23:27:29 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Aug 20 23:27:54 2019 -0700"
      },
      "message": "Add tcpip.Route.String and tcpip.AddressMask.Prefix\n\nPiperOrigin-RevId: 264544163\n"
    },
    {
      "commit": "3306d5d2ece40b274965862462fc3cdfe1ca92c3",
      "tree": "73070e0ed8c31e1a53280db3cac9c372952474b7",
      "parents": [
        "6496736d74827301ee1fe79484d0fbdacd367451"
      ],
      "author": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Aug 19 12:41:48 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Mon Aug 19 12:42:16 2019 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 264218306\n"
    },
    {
      "commit": "6496736d74827301ee1fe79484d0fbdacd367451",
      "tree": "986b5251927e86aae06aa211fdfd7c6289abd00f",
      "parents": [
        "cceb72395a63a73fec6e69783b67311794bfd7bf"
      ],
      "author": {
        "name": "Andrei Vagin",
        "email": "avagin@google.com",
        "time": "Fri Aug 16 19:30:59 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Aug 16 19:31:25 2019 -0700"
      },
      "message": "netstack: disconnect an unix socket only if the address family is AF_UNSPEC\n\nLinux allows to call connect for ANY and the zero port.\n\nPiperOrigin-RevId: 263892534\n"
    },
    {
      "commit": "cceb72395a63a73fec6e69783b67311794bfd7bf",
      "tree": "e2a387a36f3b2bf1693ada6fe82c05230712dd0b",
      "parents": [
        "7dd75c2bfd6a3d1a2ca504d38daee25cee551fbc"
      ],
      "author": {
        "name": "Chris Kuiper",
        "email": "ckuiper@google.com",
        "time": "Fri Aug 16 15:57:46 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Aug 16 15:58:12 2019 -0700"
      },
      "message": "Add subnet checking to NIC.findEndpoint and consolidate with NIC.getRef\n\nThis adds the same logic to NIC.findEndpoint that is already done in\nNIC.getRef. Since this makes the two functions very similar they were combined\ninto one with the originals being wrappers.\n\nPiperOrigin-RevId: 263864708\n"
    },
    {
      "commit": "9ccffd77a2c2caa190b4e2aaeb917686135ca519",
      "tree": "c6700aa25556c1b11f7cde3bfc9311d3e4413786",
      "parents": [
        "b79329c31103114020b8fc816eb71c8a45958c26",
        "7dd75c2bfd6a3d1a2ca504d38daee25cee551fbc"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Thu Aug 15 15:00:13 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Thu Aug 15 15:00:13 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: Id9c28804c2abcfbb43baa3835f7717690fc906e3\n"
    },
    {
      "commit": "7dd75c2bfd6a3d1a2ca504d38daee25cee551fbc",
      "tree": "3712260554382fa637e28bb5aedcfb33b052e4b8",
      "parents": [
        "640e5da0ee14b635935b9a55d7ad702f3bb8ac6f"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Thu Aug 15 11:12:28 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Aug 15 11:12:51 2019 -0700"
      },
      "message": "netstack: move resumption logic into *_state.go\n\n13a98df rearranged some of this code in a way that broke compilation of\nthe netstack-only export at github.com/google/netstack because\n*_state.go files are not included in that export.\n\nThis commit moves resumption logic back into *_state.go, fixing the\ncompilation breakage.\n\nPiperOrigin-RevId: 263601629\n"
    },
    {
      "commit": "640e5da0ee14b635935b9a55d7ad702f3bb8ac6f",
      "tree": "a75e7ba77424470e1cf11deb0db0b24dbe4c2672",
      "parents": [
        "0feae178847440dbd7f67a15e1a40ebf5f128f47"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Aug 14 16:04:41 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Aug 14 16:06:40 2019 -0700"
      },
      "message": "Replace uinptr with int64 when returning lengths\n\nThis is in accordance with newer parts of the standard library.\n\nPiperOrigin-RevId: 263449916\n"
    },
    {
      "commit": "0feae178847440dbd7f67a15e1a40ebf5f128f47",
      "tree": "4fc2c75050f50fbb04c427de9f88f6002aa696e7",
      "parents": [
        "30f3745e42780f4ee84c5193b002e5462a7b6c8c"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Aug 14 15:00:58 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Aug 14 15:01:21 2019 -0700"
      },
      "message": "Add tcpip.AddressWithPrefix.String\n\nPiperOrigin-RevId: 263436592\n"
    },
    {
      "commit": "30f3745e42780f4ee84c5193b002e5462a7b6c8c",
      "tree": "874c41d9585d16d0b0a68d650190b23963d8f5ef",
      "parents": [
        "cf5a2be90ed2ae6ee7ebda794d1a71fe6164bb30"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Wed Aug 14 14:33:11 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Aug 14 14:33:39 2019 -0700"
      },
      "message": "Improve SendMsg performance.\n\nSendMsg before this change would copy all the data over into a\nnew slice even if the underlying socket could only accept a\nsmall amount of data. This is really inefficient with non-blocking\nsockets and under high throughput where large writes could get\nErrWouldBlock or if there was say a timeout associated with the sendmsg()\nsyscall.\n\nWith this change we delay copying bytes in till they are needed and only\ncopy what can be potentially sent/held in the socket buffer. Reducing\nthe need to repeatedly copy data over.\n\nAlso a minor fix to change state FIN-WAIT-1 when shutdown(..., SHUT_WR) is called\ninstead of when we transmit the actual FIN. Otherwise the socket could remain in\nCONNECTED state even though the user has called shutdown() on the socket.\n\nUpdates #627\n\nPiperOrigin-RevId: 263430505\n"
    },
    {
      "commit": "cf5a2be90ed2ae6ee7ebda794d1a71fe6164bb30",
      "tree": "3d539d3df3883e2daddbeb630d899bac7fd56f55",
      "parents": [
        "5d36f9185f656094812205afb3bb6ac7c411372f"
      ],
      "author": {
        "name": "Ian Gudger",
        "email": "igudger@google.com",
        "time": "Tue Aug 13 12:09:48 2019 -0700"
      },
      "committer": {
        "name": "Nicolas Lacasse",
        "email": "nlacasse@google.com",
        "time": "Tue Aug 13 14:24:46 2019 -0700"
      },
      "message": "gonet: Replace NewPacketConn with DialUDP.\n\nThis better matches the standard library and allows creating connected\nPacketConns.\n\nPiperOrigin-RevId: 263187462\n"
    },
    {
      "commit": "5d36f9185f656094812205afb3bb6ac7c411372f",
      "tree": "9c1278f59fc7b82152db6f2ff4098b51a18f6ab8",
      "parents": [
        "ed2e11e979250149dca5ec1b9bf334a30769e3c0"
      ],
      "author": {
        "name": "Ian Gudger",
        "email": "igudger@google.com",
        "time": "Mon Aug 12 13:29:47 2019 -0700"
      },
      "committer": {
        "name": "Nicolas Lacasse",
        "email": "nlacasse@google.com",
        "time": "Tue Aug 13 14:24:28 2019 -0700"
      },
      "message": "Fix netstack build error on non-AMD64.\n\nThis stub had the wrong function signature.\n\nPiperOrigin-RevId: 262992682\n"
    },
    {
      "commit": "ed2e11e979250149dca5ec1b9bf334a30769e3c0",
      "tree": "7ddcdc3ff67ae54b477669b69d2b51aad542b40f",
      "parents": [
        "fbee7f4fa2270621c190c936ad25138bfd78de5b"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Fri Aug 09 14:49:05 2019 -0700"
      },
      "committer": {
        "name": "Nicolas Lacasse",
        "email": "nlacasse@google.com",
        "time": "Tue Aug 13 14:24:11 2019 -0700"
      },
      "message": "Add congestion control states to sender.\n\nThis change just introduces different congestion control states and\nensures the sender.state is updated to reflect the current state\nof the connection.\n\nIt is not used for any decisions yet but this is required before\nalgorithms like Eiffel/PRR can be implemented.\n\nFixes #394\n\nPiperOrigin-RevId: 262638292\n"
    },
    {
      "commit": "fbee7f4fa2270621c190c936ad25138bfd78de5b",
      "tree": "2c498daebc8f934540feb1e1afabd76593782f57",
      "parents": [
        "f10d90d8feede94312220ad9ec0c3c5a3e767c97"
      ],
      "author": {
        "name": "Rahat Mahmood",
        "email": "rahat@google.com",
        "time": "Thu Aug 08 12:32:00 2019 -0700"
      },
      "committer": {
        "name": "Nicolas Lacasse",
        "email": "nlacasse@google.com",
        "time": "Tue Aug 13 14:23:52 2019 -0700"
      },
      "message": "netstack: Don\u0027t start endpoint goroutines too soon on restore.\n\nEndpoint protocol goroutines were previously started as part of\nloading the endpoint. This is potentially too soon, as resources used\nby these goroutine may not have been loaded. Protocol goroutines may\nperform meaningful work as soon as they\u0027re started (ex: incoming\nconnect) which can cause them to indirectly access resources that\nhaven\u0027t been loaded yet.\n\nThis CL defers resuming all protocol goroutines until the end of\nrestore.\n\nPiperOrigin-RevId: 262409429\n"
    },
    {
      "commit": "f10d90d8feede94312220ad9ec0c3c5a3e767c97",
      "tree": "686e03c4d189d92d5a6237968b3653148d5af990",
      "parents": [
        "d583694e36bea9c5ced97678f7c21dbb11605bd2"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Aug 07 10:26:30 2019 -0700"
      },
      "committer": {
        "name": "Nicolas Lacasse",
        "email": "nlacasse@google.com",
        "time": "Tue Aug 13 14:23:33 2019 -0700"
      },
      "message": "Set target address in ARP Reply\n\nPiperOrigin-RevId: 262163794\n"
    },
    {
      "commit": "d583694e36bea9c5ced97678f7c21dbb11605bd2",
      "tree": "09423a51d3ff3c6f59ccfad79a48395d8b3bf6ba",
      "parents": [
        "4e5848a5423927b7de36f88fac380a2af3d36799"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Tue Aug 06 13:19:33 2019 -0700"
      },
      "committer": {
        "name": "Nicolas Lacasse",
        "email": "nlacasse@google.com",
        "time": "Tue Aug 13 14:23:16 2019 -0700"
      },
      "message": "Update Contributing/Readme for Netstack.\n\nPiperOrigin-RevId: 261980900\n"
    },
    {
      "commit": "4e5848a5423927b7de36f88fac380a2af3d36799",
      "tree": "86d21a4362e77a5c0c8b315edb2ef2e663f4d704",
      "parents": [
        "e9f200df47297a56ddc186771fc066bbd92413b1"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Tue Aug 06 10:59:49 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Aug 06 11:00:32 2019 -0700"
      },
      "message": "Fix for a panic due to writing to a closed accept channel.\n\nThis can happen because endpoint.Close() closes the accept channel first and\nthen drains/resets any accepted but not delivered connections. But there can be\nconnections that are connected but not delivered to the channel as the channel\nwas full. But closing the channel can cause these writes to fail with a write to\na closed channel.\n\nThe correct solution is to abort any connections in SYN-RCVD state and\ndrain/abort all completed connections before closing the accept channel.\n\nPiperOrigin-RevId: 261951132\n"
    },
    {
      "commit": "e9f200df47297a56ddc186771fc066bbd92413b1",
      "tree": "321f9fb6f4ee51cd51a5199a9dda18fee7df0db7",
      "parents": [
        "4d7c55d16e17169c39b4451988aa6be0616718dc"
      ],
      "author": {
        "name": "Kevin Krakauer",
        "email": "krakauer@google.com",
        "time": "Fri Aug 02 16:25:34 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Aug 02 16:26:14 2019 -0700"
      },
      "message": "Plumbing for iptables sockopts.\n\nPiperOrigin-RevId: 261413396\n"
    },
    {
      "commit": "4d7c55d16e17169c39b4451988aa6be0616718dc",
      "tree": "a64afd9480fc9f0591efe84dfe0eddf3ac938d37",
      "parents": [
        "dab2ef09dae0c18277efdad82f623afa361d841c"
      ],
      "author": {
        "name": "Rahat Mahmood",
        "email": "rahat@google.com",
        "time": "Fri Aug 02 12:51:23 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Aug 02 12:51:46 2019 -0700"
      },
      "message": "Automated rollback of changelist 261191548\n\nPiperOrigin-RevId: 261373749\n"
    },
    {
      "commit": "dab2ef09dae0c18277efdad82f623afa361d841c",
      "tree": "99f88ae21e73cb6988731af35f7a13dba621b855",
      "parents": [
        "f43f10f489df31f34f0f049fa1ed551b40565f08"
      ],
      "author": {
        "name": "Rahat Mahmood",
        "email": "rahat@google.com",
        "time": "Thu Aug 01 13:57:41 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Aug 01 13:58:19 2019 -0700"
      },
      "message": "Implement getsockopt(TCP_INFO).\n\nExport some readily-available fields for TCP_INFO and stub out the rest.\n\nPiperOrigin-RevId: 261191548\n"
    },
    {
      "commit": "b79329c31103114020b8fc816eb71c8a45958c26",
      "tree": "37ebfcf9c93b269346cf8343275f2959613be062",
      "parents": [
        "c92ff26693b49b6e98565fd7c2c9ee8305f133b7",
        "f43f10f489df31f34f0f049fa1ed551b40565f08"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Jul 31 16:39:12 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Jul 31 16:39:12 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: I4e209c0a716666bfe5d23ee75ac879966386d6f8\n"
    },
    {
      "commit": "f43f10f489df31f34f0f049fa1ed551b40565f08",
      "tree": "a64afd9480fc9f0591efe84dfe0eddf3ac938d37",
      "parents": [
        "92c355eb3069456fb31f9386d1d50a02eaffd652"
      ],
      "author": {
        "name": "Austin Kiekintveld",
        "email": "akiek@google.com",
        "time": "Wed Jul 31 11:25:25 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Jul 31 11:25:53 2019 -0700"
      },
      "message": "Fix ICMPv4 EchoReply packet checksum\n\nThe checksum was not being reset before being re-calculated and sent out.\nThis caused the sent checksum to always be `0x0800`.\n\nFixes #605.\n\nPiperOrigin-RevId: 260965059\n"
    },
    {
      "commit": "92c355eb3069456fb31f9386d1d50a02eaffd652",
      "tree": "77cd5ed0bc10dd252392110f585ebbdbc89859f0",
      "parents": [
        "d3e656311eceb2edba1e003242eee6ae80b8cdca"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Wed Jul 31 07:39:52 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Jul 31 07:40:22 2019 -0700"
      },
      "message": "Test connecting UDP sockets to the ANY address\n\nThis doesn\u0027t currently pass on gVisor.\n\nWhile I\u0027m here, fix a bug where connecting to the v6-mapped v4 address doesn\u0027t\nwork in gVisor.\n\nPiperOrigin-RevId: 260923961\n"
    },
    {
      "commit": "d3e656311eceb2edba1e003242eee6ae80b8cdca",
      "tree": "a27cd07885d6ac87158cb8f5022d39c01a52c48c",
      "parents": [
        "c041a2d3cd02aae5be0181f8b8e8d928d048988d"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Tue Jul 30 15:05:20 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Jul 30 15:05:49 2019 -0700"
      },
      "message": "Pass ProtocolAddress instead of its fields\n\nPiperOrigin-RevId: 260803517\n"
    },
    {
      "commit": "c041a2d3cd02aae5be0181f8b8e8d928d048988d",
      "tree": "909b3d0c15ec620a8e2fc93048231c7337d38ba2",
      "parents": [
        "bd29f38290adc0480bbfa21405f73b8e1f3e7989"
      ],
      "author": {
        "name": "Haibo Xu",
        "email": "haibo.xu@arm.com",
        "time": "Tue Jul 30 10:59:57 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Jul 30 11:00:29 2019 -0700"
      },
      "message": "Change syscall.POLL to syscall.PPOLL.\n\nsyscall.POLL is not supported on arm64, using syscall.PPOLL\nto support both the x86 and arm64. refs #63\n\nSigned-off-by: Haibo Xu \u003chaibo.xu@arm.com\u003e\nChange-Id: I2c81a063d3ec4e7e6b38fe62f17a0924977f505e\nPiperOrigin-RevId: 260752049\n"
    },
    {
      "commit": "c92ff26693b49b6e98565fd7c2c9ee8305f133b7",
      "tree": "e1e82f3e58a620527c3fe5b3513db674c5da3d01",
      "parents": [
        "8bc8f23629244f9bc332401ccc5016187a7022c8",
        "bd29f38290adc0480bbfa21405f73b8e1f3e7989"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Thu Jul 25 13:07:33 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Thu Jul 25 13:07:33 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: If4132247f4ee7a1709549a2bbcf52a343a784de2\n"
    },
    {
      "commit": "bd29f38290adc0480bbfa21405f73b8e1f3e7989",
      "tree": "2795ec9eb8abdccf0273c7ade10ac886c898c936",
      "parents": [
        "19f8a636a0ec317b5ba2b9524802947f5d7182c9"
      ],
      "author": {
        "name": "Chris Kuiper",
        "email": "ckuiper@google.com",
        "time": "Wed Jul 24 13:40:52 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Jul 24 13:41:23 2019 -0700"
      },
      "message": "Add support for a subnet prefix length on interface network addresses\n\nThis allows the user code to add a network address with a subnet prefix length.\nThe prefix length value is stored in the network endpoint and provided back to\nthe user in the ProtocolAddress type.\n\nPiperOrigin-RevId: 259807693\n"
    },
    {
      "commit": "8bc8f23629244f9bc332401ccc5016187a7022c8",
      "tree": "3f43bbf4fabac1bd3c0e145f090fdd875ee30621",
      "parents": [
        "581ec448ad57ef4846d58799f1f3e83a2103179d",
        "19f8a636a0ec317b5ba2b9524802947f5d7182c9"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Tue Jul 23 16:12:59 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Tue Jul 23 16:12:59 2019 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\nChange-Id: Iff22f2d14aca7943508873ed2188553ed2224255\n"
    },
    {
      "commit": "581ec448ad57ef4846d58799f1f3e83a2103179d",
      "tree": "f85a847933abf12fd6db8c071f65100bac8f48e9",
      "parents": [
        "5b79355f64e8cfd7a1d9d4bd1c5a34959ad86a94"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Jun 28 15:54:46 2019 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Tue Jul 23 20:12:32 2019 +0000"
      },
      "message": "Reland \"Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\"\n\nThis is a reland of 642ca71b9095dc0018e5d5ebec367d5aafcbf98f\n\nOriginal change\u0027s description:\n\u003e Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\u003e \n\u003e Change-Id: I83e74e1786dafcab7f189904b43ee0ae919f40c8\n\nChange-Id: Ic65f2e9f0665831f554617ecb490729c1b30d10d\n"
    },
    {
      "commit": "19f8a636a0ec317b5ba2b9524802947f5d7182c9",
      "tree": "55e56e61adc31c3ee8ac5dee937b6a9a97c804ed",
      "parents": [
        "b1069440d16160b2dad846fbd92937cda505d301"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Tue Jul 23 12:09:15 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Jul 23 12:09:41 2019 -0700"
      },
      "message": "Deduplicate EndpointState.connected some\n\nThis fixes a bug introduced in cl/251934850 that caused\nconnect-accept-close-connect races to result in the second connect call\nfailiing when it should have succeeded.\n\nPiperOrigin-RevId: 259584525\n"
    },
    {
      "commit": "b1069440d16160b2dad846fbd92937cda505d301",
      "tree": "94dde848812f5abf0f8ef93245607232b696fe8d",
      "parents": [
        "75dd5c19922ddfd05e1e29a5d8867d7dc2146a98"
      ],
      "author": {
        "name": "Chris Kuiper",
        "email": "ckuiper@google.com",
        "time": "Fri Jul 19 09:27:33 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Jul 19 09:28:00 2019 -0700"
      },
      "message": "Handle interfaceAddr and NIC options separately for IP_MULTICAST_IF\n\nThis tweaks the handling code for IP_MULTICAST_IF to ignore the InterfaceAddr\nif a NICID is given.\n\nPiperOrigin-RevId: 258982541\n"
    },
    {
      "commit": "75dd5c19922ddfd05e1e29a5d8867d7dc2146a98",
      "tree": "44f8771ee4ec326662c61fcc56c5994605e862fe",
      "parents": [
        "5d0ed1e274209e00da5fd0f22c27f33d54e8c4f0"
      ],
      "author": {
        "name": "Andrei Vagin",
        "email": "avagin@google.com",
        "time": "Thu Jul 18 15:39:47 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Thu Jul 18 15:40:17 2019 -0700"
      },
      "message": "net/tcp/setockopt: impelment setsockopt(fd, SOL_TCP, TCP_INQ)\n\nPiperOrigin-RevId: 258859507\n"
    },
    {
      "commit": "5d0ed1e274209e00da5fd0f22c27f33d54e8c4f0",
      "tree": "07ea63b7e6f55ab2d9a007173b48e3077c6d2564",
      "parents": [
        "c98312b0695950de5792905f3b897f6dd02dc682"
      ],
      "author": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Jul 16 13:02:30 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Tue Jul 16 13:03:05 2019 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 258424489\n"
    },
    {
      "commit": "c98312b0695950de5792905f3b897f6dd02dc682",
      "tree": "006aa3ae23ef2d65b993e1568645e817dfd42af6",
      "parents": [
        "f7c631ebfffe42f1df407bd18472bf833dd2e8d4"
      ],
      "author": {
        "name": "Kevin Krakauer",
        "email": "krakauer@google.com",
        "time": "Fri Jul 12 18:08:03 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Jul 12 18:08:30 2019 -0700"
      },
      "message": "Add IPPROTO_RAW, which allows raw sockets to write IP headers.\n\niptables also relies on IPPROTO_RAW in a way. It opens such a socket to\nmanipulate the kernel\u0027s tables, but it doesn\u0027t actually use any of the\nfunctionality. Blegh.\n\nPiperOrigin-RevId: 257903078\n"
    },
    {
      "commit": "f7c631ebfffe42f1df407bd18472bf833dd2e8d4",
      "tree": "784c2daee70085b33f769a9fe2840cd4f0649a27",
      "parents": [
        "67c87d7ff71cce418d8a2cbfab9f64a5739ad1cd"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Jul 12 16:17:18 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Jul 12 16:17:44 2019 -0700"
      },
      "message": "Check that IP headers contain correct version\n\nPiperOrigin-RevId: 257888338\n"
    },
    {
      "commit": "67c87d7ff71cce418d8a2cbfab9f64a5739ad1cd",
      "tree": "d1e5b97a62971cf10f5704dd5a28ced7b5e3af25",
      "parents": [
        "fe7dc3818d9b08d736b27c462a7de273c0fdbd27"
      ],
      "author": {
        "name": "Bhasker Hariharan",
        "email": "bhaskerh@google.com",
        "time": "Fri Jul 12 13:34:06 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Fri Jul 12 13:34:37 2019 -0700"
      },
      "message": "Stub out support for TCP_MAXSEG.\n\nAdds support to set/get the TCP_MAXSEG value but does not\nreally change the segment sizes emitted by netstack or\nalter the MSS advertised by the endpoint. This is currently\nbeing added only to unblock iperf3 on gVisor. Plumbing\nthis correctly requires a bit more work which will come\nin separate CLs.\n\nPiperOrigin-RevId: 257859112\n"
    },
    {
      "commit": "5b79355f64e8cfd7a1d9d4bd1c5a34959ad86a94",
      "tree": "8cbc34d12e97da62b9a74699e42c4b7d6cff7f95",
      "parents": [
        "642ca71b9095dc0018e5d5ebec367d5aafcbf98f"
      ],
      "author": {
        "name": "Tim Kilbourn",
        "email": "tkilbourn@google.com",
        "time": "Tue Jul 09 22:09:38 2019 +0000"
      },
      "committer": {
        "name": "Tim Kilbourn",
        "email": "tkilbourn@google.com",
        "time": "Tue Jul 09 22:09:58 2019 +0000"
      },
      "message": "Revert \"Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\"\n\nThis reverts commit 642ca71b9095dc0018e5d5ebec367d5aafcbf98f.\n\nAfter examining error codes from FLK-438, it appears that the TCP endpoint\nrefactoring in this CL is causing flakiness.\n\nOriginal change\u0027s description:\n\u003e Merge remote-tracking branch \u0027upstream/master\u0027 into HEAD\n\u003e\n\u003e Change-Id: I83e74e1786dafcab7f189904b43ee0ae919f40c8\n\nTBR\u003dtamird@google.com,eyalsoha@google.com\n\n# Not skipping CQ checks because original CL landed \u003e 1 day ago.\n\nChange-Id: Ifca7d9ebfb06d589e07566d8402d369089dfb980\n"
    },
    {
      "commit": "fe7dc3818d9b08d736b27c462a7de273c0fdbd27",
      "tree": "12e5a5493cf4eb71557e10eb38e98edfc1adc56a",
      "parents": [
        "3b9291f3d1452bd0d30c734ec7274c8d3646c733"
      ],
      "author": {
        "name": "Andrei Vagin",
        "email": "avagin@google.com",
        "time": "Wed Jul 03 13:57:24 2019 -0700"
      },
      "committer": {
        "name": "gVisor bot",
        "email": "gvisor-bot@google.com",
        "time": "Wed Jul 03 13:57:53 2019 -0700"
      },
      "message": "netstack/udp: connect with the AF_UNSPEC address family means disconnect\n\nPiperOrigin-RevId: 256433283\n"
    }
  ],
  "next": "3b9291f3d1452bd0d30c734ec7274c8d3646c733"
}
