)]}'
{
  "log": [
    {
      "commit": "cddb8112b80fa9867156c637d63e6e79eeac67bb",
      "tree": "c8d8b4cb9d0ba1c2a7681c6da580874cf5a2b48e",
      "parents": [
        "d64379e8f3c0636df53ed08d5b2f1946cfedd0e3"
      ],
      "author": {
        "name": "Chris Hall",
        "email": "chris.hall@highwayman.com",
        "time": "Mon Aug 09 22:31:37 2010 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 09 22:31:37 2010 +0400"
      },
      "message": "bgpd: fix handling of AS path data\n\n* bgpd/bgp_aspath.c\n  * assegments_parse(): add handling of AS4_PATH input, update bounds\n    checks, add check for AS segment type\n  * aspath_parse(): add handling of AS4_PATH input, expect\n    assegments_parse() to do length checking\n  * aspath_empty(): update for the new function prototype\n* bgpd/bgp_aspath.h: ditto\n* tests/aspath_test.c: ditto\n* bgpd/bgp_attr.c\n  * bgp_attr_aspath(): add handling of AS4_PATH input, update flags\n    checks, change returned type\n  * bgp_attr_as4_path(): discard, superseded by bgp_attr_aspath()\n  * bgp_attr_parse(): update respectively\n"
    },
    {
      "commit": "da88ea82acd70adf3bab641b2300ee24319da422",
      "tree": "81151de47e55067c4b7d9cd718c0e6c8ab07aa50",
      "parents": [
        "2c2397059d4d4177ed4636c08aa476a138425dc8"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 17 13:14:28 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 17 13:14:28 2009 +0300"
      },
      "message": "bgpd: code cleanup\n\n* bgpd/bgp_aspath.c\n  * ashash: only used in one file, make static\n  * aspath_count_numas(): dead code, sayonara\n* bgpd/bgpd.c\n  * peer_nsf_stop(): only used in one file, make static\n* bgpd/bgp_packet.h\n  * bgp_capability_receive(): add missing prototype for a\n    global function\n"
    },
    {
      "commit": "ca87e1d37b3c30648e9bacb476a3c89729512f6d",
      "tree": "d0911b72e7d4c3c94c88a65233ee8a7fa8a4c950",
      "parents": [
        "30d205909c5a81cc306b161c16abff0fd7f566a7"
      ],
      "author": {
        "name": "Vasilis Tsiligiannis",
        "email": "b_tsiligiannis@silverton.gr",
        "time": "Mon Jul 20 01:28:35 2009 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jul 28 14:49:33 2009 +0100"
      },
      "message": "bgpd: Implement BGP confederation error handling (RFC5065, Par. 5)\n\nThis patch implements BGP confederation error handling in Quagga as described\nin RFC5065, paragraph 5.\n\n* bgp_aspath.c: (aspath_confed_check, aspath_left_confed_check) new functions\n* bgp_attr.c: (bgp_attr_aspath_check) apply previous and NOTIFY if there\u0027s\n  a problem.\n"
    },
    {
      "commit": "ffe11cfb0a808ae514193438616dfabc512b4cf6",
      "tree": "94452dba2c1a49d6e6a0782c6513acb36823cefc",
      "parents": [
        "9fd4958a4eef88c536e4a5aeefce302e10ee8ee6"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Thu Aug 14 16:25:25 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:58 2008 +0100"
      },
      "message": "[lib] hash compare function arguments ought to be const qualified\n\n2008-08-14 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* lib/hash.h: (struct hash) Hash comparator callback really\n\t  ought to treat storage behind arguments as constant - a compare\n\t  function with side-effects would be evil.\n\t* */*.c: Adjust comparator functions similarly, thus fixing at least\n\t  a few compiler warnings about const qualifier being dropped.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "841f7a57b13b8cba4efd51db4e7ac13fd403b17b",
      "tree": "27179c9db7a6d8e7e3dc2d13eb82efda4d9c4eb1",
      "parents": [
        "693b67b2b20510e0faee87a0950595832ce71054"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Thu Apr 10 11:47:45 2008 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Thu Apr 10 11:47:45 2008 +0000"
      },
      "message": "+ [bgpd] Added new route-map set statement: \"as-path ignore\"\n"
    },
    {
      "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"
    },
    {
      "commit": "923de654c8d251d6714a6f9da2e93c236e935042",
      "tree": "473cc25308810340efb82724101bd428af352958",
      "parents": [
        "e8eb8340c14f53194786b766992f61cc0abf7a8e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Apr 29 18:25:17 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Apr 29 18:25:17 2007 +0000"
      },
      "message": "[bgpd] Fix warnings: hash callbacks should match hash API declarations\n\n2007-04-22 Sebastien Tandel \u003csebastien@tandel.be\u003e\n\n\t* bgp_advertise.c : (baa_hash_alloc, baa_hash_key, baa_hash_cmp)\n\t  conforms to quagga hash API. Defines _hash_[alloc|key|cmp] with\n\t  void * arguments as defined by the API.\n\t* bgp_aspath.c,h : (aspath_key_make) conforms to quagga hash API.\n\t  Defines _hash_[alloc|key|cmp] with void * arguments as defined by\n\t  the API.\n\t* bgp_attr.c,h : (cluster_hash_alloc, cluster_hash_key_make,\n\t  cluster_hash_cmp, transit_hash_alloc, transit_hash_key_make,\n\t  transit_hash_cmp, attrhash_key_make, attrhash_cmp,\n\t  bgp_attr_hash_alloc) conforms to quagga hash API. Defines\n\t  _hash_[alloc|key|cmp] with void * arguments as defined by the API.\n"
    },
    {
      "commit": "2815e61ffbbf9c362896f3912d925cf78e125ee1",
      "tree": "8cc9c2cc857f12e3c22813f756fb8fd674757e1b",
      "parents": [
        "9458b8191563eb5569f341172484a234ef2f743e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 02:56:07 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 02:56:07 2006 +0000"
      },
      "message": "[bgpd] Add RIB reporting commands, show bgp ... statistics\n\n2006-09-13 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_aspath.c: (aspath_highest) new, return highest ASN in an\n\t  aspath.\n\t* bgp_route.c: (bgp_peer_count_walker) new, do the walk done\n\t  in bgp_peer_counts as a thread.\n\t  (bgp_peer_counts) move walk to previous and call it via\n\t  thread_execute so this RIB walk shows up in thread stats.\n\t  (bgp_table_stats) New, gather some statistics for a given\n\t  RIB.\n\t  (bgp_table_stats_walker) New, RIB walker thread for former.\n\t  (bgp_table_stats_vty) Parsing front-end for \u0027show bgp ...\u0027,\n\t  useful model for future rationalisation of \u0027show ... bgp\u0027.\n\t  (bgp_route_init) Add new RIB stats commands.\n"
    },
    {
      "commit": "b2518c1e884cb8b4f4502f8b90b1c368e1a352ec",
      "tree": "7099a9dd8bf20d560ed9565b8ecc9eaaf50bd203",
      "parents": [
        "06e110f9372f61bea23c2eaa25e7850b254bbd1a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:48:40 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:48:40 2006 +0000"
      },
      "message": "[bgpd] CID #4,#5,#9,#10, simplify aspath_print_vty usage\n\n2006-05-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_aspath.{c,h}: (aspath_print_vty) take a format string,\n\t  so as to reduce burden on callers, all in bgp_route.c\n\t* bgp_route.c: (route_vty_out{,tmp}) Update to match\n\t  aspath_print_vty, simplifying checks needed to get spacing\n\t  right. CID #4,#5.\n\t  ({damp,flap}_route_vty_out) Ditto, CID #9, #10\n"
    },
    {
      "commit": "8fdc32ab9a81cb80296d322346867c8c3d2b2b37",
      "tree": "bed62ebe30b81035f9ee9f5f605c1f443ad01c25",
      "parents": [
        "02335429e8cf2afc191fd518a3b55564bf6e5b2c"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jan 16 12:01:29 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jan 16 12:01:29 2006 +0000"
      },
      "message": "[bgpd] add aspath_finish, static resource cleanup function.\n\n2006-01-16 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_aspath.c:\n\t  (aspath_snmp_pathseg) move the static stream pointer out to\n\t  file scope, so it can be freed.\n\t  (aspath_finish) new function, free aspath resources.\n\t* bgp_aspath.h: (aspath_finish) export.\n"
    },
    {
      "commit": "fe69a505f7be4357bf8523e3bbdced9c95590f3a",
      "tree": "6d2450016eb19f30b153b2439d06ade68d1b8f12",
      "parents": [
        "1f8ae70b7b86d132b95a18f0c824deb248987afc"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Sep 10 16:55:02 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Sep 10 16:55:02 2005 +0000"
      },
      "message": "2005-09-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Makefile.am: bgpd shouldn\u0027t list libgp\u0027s sources as its own.\n\t  Use LDADD.\n\t* bgp_aspath.h:\n\t  (struct assegment) New struct, abstract representation of a\n\t  list of AS_PATH segments and the contained ASNs.\n\t  (struct aspath) Remove the raw-data related\n\t  fields, reference the abstract struct assegment instead.\n\t  Remove several other computed fields, it\u0027s just a\n\t  headache to maintain them and they\u0027re cheap to compute from\n\t  struct assegment.\n\t  (aspath_parse) parse a stream, not a pointer to raw data.\n\t  (aspath_count_{hops,confeds,size}) helpers to access\n\t  information formerly directly contained in struct aspath.\n\t  (aspath_snmp_pathseg) Helper for SNMP, BGP MIB wants\n\t  to be able to output hex representation of raw data.\n\t* bgp_aspath.c: (general) partial-rewrite. Store aspath data\n\t  as an abstract singly-linked list of abstract segments,\n          rather than storing the raw data, and parsing it each and\n\t  every time. Remove several count/size fields which are cheap\n\t  to compute from the abstract segment structure.\n\t  (global) Include stream.h, needed for aspath_parse, and\n\t  others. Couple of helper macros added.\n\t  (struct assegment_header) Just the header, and only the\n\t  header.\n\t  (assegment_data_{new,free}) convenience functions for\n\t  AS_SEG_DATA allocation, the dynamic, per-segment array of\n\t  ASNs.\n\t  (assegment_{new,free,free_all,dup,dup_all}) convenience\n\t  functions for creating struct assegments. The _all forms will\n\t  follow the entire chain of segments from the given segment.\n\t  (assegment_prepend_asns) new function, prepend an ASN N times\n\t  to segment.\n \t  (assegment_append_asns) Append a list (array) of ASNs to\n\t  segment.\n\t  (int_cmp) convenience function for the aspath hash.\n\t  (assegment_normalise) new function. Normalise the given\n\t  segment chain to meet expectations of Quagga, and to\n\t  eliminate differing raw representations of the same paths.\n\t  Merge \u0027runs\u0027 of SEQUENCEs into one segment as our internal\n\t  segment is not limited by the protocol AS_PATH segment\n\t  length. Sort ASNs in SETs.\n\t  (aspath_new) Take void argument to quell warnings. Use the\n\t  assegment convenience functions.\n\t  (assegment_count_{asns,confeds,hops}) new functions to\n\t  compute at runtime values previously held in struct aspath.\n\t  (aspath_size) ditto.\n\t  (aspath_make_str_count) rewritten to stringify new\n\t  representation, and to be slightly easier to understand\n\t  hopefully.\n\t  (aspath_str_update) convenience function, update the aspath\n\t  str. Should investigate removing maintained string from\n\t  struct aspath, just run-time compute it, as per other fields.\n\t  It\u0027s just a maintenance headache, would save noticeable\n\t  amount of RAM with possibly not much extra run-time cost.\n\t  (aspath_dup) use the assegment dup functions.\n\t  (aspath_hash_alloc) Take void * argument to satisfy gcc. Use\n\t  the proper helper functions to dup data.\n\t  (assegments_parse) new function. parse raw AS_PATH data into\n\t  struct assegments. Normalise and return the head of the list.\n\t  (aspath_parse) Parse a stream, not pointer to raw data and\n\t  use assegments_parse to do it.\n\t  (assegment_data_put) Write out a single segment data in protocol\n\t  form to stream.\n\t  (assegment_header_put) ditto but for segment header.\n\t  (aspath_put) new function. As per previous but for an entire\n\t  struct aspath.\n\t  (aspath_snmp_pathseg) wrapper around aspath_put for\n\t  bgp_snmp.c. Uses a static buffer sadly.\n\t  (aspath_aggregate_as_set_add) rewritten to use assegments.\n\t  (aspath_aggregate) ditto\n\t  (aspath_{firstas,loop,private_as}_check) ditto\n\t  (aspath_{merge,prepend,add_one_as}) ditto\n\t  (aspath_cmp_left{_confed}) ditto\n\t  (aspath_delete_confed_seq) ditto, plus fixed to properly\n\t  delete all leading confed segments.\n\t  (aspath_as_add) Just use assegment_append_asns.\n\t  (aspath_segment_add) updated to use assegments.\n\t  (enum as_token) Add values for confeds\n\t  (aspath_gettoken) Add support for confeds\n\t  (aspath_str2aspath) ditto\n\t  (aspath_key_make) updated to use as_segments. Also, add\n\t  segment type into the hash value as appropriate.\n\t  (aspath_cmp) updated to use as_segments.\n\t  (aspath_print) don\u0027t segfault on NULL argument.\n\t* bgp_attr.c: (bgp_attr_aspath) aspath_parse wants the stream\n\t  now. No need for manual forwarding of stream.\n\t  (bgp_packet_attribute) empty aspath is now denoted by NULL\n\t  segment field, length is gone.\n\t  Use aspath_size() to determine size.\n\t  (bgp_attr_init) Fix declaration, explicitely specify void\n\t  arg.\n\t  (bgp_dump_routes_attr) Use aspath_size() to determine size.\n\t* bgp_route.c: (bgp_info_cmp) use the aspath_count_* functions.\n\t  (bgp_rib_withdraw) remove unused variable. Use\n\t  aspath_count_hops.\n\t* bgp_snmp.c: (bgp4PathAttrTable) raw data is gone, use\n\t  aspath_snmp_pathseg to get the representation.\n"
    },
    {
      "commit": "94f2b3923e9663d0355a829f22e4e31cf68ee7b8",
      "tree": "59c0291a76b1c97fbb089abb479307f19cdfd4c1",
      "parents": [
        "7cad40007b9714dba65065916ea68577f9d3d6dd"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 12:44:16 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 12:44:16 2005 +0000"
      },
      "message": "2005-06-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) The great bgpd extern and static\u0027ification.\n\t* bgp_routemap.c: remove unused ROUTE_MATCH_ASPATH_OLD code\n\t  (route_set_metric_compile) fix u_int32_t to ULONG_MAX comparison\n\t  warnings.\n\t* bgp_route.h: (bgp_process, bgp_withdraw, bgp_update) export these\n\t  used by various files which had their own private declarations,\n\t  in the case of mplsvpn - incorrect.\n"
    },
    {
      "commit": "00d252cb5ff21ecc537ab40385316b41622a95e2",
      "tree": "c0132f4be53d8ae251ecb1dd8c39816f8734d08f",
      "parents": [
        "269d74fdc39a612da8f627bf97628c68d25a16ab"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 14:19:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 14:19:54 2005 +0000"
      },
      "message": "2005-05-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* bgp_fsm.h: Add extern qualifier to exported functions\n\t* bgp_nexthop.c: add static to nexthop specific globals\n\t* *.h: Add guard defines\n"
    },
    {
      "commit": "6811845b67999861388cf00d3ca0ee8471d29876",
      "tree": "1f7f08f171164b1a75b66a45093ccb44217dff12",
      "parents": [
        "4a8164e5b310094315e2c50d73aeea489766a48a"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 15:40:36 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 15:40:36 2005 +0000"
      },
      "message": "\t* bgpd.texi: Document new \"bgp bestpath as-path confed\" command.\n\t* bgp_aspath.[ch], bgp_route.c, bgp_vty.c, bgpd.[ch]: Allow to enable\n\t  the length of confederation path segments to be included during the\n\t  as-path length check in the best path decision.\n"
    },
    {
      "commit": "fd79ac918b8feaacebe9719adaac97dffb69137a",
      "tree": "d0665eb68e60da9d6e364414cdb61830f19f33d3",
      "parents": [
        "39db97e4e02eae08a1e18528367b6e9b07eb6a93"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 13 05:06:08 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 13 05:06:08 2004 +0000"
      },
      "message": "2004-10-13 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (global) more const\u0027ification and fixups of types to clean up code.\n\t* bgp_mplsvpn.{c,h}: (str2tag) fix abuse. Still not perfect,\n          should use something like the VTY_GET_INTEGER macro, but without\n          the vty_out bits..\n        * bgp_routemap.c: (set_aggregator_as) use VTY_GET_INTEGER_RANGE\n          (no_set_aggregator_as) ditto.\n        * bgpd.c: (peer_uptime) fix unlikely bug, where no buffer is\n          returned, add comments about troublesome return value.\n"
    },
    {
      "commit": "718e3744195351130f4ce7dbe0613f4b3e23df93",
      "tree": "bac2ad39971cd43f31241ef123bd4e470f695ac9",
      "parents": [],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "message": "Initial revision\n"
    }
  ]
}
