)]}'
{
  "commit": "6d58272b4cf96f0daa846210dd2104877900f921",
  "tree": "a97f2c9c797bd96b298aa64f03ed69115d63e78b",
  "parents": [
    "dfdb8f18c008e7ad306588c86b12fbef337427ca"
  ],
  "author": {
    "name": "Paul Jakma",
    "email": "paul.jakma@sun.com",
    "time": "Mon Aug 06 15:21:45 2007 +0000"
  },
  "committer": {
    "name": "Paul Jakma",
    "email": "paul.jakma@sun.com",
    "time": "Mon Aug 06 15:21:45 2007 +0000"
  },
  "message": "[bgpd] cleanup, compact and consolidate capability parsing code\n\n2007-07-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Clean up and compact capability parsing slightly.\n\t  Consolidate validation of length and logging of generic TLV, and\n\t  memcpy of capability data, thus removing such from cap specifc\n\t  code (not always present or correct).\n\t* bgp_open.h: Add structures for the generic capability TLV header\n\t  and for the data formats of the various specific capabilities we\n\t  support.  Hence remove the badly named, or else misdefined, struct\n\t  capability.\n\t* bgp_open.c: (bgp_capability_vty_out) Use struct capability_mp_data.\n\t  Do the length checks *before* memcpy()\u0027ing based on that length\n\t  (stored capability - should have been validated anyway on input,\n\t  but..).\n\t  (bgp_afi_safi_valid_indices) new function to validate (afi,safi)\n\t  which is about to be used as index into arrays, consolidates\n\t  several instances of same, at least one of which appeared to be\n\t  incomplete..\n\t  (bgp_capability_mp) Much condensed.\n\t  (bgp_capability_orf_entry) New, process one ORF entry\n\t  (bgp_capability_orf) Condensed. Fixed to process all ORF entries.\n\t  (bgp_capability_restart) Condensed, and fixed to use a\n\t  cap-specific type, rather than abusing capability_mp.\n\t  (struct message capcode_str) added to aid generic logging.\n\t  (size_t cap_minsizes[]) added to aid generic validation of\n\t  capability length field.\n\t  (bgp_capability_parse) Generic logging and validation of TLV\n\t  consolidated here. Code compacted as much as possible.\n\t* bgp_packet.c: (bgp_open_receive) Capability parsers now use\n\t  streams, so no more need here to manually fudge the input stream\n\t  getp.\n\t  (bgp_capability_msg_parse) use struct capability_mp_data. Validate\n\t  lengths /before/ memcpy. Use bgp_afi_safi_valid_indices.\n\t  (bgp_capability_receive) Exported for use by test harness.\n\t* bgp_vty.c: (bgp_show_summary) fix conversion warning\n\t  (bgp_show_peer) ditto\n\t* bgp_debug.h: Fix storage \u0027extern\u0027 after type \u0027const\u0027.\n        * lib/log.c: (mes_lookup) warning about code not being in\n          same-number array slot should be debug, not warning. E.g. BGP\n          has several discontigious number spaces, allocating from\n          different parts of a space is not uncommon (e.g. IANA\n          assigned versus vendor-assigned code points in some number\n          space).\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5fb87e2cbe775828f12ab209c0ab20c78d148aa1",
      "old_mode": 33188,
      "old_path": "bgpd/ChangeLog",
      "new_id": "7a93a90b880ccdb8babc76b2938a1495d09fa697",
      "new_mode": 33188,
      "new_path": "bgpd/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "eab95d09c52719b02aec4672266199582500fc8d",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_debug.h",
      "new_id": "7015cb77ad20991f3fa71fa3d9a5fc8e59129443",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_debug.h"
    },
    {
      "type": "modify",
      "old_id": "e44bd2a07d08b083cb288f8e5617dc9187829525",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_open.c",
      "new_id": "d4f7cdf598d0f2c98b2bba7cdf7989743f8db3c0",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_open.c"
    },
    {
      "type": "modify",
      "old_id": "7515d3f47bb9fb8a1dd8be6625215f5dbbfa425a",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_open.h",
      "new_id": "436eb01ccaeb2fca604d5d1e081a38ae3f76d7cd",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_open.h"
    },
    {
      "type": "modify",
      "old_id": "2653201172a594d1d063ac5e59419de6c9b34214",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_packet.c",
      "new_id": "17ac1f73029d378783ff971886d26b3267cebbd2",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_packet.c"
    },
    {
      "type": "modify",
      "old_id": "1e21c74f43d79242f938a100786b5b9f70194c4b",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_vty.c",
      "new_id": "3eeb5f929e6ecb6bf7d6b7e1e692a92c8ad7e9c9",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_vty.c"
    },
    {
      "type": "modify",
      "old_id": "2d8e5deb823224b30f6b24dc996252d789f59690",
      "old_mode": 33188,
      "old_path": "lib/ChangeLog",
      "new_id": "41689d038729378c832bf023d38e7a1f1d9f0bba",
      "new_mode": 33188,
      "new_path": "lib/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "cbf76af9921bff955526b92d5f2de8ee1f1cde9e",
      "old_mode": 33188,
      "old_path": "lib/log.c",
      "new_id": "ff47cae0dddfc88f10e3a6448031b63a6d109e8c",
      "new_mode": 33188,
      "new_path": "lib/log.c"
    },
    {
      "type": "modify",
      "old_id": "850fd54d2566826fd5729ba6159c9c834de554f8",
      "old_mode": 33188,
      "old_path": "tests/ChangeLog",
      "new_id": "1a198263c0ce43e83c25652374b581816a751714",
      "new_mode": 33188,
      "new_path": "tests/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "94f7533dee5e8f4059f10913007478c5609a197b",
      "old_mode": 33188,
      "old_path": "tests/Makefile.am",
      "new_id": "a63416fffa26616c0f72175f4c7ac4ee68dc8b34",
      "new_mode": 33188,
      "new_path": "tests/Makefile.am"
    }
  ]
}
