)]}'
{
  "log": [
    {
      "commit": "2db962760426ddb9e266f9a4bc0b274584c819cc",
      "tree": "406ea2dc4196e9904ab9832a7dae548f4cdcf91d",
      "parents": [
        "405e9e19eb6ce62fa4f3f39a1f73990db9e146b7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Feb 08 14:46:28 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:22 2016 +0000"
      },
      "message": "lib: zclient can overflow (struct interface) hw_addr if zebra is evil\n\n* lib/zclient.c: (zebra_interface_if_set_value) The hw_addr_len field\n  is used as trusted input to read off the hw_addr and write to the\n  INTERFACE_HWADDR_MAX sized hw_addr field.  The read from the stream is\n  bounds-checked by the stream abstraction, however the write out to the\n  heap can not be.\n\n  Tighten the supplied length to stream_get used to do the write.\n\n  Impact: a malicious zebra can overflow the heap of clients using the ZServ\n  IPC.  Note that zebra is already fairly trusted within Quagga.\n\nReported-by: Kostya Kortchinsky \u003ckostyak@google.com\u003e\n"
    },
    {
      "commit": "405e9e19eb6ce62fa4f3f39a1f73990db9e146b7",
      "tree": "e3e6c66af5ed0a6d7270a842986487ba5e8c8c26",
      "parents": [
        "518a4b7eadcba567f01061e6659d8179380efcdf"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Feb 04 17:00:18 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:22 2016 +0000"
      },
      "message": "bgpd: Remove the double-pass parsing of NLRIs\n\n* bgpd parses NLRIs twice, a first pass \"sanity check\" and then a second pass\n  that changes actual state. For most AFI/SAFIs this is done by\n  bgp_nlri_sanity_check and bgp_nlri_parse, which are almost identical.\n\n  As the required action on a syntactic error in an NLRI is to NOTIFY and\n  shut down the session, it should be acceptable to just do a one pass\n  parse.  There is no need to atomically handle the NLRIs.\n\n* bgp_route.h: (bgp_nlri_sanity_check) Delete\n* bgp_route.c: (bgp_nlri_parse) Make the prefixlen size check more general\n  and don\u0027t hard-code AFI/SAFI details, e.g. use prefix_blen library function.\n\n  Add error logs consistent with bgp_nlri_sanity_check as much as possible.\n\n  Add a \"defense in depth\" type check of the prefixlen against the sizeof\n  the (struct prefix) storage - ala bgp_nlri_parse_vpn.\n  Update standards text from draft RFC4271 to the actual RFC4271 text.\n\n  Extend the semantic consistency test of IPv6. E.g. it should skip mcast\n  NLRIs for unicast safi as v4 does.\n\n* bgp_mplsvpn.{c,h}: Delete bgp_nlri_sanity_check_vpn and make\n  bgp_nlri_parse_vpn_body the bgp_nlri_parse_vpn function again.\n\n  (bgp_nlri_parse_vpn) Remove the notifies.  The sanity checks were\n  responsible for this, but bgp_update_receive handles sending NOTIFY\n  generically for bgp_nlri_parse.\n\n* bgp_attr.c: (bgp_mp_reach_parse,bgp_mp_unreach_parse) Delete sanity check.\n  NLRI parsing done after attr parsing by bgp_update_receive.\n\nArising out of discussions on the need for two-pass NLRI parse with:\n\nLou Berger \u003clberger@labn.net\u003e\nDonald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "518a4b7eadcba567f01061e6659d8179380efcdf",
      "tree": "0bc751d4e0024954e1bf3bf5a7e0ce84b219ba1f",
      "parents": [
        "18ab08b71e6b29e67b36df5e2261569d381b1708"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Feb 04 13:27:04 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:21 2016 +0000"
      },
      "message": "bgpd: Regularise bgp_update_receive, add missing notifies and checks\n\n* bgp_packet.c: (bgp_update_receive) Lots of repeated code, doing same\n  thing for each AFI/SAFI.  Except when it doesn\u0027t, e.g.  the IPv4/VPN\n  case was missing the EoR bgp_clear_stale_route call - the only action\n  really needed for EoR.\n\n  Make this function a lot more regular, using common, AFI/SAFI\n  independent blocks so far as possible.\n\n  Replace the 4 separate bgp_nlris with an array, indexed by an enum.\n\n  The distinct blocks that handle calling bgp_nlri_parse for each\n  different AFI/SAFI can now be replaced with a loop.\n\n  Transmogrify the nlri SAFI from the SAFI_MPLS_LABELED_VPN code-point\n  used on the wire, to the SAFI_MPLS_VPN safi_t enum we use internally\n  as early as possible.\n\n  The existing code was not necessarily sending a NOTIFY for NLRI\n  parsing errors, if they arose via bgp_nlri_sanity_check.  Send the\n  correct NOTIFY - INVAL_NETWORK for the classic NLRIs and OPT_ATTR_ERR\n  for the MP ones.\n\n  EoR can now be handled in one block.  The existing code seemed broken\n  for EoR recognition in a number of ways:\n\n  1.  A v4/unicast EoR should be an empty UPDATE.  However, it seemed\n     to be treating an UPDATE with attributes, inc.  MP REACH/UNREACH,\n     but no classic NLRIs, as a v4/uni EoR.\n\n  2.  For other AFI/SAFIs, it was treating UPDATEs with no classic\n     withraw and with a zero-length MP withdraw as EoRs.  However, that\n     would mean an UPDATE packet _with_ update NLRIs and a 0-len MP\n     withdraw could be classed as an EoR.\n\n  This seems to be loose coding leading to ambiguous protocol\n  situations and likely incorrect behaviour, rather than simply being\n  liberal.  Be more strict about checking that an UPDATE really is an\n  EoR and definitely is not trying to update any NLRIs.\n\n  This same loose EoR parsing was noted by Chris Hall previously on\n  list.\n\n  (bgp_nlri_parse) Front end NLRI parse function, to fan-out to the correct\n  parser for the AFI/SAFI.\n\n* bgp_route.c: (bgp_nlri_sanity_check) We try convert NLRI safi to\n  internal code-point ASAP, adjust switch for that.  Leave the wire\n  code point in for defensive coding.\n\n  (bgp_nlri_parse) rename to bgp_nlri_parse_ip.\n\n* tests/bgp_mp_attr_test.c: Can just use bgp_nlri_parse frontend.\n"
    },
    {
      "commit": "18ab08b71e6b29e67b36df5e2261569d381b1708",
      "tree": "1160aff3b43a6e0bdf5e8b553425ad5bea12640f",
      "parents": [
        "c49a2747f6a6199dba27c0c413f4de6112fa649e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Jan 27 16:37:33 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:10 2016 +0000"
      },
      "message": "bgpd: Regularise BGP NLRI sanity checks a bit\n\n* bgp_route.h: (bgp_nlri_sanity_check) The bulk of the args are equivalent\n  to a (struct bgp_nlri), consolidate.\n* bgp_route.c: (bgp_nlri_sanity_check) Make this a frontend for all afi/safis.\n  Including SAFI_MPLS_LABELED_VPN.\n  (bgp_nlri_sanity_check_ip) Regular IP NLRI sanity check based on the\n  existing code, and adjusted for (struct bgp_nlri *) arg.\n* bgp_attr.c: (bgp_mp_reach_parse) Adjust for passing (struct bgp_nlri *)\n  to bgp_nlri_sanity_check.\n  Get rid of special-casing to not sanity check VPN.\n  (bgp_mp_unreach_parse) Ditto.\n\n* bgp_mplsvpn.c: Use the same VPN parsing code for both the sanity\n  check and the actual parse.\n\n  (bgp_nlri_parse_vpn) renamed to bgp_nlri_parse_vpn_body and made\n  internal.\n\n  (bgp_nlri_parse_vpn_body) Added (bool) argument to control whether it\n  is sanity checking or whether it should update routing state for each\n  NLRI.  Send a NOTIFY and reset the session, if there\u0027s a parsing\n  error, as bgp_nlri_sanity_check_ip does, and as is required by the\n  RFC.\n\n  (bgp_nlri_parse_vpn) now a wrapper to call _body with update.\n\n  (bgp_nlri_sanity_check_vpn) wrapper to call parser without\n  updating.\n\n* bgp_mplsvpn.h: (bgp_nlri_sanity_check_vpn) export for\n  bgp_nlri_sanity_check.\n\n* bgp_packet.c: (bgp_update_receive) Adjust for bgp_nlri_sanity_check\n  argument changes.\n\n* test/bgp_mp_attr_test.c: Extend to also test the NLRI parsing functions,\n  if the initial MP-attr parsing has succeeded.  Fix the NLRI in the\n  VPN cases.  Add further VPN tests.\n\n* tests/bgpd.tests/testbgpmpattr.exp: Add the new test cases.\n\nThis commit a joint effort of:\n\nLou Berger \u003clberger@labn.net\u003e\nDonald Sharp \u003csharpd@cumulusnetworks.com\u003e\nPaul Jakma \u003cpaul.jakma@hpe.com\u003e / \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "c49a2747f6a6199dba27c0c413f4de6112fa649e",
      "tree": "27bc97363bf8e3f25535f39c030e6da7b37e4a0e",
      "parents": [
        "e98dce60cea213a4155a0db60b463e40c67aa77f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 05 14:57:17 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:48 2016 +0000"
      },
      "message": "bgpd: make bgp_nlri_parse_encap conform with other nlri_parse funcs\n\n* bgp_encap.{c,h} (bgp_nlri_parse_encap) afi is already in the NLRI argument.\n  update or withdraw is signalled by attr being non-NULL or NULL.\n\n* bgp_packet.c: (update_receive) fixup to match, and also make the attr\n  argument conform with NLRI_ATTR_ARG for correct error handling on\n  optional, transitive, partial, attributes.\n"
    },
    {
      "commit": "e98dce60cea213a4155a0db60b463e40c67aa77f",
      "tree": "bd9704ae2d834fef5882eb094d6df90fb4097dba",
      "parents": [
        "ecc1a136e10e0717761b6f436d299938a05a1309"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Jan 20 07:53:51 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:47 2016 +0000"
      },
      "message": "bgpd: Fix Null pointer dereference in bgp_info_mpath_update\n\nbgp_info_mpath_update is called with new_best \u003d\u003d NULL, this\ncauses the dereference of new_best in order to get at the mpath_cfg.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "ecc1a136e10e0717761b6f436d299938a05a1309",
      "tree": "b2158970126f59d00e76dba8029441ac7738608f",
      "parents": [
        "b2a2fd788f34a4f5d1bbd92a283e47704f05ae8f"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Dec 09 08:24:47 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:47 2016 +0000"
      },
      "message": "bgpd: Modify maxpaths cli\u0027s to use MULTIPATH_NUM for range\n\nModify the various maxpath commands to use MULTIPATH_NUM\nas the upper limit of allowed max paths in BGP.  There\nis no point in allowing a number of maximum paths greater\nthan what Quagga is compiled for.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "b2a2fd788f34a4f5d1bbd92a283e47704f05ae8f",
      "tree": "60c789a8376edf88f1d0206ece1be43451c7a9cd",
      "parents": [
        "91ce87aacfd8718b5a52fb0f4453e9f72d8bdb53"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Dec 09 08:24:46 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:47 2016 +0000"
      },
      "message": "lib: Add CMD_RANGE_STR macro to command.h\n\nAllow the auto-generation of a \"\u003cX-Y\u003e\" string for cli handline.\nWhere X or Y can be a #define.\n\nCMD_RANGE_STR(LOW, HIGH) translates to:\n\"\u003c4-99\u003e\"\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "91ce87aacfd8718b5a52fb0f4453e9f72d8bdb53",
      "tree": "8abce3edf10e5874aa342090810adcfbf2380053",
      "parents": [
        "d18396369ff85517cd4b0b7abe96f6f706710dc7"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Dec 09 08:24:45 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:47 2016 +0000"
      },
      "message": "zebra, bgpd: Fixup MULTIPATH_NUM usage to not consider 0\n\nThe code has spots where MULTIPATH_NUM set to 0 is equal to 64.\nNow that MULTIPATH_NUM is set from the makefile to never be 0,\nremove the code that depends on this.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d18396369ff85517cd4b0b7abe96f6f706710dc7",
      "tree": "748597138dba3b393808782c8767fdf886b603f4",
      "parents": [
        "693da6096a28eef5eadeea699771265987b3ec0c"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Dec 09 08:24:44 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:47 2016 +0000"
      },
      "message": "build: Rework how MULTIPATH_NUM is delivered to build\n\nChanges made here:\n\n1) MULTIPATH_NUM will never be 0.  If user specifies --enable-multipath\u003d0\nthen this translates to MULTIPATH_NUM being set to 64 inside of the build\nsystem.\n\n2) Move MULTIPATH_NUM from a Makefile construct to a config.h construct.\n\n3) Allowed MULTIPATH_NUM to be a number \u003e 99 but \u003c 1000\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "693da6096a28eef5eadeea699771265987b3ec0c",
      "tree": "528464933b04751a44ea4a972461ac4b666e621b",
      "parents": [
        "36fef5708d074a3ef41f34d324c309c45bae119b"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Dec 16 14:22:11 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:47 2016 +0000"
      },
      "message": "ospfd: Remove HAVE_OSPF_TE\n\nRemove from ospf the HAVE_OSPF_TE define and just always have\nospf traffic engineering.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "36fef5708d074a3ef41f34d324c309c45bae119b",
      "tree": "4c8cbcf99823d92fcbe94165fe210908d402b6af",
      "parents": [
        "2e320423337c628bfeb814ec15fd5f575ebc5eed"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Dec 16 14:22:10 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:47 2016 +0000"
      },
      "message": "ospfd: Remove HAVE_OPAQUE_LSA\n\nHAVE_OPAQUE_LSA is used by default and you have to actively turn it off\nexcept that OPAQUE_LSA is an industry standard and used pretty much\neverywhere.  There is no need to have special #defines for this anymore.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "2e320423337c628bfeb814ec15fd5f575ebc5eed",
      "tree": "21174999e4fc60d7d0ab13313bc92b98728a1118",
      "parents": [
        "9099f9b2a66e86f8a90d7fe18f61bd2bb1bc6744"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Jan 13 10:49:50 2016 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "doc, vtysh: Fixup of history handling\n\nThis fix does two things:\n\n1) If the ${HOME}/.history_quagga file does not exist, create it\nfor history storing.\n2) Allow vtysh -c \"...\" commands to be stored in history file\nas well\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\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": "954c7d6bcd04c2cf037965adda0f9d11afdcd165",
      "tree": "707ba870b0989d08a98e6b969fc1e2388f09e1c0",
      "parents": [
        "4d3ae716ce86c28e3979c9ae57c4e717ac5e27e4"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:33 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "lib, zebra: unify link layer type and hardware address handling\n\nThis removes the BSD specific usage of struct sockaddr_dl\nhardware address. This unifies to use explict hw_addr member for\nthe address, and zebra specific enumeration for the link layer\ntype.\n\nAdditionally the zapi is updated to never send platform specific\nstructures over the wire, but the ll_type along with hw_addr_len\nand hw_addr are now sent for all platforms.\n\nBased on initial work by Paul Jakma.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "4d3ae716ce86c28e3979c9ae57c4e717ac5e27e4",
      "tree": "42d84ffb3cfe8a1f267c059e3a62fea87554f1c7",
      "parents": [
        "325823a5f07d6850318e52f6e66691eca59d24fe"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:32 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "zebra: remove metric from kernel\n\nIt simplifies things as we can do atomic replace of route prefix.\nAnd it seems there\u0027s some race condition somewhere that can result\nin an incorrect change request leaving prefixes in kernel when\nthey were intended to be replaced/deleted.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "325823a5f07d6850318e52f6e66691eca59d24fe",
      "tree": "9be443652c5c0734b6761a84f44980be7958b708",
      "parents": [
        "82a6635ca580ccd3c31551c960ec3de816b6c15d"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:31 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "zebra: support FIB override routes\n\nFIB override routes are for routing protocols that establish\nshortcut routes, or establish point-to-point routes that should\nnot be redistributed. Namely this is useful NHRP daemon to come.\n\nZebra is extended to select two entries from RIB the \"best\" entry\nfrom routing protocols, and the FIB entry to install to kernel.\nFIB override routes are never selected as best entry, and thus\nare never adverticed to other routing daemons. The best FIB\noverride, or if it does not exist the otherwise best RIB is\nselected as FIB entry to be installed.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "82a6635ca580ccd3c31551c960ec3de816b6c15d",
      "tree": "d55f7b9894ccfda8f6b3295fd1efdf86356c1969",
      "parents": [
        "0abf6796c3d8ae8f5ea8624668424bc1554de25e"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:30 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "zebra: use link scope for interface routes\n\nIn linux, \u0027scope\u0027 is a hint of distance of the IP. And this is\nevident from the fact that only lower scope can be used as recursive\nvia lookup result. This changes all interface routes scope to link\nso kernel will allow regular routes to use it as via. Then we do\nnot need to use the \u0027onlink\u0027 attribute.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\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": "b0d02889624eaafa0984873dcd78c086418bdf13",
      "tree": "8f15cb8a76935d04c0a18d28a647bc0915d7d86a",
      "parents": [
        "205e6744f2dc2909dd494c9ce8acb82821459f1f"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Jan 08 07:37:14 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:45 2016 +0000"
      },
      "message": "lib, bgpd: Remove \u0027struct fifo\u0027 from lib/zebra.h\n\nThe \u0027struct fifo\u0027 and it\u0027s accompanying #defines do not\nbelong in lib/zebra.h.  Move them into their own header.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "205e6744f2dc2909dd494c9ce8acb82821459f1f",
      "tree": "a996419a840766d2ffa1025805e1be84a2dacdf4",
      "parents": [
        "544ec70f66d0ec081dadde79bec1f25c2241f57f"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:11 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:45 2016 +0000"
      },
      "message": "bgpd: remove HAVE_IPV6 conditionals\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "544ec70f66d0ec081dadde79bec1f25c2241f57f",
      "tree": "35d0ec1b6e4c693192cc6e3a0ddd7482e1c32802",
      "parents": [
        "f9b6c3938642090ffa1cae8b7125abff2b1e9fb0"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:10 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:45 2016 +0000"
      },
      "message": "doc: Add AFI/SAFI show commands to manual\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "f9b6c3938642090ffa1cae8b7125abff2b1e9fb0",
      "tree": "f6e9632134c3d8bb81b681b28e635eefd167dd46",
      "parents": [
        "bf1ae6c683a53d7f43c273afb55d52ccc233296b"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:09 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:45 2016 +0000"
      },
      "message": "bgpd: Add back old forms of \u0027show \u003cafi\u003e \u003csafi\u003e\u0027 for compatibility\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "bf1ae6c683a53d7f43c273afb55d52ccc233296b",
      "tree": "3224355a90930170b47cccfafbeabe6bb9f27d09",
      "parents": [
        "651b402d32b52ecf7ea1d979bf83b88ff799e134"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:08 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:45 2016 +0000"
      },
      "message": "bgpd: drop machineparse / random \"show\" improvements\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "651b402d32b52ecf7ea1d979bf83b88ff799e134",
      "tree": "57af25243a7523908a2f76c1832267dd2708e364",
      "parents": [
        "35c36863f42e3c3e61a0cae400ffa80905c96d45"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:07 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:44 2016 +0000"
      },
      "message": "bgpd: encap show commands\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "35c36863f42e3c3e61a0cae400ffa80905c96d45",
      "tree": "0bfe81796a7fa5887b797c89f6c558e5ee70f278",
      "parents": [
        "135ca1502cc54d9ad00b60b3410a0932bfeceb29"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:06 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:44 2016 +0000"
      },
      "message": "bgpd: VPNv6 show commands\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "135ca1502cc54d9ad00b60b3410a0932bfeceb29",
      "tree": "5bffa5f6cc373e3c5d4522768a52973b6bb8973c",
      "parents": [
        "a3fda886cdd48b6d8c421ebb1401142fa9ee93b0"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:05 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:44 2016 +0000"
      },
      "message": "bgpd: cleanup vty bgp_node_afi/safi utils\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "a3fda886cdd48b6d8c421ebb1401142fa9ee93b0",
      "tree": "42a5e6fda0978185128544fd199caf8ed93e58a3",
      "parents": [
        "637035710a2f8e1e5944ee714135b7f88ac15ac4"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:04 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:44 2016 +0000"
      },
      "message": "bgpd, lib, vtysh: hook up bgp ENCAP CLI node\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "637035710a2f8e1e5944ee714135b7f88ac15ac4",
      "tree": "857f655fcd45e10f2947457f66e3a0d293c89955",
      "parents": [
        "298cc2f688dbadf0a447fcd06ae8e20fa5006ce4"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:03 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:44 2016 +0000"
      },
      "message": "bgp: Reorg cleanup to align process and bgp instance init/destroy\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "298cc2f688dbadf0a447fcd06ae8e20fa5006ce4",
      "tree": "50a27a17c45edc4e6a0b200617db0f066bb42fc2",
      "parents": [
        "c3741789530ee824693fd606356acac2ad695f83"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:02 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:44 2016 +0000"
      },
      "message": "bgpd: encap: add encap SAFI (RFC5512)\n\nAdds RFC5512 and Encapsulation Attribute.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "c3741789530ee824693fd606356acac2ad695f83",
      "tree": "ad68a56ed567517367a3916ff4372f420b139326",
      "parents": [
        "5a81fc9ae610ff343902ebabc12237d6e40d91cb"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:01 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:43 2016 +0000"
      },
      "message": "bgpd: encap: add attribute handling\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nReviewed-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "5a81fc9ae610ff343902ebabc12237d6e40d91cb",
      "tree": "734cdcaca446bf42934bb2fce98c1799c88c1bfb",
      "parents": [
        "050defe816e4bd4cac7b028f69e45cb1974ca96d"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:00 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:43 2016 +0000"
      },
      "message": "bgpd: encap: extend extcommunity handling\n\nAdd code to print ENCAP communities.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "050defe816e4bd4cac7b028f69e45cb1974ca96d",
      "tree": "212e07eb351c8ebd2282e4798d493cf2e64492c9",
      "parents": [
        "d5d5e3e04fc41b9a89b7ce9049fd322bdbde2e4d"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:59 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:43 2016 +0000"
      },
      "message": "bgpd: general MP/SAFI improvements\n\nThis fixes some minor mixups particularly in MPLS-related SAFIs, as well\nas doing some stylistic changes \u0026 adding comments.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nReviewed-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d5d5e3e04fc41b9a89b7ce9049fd322bdbde2e4d",
      "tree": "7199aaf51bd89a8532b46cff042316ed00a2d6ad",
      "parents": [
        "82dd707988b7481e203cab058c92f0b3041dd558"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:58 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:43 2016 +0000"
      },
      "message": "bgpd: tests - add null pointer protection to fix bgp test failures\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "82dd707988b7481e203cab058c92f0b3041dd558",
      "tree": "01923f2a1a5b0ca381e9eb7b093f467ca4cc942b",
      "parents": [
        "13c378d96a57017f5995b2e0df46cfc31123f0e8"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:57 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:43 2016 +0000"
      },
      "message": "bgpd: improve cleanup in bgp_delete()\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "13c378d96a57017f5995b2e0df46cfc31123f0e8",
      "tree": "6b4669bf22264a816ef451f3058cd8f59872eab5",
      "parents": [
        "9da04bca0e994ec92b9242159bf27d89c6743354"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:56 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:43 2016 +0000"
      },
      "message": "bgpd, lib, vtysh: hook up bgp VPNv6 CLI node\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9da04bca0e994ec92b9242159bf27d89c6743354",
      "tree": "3c38048088082749e2ba7f03f15bdbff19234f0c",
      "parents": [
        "a03bd16eedc5077e98716509b8918ed365227e02"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:55 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:42 2016 +0000"
      },
      "message": "bgpd: wire up VPNv6 protocol processing\n\nThere wasn\u0027t much missing for VPNv6 to begin with; just a few bits of\nde- \u0026 encoding and a few lists to be updated.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n\n[Editorial note: Signed-off-by may imply an authorship claim, but need not]\n\nEdited-by: Paul Jakma \u003cpaul.jakma@hpe.com\u003e / \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "a03bd16eedc5077e98716509b8918ed365227e02",
      "tree": "ce2cdce1e28a98318bd4605e7f70c43267cc5eb7",
      "parents": [
        "a76d9ca3584c1751a592457c167c1e146648ceb6"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:54 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:42 2016 +0000"
      },
      "message": "bgpd: handle AS4 and EOI route distinguishers\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a76d9ca3584c1751a592457c167c1e146648ceb6",
      "tree": "6415cbd12e4f1cfeadc552b05f6ac06da10d51f6",
      "parents": [
        "4d80560a2b064182191371fd7e4304bf829a4d9f"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:53 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:42 2016 +0000"
      },
      "message": "bgpd: make _vpnv4 static handling SAFI-agnostic\n\nThis changes the existing _vpnv4 functions for MPLS-VPN into\nSAFI-agnostic functions, renaming them from *_vpnv4 to *_safi.\n\nAlso adds route-map support while at it.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nReviewed-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4d80560a2b064182191371fd7e4304bf829a4d9f",
      "tree": "d99a5c6f87bc92e0201afa263b4bd853e07a26b1",
      "parents": [
        "3e841d3b49bdb475ce793eee5d82e5137dff57d3"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:52 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:42 2016 +0000"
      },
      "message": "bgpd: kill unused variable in bgp_socket()\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3e841d3b49bdb475ce793eee5d82e5137dff57d3",
      "tree": "6d3d9a0dde3bcd83631b2abd7764e13d7485b9ae",
      "parents": [
        "2daf7f3a8d69213f35b16a04dbe300957481a811"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:51 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:42 2016 +0000"
      },
      "message": "bgpd: add nexthop length to AF macro\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2daf7f3a8d69213f35b16a04dbe300957481a811",
      "tree": "13a66fd8d74fd79db772307361b4af1738fd95fe",
      "parents": [
        "c7f7e49a4f68c92152384582ff70d64609858170"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:50 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:42 2016 +0000"
      },
      "message": "lib: add SAFI_ENCAP type, safi2str prefix utility\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "c7f7e49a4f68c92152384582ff70d64609858170",
      "tree": "44838e385af5ac715247037db1e6e1b48a500707",
      "parents": [
        "f9ec4190f1eaf2dba355a9808bca8d7148bc8a55"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:49 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:42 2016 +0000"
      },
      "message": "lib: add facility to log all CLI commands\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "f9ec4190f1eaf2dba355a9808bca8d7148bc8a55",
      "tree": "de588e9501d2f43c347356fe346c409d6a33c6fd",
      "parents": [
        "9248b61f54955e56212f3ae4c8a7ab704f7ad01c"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:48 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:41 2016 +0000"
      },
      "message": "lib: add \"show commandtree\" CLI command\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9248b61f54955e56212f3ae4c8a7ab704f7ad01c",
      "tree": "d97f0d05991233191a400e6acaa6a164594a2d59",
      "parents": [
        "672900382d47137638086bd8351b2678f589a546"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:47 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:41 2016 +0000"
      },
      "message": "lib: treat realloc of null pointer as alloc Now use zalloc rather than alloc with null. Fixes issue seen in bgp check tests.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "672900382d47137638086bd8351b2678f589a546",
      "tree": "c6b482ed46f8dc8f0be79144173ccae152a3a726",
      "parents": [
        "40278bd4c51939ccf8ec06ef1f33aedf8f05e86c"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:46 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:41 2016 +0000"
      },
      "message": "lib: fix bookkeeping for libreadline malloc()s\n\nWhen libreadline is used, we mistakenly mix in strdup() done in\nlibreadline with Quagga\u0027s lib/memory bookkeeping/counting, leading to\ncounter underflows on MTYPE_TMP.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "40278bd4c51939ccf8ec06ef1f33aedf8f05e86c",
      "tree": "569686df98a09491cf051593b91ea43206f956f4",
      "parents": [
        "b05c6ca57130f079f8a8a6686d9d4ffa5ff440f0"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:45 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:41 2016 +0000"
      },
      "message": "zebra: additional redistribute related logging\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b05c6ca57130f079f8a8a6686d9d4ffa5ff440f0",
      "tree": "5533689d6a3ff733280cd7a5458a562a8fe032d7",
      "parents": [
        "d7be042378eac103634ab62abf4b2a5ca225092d"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:44 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:41 2016 +0000"
      },
      "message": "zebra: make RTF_LLINFO optional to fix FreeBSD\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d7be042378eac103634ab62abf4b2a5ca225092d",
      "tree": "63901594ccd70f4fa15d9f9b90a578e8573f931b",
      "parents": [
        "0490729cc033a3483fc6b0ed45085ee249cac779"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:43 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:40 2016 +0000"
      },
      "message": "zebra: wire up \"debug zebra packet detail\"\n\nThere was no way to actually set ZEBRA_DEBUG_DETAIL, even though some\ndebug output was conditional to it.  Add CLI command.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "0490729cc033a3483fc6b0ed45085ee249cac779",
      "tree": "fb2822462801e3bc82ae1425d065d3d5e4d71954",
      "parents": [
        "7748fdc757a2181649dd4956f2767545673ef28d"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Jan 07 10:03:01 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:40 2016 +0000"
      },
      "message": "lib, bgpd, tests: Refactor FILTER_X in zebra.h\n\nlib/zebra.h has FILTER_X #define\u0027s.  These do not belong there.\nPut them in lib/filter.h where they belong.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7748fdc757a2181649dd4956f2767545673ef28d",
      "tree": "b101c98aefe861b23515b9314b611ace7b87531f",
      "parents": [
        "f3cfc46450cccc5ac035a5a97c5a1a5484205705"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Wed Feb 10 14:24:00 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:40 2016 +0000"
      },
      "message": "bgpd: Fix graceful restart capability minsize\n\n* bgp_open.c: cap_minsize should be CAPABILITY_CODE_RESTART_LEN for RESTART\n  not 6.\n"
    },
    {
      "commit": "f3cfc46450cccc5ac035a5a97c5a1a5484205705",
      "tree": "3ae512da65c1b4962363c038b8b2c94e27decf65",
      "parents": [
        "d5062d218994885710fe02f516f0c06025b4fc9a"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Jan 07 09:33:28 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:40 2016 +0000"
      },
      "message": "lib, bgpd: Fixup afi_t to be an enum and cleanup zebra.h\n\nThis code change does two things:\n\n1) Removes ZEBRA_AFI_XXX #defines since they were redundant information\n2) Switches afi_t to an enumerated type so that the compiler\ncan do a bit more compile time checking.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d5062d218994885710fe02f516f0c06025b4fc9a",
      "tree": "e0d596a5e52b7ec5417bbf410d7c25733222d91c",
      "parents": [
        "6d4742bef722e6fab45fb6eb22ed2c7b7570a2e6"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Dec 02 16:47:43 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:32 2016 +0000"
      },
      "message": "docs: Update bgpd docs, inc. on decision process, and with a section on MED.\n\n* bgpd.texi: Document the -l argument. Update the \u0027BGP decision process\u0027 table\n  to reflect what /actually/ is implemented. Add docs on \u0027compare-routerid\u0027 in\n  the bestpath section.\n\n  Add a section on MED, to highlight the issues it has by default, and to\n  highlight that it is terminally broken for its original purpose in many\n  modern iBGP topologies.\n\n  Mention the potential workarounds and fixes.\n\n* routemap.texi: set an anchor on \u0027set metric\u0027 so bgpd.texi can reference it.\n"
    },
    {
      "commit": "6d4742bef722e6fab45fb6eb22ed2c7b7570a2e6",
      "tree": "5f448656a3f81e684df289e42cc3bd051850e17f",
      "parents": [
        "91b9e8547a7c5697d5d7481f9476778077024019"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Nov 25 17:14:37 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Feb 18 15:54:45 2016 +0000"
      },
      "message": "bgpd: make bgp_info_cmp and multiple-path decision logic more regular\n\n* bgp_route.c: (bgp_info_cmp) This function is supposed to return a\n  preference between the given paths, and does so as binary either or.  When\n  mpath was added, the binary return value was left as is and instead an out\n  parameter \u0027paths_eq\u0027 was added to indicate the mpath-equality case.  It\u0027s\n  a bit odd, as is the resulting logic in the caller.\n\n  Regularise things again by making the function return a strcmp like\n  trinary return value of -1,0,1.  Get rid of the mpath specific arguments,\n  but pass in afi/safi as part of the general context - that plus the\n  (struct bgp *) is enough to access configuration.\n\n  Update the return values.\n\n  The mpath check was testing the IGP metric for equality, even though\n  previous to the mpath changes (and consistent with the behaviour of all\n  the other tests bar the end), equality results in continuing through to\n  the next comparison. Just go back to the previous way - each test finds a\n  preference to return, or continues on to let further tests have a go.\n\n  (bgp_best_selection) Get rid of the (struct bgp_maxpaths_cfg *) arg, we\n  can\u0027t add state for every optional feature to the argument list - they\n  have to look it up as needed. Do pass through the very general afi/safi\n  context though (saves several lookups through the route_node).\n\n  Adjust for the new trinary bgp_info_cmp return value and updated args.\n  Do the mpath clearing/accumulation in one place, in each loop.\n\n  Call to bgp_info_mpath_update similarly gets updated, as there\u0027s no cfg to\n  pass.\n\n  (bgp_process_{rsclient,main}) match bgp_best_selection changes.\n* bgp_mpath.c: (bgp_mpath_is_configured_sort) Helper for whether mpath is\n  enabled by peer sort.\n  (bgp_mpath_is_configured) ditto, generally.\n  (bgp_info_mpath_update) caller no longer has the cfg to pass in, look it\n  up.\n* bgp_mpath.h: Export the above and Match .c changes.\n\nRequires commit:\n \"bgpd: bgp_scan shouldn\u0027t queue up route_nodes with no routes for processing\"\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "91b9e8547a7c5697d5d7481f9476778077024019",
      "tree": "e1cf2b9d29c4dcfd0b3d429551e50f0d6f7848cf",
      "parents": [
        "321d4130a615445d0f49f41c909c92d5401fd5ff"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Dec 01 14:32:11 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Feb 18 11:46:24 2016 +0000"
      },
      "message": "bgpd: bgp_scan shouldn\u0027t queue up route_nodes with no routes for processing\n\n* bgp_nexthop.c: (bgp_scan) There is little point queueing an rn with no routing\n  information for processing.\n* bgp_route.c: (bgp_process) Do nothing on rn\u0027s with no routes. Add an assert\n  for now, to try catch any other cases, but prob should be removed.\n  (bgp_best_selection) rn with no routes \u003d\u003d finish early.\n"
    },
    {
      "commit": "321d4130a615445d0f49f41c909c92d5401fd5ff",
      "tree": "9e1f96ca0986a6c9e990993c46b0657bb33f1c09",
      "parents": [
        "4078f2eb7a3a94ddb30cfd8b76b054e790aab524"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Nov 25 17:14:36 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Feb 10 15:06:18 2016 +0000"
      },
      "message": "tests: add more AS4 capability tests + little fixes for couple of GR test cases.\n\nReviewed-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "4078f2eb7a3a94ddb30cfd8b76b054e790aab524",
      "tree": "3b9d32198d677be63a3587ad6f9ea06506437192",
      "parents": [
        "68ec424eb8557f86d08fcb7ab3c5366cbf3eca0e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Nov 25 17:14:35 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Feb 10 15:06:17 2016 +0000"
      },
      "message": "bgpd: Check capability falls on right multiple of size, where possible.\n\n* bgp_open.c: (cap_modsizes) Table of multiple a capability\u0027s data size\n  should fall on, if applicable.\n  (bgp_capability_parse) Check the header lengthcap_modsizes should fall on.\n\n  Inspiration from Cumulus bgpd-capability-cleanup.patch patch, with a\n  slightly different approach.\n\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "68ec424eb8557f86d08fcb7ab3c5366cbf3eca0e",
      "tree": "63d4630ccfb5e0f366881fa98d42e62842d67239",
      "parents": [
        "cc216b7978b038667626afd3f70dda8f70c46e4e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Nov 25 17:14:34 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Feb 10 15:06:17 2016 +0000"
      },
      "message": "bgpd: OPEN parse errors should send OPEN_ERR and UNSPECIFIC subcode.\n\nCEASE NOTIFICATION for OPEN parsing errors seems, to my reading of RFC4271\n§6.2 to be incorrect.\n\n* bgp_packet.c: (bgp_open_receive) OPEN/UNACEP_HOLDTIME is not an\n  appropriate error subcode if bgp_open_option_parse returns an error.  Set\n  it to \"Unspecific\". Where a more specific subcode is appropriate, then lower\n  level should send that.\n* bgp_open.c: (bgp_open_option_parse) Malformed OPENs should result in\n  NOTIFICATION with OPEN error, and OPEN/UNSPECIFIC sub-code - not CEASE.\n  (bgp_capability_{parse,orf_entry}) ditto.\n* bgpd.h: Add BGP_NOTIFY_OPEN_UNSPECIFIC for 0.  Note that IANA lists 0 as\n  reserved in the OPEN error sub-code registry, but RFC4271 page 32 says 0\n  is the \"Unspecific\" OPEN error subcode.\n\n  Have emailed IANA, they says it\u0027s a known errate to 4271 under review.\n\n  Some inspiration from Cumulus\u0027 bgpd-capability-cleanup.patch, though\n  v different result.\n"
    },
    {
      "commit": "cc216b7978b038667626afd3f70dda8f70c46e4e",
      "tree": "8d15c0738f2bd73a1a1016c7eba20bbd57c1920f",
      "parents": [
        "a3bc7e9400b214a0f078fdb19596ba54214a1442"
      ],
      "author": {
        "name": "Gautam Kumar",
        "email": "gauta@amazon.com",
        "time": "Mon Oct 26 13:22:12 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Feb 10 15:06:17 2016 +0000"
      },
      "message": "vtysh: When the config file is close to the boundry of size of buffer vtysh hangs.\n"
    },
    {
      "commit": "a3bc7e9400b214a0f078fdb19596ba54214a1442",
      "tree": "5268048e32b24b2bac3c8a55f41ef25a0b15ff91",
      "parents": [
        "eae18d16fefed42af33e63e096a2889b9c70b9cb"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Jan 27 16:54:45 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Feb 10 15:02:07 2016 +0000"
      },
      "message": "bgpd: Fix VU#270232, VPNv4 NLRI parser memcpys to stack on unchecked length\n\nAddress CERT vulnerability report VU#270232, memcpy to stack data structure\nbased on length field from packet data whose length field upper-bound was\nnot properly checked.\n\nThis likely allows BGP peers that are enabled to send Labeled-VPN SAFI\nroutes to Quagga bgpd to remotely exploit Quagga bgpd.\n\nMitigation: Do not enable Labeled-VPN SAFI with untrusted neighbours.\n\nImpact: Labeled-VPN SAFI is not enabled by default.\n\n* bgp_mplsvpn.c: (bgp_nlri_parse_vpnv4) The prefixlen is checked for\n  lower-bound, but not for upper-bound against received data length.\n  The packet data is then memcpy\u0027d to the stack based on the prefixlen.\n\n  Extend the prefixlen check to ensure it is within the bound of the NLRI\n  packet data AND the on-stack prefix structure AND the maximum size for the\n  address family.\n\nReported-by: Kostya Kortchinsky \u003ckostyak@google.com\u003e\n\nThis commit a joint effort between:\n\nLou Berger \u003clberger@labn.net\u003e\nDonald Sharp \u003csharpd@cumulusnetworks.com\u003e\nPaul Jakma \u003cpaul.jakma@hpe.com\u003e / \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "eae18d16fefed42af33e63e096a2889b9c70b9cb",
      "tree": "ca1a184a44902f2d6a9c7dfa92cf50225b8e8cd8",
      "parents": [
        "0d27129ac5fd70b90820e3dde05c085d1a0f63a8"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Sat Nov 21 07:55:42 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Dec 09 08:54:37 2015 -0500"
      },
      "message": "zebra: Fix solaris build issue\n\nThe number of parameters to rib_add_ipv4 has been increased.\nSubmitter of original patch failed to modify solaris code path.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0d27129ac5fd70b90820e3dde05c085d1a0f63a8",
      "tree": "c0267ab193459bd71f217dcbd0905ad0b9db012e",
      "parents": [
        "64e0ac29ddc43bb5b1a2999a8ebedbdff115e3ca"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Nov 19 07:21:30 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:16:24 2015 -0500"
      },
      "message": "zebra: Fix non usage of VRF_DEFAULT\n\nA vrf_id was being set to 0 instead of VRF_DEFAULT\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "64e0ac29ddc43bb5b1a2999a8ebedbdff115e3ca",
      "tree": "00f5d62575cbc5eb4744179e21bf1ac5ccb63f55",
      "parents": [
        "76764ddcf53fa4840993c395fdf383a47ad61e8e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Nov 18 16:00:54 2015 +0000"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:16:24 2015 -0500"
      },
      "message": "bgpd: Implicit updates in BGP may require a withdrawal from zebra RIB\n\n*  J Yu \u003cjackiesyu@hotmail.com\u003e noted a problem with bgpd of routes not\n   having their nexthop updated correctly.\n\n   Martin Winter \u003cmwinter@opensourcerouting.org\u003e pinned this down to the\n   case where a BGP route is updated from one with a valid nexthop to an\n   invalid next-hop, using a test tool. Once the problem occurs, the incorrect\n   route may remain, even after further UPDATEs, so long as the nexthop in the\n   zebra RIB does not match the BGP route\u0027s nexthop.\n\n   Jacqueline Yu then pinned the issue down further to being due to bgpd\n   sending the DELETE for the route to zebra with the new nexthop after a\n   BGP UPDATE updates an existing route, but then is found to be invalid,\n   and zebra not finding the route as it requires a match on all attributes.\n\n* bgp_zebra.c: (bgp_zebra_withdraw) When deleting a prefix, we want it gone.\n  Do not send additional matching attributes like the nexthop, which can\n  only cause incorrect non-matches.\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "76764ddcf53fa4840993c395fdf383a47ad61e8e",
      "tree": "f2c0a5b808f404071ce5c023eb26650671911de9",
      "parents": [
        "642577340cfb7ad66d021ab2b86d72f7cdde03bc"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Nov 20 09:05:46 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:16:19 2015 -0500"
      },
      "message": "isisd, lib: Fix some more compiler warnings\n\nA couple compiler warnings snuck in from the last\nround of work being looked at.  This cleans them up\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "642577340cfb7ad66d021ab2b86d72f7cdde03bc",
      "tree": "981104744f3fb913ec3e5a006199e6810101ab55",
      "parents": [
        "8253b73c3c71d4102c0010f63b59b2829f3b0f90"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Nov 20 08:33:30 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:16:12 2015 -0500"
      },
      "message": "zebra: Cleanup RTADV define\n\nThe RTADV define was not being set correctly or consistently.\nMake the code consistent with our HAVE_IPV6 define.\n\nIf the user wants to explicitly turn it off then they should\nrun --disable-rtadv from the configure cli\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "8253b73c3c71d4102c0010f63b59b2829f3b0f90",
      "tree": "8f70ae84df2f54269b632a572dd7a40c11fc0a1c",
      "parents": [
        "812f282cc1b2c69c1d75cfbfe7983725ceaa4b15"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Nov 12 14:24:28 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:50 2015 -0500"
      },
      "message": "isisd: make send_lsp more robust\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "812f282cc1b2c69c1d75cfbfe7983725ceaa4b15",
      "tree": "fe0c26f4bc1a971ffad9a5795e559f5cb1ebe92f",
      "parents": [
        "80d6b4e3e6358f52e06e576fcd927d0a009d964e"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:33:16 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:50 2015 -0500"
      },
      "message": "isisd: fix misleading wording in log\n\nThe changed messages are actually located before transmission is\nattempted. Therefore, the tense is somewhat misleading, especially\nsince transmission may not always succeed.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "80d6b4e3e6358f52e06e576fcd927d0a009d964e",
      "tree": "9425515af94f4a99300e2b47bab2b2ec3bc2ea14",
      "parents": [
        "e28718a8bffe0353691a2a7b2643bbeb2657fd66"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Nov 10 18:33:15 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:50 2015 -0500"
      },
      "message": "isisd: handle lsp confusion (ISO/IEC 10589:2002 7.3.16.2)\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "e28718a8bffe0353691a2a7b2643bbeb2657fd66",
      "tree": "8189979c8ed5e1889adde27ec8e4c52c457d8b4b",
      "parents": [
        "cb32a19d143a21f31a13aec83415f27d9daa6a27"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:33:14 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:50 2015 -0500"
      },
      "message": "isisd: fix IPv6 mask application\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "cb32a19d143a21f31a13aec83415f27d9daa6a27",
      "tree": "a7605b641ddcb155fbbdc4e6eabbd6de128be49d",
      "parents": [
        "ec87416a1048d547c514b535c15616f9ed932a62"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:33:13 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:50 2015 -0500"
      },
      "message": "isisd: show interface\u0027s ipv6 addreses\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "ec87416a1048d547c514b535c15616f9ed932a62",
      "tree": "3d967181e81e6a9ca0f7b9633f6844d7f6338e6e",
      "parents": [
        "acf9865f7fcec6a8d47df6ed7946a5e8ca398918"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:33:12 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:50 2015 -0500"
      },
      "message": "isisd: provide more detailed log for failed address removal\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "acf9865f7fcec6a8d47df6ed7946a5e8ca398918",
      "tree": "fac7d9ce2d2b6d984bde675641556e5063e8f655",
      "parents": [
        "9dfcca6122c9f4f3642241ff50029d7669af3999"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Nov 12 14:24:22 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:50 2015 -0500"
      },
      "message": "isisd: add support to import routes from other protocols\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9dfcca6122c9f4f3642241ff50029d7669af3999",
      "tree": "a5429f803a21a5caf2d9c466cf27e59e29ca2662",
      "parents": [
        "61010c33fd7bf3d923c5406656c0672f0336b179"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:32:11 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:50 2015 -0500"
      },
      "message": "isisd: fix assertion in LSP refresh timer calculation\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "61010c33fd7bf3d923c5406656c0672f0336b179",
      "tree": "9da23e8d078e328152567254304e189435fec49d",
      "parents": [
        "80a8f72654631fe00f787c73515dc7d064251adc"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:43:34 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:50 2015 -0500"
      },
      "message": "isisd: add a slight delay to lsp_regenerate_schedule\n\nisisd implements a holdoff interval and will refrain from regenerating\nan lsp if the difference between the current time and its last refresh\nis less than the holdoff interval. Instead, it will schedule a timer\nto regenerate the lsp after the holdoff interval has passed.\n\nThis implementation has one disadvantage in the case where there is a\nsuccession of calls to lsp_regenerate_schedule. In such a case, the\nfirst call will trigger an immediate regeneration of the lsp, while the\nother calls will only schedule the regeneration timer. This leads to\ncases where it takes holdoff interval time for information to propagate,\njust because the information was only available e.g. at the second call\nof lsp_regenerate_schedule in such a succession of calls.\n\nBy not immediately regenerating an lsp if the last generation time\nis sufficiently long ago, but instead scheduling the regeneration with a\nvery small delay, we allow all information from such a succession of\ncalls to be considered.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "80a8f72654631fe00f787c73515dc7d064251adc",
      "tree": "ea9c55d486d2472d85187f48485cc3a6ba7b00df",
      "parents": [
        "749e87a0731ae53cf73af507afb63bab3f8e937f"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Nov 12 14:21:47 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:49 2015 -0500"
      },
      "message": "isisd: add a debug mode that traces LSP construction\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "749e87a0731ae53cf73af507afb63bab3f8e937f",
      "tree": "a05052f707c85c9e3dc7fbfcb1e51c2541b40e6e",
      "parents": [
        "f1fc1db703c34dbeb9639c4f6ebfb096cdc3fc62"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:21:44 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:49 2015 -0500"
      },
      "message": "isisd: purge on correct level\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "f1fc1db703c34dbeb9639c4f6ebfb096cdc3fc62",
      "tree": "8872bb840dceafa88515afc6f13af22cc3f23ad5",
      "parents": [
        "7324ae1f0daa5537dbcfded208707581b2b36335"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Nov 10 18:43:31 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:49 2015 -0500"
      },
      "message": "isisd: allow to adjust lsp-mtu\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7324ae1f0daa5537dbcfded208707581b2b36335",
      "tree": "6ddfcdf2de5c3961ede6a9fffb62cf1221a0e5d9",
      "parents": [
        "912aac4f670ffd383b757995914f4d1b5e7596aa"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:04:48 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:49 2015 -0500"
      },
      "message": "isisd: initialize circuit to match area is_type\n\nNew circuits should be initialized to match the is_type\nof their area. Also add an additional check to make sure\nthat no IIHs are sent for levels which are not enabled.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "912aac4f670ffd383b757995914f4d1b5e7596aa",
      "tree": "7b7e39d5b7c06d424554164e53a0a7e6ec3c2c28",
      "parents": [
        "f35169ecdb481ca1e176cbb234b5294b2ca901a7"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:04:47 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:49 2015 -0500"
      },
      "message": "isisd: do remove ipv6 routes from Zebra\n\nWe can abort isis_zebra_route_del_ipv6 if the route in question has\nISIS_ROUTE_FLAG_ZEBRA_SYNCED unset, meaning it\u0027s not in the kernel.\nAborting the function if the flag is set prevents us from removing\nany routes.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "f35169ecdb481ca1e176cbb234b5294b2ca901a7",
      "tree": "2e3121c1bce6685dc50a438443b32fec4d9fbd05",
      "parents": [
        "b461630bed1a0ed33c3a38fc485caf826ff05ce9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Nov 12 14:09:08 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:49 2015 -0500"
      },
      "message": "isisd: don\u0027t corrupt memory for long hostnames\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "b461630bed1a0ed33c3a38fc485caf826ff05ce9",
      "tree": "36ff7fcdbcaf5f82275e008e9e101f5d07d09972",
      "parents": [
        "390f16ee4e506f782aa48077cc8318e6fdcf4a5c"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Nov 10 18:04:45 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:49 2015 -0500"
      },
      "message": "isisd: fix a typo in a log message\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "390f16ee4e506f782aa48077cc8318e6fdcf4a5c",
      "tree": "a7f84ab45aa06efa9609c74b507892f944bc26d4",
      "parents": [
        "77277a140984aa78756cbf363606a324c84113db"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:04:44 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:49 2015 -0500"
      },
      "message": "isisd: remove superfluous checks after XMALLOC etc.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "77277a140984aa78756cbf363606a324c84113db",
      "tree": "15a7b927aa663d18883c6f22fd586fe86f34f8d2",
      "parents": [
        "abfd40d68202882696260617729518a6d2c99302"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Nov 10 18:04:43 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:49 2015 -0500"
      },
      "message": "isisd: annotate some function arguments with const\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "abfd40d68202882696260617729518a6d2c99302",
      "tree": "40b0c4b62c079adce8692a3b078b081e2facbdb2",
      "parents": [
        "dbe99e0c407bcb383d0be0c0010fefccc5b46866"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:04:42 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:49 2015 -0500"
      },
      "message": "lib: don\u0027t have log functions change errno\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "dbe99e0c407bcb383d0be0c0010fefccc5b46866",
      "tree": "db2828cebc59de453dde7061539d9140fadec17b",
      "parents": [
        "76fbc64c5d82c6f540cb4a1ac855f9f098fa6c5f"
      ],
      "author": {
        "name": "Alexis Fasquel",
        "email": "alexis@pch.net",
        "time": "Mon Nov 16 13:55:16 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:46 2015 -0500"
      },
      "message": "bgpd: Update dump to allow Extended Time Format\n\nAllow the bgp dump functionality to handle the Extended Time format\nas specified in RFC 6396.\n\nFixes a segmentation fault with multiple dump rules as well.\n\nSigned-off-by: Alexis Fasquel \u003calexis@pch.net\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "76fbc64c5d82c6f540cb4a1ac855f9f098fa6c5f",
      "tree": "ce0d45193a3924fd23851ff81210beb320cf0afb",
      "parents": [
        "1ca8d40f996c0760a1a8931f54044dd7ca9e3f9c"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 18:04:41 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:40 2015 -0500"
      },
      "message": "lib: add function to get precise remaining time of timer thread\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "1ca8d40f996c0760a1a8931f54044dd7ca9e3f9c",
      "tree": "df3274ac9d9d3731894cd5123eb8118ff6a7d8f5",
      "parents": [
        "c1900e09a7fdd70437f3ba0329868f1eee3f5a1a"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 10 17:45:03 2015 +0100"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "ripd, isisd: fix warnings that make the build fail\n\nThese issues have been found by running buildtest.sh\nusing GCC 5.2.0 and Clang 3.7.0\n\nFixes pointer checks that can never be null\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "c1900e09a7fdd70437f3ba0329868f1eee3f5a1a",
      "tree": "5f1032936f4413f7dc12935eabbdf62f940ffd12",
      "parents": [
        "949b719eac0c8b51c73f144eb035fab27a16c2a6"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:40 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: Fix change of distance on ipv6 route creating duplicate routes\n\nIf you enter:\n\nipv6 route 2002:44:44:44::44/128 swp1 4\nipv6 route 2002:44:44:44::44/128 swp1 99\n\nYou get:\n\nhost-111# show ipv6 route\nCodes: K - kernel route, C - connected, S - static, R - RIPng,\nO - OSPFv6, I - IS-IS, B - BGP, A - Babel, T - Table,\n\u003e - selected route, * - FIB route\nS 2002:44:44:44::44/128 [99/0] is directly connected, swp1\nS\u003e* 2002:44:44:44::44/128 [4/0] is directly connected, swp1\n\nThis problem is fixed in the ipv4 code path.  Copying the same\ncode from the ipv4 into the ipv6 code path fixes the issue.\n\nWith the fix:\n\nhost-111(config)# ipv6 route 2002:44:44:44::44/128 swp1 4\nhost-111(config)# do show ipv6 route\nCodes: K - kernel route, C - connected, S - static, R - RIPng,\n       O - OSPFv6, I - IS-IS, B - BGP, A - Babel, T - Table,\n       \u003e - selected route, * - FIB route\n\nS\u003e* 2002:44:44:44::44/128 [4/0] is directly connected, swp1\nC * fe80::/64 is directly connected, swp1\nC\u003e* fe80::/64 is directly connected, eth0\nhost-111(config)# ipv6 route 2002:44:44:44::44/128 swp1 99\nhost-111(config)# do show ipv6 route\nCodes: K - kernel route, C - connected, S - static, R - RIPng,\n       O - OSPFv6, I - IS-IS, B - BGP, A - Babel, T - Table,\n       \u003e - selected route, * - FIB route\n\nS\u003e* 2002:44:44:44::44/128 [99/0] is directly connected, swp1\nC * fe80::/64 is directly connected, swp1\nC\u003e* fe80::/64 is directly connected, eth0\nhost-111(config)#\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "949b719eac0c8b51c73f144eb035fab27a16c2a6",
      "tree": "ca22748a46ab77ab04354d13890335a3bcb690a1",
      "parents": [
        "a979ab70e0ec51f3cf779edae509f3c52be0b0f4"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:39 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: Combine static_uninstall_ipv[4|6] into one function\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "a979ab70e0ec51f3cf779edae509f3c52be0b0f4",
      "tree": "f81b6472598e824ea37e3f17e1dd8b167044fbeb",
      "parents": [
        "9bcdd1a252ba84424eb06e84adf7fb48ae66ce1f"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:38 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: combine static_ipv[4|6]_nexthop_same into one function\n\nCombine the static_ipv[4|6]_nexthop_same into static_nexthop_same.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "9bcdd1a252ba84424eb06e84adf7fb48ae66ce1f",
      "tree": "e604d71dcc41c9449d91c6d85c732320d6a112ec",
      "parents": [
        "0d955affd51df42dd5ae24b0d41edd992fb59a78"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:37 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: Combine static_install_ipv[4|6]\n\nCombine the static_install_ipv[4|6] function calls into\nstatic_install_route.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0d955affd51df42dd5ae24b0d41edd992fb59a78",
      "tree": "8cdf0f263b5c9950c598e6ef2908efbb55004845",
      "parents": [
        "d4c27d656d072fbd81003a71c4f3391c96852c60"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:36 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: Remove HAVE_IPV6 from rib.h and zebra_rib.c\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d4c27d656d072fbd81003a71c4f3391c96852c60",
      "tree": "27f40829775ca271f6a7d7b5031284b264c0f479",
      "parents": [
        "b11f3b54c842117e22e2f5cf1561ea34eee8dfcc"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:35 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: Collapse struct static_ipv[4|6] into struct static_route\n\nThe \u0027struct static_ipv4\u0027 and \u0027struct static_ipv6\u0027 structures\nare essentially the same.  Collapse them into one data structure\n\u0027struct static_route\u0027.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "b11f3b54c842117e22e2f5cf1561ea34eee8dfcc",
      "tree": "c31f9893baa2a05db24ea72d1370fb6b11f59c20",
      "parents": [
        "7eb6136b2732d4782360f9f376336c6d4f667ff0"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Mon Nov 02 16:50:07 2015 +0200"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: implement per-route mtu handling\n\nThis commits allow overriding MTU using netlink attributes on\nper-route basis. This is useful for routing protocols that can\nadvertice prefix specific MTUs between routers (e.g. NHRP).\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\n"
    },
    {
      "commit": "7eb6136b2732d4782360f9f376336c6d4f667ff0",
      "tree": "5e77b44139cf542a18a949d1204ace4316b474f1",
      "parents": [
        "929a26a7cf80b2df9981595e6bcfcfc4a970052a"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Mon Nov 02 16:50:05 2015 +0200"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: make ZEBRA_FLAG_CHANGED internal status\n\nThis flag is used internally in zebra only. And it makes no sense\nto expose it over the zclient API, as having it set from client\ncould corrupt the internal state.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "929a26a7cf80b2df9981595e6bcfcfc4a970052a",
      "tree": "7be5a0c2750044002a9577e85a2736248aa48d7e",
      "parents": [
        "0d7435f2138955b4b8aa9044eefbaff31ec33248"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Oct 28 19:59:30 2015 -0400"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "lib: Memory reporting fails over 2GB\n\nThe old style mallinfo() function uses an \u0027int\u0027 to\nreport memory usage data to the program.  Unfortunately\nmodern architectures can chew through 2gb of memory like a\nbuzz saw hitting some warm butter, especially in the case\nof a memory leak or memory fragmentation.\n\nWhen a daemon uses more than 2gb of memory, just indicate it\u0027s\ngotten large and we don\u0027t know anymore.\n\nPre-change behavior:\nRobot-1# show memory\nSystem allocator statistics:\nTotal heap allocated: 16777216 TiB\nHolding block headers: 1288 KiB\nUsed small blocks: 0 bytes\nUsed ordinary blocks: 535 MiB\nFree small blocks: 768 bytes\nFree ordinary blocks: 16777216 TiB\nOrdinary blocks: 266107\nSmall blocks: 24\nHolding blocks: 2\n\nPost-change behavior:\nRobot-1# show memory\nSystem allocator statistics:\n  Total heap allocated:  1572 KiB\n  Holding block headers: \u003e 2GB\n  Used small blocks:     0 bytes\n  Used ordinary blocks:  1443 KiB\n  Free small blocks:     32 bytes\n  Free ordinary blocks:  129 KiB\n  Ordinary blocks:       2\n  Small blocks:          1\n  Holding blocks:        2\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0d7435f2138955b4b8aa9044eefbaff31ec33248",
      "tree": "a7f3583dc4dbb582aa16fadc259241a661c6e8de",
      "parents": [
        "5a2a1ec18c89daec5de6690a9b0f47c0d11a0f2d"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton76@gmail.com",
        "time": "Thu Oct 22 11:35:20 2015 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:09 2015 -0500"
      },
      "message": "bgpd: Add support for timer commands with peer-group syntax\n\nThe peer-groups parser is missing advertisement-interval and \u0027timers connect\u0027\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nReviewed-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\n"
    },
    {
      "commit": "5a2a1ec18c89daec5de6690a9b0f47c0d11a0f2d",
      "tree": "a824c25e85d8d5be9690524ff6061293b5f56315",
      "parents": [
        "0edba8b6ad9c83fa0a3cc58765fe9f123f4109ac"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Thu Oct 22 11:35:18 2015 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:11:18 2015 -0500"
      },
      "message": "bgpd: update rtt on soft clear\n\nrtt is calculated dynamically by the kernel. Refresh it on\nsoft clear.\n\nFixes: ef757700d0 \"bgpd: allow using rtt in route-map\u0027s set metric\"\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\n"
    },
    {
      "commit": "0edba8b6ad9c83fa0a3cc58765fe9f123f4109ac",
      "tree": "52e0410279dc9b20ba0bc8453e0e0c1f72e081cb",
      "parents": [
        "983525e8b560fc44d2214ca3f6d72af809b6ebd9"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Thu Oct 22 11:35:17 2015 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:11:18 2015 -0500"
      },
      "message": "bgpd: check rtt later after the real peer is known\n\nOPEN message handler moves the connection from the temporary\n\"struct peer\" (used to accept it) to the real \"struct peer\" based\non the configuration. RTT needs to be updated only to the real\nstruct peer, and this patch moves the RTT query to point where\nrealpeer is known.\n\nFixes: ef757700d0 \"bgpd: allow using rtt in route-map\u0027s set metric\"\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\n"
    },
    {
      "commit": "983525e8b560fc44d2214ca3f6d72af809b6ebd9",
      "tree": "e746b161aa9266c270d80e2a51e01e49dad87e44",
      "parents": [
        "6d853c43d9dd315eb42211150b7a4a43bae4cb62"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Thu Oct 22 11:35:16 2015 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:11:18 2015 -0500"
      },
      "message": "zebra: fix rtadv detection\n\nThe GLIBC macro tests were just plain wrong. Glibc 2.1 is ancient\nand the support should be detected via configure.ac test, not\nmacro test. Build with HAVE_RTADV but !RTADV is broke after vrf,\nso for now, just define RTADV always if HAVE_RTADV is there.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\n"
    }
  ],
  "next": "6d853c43d9dd315eb42211150b7a4a43bae4cb62"
}
