)]}'
{
  "commit": "2d7192d6cbab20e153c47fa1559ffd41ceef0e79",
  "tree": "aac4c4132f5b4a173ad8f8d0bf24427e039bbc89",
  "parents": [
    "15ecd039b7182d725f4294e01f2fb12c3a88db17"
  ],
  "author": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Tue Apr 26 13:28:44 2011 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Wed Apr 27 13:59:04 2011 -0700"
  },
  "message": "ipv4: Sanitize and simplify ip_route_{connect,newports}()\n\nThese functions are used together as a unit for route resolution\nduring connect().  They address the chicken-and-egg problem that\nexists when ports need to be allocated during connect() processing,\nyet such port allocations require addressing information from the\nrouting code.\n\nIt\u0027s currently more heavy handed than it needs to be, and in\nparticular we allocate and initialize a flow object twice.\n\nLet the callers provide the on-stack flow object.  That way we only\nneed to initialize it once in the ip_route_connect() call.\n\nLater, if ip_route_newports() needs to do anything, it re-uses that\nflow object as-is except for the ports which it updates before the\nroute re-lookup.\n\nAlso, describe why this set of facilities are needed and how it works\nin a big comment.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nReviewed-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3684c3edbae46cd7d28812482c0983d1aa0eb57e",
      "old_mode": 33188,
      "old_path": "include/net/route.h",
      "new_id": "79530da31b342f978312fff76e619c17dca2d69d",
      "new_mode": 33188,
      "new_path": "include/net/route.h"
    },
    {
      "type": "modify",
      "old_id": "ae451c6d83baa468596e136c3001cabc96edf1cd",
      "old_mode": 33188,
      "old_path": "net/dccp/ipv4.c",
      "new_id": "b92ab655d44ef87acf62ae7a327c2aaad421b479",
      "new_mode": 33188,
      "new_path": "net/dccp/ipv4.c"
    },
    {
      "type": "modify",
      "old_id": "cae75ef21feab579498729a7f9237853ebb59271",
      "old_mode": 33188,
      "old_path": "net/ipv4/af_inet.c",
      "new_id": "0413af3e22859bc4ff4a971cbebfa5e748317627",
      "new_mode": 33188,
      "new_path": "net/ipv4/af_inet.c"
    },
    {
      "type": "modify",
      "old_id": "85bd24ca4f6dda83e51170dabdfb7584e932a52c",
      "old_mode": 33188,
      "old_path": "net/ipv4/datagram.c",
      "new_id": "216ba2338b64e78b41fdc9b68406347838a1e418",
      "new_mode": 33188,
      "new_path": "net/ipv4/datagram.c"
    },
    {
      "type": "modify",
      "old_id": "edf18bd74b8752956f67c165357799530d53a24a",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_ipv4.c",
      "new_id": "310454c2f4d1352bdd35cc42421f41cff3bff8ab",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_ipv4.c"
    },
    {
      "type": "modify",
      "old_id": "fce9bd3bd3feb61c3b6a2fbc078d9a5b8f7462c5",
      "old_mode": 33188,
      "old_path": "net/l2tp/l2tp_ip.c",
      "new_id": "cc673677c5de88e7aba705b14f9134fcf95dbf1e",
      "new_mode": 33188,
      "new_path": "net/l2tp/l2tp_ip.c"
    }
  ]
}
