)]}'
{
  "log": [
    {
      "commit": "8b84c2762ccd2d47a115824ee083d33e697a7741",
      "tree": "6f561e4d5b78e3cc5b8388d7cbaf6dbe512ce50b",
      "parents": [
        "8c56b44de0fa8100b6f0b367dbc604d41b94025f"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Sat May 30 18:57:54 2015 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Aug 04 16:39:27 2015 +0100"
      },
      "message": "Removal of \u0027show ip mroute\u0027\n\nThe \u0027show ip mroute\u0027 in zebra_vty.c collided with the\n\u0027show ip mroute\u0027 command in pim_cmd.c.  The \u0027show ip rpf\u0027\ncommand is functionally equivalent to the zebra_vty.c\n\u0027show ip mroute\u0027.  Therefore remove the \u0027show ip mroute\u0027 command\nin zebra_vty.c.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7aaf4ea990398335bd40b56cc9586ab6a7178a4f",
      "tree": "12800739e1a926cff27d4d676323be35318ef8ac",
      "parents": [
        "8970f74ec77f93eb862ab8803d9d7c76c7128940"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:06 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:48:34 2015 +0200"
      },
      "message": "zebra: configure static routes in any VRF\n\nIntroduce new commands to configure static routes in any VRF, by\nappending the old static route commands with a new parameter\n\"vrf N\".\n\nA new parameter \"const char *vrf_id_str\" is added to the functions\nzebra_static_ipv4() and static_ipv6_func() to get the configured\nVRF ID.\n\nA new member \"vrf_id\" is added to the \"struct static_ipv4\" and\n\"struct static_ipv6\", indicating which VRF this static route is\nconfigured in.\n\nBut till now, no interface can exist in any non-default VRF. So\nthese static routes in non-default VRFs are kept inactive.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4364ee5b6f65008fe19225f05e489ad8257a7df8",
      "tree": "dd6b5e9e5e5e7cf5c212b3b9182d6231d8166e97",
      "parents": [
        "0d0686f98e64017415071e590bde262f0ab5a4c9"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:03 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:48:30 2015 +0200"
      },
      "message": "zebra: show routes in a specified VRF or all VRFs\n\nThe present \"show ip[v6] [m]route [xxx]\" and \"show ip rpf [xxx]\"\ncommands now show routes only in the default VRF.\n\nA new option is introduced to show routes in a specified VRF:\n    show ip[v6] [m]route [xxx] vrf N\n    show ip rpf [xxx] vrf N\n\nand a new option is used to show routes through all VRFs:\n    show ip[v6] [m]route [xxx] vrf all\n    show ip rpf [xxx] vrf all\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\n[DL: conflicts resolved]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "0d0686f98e64017415071e590bde262f0ab5a4c9",
      "tree": "a8ffef2548d24ce9a7662a20573d2a26a8e17142",
      "parents": [
        "a2854770ff839553c9444193e84a1593645fa848"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:02 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:46:17 2015 +0200"
      },
      "message": "zebra: let FIB stand for its respective VRF\n\nA new member \"vrf_id\" is added to \"struct rib\", reflecting the VRF\nwhich it belongs to.\n\nA new parameter \"vrf_id\" is added to the relative functions where\nneed, except those:\n- which already have the parameter \"vrf_id\"; or\n- which have a parameter in type of \"struct rib\"; or\n- which have a parameter in type of \"struct interface\".\n\nAll incoming routes are set to default VRF.\n\nIn fact, all routes in FIB are kept in default VRF. And the logic\nis not changed.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\n[DL: conflicts fixed + compile warning fix]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "41f44a23e86a65a5cad7e5e8cafd7e935f153232",
      "tree": "1fcffa568b188ae66e5f18df09f6960522dfe564",
      "parents": [
        "395828eea809e8b2b8c5824d3639cefedd7aa9f0"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:39:56 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 06:58:12 2015 +0200"
      },
      "message": "lib, zebra: move \"struct vrf\" to be a lib module\n\nPreviously \"struct vrf\" is defined locally in zebra. Now it is moved\nto be a lib module.\n\nThis is the first step to support multi-VRF in quagga. The\nimplementation is splitted into small patches for the purpose of\neasy review.\n\n* lib:\n    \"struct vrf\" with basic members is defined in vrf.c. The member\n    \"void *info\" is for user data.\n\n    Some basic functions are defined in vrf.c for adding/deleting/\n    looking up a VRF, scanning the VRF table and initializing the\n    VRF module.\n\n    The type \"vrf_id_t\" is defined specificly for VRF ID.\n\n* zebra:\n    The previous \"struct vrf\" is re-defined as \"struct zebra_vrf\";\n    and previous \"vrf\" variables are renamed to \"zvrf\".\n\n    The previous \"struct vrf\" related functions are removed from\n    zbera_rib.c. New functions are defined to maintain the new\n    \"struct zebra_vrf\".\n\n    The names vrf_xxx are reserved for the functions in VRF module.\n    So:\n    - the previous vrf_table() are renamed to zebra_vrf_table();\n    - the previous vrf_static_table() are renamed to\n      zebra_vrf_static_table().\n\n    The main logic is not changed.\n\n    BTW: Add a statement to zebra_snmp.c telling that the SNMP is\n         running only for the MIBs in the default VRF.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "53a5c39c705f917567d5b1764f1fe12ad5c5e577",
      "tree": "fd116539e632b8c5a0cbdd0312134767e1966f78",
      "parents": [
        "41eb9a4305fbcb206c900a18af7df7115d857d60"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Sat May 23 11:08:40 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jun 01 16:31:21 2015 +0200"
      },
      "message": "zebra/vty: use prefix2str and unify show ip/ipv6 route code\n\nUse prefix2str where possible. As now ip/ipv6 are practically\nidentical, they are merged removing unneeded code duplication.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b7cce958649775600458f2fb3a8d33fc84683d26",
      "tree": "d33d2e70408fc0d13e4b0c9d7494fca02bfb8b26",
      "parents": [
        "5cd0e5c659d0ae7840748e83cd9f340568fa4204"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Mar 07 08:40:48 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Mar 07 08:40:48 2015 +0100"
      },
      "message": "zebra: don\u0027t print uninitialized string (3b02fe8)\n\nThis crept in as part of the MRIB improvements and I missed the compiler\nwarning between other noise.  Unfortunately, printing an uninitialised\nvariable can in fact make zebra crash, so this is not trivial.\n\nFixes: 3b02fe8 (\"zebra: add \"show ip rpf\" to get result of RPF lookup\")\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "863f20c326758c8a97e0a7a41c87355b66c4012d",
      "tree": "dea3fc4a2a9e203c5a81715080349684a08b2a44",
      "parents": [
        "3b02fe84aae567c56ef63e74cdb0dc63c66e2968"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 27 20:24:15 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 06 22:01:52 2015 +0100"
      },
      "message": "zebra: mark multicast commands experimental\n\ndepending on feedback from actually having these commands in a released\nversion, we may want to adjust them.  Thus, mark them as experimental so\nusers are aware of this.\n\nCc: Everton Marques \u003ceverton.marques@gmail.com\u003e\nCc: Balaji G \u003cbalajig81@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3b02fe84aae567c56ef63e74cdb0dc63c66e2968",
      "tree": "9a24aa7caa14bee4c78142ebd1a0213c1cc4a5ec",
      "parents": [
        "bd0781296703cf2eddebced34258a1897a03b535"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jan 22 19:12:35 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 06 22:01:52 2015 +0100"
      },
      "message": "zebra: add \"show ip rpf\" to get result of RPF lookup\n\nChecking what route exactly a RPF lookup for a given source uses is\nessential for an administrator to debug multicast routing issues.  This\ncommand provides exactly that, using the multicst RPF lookup function\nand printing out its result to the CLI.\n\nCc: Everton Marques \u003ceverton.marques@gmail.com\u003e\nCc: Balaji G \u003cbalajig81@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "bd0781296703cf2eddebced34258a1897a03b535",
      "tree": "7d52174915f5873c42902157b522b17520e58ac1",
      "parents": [
        "24480d426046e46fbcec098be1147650d6d3ff50"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 06 19:53:24 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 06 22:01:52 2015 +0100"
      },
      "message": "zebra: make MRIB lookup behaviour switchable\n\ndepending on the usage scenario (and availability of multitopology IGP\nprotocols, which is currently zero in Quagga), different approaches of\nMulticast RPF lookups are useful.\n\nReference behaviours from commercial vendors are urib-only/mrib-only\n(Juniper, depending on inet.2 availability) and lowest-distance (Cisco).\nAs we are currently without MT IGP support, mrib-first seems the most\nuseful default for Quagga.\n\nCc: Everton Marques \u003ceverton.marques@gmail.com\u003e\nCc: Balaji G \u003cbalajig81@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a76681b66746a8b1cbaea7032044b93958473aa1",
      "tree": "6c0db1011215473fd7ed4f93f9a29c00e21d48b4",
      "parents": [
        "33d86db3df7052da33990b47ad5a171dad6df691"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jan 22 19:03:53 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 06 22:01:51 2015 +0100"
      },
      "message": "zebra: fix optional distance on static mrib route\n\nUnfortunately, the quagga CLI parser doesn\u0027t support [\u003c1-255\u003e].  Fix by\nworking around with an alias.\n\nReplaces the following commits:\n- zebra: mrib: [no] ip mroute - require distance.\n- zebra: mrib: [no] ip mroute - make distance optional.\n(Rewritten as alias)\n\nCc: Everton Marques \u003ceverton.marques@gmail.com\u003e\nCc: Balaji G \u003cbalajig81@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "33d86db3df7052da33990b47ad5a171dad6df691",
      "tree": "79fbcd0e0374502ae105f85d99e5b56285a4160e",
      "parents": [
        "f598cf7ecc8dd72dca08e97eb766e5ccaabe3424"
      ],
      "author": {
        "name": "Everton Marques",
        "email": "everton.marques@gmail.com",
        "time": "Mon Jul 14 11:19:00 2014 -0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 06 22:01:51 2015 +0100"
      },
      "message": "zebra: mrib: static route support\n\nWith the MRIB being independent from the Unicast RIB, there\u0027s currently\nnow way to add static routes to the MRIB.  Address that by adding a\nseparate set of commands for MRIB static routes.\n\nCombines these original patches:\n- zebra: mrib: ip mroute command to add unicast route to MRIB for multicast RPF.\n- zebra: mrib: no ip mroute: Fix removal of static multicast RPF route.\n- zebra: mrib: remove unused static_add/delete_ipv4\n- zebra: Cleanups to zebra_rib.\n- pimd: Merge pim-only branch.\n\nCc: Everton Marques \u003ceverton.marques@gmail.com\u003e\nCc: Balaji G \u003cbalajig81@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "56a5f7752d9bf7297ea022544112909cf2ccba97",
      "tree": "557d29293e55e78f9f0cbb0c90a6acd1a111734c",
      "parents": [
        "d1b0991ad8404366811a7ccc86e76f70a1ba399e"
      ],
      "author": {
        "name": "Dinesh G Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue Sep 30 12:58:04 2014 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Nov 11 17:25:30 2014 +0000"
      },
      "message": "Added show command to display only the routes in the RIB that does not count ECMPs\n\nSigned-off-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nReviewed-by: Paul Jakma \u003cpaul@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "969d3550a8cbb07f8b4d5ebe8dde5064f8260140",
      "tree": "f43d5c74ed758af6b1181ce03163ebf2504a1271",
      "parents": [
        "384d7ad98c109e92eaf65bf10a3256e5657639c3"
      ],
      "author": {
        "name": "Lu Feng",
        "email": "lu.feng@6wind.com",
        "time": "Tue Oct 21 06:24:07 2014 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Mon Oct 27 14:37:55 2014 +0100"
      },
      "message": "zebra: route_unlock_node is missing in \"show ip[v6] route \u003cprefix\u003e\" commands\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n"
    },
    {
      "commit": "6b0655a25194c7c0331154edaa6124cf783e5e5e",
      "tree": "c0c7d479f2684531249668210da27a60322ba395",
      "parents": [
        "fdb913aedb5a9807ad60715e8badb4f25d57acea"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:53:35 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:58:02 2014 +0200"
      },
      "message": "*: nuke ^L (page feed)\n\nQuagga sources have inherited a slew of Page Feed (^L, \\xC) characters\nfrom ancient history.  Among other things, these break patchwork\u0027s\nXML-RPC API because \\xC is not a valid character in XML documents.\n\nNuke them from high orbit.\n\nPatches can be adapted simply by:\n\tsed -e \u0027s%^L%%\u0027 -i filename.patch\n(you can type page feeds in some environments with Ctrl-V Ctrl-L)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2b00515a9b639fd1e057f3ebf10ded2dde920764",
      "tree": "1167cb145764208a132599e5d83980708501bac4",
      "parents": [
        "f7bf41534e885c7bc077529c591a1bce24a5f1e9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:49 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:32:49 2014 +0200"
      },
      "message": "bgpd, ospfd, zebra: fix some DEFUN definitions\n\nFixup some DEFUNS with incorrect command strings or mixed up helpstrings.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e8d3d2991f72613edb76dea244a8c8e4684873dd",
      "tree": "d02f768800ebaac51439368ff3d851e63ed6359e",
      "parents": [
        "48a53dc71cb422e619859b79d5069e02fcd867d0"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Jul 05 15:35:39 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 18:04:40 2013 +0200"
      },
      "message": "zebra: implement NEXTHOP_FLAG_ONLINK\n\nOn Linux, the kernel will only allow for a route to be installed when\nits gateway is directly attached according the kernel fib.\n\nThere are cases when this restriction by the kernel is too strong, in\nthose cases, we deploy the RTNH_F_ONLINK netlink flag.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\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": "5b9f51828db732d56053500b1d257797f7f3401b",
      "tree": "d5f43ef09d6a8df6a2eef852bd61020c27395125",
      "parents": [
        "a0f6ce5b41dcfa059074d72c8fc61896d3e996a9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Sat May 25 14:01:34 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Aug 06 12:41:46 2013 +0200"
      },
      "message": "zebra: improve display of NEXTHOP_IPV4_IFINDEX in show ip route\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9fd92e3c4bdcc78e0f0d94d53a2d4c7b0e893fcb",
      "tree": "a3adf090e5ef776b8c6dc6223890a2640217a95b",
      "parents": [
        "5aebb9c77fc2257c9d9df72db66668fabb24fc52"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Tue Nov 13 22:48:53 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:41:16 2012 +0100"
      },
      "message": "zebra: add structure to hold per-prefix state in RIB\n\nAdd the rib_dest_t structure to hold per-prefix state in the routing\ninformation base. This gives us an appropriate place to maintain the\nqueueing state of a route_node. Queuing state was previously being\nstored on the first rib in the list of ribs hanging off the\nroute_node.\n\n  * zebra/rib.h\n\n    - Add new structure rib_dest_t.\n\n    - Remove the rn_status field from \u0027struct rib\u0027, it is no longer\n      required.\n\n    - Add macros (RNODE_FOREACH_RIB, RNODE_FOREACH_RIB_SAFE) for\n      walking all \u0027struct ribs\u0027 corresponding to a route_node. These\n      hide the fact that there is an intermediate rib_dest_t\n      structure.\n\n    - Add a few utility inlines to go between a rib_dest_t and\n      associated structures.\n\n  * zebra/zebra_rib.c\n\n    - rib_link()/rib_unlink()\n\n      Tweak for new behavior, where the \u0027info\u0027 pointer of a route_node\n      points to a rib_dest_t. The list of ribs for a prefix now hangs\n      off of the dest.\n\n      Change the way we ref count route_nodes. We now hold a single\n      ref count on a route_node if there is a corresponding\n      rib_dest_t.\n\n    - Maintain the queuing state of a route_node on the flags field of\n      the rib_dest_t.\n\n    - Add the rib_gc_dest() function, which deletes a rib_dest_t if it\n      is no longer required. A rib_dest_t can be deleted iff there are\n      no struct ribs hanging off of it.\n\n    - Call rib_gc_dest() any time we unlink a rib from the\n      rib_dest_t. Currently we only need to call it once, just before\n      we return from rib_process().\n\n  * zebra/{redistribute,zebra_rib,zebra_snmp,zebra_vty}.c\n\n    Use new macros to walk over route_node ribs.\n\n  * lib/memtypes.c\n\n    Add memory type for rib_dest_t.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "36735ed988f96810e78d0ace2f7d8e6397db5c50",
      "tree": "3a8f876383d07a33aa7b76d7519a75d8678bbb1f",
      "parents": [
        "42cb6b6655d0cc141374ec373220d244f81fbba0"
      ],
      "author": {
        "name": "Joachim Nilsson",
        "email": "troglobit@gmail.com",
        "time": "Wed May 09 13:38:36 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 09 13:51:54 2012 +0200"
      },
      "message": "zebra: fix up compilation without rtadv/IPv6\n\nlet\u0027s ground the rtadv.h file if route advertisements are disabled. And\nfix up the CLI for it, as well as move the \"show ip mroute\" to its\nproper place.\n\n  * zebra/rtadv.h: #ifdef RTADV\n  * zebra/main.c: #ifdef RTADV\n  * zebra/zebra_vty.c: move \"show ip mroute\" out of #ifdef IPV6\n\nFrom: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\n[moved #ifdef RTADV to rtadv.h]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ddc943dec3c017583f81cce388c7d453293156c7",
      "tree": "a36d2bca91b1f3a7545a135b3bafccc40d0ca47b",
      "parents": [
        "8794e8d229dc9fe29ea31424883433d4880ef408"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Fri Apr 13 13:46:07 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:21 2012 +0200"
      },
      "message": "bgpd, zebra: Fix format for some metric outputs\n\nMetrics are unsigned values.\n\n  * bgpd/bgp_{debug,route,vty}.c,\n  * zebra/zebra_vty.c: replace %d with %u for metrics \u0026 distances\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n[reworded commit message]\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "578ce371d12422ce444f31ae4e51b21675c74b55",
      "tree": "fc3412d8da413c531257fbc9517b5eb93bea1b96",
      "parents": [
        "82509bfde09b15ac8856a374aac6d5d62b91f54a"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 13:42:28 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "zebra: Display uptime of Babel routes in show ip[v6] route.\n"
    },
    {
      "commit": "cb32fd690a957819865219a847e3c21a53a0f419",
      "tree": "d152fe1feadaaa3b14472c097770bb71a2e75730",
      "parents": [
        "73bfe0bd9adb8e4dfcee7239e56a425c6d58f4e9"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Sun Nov 27 20:09:40 2011 +0530"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:31:14 2012 +0400"
      },
      "message": "zebra: Removal of the following warning messages\n       warning: too many arguments for format [-Wformat-extra-args]\n"
    },
    {
      "commit": "cddf391bf6839e9f093cef15508669c1f3f92122",
      "tree": "38dfaa5a7b98776ba67bb8a812beec8724810839",
      "parents": [
        "5a616c08ce089e25dc0e8da920727af4d11279bf"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Sat Nov 26 21:59:32 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:30:42 2012 +0400"
      },
      "message": "zebra: IPv4 MP-BGP Routes addition and deletion\n\nThis patch contains the following:\n1. Addition of IPv4 SAFI_MULTICAST BGP routes into the RTM\u0027s RIB.\n2. Deletion of IPv4 SAFI_MULTICAST BGP routes from the RTM\u0027s RIB.\n"
    },
    {
      "commit": "e0ca5fde7be5b5ce90dae78c2477e8245aecb8e9",
      "tree": "0e0b32ddbed4a84a3b2de9dd7217165cb81f52fa",
      "parents": [
        "ebf08631cad8a420fc6bfb7c45af5496dc11023e"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Sep 16 01:52:42 2009 +0200"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:13:17 2011 +0400"
      },
      "message": "lib: put route_types.txt to real use\n\nthis replaces most occurences of routing protocol lists by preprocessor\ndefines from route_types.h. the latter is autogenerated from\nroute_types.txt by a perl script (previously awk). adding a routing\nprotocol now is mostly a matter of changing route_types.txt and log.c.\n\nConflicts:\n\n\tlib/route_types.awk\n"
    },
    {
      "commit": "61691c91c15445445b0ac246ee12e559a4cacdb5",
      "tree": "427a21e559966e635e5c2437a642c281b4983ab4",
      "parents": [
        "914131f80da7b9696d26b42ed92b2d93d4d8b3ab"
      ],
      "author": {
        "name": "Stig Thormodsrud",
        "email": "stig@io.vyatta.com",
        "time": "Tue Nov 04 15:45:07 2008 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:25 2009 +0100"
      },
      "message": "[zebra] Fix vyatta bug 2814: Add \"show ip route summary\" command.\n"
    },
    {
      "commit": "7fc626de5f618133ad2a478d13defa3a110b89ea",
      "tree": "432ff0e4672eabc2ec6b0dcffc22dcc0aee532c8",
      "parents": [
        "66e5cd87194ae6fdd51061a91b4698bc0a652f6b"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Dec 01 11:10:34 2008 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:10:29 2009 +0100"
      },
      "message": "[cleanup] Make command nodes static\n\nThe cmd_nodes used to configure vty, can mostly be static so\n(basic data hiding 101).\n"
    },
    {
      "commit": "093033144658c5d914429fad5b0a6cf952f20943",
      "tree": "02e4c24a9ca95a37bb3995bdc6e0f7e3222f2b87",
      "parents": [
        "7ab62c5319bd86a3cfda32351bc4103cf9517f26"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed May 30 20:10:34 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed May 30 20:10:34 2007 +0000"
      },
      "message": "[zebra] Trivial patches so we can compile when IPv6 is not enabled\n\n2007-05-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra_routemap.c: (route_set_src_compile) Use \u0027#ifdef HAVE_IPV6\u0027\n\t  as needed.\n\t* zebra_vty.c: (vty_show_ip_route_detail, vty_show_ip_route) Use\n\t  \u0027#ifdef HAVE_IPV6\u0027 as needed.\n\t  (show_ip_protocol) Move function definition outside of\n\t  \u0027#ifdef HAVE_IPV6\u0027 section.\n"
    },
    {
      "commit": "7514fb7739f74311830e9ddd1381d0d228224f61",
      "tree": "4d4b9a4fdfcea4cb6fa496085327f1aae9a9a380",
      "parents": [
        "5fa05099567bbe42aae87a9bef8fd630b3666a4d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed May 02 16:05:35 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed May 02 16:05:35 2007 +0000"
      },
      "message": "[zebra] Routemap support on received routes, with \u0027set src\u0027 command (linux)\n\n2007-05-01 David L Stevens \u003cdlstevens@us.ibm.com\u003e\n\n\t* (general) These changes collectively add route-map and\n\t  prefix-list support to zebra and fix a bug in \"show\n\t  route-map\" (with no argument).\n\t* doc/main.texi: added route-map, prefix-list, ip protocol\n\t  and set src documentation\n\t* lib/command.h: added PROTOCOL_NODE type\n\t* lib/log.c: (proto_name2num) new function, protocol name to\n\t  number translation.\n\t* lib/routemap.c: (vty_show_route_map) fixed \"show route-map\"\n\t  without route-map name\n\t* lib/routemap.h: added RMAP_ZEBRA type\n\t* lib/zebra.h: added proto_name2num() prototype\n\t* vtysh/extract.pl.in: added VTYSH_ZEBRA flag for route-map and\n\t  plist\n\t* vtysh/Makefile.am: added zebra_routemap.c\n\t* vtysh/vtysh.h: added VTYSH_ZEBRA flag to VTYSH_RMAP\n\t* zebra/connected.c: (connected_up_ipv4) added src preference argument\n\t  to rib_add_ipv4()\n\t* zebra/kernel_socket.c: (rtm_read) ditto\n\t* zebra/main.c: added prefix list initialization\n\t* zebra/Makefile.am: added zebra_routemap.c source file\n\t* zebra/rib.h: added generic address union \"g_addr\" and use in\n\t  existing places that had an explicit union.\n\t  Added \"src\" to struct nexthop.\n\t  Added preferred src arg to nexthop_ipv4_add and rib_add_ipv4.\n\t* zebra/rt_netlink.c: (netlink_routing_table) set preferred source on\n\t  netlink messages.\n\t  (netlink_route_change) ditto\n\t  (netlink_route_multipath) ditto.\n\t* zebra/rtread_getmsg.c: (handle_route_entry) added (NULL) src to\n\t  rib_add_ipv4() call.\n\t* zebra/rtread_proc.c: (proc_route_read) ditto\n\t* zebra/zebra_rib.c: (nexthop_ipv4_add) add src argument.\n\t  (nexthop_ipv4_ifindex_add) ditto\n\t  (rib_add_ipv4) ditto\n\t  (nexthop_active_check) Add route-map processing.\n\t* zebra/zebra_routemap.c: new file for zebra route-map commands.\n\t* zebra/zebra_vty.c: (ip_protocol_cmd) Apply route-map to protocol\n\t  (vty_show_ip_route_detail) added \"src\" printing\n\t  (vty_show_ip_route) ditto\n\t  (show_ip_protocol_cmd) new command, list routemaps.\n\t  (config_write_protocol) write out routemap protocl config.\n\t  (zebra_vty_init) Install the new routemap protocol commands.\n\t* zebra/zserv.c: (zread_ipv4_add) added (NULL) src arg\n\t  (zebra_init) init zebra route-maps.\n\t* zebra/zserv.h: add zebra_route_map_init\n"
    },
    {
      "commit": "f52d13cb2e8e7197934d5f241f88647f9b9d78b8",
      "tree": "b0aa01befc07f57ed47e83ac7dfb383284c49d26",
      "parents": [
        "c05612b9a702d0f49c379c92deb6daab55372aea"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 17:38:06 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 17:38:06 2005 +0000"
      },
      "message": "2005-10-01 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra.h: Declare new functions zebra_route_string() and\n\t  zebra_route_char().\n\t* log.c: (zroute_lookup,zebra_route_string,zebra_route_char) New\n\t  functions to map zebra route numbers to strings.\n\t* zebra_vty.c: (route_type_str) Remove obsolete function: use new\n\t  library function zebra_route_string() instead.  Note that there\n\t  are a few differences: for IPv6 routes, we now get \"ripng\" and\n\t  \"ospf6\" instead of the old behavior (\"rip\" and \"ospf\").\n\t  (route_type_char) Remove obsolete function: ues new library function\n\t  zebra_route_char() instead.  Note that there is one difference:\n\t  the old function returned \u0027S\u0027 for a ZEBRA_ROUTE_SYSTEM route,\n\t  whereas the new one returns \u0027X\u0027.\n\t  (vty_show_ip_route_detail,vty_show_ipv6_route_detail) Replace\n\t  route_type_str() with zebra_route_string().\n\t  (vty_show_ip_route,vty_show_ipv6_route) Replace route_type_char()\n\t  with zebra_route_char().\n\t* bgp_vty.c: (bgp_config_write_redistribute) Use new library function\n\t  zebra_route_string instead of a local hard-coded table.\n\t* ospf6_asbr.c: Remove local hard-coded tables zroute_name and\n\t  zroute_abname. Change the ZROUTE_NAME macro to use new library\n\t  function zebra_route_string().  Remove the ZROUTE_ABNAME macro.\n\t  (ospf6_asbr_external_route_show): Replace ZROUTE_ABNAME() with\n\t  a call to zebra_route_char(), and be sure to fix the format string,\n\t  since we now have a char instead of a char *.\n\t* ospf6_zebra.c: Remove local hard-coded tables zebra_route_name and\n\t  zebra_route_abname.  Note that the zebra_route_name[] table\n\t  contained mixed-case strings, whereas the zebra_route_string()\n\t  function returns lower-case strings.\n\t  (ospf6_zebra_read_ipv6): Change debug message to use new library\n\t  function zebra_route_string() instead of zebra_route_name[].\n\t  (show_zebra): Use new library function zebra_route_string() instead\n\t  of zebra_route_name[].\n\t* ospf_dump.c: Remove local hard-coded table ospf_redistributed_proto.\n\t  (ospf_redist_string) New function implemented using new library\n\t  function zebra_route_string().  Note that there are a few differences\n\t  in the output that will result: the new function returns strings\n\t  that are lower-case, whereas the old table was mixed case.  Also,\n\t  the old table mapped ZEBRA_ROUTE_OSPF6 to \"OSPFv3\", whereas the\n\t  new function returns \"ospf6\".\n\t* ospfd.h: Remove extern struct message ospf_redistributed_proto[],\n\t  and add extern const char *ospf_redist_string(u_int route_type)\n\t  instead.\n\t* ospf_asbr.c: (ospf_external_info_add) In two messages, use\n\t  ospf_redist_string instead of LOOKUP(ospf_redistributed_proto).\n\t* ospf_vty.c: Remove local hard-coded table distribute_str.\n\t  (config_write_ospf_redistribute,config_write_ospf_distribute): Use\n\t  new library function zebra_route_string() instead of distribute_str[].\n\t* ospf_zebra.c: (ospf_redistribute_set,ospf_redistribute_unset,\n\t  ospf_redistribute_default_set,ospf_redistribute_check)\n\t  In debug messages, use ospf_redist_string() instead of\n\t  LOOKUP(ospf_redistributed_proto).\n\t* rip_zebra.c: (config_write_rip_redistribute): Remove local hard-coded\n\t  table str[]. Replace str[] with calls to new library function\n\t  zebra_route_string().\n\t* ripd.c: Remove local hard-coded table route_info[].\n\t  (show_ip_rip) Replace uses of str[] with calls to new library\n\t  functions zebra_route_char and zebra_route_string.\n\t* ripng_zebra.c: (ripng_redistribute_write) Remove local hard-coded\n\t  table str[].  Replace str[i] with new library function\n\t  zebra_route_string(i).\n\t* ripngd.c: Remove local hard-coded table route_info[].\n\t  (show_ipv6_ripng) Use new library function zebra_route_char() instead\n\t  of table route_info[].\n"
    },
    {
      "commit": "a1ac18c4d5b4f8f4f279efb2ae12b46258f22282",
      "tree": "e37732ef4b00ae98d1be693e721b01cc2566ba39",
      "parents": [
        "94f2b3923e9663d0355a829f22e4e31cf68ee7b8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 17:17:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 17:17:12 2005 +0000"
      },
      "message": "2005-06-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) Extern and static\u0027ification, with related fixups\n\t  of declarations, ensuring files include their own headers, etc.\n\t  if_ioctl.c: (interface_info_ioctl) fix obvious arg mis-order in\n\t  list loop\n"
    },
    {
      "commit": "b8adec1f98b155c6bf5e54067c8e31ae1de3c133",
      "tree": "fc3114960ddcc24a3dfc120b7152b35cff7c42b9",
      "parents": [
        "ee3e115747e5ef48c5580072f680a0f96512b7c0"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Dec 18 16:03:28 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Dec 18 16:03:28 2004 +0000"
      },
      "message": "Fix \"show ipv6 route \u003cproto\u003e\" command.\n"
    },
    {
      "commit": "39db97e4e02eae08a1e18528367b6e9b07eb6a93",
      "tree": "2fb3a0269f4f2fe235ef722e3ad9cc8e6005bb6c",
      "parents": [
        "39ff11dc92d004b59d1ec786fd54b27111fee0b5"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 12 20:50:58 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 12 20:50:58 2004 +0000"
      },
      "message": "Some compiler warnings fixes and fix for bugzilla #119.\n"
    },
    {
      "commit": "39ff11dc92d004b59d1ec786fd54b27111fee0b5",
      "tree": "00ec9f9ee2a8b94d05faf049715d766e0fd74bff",
      "parents": [
        "f4d58ce5aa0da64fd136c5747ff371d46736490a"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 12 15:55:19 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 12 15:55:19 2004 +0000"
      },
      "message": "Unbreak \"show ip route\" command.\n"
    },
    {
      "commit": "c9e52be3f4d98943b67fbbe5d9a7ccd823b88326",
      "tree": "d4045a946af3be8bbdc303162778e8c44057e2f9",
      "parents": [
        "e473b032b860444b9656cee1654b0120f77b52b1"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 26 16:09:34 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 26 16:09:34 2004 +0000"
      },
      "message": "Compiler warnings fixes.\n"
    },
    {
      "commit": "9e867fe663c4eb43c36f35067c0dd092e8c83c14",
      "tree": "f29461b6a2dc8c38037dc0cf91e70392f9ed4ab2",
      "parents": [
        "eb5d44eb8dcf25a1b328e57d1eabb1f89e3bc59b"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Tue Dec 23 08:56:18 2003 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Tue Dec 23 08:56:18 2003 +0000"
      },
      "message": "Merge isisd into the Quagga\u0027s framework:\n  - add privs support\n  - use misc quagga\u0027s definitions\n  - make it compile\"able\"\n  - fix segfault cases related to hostname()\n  - add debug isis xxx command\n\nThis patch has been approved by Paul Jakma.\n"
    },
    {
      "commit": "7021c425a9f5bd9f62b934124becbaadd961cac0",
      "tree": "cf386f6923eac9f1c665400d0557448c4f5a89e0",
      "parents": [
        "8fc0f64b143ed2155567f5c9f0faad756252146a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 15 12:52:22 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 15 12:52:22 2003 +0000"
      },
      "message": "2003-07-15 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * lib/version.h: add ZEBRA_URL (unused for now)\n        * lib/vty.c: CMD_ERR_NOTHING_TODO when reading conf file should not\n          be fatal. slight reformating.\n        * ospfd/ospf_zebra.c: ignore reject/blackhole routes if zebra sends\n          these type of routes. probably should be a new type of route to\n          allow daemons to more easily choose whether to redistribute them\n          - rathen than just a flag (eg for reject/blackhole).\n          reorder the is_prefix_default test for ZEBRA_IPV4_ROUTE_DELETE to\n          avoid the inverted test - slightly more readable.\n        * redhat/zebra.spec.in: Add ospfapi port to services file, if\n          with_ospfapi.\n        * zebra/rib.h: Change nexthop types to an enum.\n        * zebra/rt_netlink.c: run it through indent -nut.\n          Add nexthop_types_desc[] descriptive array for nexthop types.\n          (netlink_route_multipath) debug statements indicate which branch\n          they are in and print out nexthop type.\n        * zebra/zebra_rib.c: slight reformatting.\n        * zebra/zebra_vty.c: Pass ZEBRA_FLAG_BLACKHOLE flag to\n          static_add_ipv4() if Null0 route is configured. print out Null0 if\n          STATIC_IPV4_BLACKHOLE route, and ignore flags (shouldnt be\n          possible to set flags from vty) for config and show route.\n"
    },
    {
      "commit": "457ef551ebe112c2f0a6ec21f6ba865fbb85a84b",
      "tree": "b4abc10a56664f2c20635b1c4afe3fd526cff109",
      "parents": [
        "a65ec8454984c26983c94700fe5e8c1d11e6a75f"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed May 28 12:02:15 2003 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed May 28 12:02:15 2003 +0000"
      },
      "message": "IPv4 part of \"make reject|blackhole routes work without nexthop|interface\".\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"
    }
  ]
}
