)]}'
{
  "commit": "e802af9cabb011f09b9c19a82faef3dd315f27eb",
  "tree": "9a8ef1163b9b40fef8860b08ea4dcb4ff3916098",
  "parents": [
    "9ccb8975940c4ee51161152e37058e3d9e06c62f"
  ],
  "author": {
    "name": "Stephen Hemminger",
    "email": "shemminger@vyatta.com",
    "time": "Thu Apr 22 15:24:53 2010 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Thu Apr 22 15:24:53 2010 -0700"
  },
  "message": "IPv6: Generic TTL Security Mechanism (final version)\n\nThis patch adds IPv6 support for RFC5082 Generalized TTL Security Mechanism.  \n\nNot to users of mapped address; the IPV6 and IPV4 socket options are seperate.\nThe server does have to deal with both IPv4 and IPv6 socket options\nand the client has to handle the different for each family.\n\nOn client:\n\tint ttl \u003d 255;\n\tgetaddrinfo(argv[1], argv[2], \u0026hint, \u0026result);\n\n\tfor (rp \u003d result; rp !\u003d NULL; rp \u003d rp-\u003eai_next) {\n\t\ts \u003d socket(rp-\u003eai_family, rp-\u003eai_socktype, rp-\u003eai_protocol);\n\t\tif (s \u003c 0) continue;\n\n\t\tif (rp-\u003eai_family \u003d\u003d AF_INET) {\n\t\t\tsetsockopt(s, IPPROTO_IP, IP_TTL, \u0026ttl, sizeof(ttl));\n\t\t} else if (rp-\u003eai_family \u003d\u003d AF_INET6) {\n\t\t\tsetsockopt(s, IPPROTO_IPV6,  IPV6_UNICAST_HOPS, \n\t\t\t\t\t\u0026ttl, sizeof(ttl)))\n\t\t}\n\t\t\t\n\t\tif (connect(s, rp-\u003eai_addr, rp-\u003eai_addrlen) \u003d\u003d 0) {\n\t\t   ...\n\nOn server:\n\tint minttl \u003d 255 - maxhops;\n   \n\tgetaddrinfo(NULL, port, \u0026hints, \u0026result);\n\tfor (rp \u003d result; rp !\u003d NULL; rp \u003d rp-\u003eai_next) {\n\t\ts \u003d socket(rp-\u003eai_family, rp-\u003eai_socktype, rp-\u003eai_protocol);\n\t\tif (s \u003c 0) continue;\n\n\t\tif (rp-\u003eai_family \u003d\u003d AF_INET6)\n\t\t\tsetsockopt(s, IPPROTO_IPV6,  IPV6_MINHOPCOUNT,\n\t\t\t\t\t\u0026minttl, sizeof(minttl));\n\t\tsetsockopt(s, IPPROTO_IP, IP_MINTTL, \u0026minttl, sizeof(minttl));\n\t\t\t\n\t\tif (bind(s, rp-\u003eai_addr, rp-\u003eai_addrlen) \u003d\u003d 0)\n\t\t\tbreak\n...\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bd55c6e46b2ea6bbe72f582eac8cda8c14c0bd60",
      "old_mode": 33188,
      "old_path": "include/linux/in6.h",
      "new_id": "9b90cb296eb1b52008a4cff83b163e0f47accd5e",
      "new_mode": 33188,
      "new_path": "include/linux/in6.h"
    },
    {
      "type": "modify",
      "old_id": "e0cc9a7db2b5fdc689bceb7d2a3fb5d00aea6ede",
      "old_mode": 33188,
      "old_path": "include/linux/ipv6.h",
      "new_id": "1bdbebf08d16221d7b341c90e4fd70b3a6665c2d",
      "new_mode": 33188,
      "new_path": "include/linux/ipv6.h"
    },
    {
      "type": "modify",
      "old_id": "1160400e9dbdf76a7df77e4acb0f878a8e14b982",
      "old_mode": 33188,
      "old_path": "net/ipv6/ipv6_sockglue.c",
      "new_id": "92295ad3487ad441bbf65c1787f4b0fc142eb31f",
      "new_mode": 33188,
      "new_path": "net/ipv6/ipv6_sockglue.c"
    },
    {
      "type": "modify",
      "old_id": "1ababbb41131309441d925955c81e02adc1f192e",
      "old_mode": 33188,
      "old_path": "net/ipv6/tcp_ipv6.c",
      "new_id": "6603511e367305477f9cdd3c29250c11d5f6a0ef",
      "new_mode": 33188,
      "new_path": "net/ipv6/tcp_ipv6.c"
    }
  ]
}
