)]}'
{
  "log": [
    {
      "commit": "d849e23b1c6b7278aef2f460723ac17cdc63e1a7",
      "tree": "d0627a3b565375788d11f930143afe561d9b0d2b",
      "parents": [
        "f9f4731245eb9f83d0795acac24183c6cf709288"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Thu Feb 18 18:19:54 2016 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 18:05:23 2016 +0000"
      },
      "message": "zebra: Fix route deletion on *BSD\n\nFix for not handling RTM_CHANGE correctly.  This patch change it to\ndelete/add instead.  Using RTM_CHANGE on kernels where it works is better,\nbut is left as an exercise for developer who has access and will to fix it\non *BSD.\n\n[ed note: collaboration with Martin Winter]\n"
    },
    {
      "commit": "9099f9b2a66e86f8a90d7fe18f61bd2bb1bc6744",
      "tree": "1ce5d2e4ecff6b57eb00d40b1a91b3f363ff35fe",
      "parents": [
        "954c7d6bcd04c2cf037965adda0f9d11afdcd165"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Jan 18 10:12:10 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "*: use an ifindex_t type, defined in lib/if.h, for ifindex values\n"
    },
    {
      "commit": "0abf6796c3d8ae8f5ea8624668424bc1554de25e",
      "tree": "2d1713deeb970d79930912588341ff756949b49c",
      "parents": [
        "b0d02889624eaafa0984873dcd78c086418bdf13"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:29 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "zebra: atomic FIB updates\n\nThis commit updates the kernel API so that route changes are\natomically updated using change/replaces messages instead\nof first sending a withdraw followed with update.\n\nSame for zclient updates, changes are sent as single ADD\ninstead of DELETE + ADD.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\n"
    },
    {
      "commit": "8fa1d027f23115dcb1c38b09c6e46edf5b8f7238",
      "tree": "73ed587d0f0967ee78e93f64d95be6ba3b9aaf68",
      "parents": [
        "ebd2687a531a0f9b9449f6fcf7001f53afa99d02"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 15 21:55:38 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:47 2015 -0700"
      },
      "message": "zebra/rt_socket: Fix warnings\n\nFix warning about unused sin_masklen / sin6_masklen\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "be6335d682c5ee1b6930345193eda875705fbab2",
      "tree": "2107740224a8a6b3f44241ba71d9be562f138232",
      "parents": [
        "53a5c39c705f917567d5b1764f1fe12ad5c5e577"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Sat May 23 11:08:41 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jun 01 16:50:58 2015 +0200"
      },
      "message": "zebra: use prefix2str for logging where possible\n\nThis makes code more robust, consice and readable.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "872b0dc0537b62503d98bafd3075553795c847cb",
      "tree": "9b6ea87ff63cd46db494a9f57fcc06c3df022b5f",
      "parents": [
        "52f02b47685bc823c4c75560175a27aab0bd6709"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:57:49 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:18 2015 +0200"
      },
      "message": "zebra: remove unused netlink_route()/kernel_rtm_ipv6()\n\nkernel_delete_ipv6_old(), removed in 51bdeba a little while ago, was the\nlast user of netlink_route() and kernel_rtm_ipv6().  Everything else\nuses the _multipath variants of these functions.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "51bdebad99fe813d1b7104543b352f0e39b1c8dc",
      "tree": "b2040a5c538cd3168a6c8842b92e28e35fa17420",
      "parents": [
        "86a82e99aa3728d78a1ec65b60a2162914cd7519"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 21:28:50 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:18:56 2015 +0100"
      },
      "message": "zebra: remove kernel_delete_ipv6_old()\n\nThe only user of this was rib_bogus_ipv6(), which was removed in the\nprevious commit.  Good riddance.\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": "6d6df30386423518b5daef93c2f047b4140f85f4",
      "tree": "7da3226d3276e019c49a4b4a673911a85297ecc7",
      "parents": [
        "0f048b90b5d6e4bd185913945b68dd254126eb9f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 21:12:37 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:18:49 2015 +0100"
      },
      "message": "build: remove INRIA, NRL and MUSICA IPv6 quirks\n\nValar dohaeris.\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": "f7bf41534e885c7bc077529c591a1bce24a5f1e9",
      "tree": "2c119e01872468b249bba44e5f7d20da67147756",
      "parents": [
        "db19c85679b08668c3dce73a655c21753042cf06"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 17:10:21 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:27:58 2014 +0200"
      },
      "message": "zebra: apply syntactic sugar to rib_dump()\n\nstrip the explicit __func__ present on all calls and make the prefix\nargument a transparent union.\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": "2d844524ad9431ea1e53336dfcfebd3ee6520cb7",
      "tree": "1c688c317f879922991c6d6c548b7f8fcd8e0490",
      "parents": [
        "bd6c86d3a30d27ed4960863a653376c54e5e5e34"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Fri Sep 14 11:31:55 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Fri Sep 14 11:31:55 2007 +0000"
      },
      "message": "Switch from LOOKUP() to lookup() for rtm_type (see bug #401 for details).\n"
    },
    {
      "commit": "bd6c86d3a30d27ed4960863a653376c54e5e5e34",
      "tree": "29c6ad4e9539282028c9452870416c61d731ab7b",
      "parents": [
        "af400e26aec5828ac63fd1e2273172f3ac9da44e"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Wed Sep 12 15:24:27 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Wed Sep 12 15:24:27 2007 +0000"
      },
      "message": "* rt_socket.c: (kernel_rtm_ipv4) prefix_buf could be passed\n  to zlog_err() uninitialized with debug disabled. Fixed.\n"
    },
    {
      "commit": "dc95824ae13d65156dd873a6e784d9a0eed2f39f",
      "tree": "fa53aa99e517d9cfe5c56474051afdaa1bc9a666",
      "parents": [
        "068fd77cff0ce09b6390641abd84fc09a89c49db"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Aug 13 16:03:06 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Aug 13 16:03:06 2007 +0000"
      },
      "message": "Merged own patch for the bug #391 (debugging and comments mostly).\n"
    },
    {
      "commit": "dfdb8f18c008e7ad306588c86b12fbef337427ca",
      "tree": "260a657aa0326cd895d51118d00a088e2884277d",
      "parents": [
        "f76594a2e32f7e7be3de09b1af92c1d8426a059b"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Thu Aug 02 14:13:56 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Thu Aug 02 14:13:56 2007 +0000"
      },
      "message": "Add comment questioning part of previous change (Denis?).\nFix indentation to match accumulated changes.\n"
    },
    {
      "commit": "f76594a2e32f7e7be3de09b1af92c1d8426a059b",
      "tree": "a4760bc1e9ebc565875d909c17a0505d4b095ab4",
      "parents": [
        "14838194d6b56209c914eb9e5782d9331dcbe818"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Thu Aug 02 14:07:07 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Thu Aug 02 14:07:07 2007 +0000"
      },
      "message": "Bugzilla #384.\n\n2007-08-02  Denis Ovsienko\n\n\t* rt_socket.c (kernel_rtm_ipv4): Only call rtm_write when changes\n\tare intended.  Don\u0027t set FIB flag on failed additions (such as\n\toccur with multiple paths.\n\n\nhttp://bugzilla.quagga.net/attachment.cgi?id\u003d235\u0026action\u003dview\n"
    },
    {
      "commit": "6f0e3f6e17687eb25b7b77c4fdc8324837d4700f",
      "tree": "8a94d9212060f0f2ee7cbd0079c2687eed7348dc",
      "parents": [
        "08d3d5b398ae81de7659509f159e814d1bbd4375"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 10 02:38:51 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 10 02:38:51 2007 +0000"
      },
      "message": "[autoconf] bugs 162,303,178: Fix \u0027present but can not be compiled\u0027 warnings\n\n2007-05-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: sys/conf.h depends on sys/param.h, at least on\n\t  FBSD 6.2.\n\t  (bug #363) Should check for in_pktinfo for IRDP\n\n2006-05-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: General cleanup of header and type checks, introducing\n\t  an internal define, QUAGGA_INCLUDES, to build up a list of\n\t  stuff to include so as to avoid \u0027present but cant be compiled\u0027\n\t  warnings.\n\t  Misc additional checks of things missing according to autoscan.\n\t  Add LIBM, for bgpd\u0027s use of libm, so as to avoid burdening\n\t  LIBS, and all the binaries, with libm linkage.\n\t  Remove the bad practice of using m4 changequote(), just\n\t  quote the []\u0027s in the case statements properly.\n\t  This should fix bugs 162, 303 and 178.\n\t* */*.{c,h}: Update all HAVE_* to the standard autoconf namespaced\n\t  HAVE_* defines. I.e. HAVE_SA_LEN -\u003e HAVE_STRUCT_SOCKADDR_SA_LEN,\n\t* bgpd/Makefile.am: Add LIBM to bgpd\u0027s LDADD, for pow().\n"
    },
    {
      "commit": "6083e1f82ce3a33d9929dea8c64cbc5ffe486000",
      "tree": "48872266c1f9f0741ea27513560248420a1632f7",
      "parents": [
        "a3214b79aceed58ae638afe62d9db149f3bc81c7"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Dec 29 15:59:57 2005 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Dec 29 15:59:57 2005 +0000"
      },
      "message": "2005-12-29  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n        * rt_socket.c (kernel_rtm_ipv4): Use AF_INET rather than AF_UNSPEC\n        for mask.  From David Young.\n"
    },
    {
      "commit": "6621ca868c935a82468e07ea2e5a165f40750658",
      "tree": "01db8cd66509c8afd2057558b048fc134c1371b8",
      "parents": [
        "5906476bea21153f5d757e364b8e4c604b72cef1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Nov 23 13:02:08 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Nov 23 13:02:08 2005 +0000"
      },
      "message": "[zebra] fix some small compile errors, mark several functions static\n\n2005-11-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) fix some small compile errors, and mark several\n          functions as static.\n        * kernel_socket.c: (ifan_read) should be static.\n          fix missing brackets.\n          (ifm_read,ifam_read,rtm_read_mesg,kernel_read) Make static\n          (ifam_read_mesg) make static. fix incorrect variable name.\n          (rtm_read) make static. Fix call to rib_delete_ipv4 which\n          should be rib_delete_ipv6.\n          (routing_socket,kernel_init) should be static. Void argument\n          should be specified as such, not left incomplete.\n        * rt_netlink.c: rt.h should be included, contains prototypes of\n          exported functions.\n          (kernel_delete_ipv6_old) fix sign of index argument.\n        * rt_socket.c: Exact same as previous. Also, make various\n          functions static.\n        * rtread_getmsg.c: Include zserv.h, which prototypes\n          route_read. Make static.\n        * rtread_sysctl.c: zserv.h and rt.h should be included.\n          fix definition of route_read.\n"
    },
    {
      "commit": "6fe70d1b35c189cb1e488b2c26551ba7baac6148",
      "tree": "c2fc75ff90d6ad2d8a05f1f8a6414a913be53a8d",
      "parents": [
        "db29ae5fcaee1d2de371415e351afe6c3df19874"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 12 22:55:10 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 12 22:55:10 2005 +0000"
      },
      "message": "[solaris] Extra debug and cross-checks for kernel_socket, two Sol9 fixes.\n\n2005-11-12 Alexander Gall \u003cgall@switch.ch\u003e\n\n\t* See [quagga-dev 1815]\n\t* kernel_socket.c: (rtm_write) Use SAROUNDUP when HAVE_SIN_LEN\n\t  is not available.\n\t* rt_socket.c: (kernel_rtm_ipv6(_multipath)) set family to\n\t  AF_INET6 on ipv6 routes.\n\n2005-11-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* kernel_socket.c: Add RTA_NAME_GET macro to extract name from\n\t  sockaddr_dl. Add some more RTF_ flags.\n\t* (ifan_read) Add some debug messages.\n\t* (ifm_read) Add more debug messages. More robust cross-checks\n\t  of index against name.\n\t  Fall back to by-name lookup if the index lookup fails, future\n\t  proofing more than anything else.\n\t  (ifam_read_mesg) Read RTA_IFP. Add debug messages.\n\t  (ifam_read) More debug. If there\u0027s an RTA_IFP and it isn\u0027t\n\t  the name of the interface, save it as the label.\n\t  (rtm_read_mesg) Read RTA_IFP.\n\t  (rtm_read) allow name to be retrieved.\n\t  (rtmsg_debug) expand on the debug message.\n"
    },
    {
      "commit": "b6178002270192fe3ab2403dafac12e5babe11e6",
      "tree": "6b9c352d814185e16a353d17752059eb995019e0",
      "parents": [
        "8ddca7040da413cd283a4beba4634744f4e61ac8"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 21:12:56 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 21:12:56 2004 +0000"
      },
      "message": "2004-12-07 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* *.c: Change level of debug messages to LOG_DEBUG.\n"
    },
    {
      "commit": "fa2b17e39499a77f41a719035a588b7fb63cec63",
      "tree": "3356703917aaa8359e0106ae3c2340ee6eea0e1f",
      "parents": [
        "caa6f8ac7d07f8cd3269255e6dce6d248f74af62"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Mar 04 17:45:00 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Mar 04 17:45:00 2004 +0000"
      },
      "message": "Many warning fixes from PC Drew ([quagga-dev 940]) and removing using PAGER\nfrom vtysh ([quagga-dev 932]).\n"
    },
    {
      "commit": "edd7c245d3a77012abf801da00d5664ebaa5f749",
      "tree": "d4fada229d7980fb751f28c9a979aa88de1a0af0",
      "parents": [
        "a159ed935b580ed99111a185734ddd9c973e7691"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 04 13:59:38 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 04 13:59:38 2003 +0000"
      },
      "message": "2003-06-04 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Merge of zebra privileges\n"
    },
    {
      "commit": "595db7f16506d2c82a3478e9f8dab00c8733d386",
      "tree": "240d477dd4b5262ba78cc50fda4b81de09e2c91c",
      "parents": [
        "726f9b2bbdd5a607f7b0a10a64547739b807e361"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 25 21:35:06 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 25 21:35:06 2003 +0000"
      },
      "message": "Add back support for null0 interface blackhole routes.\n"
    },
    {
      "commit": "81dfcaa2e27d53f4eb61c549e03065dcb1b8eec3",
      "tree": "2aed449138a4833fe343052cdfa505be74332cb4",
      "parents": [
        "15291357d130b804dcdcfd81bdb1b86a84567fd0"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun May 25 19:21:25 2003 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun May 25 19:21:25 2003 +0000"
      },
      "message": "Route (reject|blackhole) support from 6Wind patch.\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"
    }
  ]
}
