)]}'
{
  "commit": "0fbe82e628c817e292ff588cd5847fc935e025f2",
  "tree": "cad44f26cb7fce8ba9c2ba294455b87a9d92c50b",
  "parents": [
    "58956317c8de52009d1a38a721474c24aef74fe7"
  ],
  "author": {
    "name": "yupeng",
    "email": "yupeng0921@gmail.com",
    "time": "Wed Dec 05 18:56:28 2018 -0800"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Fri Dec 07 16:11:54 2018 -0800"
  },
  "message": "net: call sk_dst_reset when set SO_DONTROUTE\n\nafter set SO_DONTROUTE to 1, the IP layer should not route packets if\nthe dest IP address is not in link scope. But if the socket has cached\nthe dst_entry, such packets would be routed until the sk_dst_cache\nexpires. So we should clean the sk_dst_cache when a user set\nSO_DONTROUTE option. Below are server/client python scripts which\ncould reprodue this issue:\n\nserver side code:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nimport socket\nimport struct\nimport time\n\ns \u003d socket.socket(socket.AF_INET, socket.SOCK_STREAM)\ns.bind((\u00270.0.0.0\u0027, 9000))\ns.listen(1)\nsock, addr \u003d s.accept()\nsock.setsockopt(socket.SOL_SOCKET, socket.SO_DONTROUTE, struct.pack(\u0027i\u0027, 1))\nwhile True:\n    sock.send(b\u0027foo\u0027)\n    time.sleep(1)\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nclient side code:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nimport socket\nimport time\n\ns \u003d socket.socket(socket.AF_INET, socket.SOCK_STREAM)\ns.connect((\u0027server_address\u0027, 9000))\nwhile True:\n    data \u003d s.recv(1024)\n    print(data)\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: yupeng \u003cyupeng0921@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f5bb89785e474951423feeb8307b223b39363807",
      "old_mode": 33188,
      "old_path": "net/core/sock.c",
      "new_id": "f00902c532cc777335eaad8989e472ef71089ecd",
      "new_mode": 33188,
      "new_path": "net/core/sock.c"
    }
  ]
}
