)]}'
{
  "commit": "fa411a212b55bba650d68fd0456686f3e47b7395",
  "tree": "4d7ef846c2cbc154631a5901747b3384854d497c",
  "parents": [
    "db07ad7358cb5e26358326332629ffb658f5747a"
  ],
  "author": {
    "name": "Nick Hilliard",
    "email": "nick@inex.ie",
    "time": "Wed Mar 23 15:33:17 2011 +0000"
  },
  "committer": {
    "name": "Paul Jakma",
    "email": "paul@quagga.net",
    "time": "Wed Mar 23 15:33:17 2011 +0000"
  },
  "message": "bgpd: RFC 5082 Generalized TTL Security Mechanism support\n\n* bgpd: Add support for RFC 5082 GTSM, which allows the TTL field to be used\n  to verify that incoming packets have been sent from neighbours no more\n  than X IP hops away. In other words, this allows packets that were sent from\n  further away (i.e. not by the neighbour with known distance, and so possibly\n  a miscreant) to be filtered out.\n* lib/sockunion.{c,h}: (sockopt_minttl) new function, to set a minimum TTL\n  using the IP_MINTTL socket opt.\n* bgpd.h: (BGP_ERR_NO_EBGP_MULTIHOP_WITH_TTLHACK) define for command\n  error for minttl.\n  (struct peer) add a config variable, to store the configured minttl.\n  (peer_ttl_security_hops_{set,unset}) configuration handlers\n* bgpd.c: (peer_group_get) init gtsm_hops\n  (peer_ebgp_multihop_{un,}set) check for conflicts with GTSM. Multihop and\n  GTSM can\u0027t both be active for a peer at the same time.\n  (peer_ttl_security_hops_set) set minttl, taking care to avoid conflicts with\n  ebgp_multihop.\n  (bgp_config_write_peer) write out minttl as \"neighbor .. ttl-security hops X\".\n* bgp_vty.c: (bgp_vty_return) message for\n  BGP_ERR_NO_EBGP_MULTIHOP_WITH_TTLHACK\n  (peer_ebgp_multihop_{un,}set_vty)\n* bgp_network.c: (bgp_accept) set minttl on accepted sockets if appropriate.\n  (bgp_connect) ditto for outbound.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4c79aa6385564089a94c53ef8a4bcca799073b6f",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_network.c",
      "new_id": "502f567965a0de85059d4c8da4c926358066c876",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_network.c"
    },
    {
      "type": "modify",
      "old_id": "1f93eea7797308794588c0e785d0acb31790018b",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_vty.c",
      "new_id": "e1c47f4eb181760f117c34aa11b553e92ece3f8e",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_vty.c"
    },
    {
      "type": "modify",
      "old_id": "882fe37cad66b858e1155cbf1ebbf0b48bb435a5",
      "old_mode": 33188,
      "old_path": "bgpd/bgpd.c",
      "new_id": "cc0ea8d47428e9f2bde63713c48581a6c2157e8b",
      "new_mode": 33188,
      "new_path": "bgpd/bgpd.c"
    },
    {
      "type": "modify",
      "old_id": "a5afaedcc3f16f242b4ee1cf89403f2b28403e10",
      "old_mode": 33188,
      "old_path": "bgpd/bgpd.h",
      "new_id": "39cdf8ebaebc9b3e4bde4b29689ae80e44de40a6",
      "new_mode": 33188,
      "new_path": "bgpd/bgpd.h"
    },
    {
      "type": "modify",
      "old_id": "f6c060f55498b886506a450e90599e40c6552155",
      "old_mode": 33188,
      "old_path": "lib/sockunion.c",
      "new_id": "a32809c1299aff96b8c85b9044b20cc063c7dd7c",
      "new_mode": 33188,
      "new_path": "lib/sockunion.c"
    },
    {
      "type": "modify",
      "old_id": "91bfbc7f33caec4e9e226389d2e4cc3f5e82465b",
      "old_mode": 33188,
      "old_path": "lib/sockunion.h",
      "new_id": "0ee2d63b7245116ad89fb0dd0d1379fb87f5f645",
      "new_mode": 33188,
      "new_path": "lib/sockunion.h"
    }
  ]
}
