)]}'
{
  "commit": "0b2aa3a0a8b095bdef1eddda117d173af75dede2",
  "tree": "29201cb2beec187409e842b4078ed8a8047d3f11",
  "parents": [
    "7593fddfa1558d086e3142ad96cf2790007f5d84"
  ],
  "author": {
    "name": "Paul Jakma",
    "email": "paul.jakma@sun.com",
    "time": "Sun Oct 14 22:32:21 2007 +0000"
  },
  "committer": {
    "name": "Paul Jakma",
    "email": "paul.jakma@sun.com",
    "time": "Sun Oct 14 22:32:21 2007 +0000"
  },
  "message": "[bgpd] Merge AS4 support\n\n2007-10-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* NEWS: Note that MRT dumps are now version 2\n\t* (general) Merge in Juergen Kammer\u0027s AS4 patch.\n\n2007-09-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_aspath.c: (assegment_normalise) remove duplicates from\n\t  from sets.\n\t  (aspath_reconcile_as4) disregard a broken part of the RFC around\n\t  error handling in path reconciliation.\n\t* aspath_test.c: Test dupe-weeding from sets.\n\t  Test that reconciliation merges AS_PATH and AS4_PATH where\n\t  former is shorter than latter.\n\n2007-09-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* aspath_test.c: Test AS4_PATH reconcilation where length\n\t  of AS_PATH and AS4_PATH is same.\n\n2007-09-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_open.c: (peek_for_as4_capability) Fix to work.\n\t* bgp_packet.c: (bgp_open_receive) Fix sanity check of as4.\n\t* tests/bgp_capability_test.c: (general) Extend tests to validate\n\t  peek_for_as4_capability.\n\t  Add test of full OPEN Option block, with multiple capabilities,\n\t  both as a series of Option, and a single option.\n\t  Add some crap to beginning of stream, to prevent code depending\n\t  on getp \u003d\u003d 0.\n\n2007-09-18 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_open.c: (bgp_capability_as4) debug printf inline with others.\n\t  (peek_for_as4_capability) There\u0027s no need to signal failure, as\n\t  failure is better dealt with through full capability parser -\n\t  just return the AS4, simpler.\n\t* bgp_packet.c: (bgp_open_receive) Update to match\n\t  peek_for_as4_capability change.\n\t  Allow use of BGP_AS_TRANS by 2b speakers.\n\t  Use NOTIFY_OPEN_ERR rather than CEASE for OPEN parsing errors.\n\t  (bgp_capability_msg_parse) missing argument to debug print\n\t  (bgp_capability_receive) missing return values.\n\t* tests/bgp_capability_test.c: (parse_test) update for changes to\n\t  peek_for_as4_capability\n\n2007-07-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Remove 2-byte size macros, just make existing macros take\n\t  argument to indicate which size to use.\n\t  Adjust all users - typically they want \u00271\u0027.\n\t* bgp_aspath.c: (aspath_has_as4) New, return 1 if there are any\n\t  as4\u0027s in a path.\n\t  (aspath_put) Return the number of bytes actually written, to\n\t  fix the bug Juergen noted: Splitting of segments will change\n\t  the number of bytes written from that already written to the\n\t  AS_PATH header.\n\t  (aspath_snmp_pathseg) Pass 2-byte flag to aspath_put. SNMP\n\t  is still defined as 2b.\n\t  (aspath_aggregate) fix latent bug.\n\t  (aspath_reconcile_as4) AS_PATH+NEW_AS_PATH reconciliation\n\t  function.\n\t  (aspath_key_make) Hash the AS_PATH string, rather than\n\t  just taking the addition of assegment ASes as the hash value,\n\t  hopefully sligthly more collision resistant.\n\t  (bgp_attr_munge_as4_attrs) Collide the NEW_ attributes\n\t  together with the OLD 2-byte forms, code Juergen\n\t  had in bgp_attr_parse but re-organised a bit.\n\t  (bgp_attr_parse) Bunch of code from Juergen moves\n\t  to previous function.\n\t  (bgp_packet_attribute) Compact significantly by\n\t  just /always/ using extended-length attr header.\n\t  Fix bug Juergen noted, by using aspath_put\u0027s\n\t  (new) returned size value for the attr header rather\n\t  than the (guesstimate) of aspath_size() - the two could\n\t  differ when aspath_put had to split large segments, unlikely\n\t  this bug was ever hit in the \u0027wild\u0027.\n\t  (bgp_dump_routes_attr) Always use extended-len and\n\t  use aspath_put return for header length. Output 4b ASN\n\t  for AS_PATH and AGGREGATOR.\n\t* bgp_ecommunity.c: (ecommunity_{hash_make,cmp}) fix\n\t  hash callback declarations to match prototypes.\n\t  (ecommunity_gettoken) Updated for ECOMMUNITY_ENCODE_AS4,\n\t  complete rewrite of Juergen\u0027s changes (no asdot support)\n\t* bgp_open.c: (bgp_capability_as4) New, does what it says\n\t  on the tin.\n\t  (peek_for_as4_capability) Rewritten to use streams and\n\t  bgp_capability_as4.\n\t* bgp_packet.c: (bgp_open_send) minor edit\n\t  checked (in the abstract at least) with Juergen.\n\t  Changes are to be more accepting, e.g, allow AS_TRANS on\n\t  a 2-byte session.\n\t* (general) Update all commands to use CMD_AS_RANGE.\n\t* bgp_vty.c: (bgp_clear) Fix return vals to use CMD_..\n\t  Remove stuff replicated by VTY_GET_LONG\n\t  (bgp_clear_vty) Return bgp_clear directly to vty.\n\t* tests/aspath_test.c: Exercise 32bit parsing. Test reconcile\n\t  function.\n\t* tests/ecommunity_test.c: New, test AS4 ecommunity changes,\n\t  positive test only at this time, error cases not tested yet.\n\n2007-07-25 Juergen Kammer \u003cj.kammer@eurodata.de\u003e\n\n\t* (general) AS4 support.\n\t* bgpd.h: as_t changes to 4-bytes.\n\t* bgp_aspath.h: Add BGP_AS4_MAX and BGP_AS_TRANS defines.\n\t* bgp_aspath.c: AS_VALUE_SIZE becomes 4-byte, AS16_VALUE_SIZE\n\t  added for 2-byte.\n\t  Add AS16 versions of length calc macros.\n\t  (aspath_count_numas) New, count number of ASes.\n\t  (aspath_has_as4) New, return 1 if there are any as4\u0027s in a\n\t  path.\n\t  (assegments_parse) Interpret assegment as 4 or 2 byte,\n\t  according to how the caller instructs us, with a new\n\t  argument.\n\t  (aspath_parse) Add use32bit argument to pass to\n\t  assegments_parse. Adjust all its callers to pass 1, unless\n\t  otherwise noted.\n\t  (assegment_data_put) Adjust to be able to write 2 or 4 byte\n\t  AS, according to new use32bit argument.\n\t  (aspath_put) Adjust to write 2 or 4.\n\t  (aspath_gettoken) Use a long for passed in asno.\n\t* bgp_attr.c: (attr_str) Add BGP_ATTR_AS4_PATH and\n\t  BGP_ATTR_AS4_AGGREGATOR.\n\t  (bgp_attr_aspath) Call aspath_parse with right 2/4 arg, as\n\t  determined by received-capability flag.\n\t  (bgp_attr_aspath_check) New, code previously in attr_aspath\n\t  but moved to new func so it can be run after NEW_AS_PATH\n\t  reconciliation.\n\t  (bgp_attr_as4_path) New, handle NEW_AS_PATH.\n\t  (bgp_attr_aggregator) Adjust to cope with 2/4 byte ASes.\n\t  (bgp_attr_as4_aggregator) New, read NEW_AGGREGATOR.\n\t  (bgp_attr_parse) Add handoffs to previous parsers for the two\n\t  new AS4 NEW_ attributes.\n\t  Various checks added for NEW/OLD reconciliation.\n\t  (bgp_packet_attribute) Support 2/4 for AS_PATH and\n\t  AGGREGATOR, detect when NEW_ attrs need to be sent.\n\t* bgp_debug.{c,h}: Add \u0027debug bgp as4\u0027.\n\t* bgp_dump.c: MRTv2 support, unconditionally enabled, which\n\t  supports AS4. Based on patches from Erik (RIPE?).\n\t* bgp_ecommunity.c: (ecommunity_ecom2str) ECOMMUNITY_ENCODE_AS4\n\t  support.\n\t* bgp_open.c: (peek_for_as4_capability) New, peek for AS4\n\t  capability prior to full capability parsing, so we know which\n\t  ASN to use for struct peer lookup.\n\t  (bgp_open_capability) Always send AS4 capability.\n\t* bgp_packet.c: (bgp_open_send) AS4 handling for AS field\n\t  (bgp_open_receive) Peek for AS4 capability first, and figure\n\t  out which AS to believe.\n\t* bgp_vty.c: (bgp_show_peer) Print AS4 cap\n\t* tests/aspath_test.c: Support asn32 changes, call aspath_parse\n\t  with 16 bit.\n\t* vtysh/extract.pl: AS4 compatibility for router bgp ASNUMBER\n\t* vtysh/extract.pl.in: AS4 compatibility for router bgp ASNUMBER\n\t* vtysh/vtysh.c: AS4 compatibility for router bgp ASNUMBER\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2501a078a5670257afa0f464912cfd9e3050cd97",
      "old_mode": 33188,
      "old_path": "ChangeLog",
      "new_id": "6cde4262ba63a0682060e1ef074ea3137eb7fe47",
      "new_mode": 33188,
      "new_path": "ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "0a9269c5599e22b30dead463be599c536f001680",
      "old_mode": 33188,
      "old_path": "NEWS",
      "new_id": "e045ec102ecb8eb024493110f59e77a0577e0792",
      "new_mode": 33188,
      "new_path": "NEWS"
    },
    {
      "type": "modify",
      "old_id": "c98485b46a1df9e627b3e01fd2591c8a48c35422",
      "old_mode": 33188,
      "old_path": "bgpd/ChangeLog",
      "new_id": "5a31d9cb5452178324d10efe41a9d1290463d123",
      "new_mode": 33188,
      "new_path": "bgpd/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "b328e38a5b2c324327ab96dd54c1be363ad38570",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_aspath.c",
      "new_id": "d7e985d4f0b90f3dcef10fe51a77696e852a8d26",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_aspath.c"
    },
    {
      "type": "modify",
      "old_id": "efec24c2e985c92c62ed963f0b1c2c6ccdd97e42",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_aspath.h",
      "new_id": "3bb616f7b0dea19dcfdd235beebb3ebd66e0d67b",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_aspath.h"
    },
    {
      "type": "modify",
      "old_id": "9d13ca6ec90f8cf3a38b6684a507e8d998854353",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_attr.c",
      "new_id": "b463b3c0fc36a3b6b29c984a5b752791caeb97d5",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_attr.c"
    },
    {
      "type": "modify",
      "old_id": "60284a2d8c4cd6dd382c670dc96d2b439fdd5703",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_debug.c",
      "new_id": "acb1de7facd54e744f88fd2024d3a2d63d976d1a",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_debug.c"
    },
    {
      "type": "modify",
      "old_id": "7015cb77ad20991f3fa71fa3d9a5fc8e59129443",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_debug.h",
      "new_id": "71e110ce64c2d45a1d20c1550f33b7348d8a182a",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_debug.h"
    },
    {
      "type": "modify",
      "old_id": "601ff2b2242c9e8e80155b5941c5f78877e1d3cb",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_dump.c",
      "new_id": "e815ea3cc90f284fef1c46a9605c60609b11ae92",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_dump.c"
    },
    {
      "type": "modify",
      "old_id": "36447e93208a0c94b5de22b7b4a677d94420b5e9",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_dump.h",
      "new_id": "6bb1197bb212760ef4d63cb68efb314dd8bde19e",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_dump.h"
    },
    {
      "type": "modify",
      "old_id": "64f4438f88787bae8a84712873652d99468c2e63",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_ecommunity.c",
      "new_id": "9e7ae1b3e4bdeefb1ee2cf6c09dc8867b5725610",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_ecommunity.c"
    },
    {
      "type": "modify",
      "old_id": "7b2564adaf0fe333de3252762be00e8fac77b076",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_ecommunity.h",
      "new_id": "69014237d7fdeabb3d4b442302994cbd07eebb22",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_ecommunity.h"
    },
    {
      "type": "modify",
      "old_id": "cd235770a1733157e09311480a2070af58512f8a",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_open.c",
      "new_id": "38431d4c63d91875c69663c7a466006a3160de8b",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_open.c"
    },
    {
      "type": "modify",
      "old_id": "436eb01ccaeb2fca604d5d1e081a38ae3f76d7cd",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_open.h",
      "new_id": "59265dc990282a76537672803ad7f4be33bb4048",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_open.h"
    },
    {
      "type": "modify",
      "old_id": "17ac1f73029d378783ff971886d26b3267cebbd2",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_packet.c",
      "new_id": "1fa2fdfde988a7a99a71814e9899196e9320a68f",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_packet.c"
    },
    {
      "type": "modify",
      "old_id": "305d6796b36e692191e9bef45cd63f201c55dd24",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_routemap.c",
      "new_id": "d51375b74c70aa2097da933a52444351f3d28cb5",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_routemap.c"
    },
    {
      "type": "modify",
      "old_id": "3eeb5f929e6ecb6bf7d6b7e1e692a92c8ad7e9c9",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_vty.c",
      "new_id": "927e99a14c73d9ad106340f79c2dac20a704a4f6",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_vty.c"
    },
    {
      "type": "modify",
      "old_id": "d3b4e2b46dd3c79127a12a36085236d606d50fe1",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_vty.h",
      "new_id": "2df8aaa5dec270dd02f410c24c92d53a19bd9d44",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_vty.h"
    },
    {
      "type": "modify",
      "old_id": "3fba6042c87c0c0e7b48532415b4b4d9f138e2f1",
      "old_mode": 33188,
      "old_path": "bgpd/bgpd.h",
      "new_id": "e04575d80a18bec5c566c0f48df0a6c4468cf165",
      "new_mode": 33188,
      "new_path": "bgpd/bgpd.h"
    },
    {
      "type": "modify",
      "old_id": "0904e19f9ad0c5eb99866954ae6ac90b1b250272",
      "old_mode": 33188,
      "old_path": "doc/BGP-TypeCode",
      "new_id": "5663c4d7a2c89f3a0c6d619fa178ea2925615ea1",
      "new_mode": 33188,
      "new_path": "doc/BGP-TypeCode"
    },
    {
      "type": "modify",
      "old_id": "46ab976643accbc20b2969df88c6cb862189711e",
      "old_mode": 33188,
      "old_path": "tests/ChangeLog",
      "new_id": "94f587492b46b3e8705dcde28d4c358875d8c886",
      "new_mode": 33188,
      "new_path": "tests/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "a63416fffa26616c0f72175f4c7ac4ee68dc8b34",
      "old_mode": 33188,
      "old_path": "tests/Makefile.am",
      "new_id": "2045496e3fc090d6412d2cf46fbf2c3bdd95c04e",
      "new_mode": 33188,
      "new_path": "tests/Makefile.am"
    },
    {
      "type": "modify",
      "old_id": "1d28dbedc4b2fd95c02dc78dd3dd466dbc881d05",
      "old_mode": 33188,
      "old_path": "tests/aspath_test.c",
      "new_id": "c12d07a59db44b8a8ae5465d2a7df9c857fed2a4",
      "new_mode": 33188,
      "new_path": "tests/aspath_test.c"
    },
    {
      "type": "modify",
      "old_id": "020dfb0f7fabb7e0c953ac13cee77646c89c9ca3",
      "old_mode": 33188,
      "old_path": "tests/bgp_capability_test.c",
      "new_id": "6771b57998e4485d5ea7a515f1bb0fb5c89ab717",
      "new_mode": 33188,
      "new_path": "tests/bgp_capability_test.c"
    },
    {
      "type": "modify",
      "old_id": "f2ba3332603f55fe5cd7d7a30b39639f65f3910d",
      "old_mode": 33188,
      "old_path": "vtysh/ChangeLog",
      "new_id": "de62763c463c85e34d9c6022bba723bd117e929a",
      "new_mode": 33188,
      "new_path": "vtysh/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "723fe8d613b1f7d389c1e9cae66cfe4f240a82a9",
      "old_mode": 33261,
      "old_path": "vtysh/extract.pl.in",
      "new_id": "789819c6354a4b266499968840850dd317475311",
      "new_mode": 33261,
      "new_path": "vtysh/extract.pl.in"
    },
    {
      "type": "modify",
      "old_id": "c7efa91bd44335e45dee7f25e1d01460546fa6af",
      "old_mode": 33188,
      "old_path": "vtysh/vtysh.c",
      "new_id": "9f47515d819fc58b9dc97126256103e0804b1006",
      "new_mode": 33188,
      "new_path": "vtysh/vtysh.c"
    }
  ]
}
