)]}'
{
  "log": [
    {
      "commit": "237aac56960575f6ad2451ba2796d94bd5ae4b33",
      "tree": "f23c49fa32bc6b706bd5f37a9a3a45ce27adf15d",
      "parents": [
        "b6fa76098d127f5641a7dda0dee21f06ca167edb"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 22:23:10 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:19:14 2015 +0100"
      },
      "message": "build: get rid of INCLUDES, use AM_CPPFLAGS\n\nINCLUDES in configure.ac was not used at all, and INCLUDES in\nMakefile.am is supposed to be AM_CPPFLAGS these days.\n\nReduces warnings spewed during bootstrap/autoreconf.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "ba32db1e854ff2b26861a2d4e4193a9f1b3816cd",
      "tree": "ac1e4d87ad17a4ae653576009800b4077c4db00f",
      "parents": [
        "6f2a67031cfb21362fc7ecd3251761799c8ffe27"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 19 14:11:40 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 22 21:15:11 2014 +0200"
      },
      "message": "tests: Add tests for timers\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e712d0e3667ffad8109ef8bce3ce01927ee95bb7",
      "tree": "7d3fd696c771e742c20135a12b4a8f1e382944ac",
      "parents": [
        "8f399b0e4fff2344d75ebf709e1ce55f15269db2"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 19:34:55 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 20:21:19 2014 +0200"
      },
      "message": "tests: fix build \u0026 disable testcommands\n\nThe perils of having tests, the test wasn\u0027t tested thoroughly enough...\nFixup various automake problems, and then disable it since it depends on\nconfigure parameters in its current version.\n\nFor 0.99.24 we can ship a static copy of vtysh_cmd.c and have it\nreenabled.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8f399b0e4fff2344d75ebf709e1ce55f15269db2",
      "tree": "e9a2384156a90267a846b03c51435618b2427b1c",
      "parents": [
        "2b00515a9b639fd1e057f3ebf10ded2dde920764"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:50 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:38:29 2014 +0200"
      },
      "message": "tests: add a test program for lib/command.c\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4d474fa3297c0d5d632e2c0bff6ccb0edbedaa5d",
      "tree": "61ca2f19e552df821eb2dc06cd9e06c81993aacf",
      "parents": [
        "c78a46c27f6dfdd42fe0800cebabc1e49cb0a4bf"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 19 15:00:06 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 21 06:28:48 2014 +0100"
      },
      "message": "lib: fix backtraces broken by 837d16c...\n\n837d16c (\"*: use array_size() helper macro\") accidentally changed one of\nthe expressions in the backtrace code, which afterwards read:\n\nzlog_backtrace_sigsafe():\n  if (((size \u003d backtrace(array,array_size(array)) \u003c\u003d 0) ||\n\nwhich boils down to: (size \u003d backtrace(...)  \u003c\u003d 0).  The braces were\nintended to go:      (size \u003d backtrace(...)) \u003c\u003d 0.\n\nAll in all, this makes a nice textbook example of the original author\nbeing too clever (trying to save a single line by pulling the assignment\ninto the condition) and the next person touching the code tripping over\nit...\n\nThis code occurs another time in zlog_backtrace() where it is actually\ncorrect.  Pulling out the assignment nonetheless.  Also, new test\nprogram.\n\nCc: Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\nCc: Balaji.G \u003cbalajig81@gmail.com\u003e\nCc: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a83a1e9c2f035d3152451dcfc97ab13b4ac427b9",
      "tree": "fa8652ff314e4e6ac5a45192742140f2d4157d85",
      "parents": [
        "fed643f4093abc0ed5e796aab9047768f7036ed6"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 11:35:48 2013 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 11:35:48 2013 -0700"
      },
      "message": "build: fix tests/prng.h missing from dist\n\nbroken by fa713d9... \"zebra: rework recursive route resolution\", and I\nforgot to squash the fix into that.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fa713d9ee5ed30dedd0a290be9aaff780a2896be",
      "tree": "1d263cce70c341f3f2a73a47d4b1cd5a38b09129",
      "parents": [
        "bfac8dcd2fe7ed099a679b5c8245599c6d0312ed"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Jul 05 15:35:37 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 18:04:40 2013 +0200"
      },
      "message": "zebra: rework recursive route resolution\n\nChange the datastructure for recursive routes. This brings the following\nbenefits:\n\nBy using struct nexthop also to store nexthops obtained by recursive\nresolution, we can get rid of quite a bit of code duplication in the fib\nmanagement. (rt_netlink, rt_socket, ...)\n\nWith the new datastructure we can make use of all available paths when\nrecursive routes are resolved with multipath routes.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d77102025a30eef274e8d343bfec75f87899a417",
      "tree": "183d4001ebbee78399876e85ba2e6bc0d8ce6be3",
      "parents": [
        "1bf0ca9a07358ff13b1390f4462669e9ea4915dc"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Jul 05 18:30:57 2013 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Mon Jul 15 08:50:38 2013 -0400"
      },
      "message": "tests: don\u0027t build tests unless make check is run\n\nUse check_PROGRAMS instead of noinst_PROGRAMS in tests/Makefile.am\nto build the tests only when make check is actually run.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1bf0ca9a07358ff13b1390f4462669e9ea4915dc",
      "tree": "686046d5c7170274aaca7b34faa7a9315a670a2a",
      "parents": [
        "4c14b7f684510592f2eb46fd84859d8bca57def9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Jul 05 18:30:56 2013 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Tue Jul 09 12:26:46 2013 -0400"
      },
      "message": "tests: fix Makefile.am so it works with BSD make\n\nThe export statement is specific to GNU make and breaks the build\nwith BSD make. I couldn\u0027t observe any difference in behaviour\nbetween having the export present and absent, therefore, just remove it.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c69905b673812ce6ec2a12960727a27b9b8d6426",
      "tree": "2b7608b8d16bedfafbf734d5a0e8ff26646107f1",
      "parents": [
        "5bb7e4d12b3a3015208fad5ee0f3c055b704c8c4"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jan 24 01:39:14 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sun Apr 14 16:01:19 2013 +0200"
      },
      "message": "tests: DejaGNU libzebra\n\nWrap the few libzebra test programs we have up for DejaGNU.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "5bb7e4d12b3a3015208fad5ee0f3c055b704c8c4",
      "tree": "715ef4c4c267687d86e0c8fb7a494c31038c32bd",
      "parents": [
        "f281ab9752393fcc7cbb54c50edb66f25c2a31fb"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Feb 26 17:53:30 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sun Apr 14 16:01:11 2013 +0200"
      },
      "message": "tests: DejaGNU bgpd\n\nthis just wraps the existing test programs in expect wrappers that make\ntheir results usable to DejaGNU.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f281ab9752393fcc7cbb54c50edb66f25c2a31fb",
      "tree": "53be958c127d21c6bc0e2e2abd02f33a3fde16c2",
      "parents": [
        "f2b53dac4c72811c06779c596c6162b994eb427a"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Feb 26 16:21:20 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sun Apr 14 16:01:05 2013 +0200"
      },
      "message": "tests: add DejaGNU framework\n\nDejaGNU seems to be the \u0027standard\u0027 GNU test framework (which by itself\ndoesn\u0027t say much), but it seems relatively usable and the \"remote\nsystem\" capabilities might come in handy for virtualisation-based tests\nfor kernel interactions or something.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c095185c26f72bff14238ca1209ef6b2d7a8b935",
      "tree": "b6d9fa2ef2a225ff2c85d3d74dc1c94e327eeaab",
      "parents": [
        "4a014580ff85428aa41b28503554b2ce982805be"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 23 22:17:21 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 17:05:37 2013 +0200"
      },
      "message": "tests: make --disable-bgpd kill bgpd tests too\n\nbgpd tests don\u0027t compile or run with --disable-bgpd, let\u0027s catch this in\nthe Makefile.\n\nReported-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d1d3ac9bad0caf7a9c465bb382b924009f0d9168",
      "tree": "ee76b87f2b3b18ac109bf8b4268bfa5251ac3b34",
      "parents": [
        "b07458a055493dd37cb955ae90f11ae8bc334d3a"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Thu Oct 04 16:21:34 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 01 23:03:24 2012 -0700"
      },
      "message": "build: reorder libraries to address linker error\n\nThe linker on some systems (for example, Ubuntu 12.04 LTS x86_64)\nappears to be sensitive to the order in which libraries are\nspecified. On these systems, if a library \u0027A\u0027 depends on a library\n\u0027B\u0027, it has to be specified before \u0027B\u0027 when linking an executable.\n\n  * zebra/Makefile.am: Make sure LIBCAP comes after libzebra.\n\n  * tests/Makefile.am: Ensure libm comes after libbgp.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "28971c8cb1138700e87dc7da673e59b5596bb51b",
      "tree": "0e55c3f830681449cd96bb36eb04a6a1293d8b44",
      "parents": [
        "67174041d2d9d8908f8b2c915bc0d186d8442c68"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Fri Aug 17 08:19:50 2012 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Sep 26 21:50:48 2012 +0200"
      },
      "message": "lib/table: add route_table_get_next() and iterator\n\n  * lib/table.[ch]\n\n    - Add a function (route_table_get_next()) to get the route_node in\n      a tree that succeeds a given prefix in iteration order.\n\n      This allows one to reliably walk nodes in a tree while allowing\n      modifications, and is useful for achieving scale and\n      performance. Other approaches are also possible -- the main plus\n      point of this one is that it does not require any state about\n      the walk to be maintained in the table data structures.\n\n    - Add an iterator for walking the nodes in a tree. This introduces\n      a new structure (route_table_iter_t) and the following main\n      functions.\n\n        route_table_iter_init()\n        route_table_iter_pause()\n        route_table_iter_next()\n        route_table_iter_cleanup()\n\n      The iterator normally uses node pointers and the existing\n      route_next() function to walk nodes efficiently. When an\n      iteration is \u0027paused\u0027 with route_table_iter_pause(), it stores\n      the last prefix processed. The next call to\n      route_table_iter_next() transparently invokes\n      route_table_get_next() with the prefix to resume iteration.\n\n  * bgpd/bgp_table.[ch]\n\n    Add wrappers for the new table features described above.\n\n  * tests/table_test.c\n\n    Add tests for the new table code.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9e7a548ce421660b0d22bfeb90c2b2b53742aac7",
      "tree": "4c962403808f98806781fb4ad15594152bc1effa",
      "parents": [
        "a47c5838e9f445ab887ad927706b11ccbb181364"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 14:32:22 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "build: allow configure and build in a separate directory\n\nSome .h files in lib/ are autogenerated. The search path should\ninclude the build directory and the source directory. They usually\nmatch but sometimes, they may be different. For example:\n\n $ mkdir build\n $ cd build\n $ ../configure\n $ make\n"
    },
    {
      "commit": "42ea68512fc4d04b500def45e8f899321f4081e7",
      "tree": "8a993e42cd5f1e74369936df7c6f92b378ede5ba",
      "parents": [
        "165b5fff9dde5536d9cb1f850b36c17bf5654f0f"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Jul 20 20:44:23 2011 -0700"
      },
      "committer": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Jul 20 20:44:23 2011 -0700"
      },
      "message": "bgpd: add bgp_mpath_test.c\n\n* tests/bgp_mpath_test.c\n  * New file with test framework for testing BGP multipath\n  * Add test for CLI support functions\n* tests/Makefile.am\n  * Add new testbgpmpath target\n"
    },
    {
      "commit": "5d4b8cf2faba9f5386810a7c70837e5b7fae3572",
      "tree": "ec89383f7bfd4684a0cde15648e5f00e8d2d8f7b",
      "parents": [
        "41dc3488cf127a1e23333459a0c316ded67f7ff3"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Nov 16 18:34:19 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Nov 16 18:47:02 2008 +0000"
      },
      "message": "[lib] Switch Fletcher checksum back to old ospfd version\n\n* lib/checksum.c: (fletcher_checksum) Switch the second phase of the checksum\n  back to the old ospfd logic.\n\n  The isisd-derived version:\n\n  a) is very hard to follow\n  b) had some kind of subtle bug that caused it be wrong when c0\u003d0 and c1\u003d254\n     (potentially fixable by doing the mods before adjusting x and y)\n\n  Additionally:\n\n  - explicitely cast expressions using non-internal variables to int, to ensure\n    the result is signed.\n  - defensively change the length argument to \u0027size_t\u0027, to ensure the code\n    works with that argument being unsigned..\n\n  Thanks to Joakim Tjernlund for the investigative work into this bug.\n\n* tests/test-checksum.c: new file to exercise the checksum code.\n"
    },
    {
      "commit": "46bc0e432e756fcb8fc4f703b47cd25b9fc7139c",
      "tree": "60100ca1e11c3c3600441d366b236f4a2de519ca",
      "parents": [
        "d664ae1182c29b74b409bc8594b7bd0575e91ce9"
      ],
      "author": {
        "name": "Paul P Komkoff Jr",
        "email": "i@stingr.net",
        "time": "Wed Aug 13 16:17:04 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:12 2008 +0100"
      },
      "message": "[build] Test for GNU-style PIE support in toolchain and enable\n\n2008-08-13 Paul P Komkoff Jr \u003ci@stingr.net\u003e\n\n\t* configure.ac: add a configure flag and autoconf macro, which will\n\t  determine if your toolchain supports PIE.\n\t* */Makefile.am: add corresponding CFLAGS and LDFLAGS into\n\t  appropriate places.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "343f720b345dd377bdf4f53e3b02e0c2898f3f0b",
      "tree": "b6f4d9053d79074a7dc2799d5d8fc07fe93c062b",
      "parents": [
        "13e896ba2a449848791dd7d020c59fe75cbd562b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sat Jun 07 20:32:38 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sat Jun 07 20:32:38 2008 +0000"
      },
      "message": "[tests] BGP MP_(UN)REACH_NLRI unit tests\n\n2008-06-07 Paul Jakma \u003cpaul@jakma.org\n\n\t* bgp_mp_attr_test.c: MP_(UN)REACH_NLRI unit tests\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": "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"
    },
    {
      "commit": "067fca86323b189fabf4c64c0b9ccb98a458b981",
      "tree": "2a8b28a2cad3d1a956748204b7b20eecb63b1496",
      "parents": [
        "4b201d46348b81bd9d59aa626c81f7457ea6ef38"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 14:49:04 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 14:49:04 2006 +0000"
      },
      "message": "[tests] Add small unit test for the new stream functions\n\n2006-01-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* test-stream.c: new file, small unit test for new\n\t  resize and {put,get}-quad stream functions.\n\t* Makefile.am: build teststream unit test.\n"
    },
    {
      "commit": "84771ee0deadae6d83b939a2d3f8f83cc420a829",
      "tree": "68b3e5c5cc6e84dd7d57a4bda2e61616d518a1a2",
      "parents": [
        "77df1f78597af79209777d264ec9986f33a2fd17"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 03:48:28 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 03:48:28 2005 +0000"
      },
      "message": "2005-10-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* test-privs.c: Privileges unit test.\n\t* Makefile.am: build testprivs\n\t* aspath_test.c: fix a few sign warnings\n"
    },
    {
      "commit": "1f377b0202dfc4653f7717de964b628a369a9526",
      "tree": "ff8718a3d40adbec8adeab994a32873bbbd4bacf",
      "parents": [
        "fe69a505f7be4357bf8523e3bbdced9c95590f3a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Sep 10 18:00:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Sep 10 18:00:11 2005 +0000"
      },
      "message": "2005-09-06 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* aspath_test.c: Test bgp_aspath functionality.\n\t* Makefile.am: build aspathtest\n\t* ChangeLog: Fix date of previous commit\n"
    },
    {
      "commit": "9f3f7a1145a42942b28bae6b68163d805bb91b56",
      "tree": "439b8f849496aebd1bd5fa72523790fa0bf49c0a",
      "parents": [
        "147aff0fa4c3c1f54270881851b6c2c23418b031"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 16:42:24 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 16:42:24 2005 +0000"
      },
      "message": "2004-05-25 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* main.c: new file, common \u0027main\u0027 portion which then calls\n\t  test_init.\n\t* heavy.c: remove common portions now in \u0027main.\n\t* heavy-wq.c: ditto\n\t* heavy-thread.c: ditto\n\t* heavy*.c: Set the slow_function iteration number lower, to 300, it\n\t  was several orders of magnitude too \u0027slow\u0027 to be useful. :)\n\t* Makefile.am: main is a source of the tests. heavy should link\n\t  to the math library.\n"
    },
    {
      "commit": "1d2c893b61211761a17bb2e51345a2eaed12cf1f",
      "tree": "e45d47b36df1293c4a0402646f3bb478c2154ec8",
      "parents": [
        "864c364df9eb7d119ce81db834eff6a726e2fa78"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 00:54:44 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 00:54:44 2005 +0000"
      },
      "message": "2004-05-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Makefile.am: Build heavythread\n"
    },
    {
      "commit": "4dcadf7efd58e9d91a52c5f06c02cb40bbf21823",
      "tree": "5968d1e9773c79cfe0db364ce91314087cb57f6e",
      "parents": [
        "5d6e26910b6790e7ea759893c16e9f0e380fcc1e"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 13 03:31:35 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 13 03:31:35 2005 +0000"
      },
      "message": "2004-05-13 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* test-buffer.c: Andrew\u0027s buffer tester\n\t* test-memory.c: basic memory tester\n\t* Makefile.am: Add new tests\n"
    },
    {
      "commit": "41c14a1fc3c97f8cfcb4ef8f8bce12a2d9ad29df",
      "tree": "d9b53eadf8cf0043c1c35bae2f58dd7ba853b858",
      "parents": [
        "1203e1c07c444df615605168c72852389e20340c"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jul 26 19:27:51 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jul 26 19:27:51 2004 +0000"
      },
      "message": "2004-07-26 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* configure.ac: reenable tests/Makefile\n\t* tests/Makefile.am: automake file for tests dir\n\t* tests/.cvsignore: update\n"
    }
  ]
}
