)]}'
{
  "log": [
    {
      "commit": "481986950290323e2f5d1e774a666d4b7ed510d6",
      "tree": "bf6c499c2bbdf39af42f85679820b38038ad3ffe",
      "parents": [
        "ec04b9faf9ec55ccf7d5bb16cf17a85051fc8270"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 19:21:17 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "ospfd: Add support Router Capabilities support to OSPF\n\nThis is an implementation of RFC4970 (Router Information) and\nRFC5088 (PCE Capabilities announcement)\n\n* ospfd/Makefile.am: Add new file ospf_ri.c and ospf_ri.h\n* ospfd/ospf_opaque.c: Add new Router Capabilities code point\n* ospfd/ospf_ri.[c,h]: Implementation of RFC4970 \u0026 RFC5088\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "ec04b9faf9ec55ccf7d5bb16cf17a85051fc8270",
      "tree": "3966ebeaf299c3400079a8b3bf4a396f2e454e47",
      "parents": [
        "4f593574c41deb598cbbefde5c6d938799e81d5a"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 19:18:18 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "doc: Update documentation for Traffic Engineering\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "4f593574c41deb598cbbefde5c6d938799e81d5a",
      "tree": "755b7fb742265b2dc4fe086e059f1ac6b060e6f9",
      "parents": [
        "29a1401706a762541b366c7844507efe2bc1345d"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 19:03:05 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "isisd: Add support of Traffic Engineering\n\nThese patches is an implementation of RFC5305 that enable the\nsupport of Traffic Engineering in IS-IS\n\n* isisd/Makefile.am: Add new files isis_te.c and isis_te.h\n\n* isisd/isis_circuit.[c,h]: Add new mpls_te_circuit structure to\n  isis_circuit structure to handle new Traffic Engineering TLVs\n* isisd/isis_lsp.c: Update LSP handler to mux/demux Traffic Engineering TLVs\n* isisd/isis_main.c: Add initialisation of ISIS TE\n* isisd/isis_pdu.c: Update function process_p2p_hello() to retrieve remote\n  IP address to populate Traffic Engineering TLV.\n* isisd/isis_te.[c,]: Implementation of RFC5305\n* isisd/isis_tlv.[c,h]: Update TLV definition and function to handle\n  Traffic Engineering ones\n* isisd/isis_zebra.c: Add new function isis_zebra_link_params() to retrieve\n  the link parameters of interfaces from ZBus to populate the Traffic\n  Engineering TLVs\n* isisd/isisd.[c,h]: Add Traffic Engineering support with new debug command\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "29a1401706a762541b366c7844507efe2bc1345d",
      "tree": "d7e7c770f90cca5ad3748e167bc8028a6084f7f1",
      "parents": [
        "ac10d30c03091eace3c0405aa8ccb7d3c09e7bd2"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 18:42:40 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "ospfd: Update Traffic Engineering support\n\nThese patches update original code to RFC3630 (OSPF-TE) and add support of\nRFC5392 (Inter-AS v2) \u0026 RFC7471 (TE metric extensions) and partial support\nof RFC6827 (ASON - GMPLS).\n\n* ospfd/ospf_dump.[c,h]: Add new dump functions for Traffic Engineering\n* ospfd/ospf_opaque.[c,h]: Add new TLV code points for RFC5392\n* ospfd/ospf_packet.c: Update checking of OSPF_OPTION\n* ospfd/ospf_vty.[c,h]: Update ospf_str2area_id\n* ospfd/ospf_zebra.c: Add new function ospf_interface_link_params() to get\n  Link Parameters information from the interface to populate Traffic\n  Engineering metrics\n* ospfd/ospfd.[c,h]: Update OSPF_OPTION flags (T -\u003e MT and new DN)\n* ospfd/ospf_te.[c,h]: Major modifications to update the code to new\n  link parameters structure and new RFCs\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "ac10d30c03091eace3c0405aa8ccb7d3c09e7bd2",
      "tree": "b855b841903149f68f518068fe99b120f94c0712",
      "parents": [
        "15773a87ce652da5b02ca14dc0088408899ea007"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 18:33:42 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "vtysh: Add support of new link-params CLI\n\nIn vtysh_config.c/vtysh_config_parse_line(), it is not possible to continue\nto use the ordered version for adding line i.e. config_add_line_uniq() to print\nInterface CLI commands as it completely break the new LINK_PARAMS_NODE.\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "15773a87ce652da5b02ca14dc0088408899ea007",
      "tree": "0c4d6ceab9ca1d8183382f40601265133b15f68b",
      "parents": [
        "ae51c9d510fb7d9cc41ead8803af916c1f4b34ca"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 18:29:55 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "zebra: Add link parameters support to Zebra\n\n* zebra/interface.c:\n   - Add new link-params CLI commands\n   - Add new functions to set/get link parameters for interface\n* zebra/redistribute.[c,h]: Add new function to propagate link parameters\n  to routing daemon (essentially OSPFD and ISISD) for Traffic Engineering.\n* zebra/redistribute_null.c: Add new function\n  zebra_interface_parameters_update()\n* zebra/zserv.[c,h]: Add new functions to send link parameters\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "ae51c9d510fb7d9cc41ead8803af916c1f4b34ca",
      "tree": "069b3a1b5d674d215a7520211e32d314d865e17f",
      "parents": [
        "7e49a4f99273858887806c6251d958e1e664bedf"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 16:21:46 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "lib: Add new if_link_params structure\n\nThis new structure is the basis to get new link parameters for\nTraffic Engineering from Zebra/interface layer to OSPFD and ISISD\nfor the support of Traffic Engineering\n\n* lib/if.[c,h]: link parameters struture and get/set functions\n* lib/command.[c,h]: creation of a new link-node\n* lib/zclient.[c,h]: modification to the ZBUS message to convey the\n  link parameters structure\n* lib/zebra.h: New ZBUS message\n* lib/memtypes.c: Add new memory type for Traffic Engineering support\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "7e49a4f99273858887806c6251d958e1e664bedf",
      "tree": "35279e730589b0a460211eeb73279bdff1978102",
      "parents": [
        "a3b161bb72d7fdb58e79afd0f706849601f77fe2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Aug 02 13:36:03 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "build: Test for features.h and move include to lib/zebra.h\n\n* configure.ac: Check for features.h, which is needed to get Clang to\n  define __STDC_IEC_559__.\n* lib/{stream.c,zebra.h}: move the features.h include to zebra.h, so\n  lib/network.c also gets it.\n"
    },
    {
      "commit": "a3b161bb72d7fdb58e79afd0f706849601f77fe2",
      "tree": "d7a9e5323ec658fc144306c44e0783d7c0f4db92",
      "parents": [
        "4359501e1a427159c9b49f3041889837aaaf2eb3"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Aug 01 15:13:58 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "lib: IEC559 tests are fragile, reduce to warning rather than error.\n\n* {network,stream}.c: Weaken the compile time tests for IEEE754 / IEC-559\n  binary floating point format from an error to a warning when not detected.\n\n  I can\u0027t think of any platforms that are not IEEE-754 format, and as the\n  testing for the defines appears to be fragile (often not set) the error\n  just gives false positives.\n\n  Even the warnings may be too much.  Those should probably be moved\n  to some configure test.  Will do for now though, to fix compilation\n  on CentOS and some BSDs.\n"
    },
    {
      "commit": "4359501e1a427159c9b49f3041889837aaaf2eb3",
      "tree": "a9f2a5b71e75a61f84100446f90d9339e6152587",
      "parents": [
        "d41e7b975b901f109608471b77c46718c1fb5b45"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Tue May 19 18:50:49 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "lib: consolidate ntohf/htonf from ospfd/isisd TE to lib/network\n\n* lib/network.{c,h}: Consolidate the ntohf/htonf functions used in ospfd\n  TE to here, using the value-passing variant that fits with existing\n  ntoh/hton functions.\n* ospfd/ospf_opaque.c: Remove its variants.\n* ospfd/ospf_te.c: Update to use the consolidated, by-value variant.\n"
    },
    {
      "commit": "d41e7b975b901f109608471b77c46718c1fb5b45",
      "tree": "8db478bd5cd56ab041ba8e7251b3849954abd922",
      "parents": [
        "581ecbfe91d23791c116a8e3790208a17c1a5983"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Tue May 19 15:38:43 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "lib/stream: add float/double \u003c-\u003e IEEE-754 single/double mux/demuxers\n\n* stream.{c,h}: Add stream_get{f,d} and stream_put{f,d}) demux and muxers to\n  safely convert between big-endian IEEE-754 single and double binary\n  format, as used in IETF RFCs, and C99.  Implementation depends on host\n  using __STDC_IEC_559__, which should be everything we care about.  Should\n  correctly error out otherwise.\n\n  Thanks to Aidan Delaney \u003caidan@phoric.eu\u003e and Olivier Dugeon for pointing\n  out the __STDC_IEC_559__ macro.\n\n  Update: GCC does not per se set __STDC_IEC_559__, so also test for\n  __GCC_IEC_559 \u003e\u003d 1.\n"
    },
    {
      "commit": "581ecbfe91d23791c116a8e3790208a17c1a5983",
      "tree": "c6087fe822be69a1b424b2453aa87ac30014ec5e",
      "parents": [
        "00667cea1fbd088900f7909f2044da2a7e26270d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue May 03 19:59:43 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "zebra: count iface up/down events and keep last time of their occurrence\n\nIt is quite useful to be able to assert whether specific interfaces have\nflapped or also to verify that specific interfaces have not flapped.\n\nBy having counters for those events and storing the last time of their\noccurrence, this is made possible.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "00667cea1fbd088900f7909f2044da2a7e26270d",
      "tree": "33044643861697f51f026938d24d87056ef5f37f",
      "parents": [
        "880e31ca2d8a8a8fcbc28bfeac9bd13fc76dd2c1"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue May 03 19:59:42 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: add event_counter\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "880e31ca2d8a8a8fcbc28bfeac9bd13fc76dd2c1",
      "tree": "bcaadd39adfb96a286d1ece6cc5bf8b27f0dad5d",
      "parents": [
        "2ab67a7591d7693bb726dd82795017c8c3f52d99"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue May 03 19:59:40 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: use constant to replace magic value for length of quagga_timestamp\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2ab67a7591d7693bb726dd82795017c8c3f52d99",
      "tree": "06b055b1e565c2e61f80f57d7a56dcb0af48b355",
      "parents": [
        "811577eaede8b6a7ea6ba3731c82eed1c4d07500"
      ],
      "author": {
        "name": "Pawel Wieczorkiewicz",
        "email": "pwieczorkiewicz@suse.de",
        "time": "Fri Apr 01 12:54:38 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "build: detect and create AM_SILENT_RULES macro if needed\n\nOlder libs have problem with that:\nconfigure.ac:17: warning: macro `AM_SILENT_RULES\u0027\n  not found in library\n...\nconfigure.ac:24: error: possibly undefined macro:\n   AM_SILENT_RULES\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "811577eaede8b6a7ea6ba3731c82eed1c4d07500",
      "tree": "b6b5ac6a5bc2248830e47e6a4ed044d7098cc38f",
      "parents": [
        "985c3556921fa669f86fe5e62130fbeb93d94ca9"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Mar 10 20:16:48 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: Remove unnecessary parentheses\n\nThe freebsd compiler complains that there is an extra set of ()\u0027s\naround the if statement.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "985c3556921fa669f86fe5e62130fbeb93d94ca9",
      "tree": "0db825e0fbb0b0e1452e0169c6b36cd04c23b6cd",
      "parents": [
        "54406ac4c6883725f8a337bdc4f15fb015926b0f"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Mar 10 20:16:47 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "bgpd: Fix code path that leads to uninitialized variables\n\nsubtype and sublength are not initialized and if on Line 1877\nBGP_ATTR_ENCAP !\u003d type we will not set subtype and sublength,\nbut these variables are used immediately below that if statement.\n\nThis issue was discovered via the freebsd compiler.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "54406ac4c6883725f8a337bdc4f15fb015926b0f",
      "tree": "0044c1865642f3ad55f6b597f107167ca1b79e6d",
      "parents": [
        "1ad00b07a10eb8b3f5c94348488735fb08f28717"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 04 15:28:57 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: Refactor thread_process_fd\n\nthread_process_fd is looping over the read and write\nfd\u0027s separately.  There is no need to do this individually.\nloop over both the read and write fdset\u0027s at the same time.\nThis will improve select processing performance, especially\nfor large data sets.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "1ad00b07a10eb8b3f5c94348488735fb08f28717",
      "tree": "a17cbf06ebd0dc639ca46a63de7727ac7c5c56ee",
      "parents": [
        "e0b8324deb490c52834775d2b805cbb57e003ce0"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Jul 13 11:02:38 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: Fix regression in thread.c\n\n* Fix regression introduced with merging of\n\n    \u0027lib: Refactor read/write functionality\u0027\n"
    },
    {
      "commit": "e0b8324deb490c52834775d2b805cbb57e003ce0",
      "tree": "4f4055d192a73ac02ce258fb00be829036923ca3",
      "parents": [
        "19be18a929c3afa343ac5435dba25f522e294d9b"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 04 15:28:56 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: Refactor read/write functionality\n\nBoth the read and write functions used the same code\nslightly modified for reading and writing.  Combine this\ncode together.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n\nEdited-by: Paul Jakma \u003cpaul.jakma@hpe.com\u003e to retain the\nexternal library symbols, for ease of merging.\n"
    },
    {
      "commit": "19be18a929c3afa343ac5435dba25f522e294d9b",
      "tree": "ca2b656c0e8d24a9b3f50e482f65cb5fbc0cbf0e",
      "parents": [
        "6bcee414a487024e7865fb29d4e583870406d914"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 04 15:28:55 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: Abstract fd set operations\n\nAbstract FD set operations so that we can eventually\nchoose what type of select/poll operation that\nwe want to use.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetowkrs.com\u003e\n"
    },
    {
      "commit": "6bcee414a487024e7865fb29d4e583870406d914",
      "tree": "ae207533d9edeaec7277a2a3ae4768586e04879e",
      "parents": [
        "921936652359fe72728eb196aa9107310f02a4d4"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Mar 12 19:58:09 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: fix MIN/MAX macros to not double-eval\n\ncf. https://gcc.gnu.org/onlinedocs/gcc/Typeof.html\n(Works on all compilers on Quagga\u0027s compiler support list in\ndoc/overview.texi)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "921936652359fe72728eb196aa9107310f02a4d4",
      "tree": "76bfc9865bc9ee26e4f73999bcecf424dd649598",
      "parents": [
        "41de629c1fe88f9ea95d0400af6896f3c84a0dff"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Jun 16 15:53:26 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:36 2016 +0100"
      },
      "message": "lib: keep hash of node\u0027s commands to detect duplicate installs\n\n* command.h: (struct cmd_node) Add a hash, so duplicate installs of\n  a cmd_element to a command node can be detected.  To help catch\n  strays from the VIEW/ENABLE node consolidation particularly\n  (installs to VIEW automatically install to ENABLE too now).\n* command.c: (cmd_hash_{key,cmp}) helpers for the hash - just directly\n  on the pointer value is sufficient to catch the main problem.\n  (install_node) setup the hash for the command node.\n  (install_element) check for duplicate installs.\n  The assert on the cmd_parse_format seems misplaced.\n  (install_default_basic) separate the basic, VIEW, node default commands\n  to here.\n  (cmd_init) get rid of dupes, given consolidation.\n  (cmd_terminate) clean up the node command hash.\n\nNot done: The (struct cmd_node)\u0027s vector could be replaced with the\ncmd hash, however much of the command parser depends heavily on the\nvector and it\u0027s a lot of work to change.  A vector_lookup_value could\nalso work, particularly if vector could be backed by a hash.\n\nThe duplicate check could be disabled in releases - but useful in\ndevelopment.  It\u0027s a little extra overhead at startup.  The command\ninitialisation overhead is already something that bites in\nmicro-benchmarks - makes it easy for other implementations to show\nhow much faster they are with benchmarks where other load is low\nenough that startup time is a factor.\n"
    },
    {
      "commit": "41de629c1fe88f9ea95d0400af6896f3c84a0dff",
      "tree": "5120035dc611715809cef786d4166ec0f8023016",
      "parents": [
        "68b45cc592d5d61e748e8d99ec9f84e63aa73213"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue May 03 19:59:41 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:36 2016 +0100"
      },
      "message": "lib: add api method to read current config path\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "68b45cc592d5d61e748e8d99ec9f84e63aa73213",
      "tree": "eb1008834813757b86e5f4bc439e7b2b3188adbf",
      "parents": [
        "b9ac2f320922542e0320ceeced4aa7264564e98a"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 11 14:27:13 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:33 2016 +0100"
      },
      "message": "*: Consolidate all double VIEW_NODE and ENABLE_NODE\u0027s\n\nIf a command is put into the VIEW_NODE, it is going into the\nENABLE_NODE as well.  This is especially true for show commands.\nAs such if a command is in both consolidate it down to VIEW_NODE.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "b9ac2f320922542e0320ceeced4aa7264564e98a",
      "tree": "a5309dda6b12175879f99aa68b351b367ea8af08",
      "parents": [
        "4ab273bb60606ed681bee1be6fb2c8bb31dc26a7"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 11 14:27:12 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:33 2016 +0100"
      },
      "message": "lib: Consolidate VIEW_NODE to be ENABLE_NODE as well\n\nIf you are in VIEW_NODE, the command should exist in ENABLE_NODE\nas well.  This is being done to reduce chances of code being\nadded to one but not the other NODE.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "4ab273bb60606ed681bee1be6fb2c8bb31dc26a7",
      "tree": "0742982d0f484826bf983c1789ffb0cd080fe56b",
      "parents": [
        "0744040564ece3f4b9fe39fcf857e466a5f68a72"
      ],
      "author": {
        "name": "Denil Vira",
        "email": "denil@cumulusnetworks.com",
        "time": "Fri Mar 04 15:28:54 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:33 2016 +0100"
      },
      "message": "lib: Replace lists with arrays to store read and write threads\n\nWith arrays, a thread corresponding to given fd is looked up in constant time\nversus the linear time taken for list traversals.\n\nSigned-off-by: Denil Vira \u003cdenil@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0744040564ece3f4b9fe39fcf857e466a5f68a72",
      "tree": "dc0fca27a603d845d153cccb95fd5b21ffa6429d",
      "parents": [
        "23757db11c5378521b7948847e17691f4fc35e0a"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Feb 25 07:39:45 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:33 2016 +0100"
      },
      "message": "vtysh: Add ability to only look at one processes work queue\n\nWhen examining performance information it is nice to not\nhave to look at daemons who you are not interested in.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nReviewed-by: Don Slice \u003cdslice@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "23757db11c5378521b7948847e17691f4fc35e0a",
      "tree": "5b62d70b558c89ab751626e5b3f1a028a0be431e",
      "parents": [
        "7bd31774cf2c1cfaf74bca87f57f698e20a07e65"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Feb 24 06:26:02 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "*: get rid of \"MTYPE 0\"\n\nA few places are using 0 in place of the MTYPE_* argument.  The\nfollowing rewrite of the alloc tracking won\u0027t deal with that, so let\u0027s\nuse MTYPE_TMP instead.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7bd31774cf2c1cfaf74bca87f57f698e20a07e65",
      "tree": "dd6edfc612c77e79138596dfe4070e0822797d77",
      "parents": [
        "47dd9af50d7fcf3ea25ebb8c8c4e9c4726a072f6"
      ],
      "author": {
        "name": "kitty",
        "email": "khiruthigai.balasubramanian@hpe.com",
        "time": "Thu Feb 18 21:33:40 2016 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "ospfd: fix non-zero metric when describing loopback addresses\n\nFixes Quagga Bugzilla #842\n\nChange-Id: Iff33d70089d1393bf3e9c757d9e9faf134699121\nSigned-off-by: kitty \u003ckhiruthigai.balasubramanian@hpe.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "47dd9af50d7fcf3ea25ebb8c8c4e9c4726a072f6",
      "tree": "c68cef6c3ba66351692ef54b9278dec11ca0bcdd",
      "parents": [
        "8b3ab1f1c8172ff7c77b382b6636c8e8314d7ebc"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Feb 16 19:50:16 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "build/pimd: remove special shell scripts\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "8b3ab1f1c8172ff7c77b382b6636c8e8314d7ebc",
      "tree": "853af8245024d9e72b94ccd25a77414a4460751b",
      "parents": [
        "d869dbd03b4d75d512552d07ed8fbe0807272a9c"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Feb 16 19:50:15 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "isisd: fix assert warning\n\nicc (the Intel C Compiler) \"knows\" that assert() can be disabled by\nsetting specific optimisation flags, and therefore emits a warning about\nmissing a return value after an \"always-error\" assert.\n\nWorkaround by returning a value - this probably needs discussion and a\nbetter fix (for all places where the code needs to abort due to internal\nerrors).\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d869dbd03b4d75d512552d07ed8fbe0807272a9c",
      "tree": "2ade0de7288c4dd3fc68232708346881fd1a59fa",
      "parents": [
        "9da9a61e2f8afb61aa31c17fb810169290bf96ee"
      ],
      "author": {
        "name": "Udaya Shankara KS",
        "email": "shankara.k.s.u@gmail.com",
        "time": "Thu Feb 11 21:42:29 2016 +0530"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "zebra: Enable fpm module to connect to remote fpm server\n\nFPM aims to provide cross platform mechanism to support the scenario\nwhere the router has forwarding path distinct fromt the kernel.Commonly\nHardware based fast path.Hence it is non-configurable paramter.This\nlimits us to use funcationality to update FIB information to remote\nhosts, like SDN controller.\n\nThis implementation provides the CLI to configure remote hosts and port\ninformation of remote fpm controller.Otherwise default fpm server will\nbe localhost and default fpm port will be well know port 2620.\n\n* zebra_fpm.c: added fpm_server paramter to zfpm_global_t handler.\n    Implemented CLI for configuring the fpm server and no fpm\n    command to revert back to default configuration.\n\n* zserv.c: Install zebra node to write fpm configuration info\n   on console/config file.\n\nFurther documentation supplied:\n-------------------------------\n\n               ZEBRA : CLI CONFIGURATION FOR FPM MODULE\n         \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n1. INTRODUCTION\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n   1.1 scope\n\n     This memo discusses the configuration option for zebra to update\n     FIB information to local and remote modules.\n     This will also helps to address the issue associated with CORD project.\n     https://jira.onosproject.org/browse/CORD-411\n\n2. REFERENCE\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  Quagga version 99.24+ ( main branch committed on 29-sep-2015)\n\n3. PROBLEM DESCRIPTION\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n    Once FPM is enabled, Quagga periodically tries to initiate fpm\nconnection to localhost:2620.  These values are non configurable in\nexisting implementation.  There is no CLI available to configure\n\"host:port\".  hence limits us to use it for hardware based fast path\nmodules only.\n\n4. PROPOSED CHANGES\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nFollowing changes are done to the quagga code\n   a) Added new CLI to configure \"host address : port\".\n      The CLI format\n      \u003cconf t\u003e\n           $ fpm connection ip \u003cipv4 address\u003e port \u003ctcp port num\u003e\n\n      and no fpm command to revert back to default\n      \u003cconf t\u003e\n           $ no fpm connection ip \u003cipv4 address\u003e port \u003ctcp port num\u003e\n\n   b) Allowed values are ipv4 address and tcp port range \u003c1-65535\u003e\n\n   c) FPM initialization code has been enhanced to pick the \"host\n      address : port\" values from zebra.conf.  if not found then\n      default values as localhost:2620 will be used.  and updated the\n      information on to config file on write config command\n\n5. FILES MODIFIED\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  1) fpm/fpm.h :\n     a) Added MACRO to represent network order loopback ip\n\n  2) zebra/zebra_fpm.h :\n\n     a) introduced fpm_server variable in zfpm_glob_t handler to hold\n        the remote fpm server address\n\n     b) Hooked \u0027fpm_remote_ip_cmd\u0027 and \u0027no_fpm_remote_ip_cmd\u0027 at CONFIG\n        node to configure remote fpm detail and to revert back to\n        default respectively\n\n  3) zebra/zserv.c :\n     a) Hooked \u0027config_write_fpm\u0027 callback function, at ZEBRA_NODE to\n        display the fpm connection details on console on entering\n        command\n\n         $ show running_config\n        and to write to configuration file on entering command\n         $ write config\n\n6. TESTING DETAILS\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n   6.1. default behavior\n\n          In default configuration FPM will attempt to connect to\n          localhost:2620\n\n   6.2. update fpm info\n        a) Using CLI command user can configure fpm host:port details\n           and can be able to write to config file(zebra.conf) using\n           write config command.  this parameters has no\n           dependency/impact on other parameters of config file\n\n        b) show running-config/write config will display the fpm\n           information if configured.  and will not display any\n           information related to fpm for default configuration\n\n        c) these configured information will be stored to config file.\n           only on write config command.\n\n   6.3 loading from config file\n        a) zebra attempts to connect to fpm server if fpm parameter\n           found in config file.else connects to default parameters.\n\n        b) if fpm connection drops, fpm will periodically attempts to\n           connect to remote server.\n\n        c) if fpm connections already established. then newly\n           configured fpm parameters will not disconnect the existing\n           connection.  new connection to the different fpm server will\n           happen only after existing connection closes by either of\n           the end.\n"
    },
    {
      "commit": "9da9a61e2f8afb61aa31c17fb810169290bf96ee",
      "tree": "e4cc5ca56f9a7498fab4120470303e680a43202e",
      "parents": [
        "071cfcd2e315499f0a4fa8c23779468eacc20033"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Feb 02 21:11:40 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "config: Remove unused library check\n\nconfigure.ac is looking for the setproctitle library,\nwhich while it might be useful, we never call setproctitle\nor any other function that the library might expose.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "071cfcd2e315499f0a4fa8c23779468eacc20033",
      "tree": "51ff82f6cd34c3a9ec2e6418830676f9c03c9558",
      "parents": [
        "9514fee4b37a9043738aa16ca8684993a1b572ad"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Feb 02 21:02:42 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "bgpd: Removed unused variable from \u0027struct attr_extra\u0027\n\nThe mp_nexthop_local_in variable is never used.  Remove it\nfrom the code base.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "9514fee4b37a9043738aa16ca8684993a1b572ad",
      "tree": "715d5bfb6824dc213a3f0c98cf149bfb5e104ea7",
      "parents": [
        "3c964045459f66921f8a3dc33fe4c028e6b0b141"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Jan 26 11:44:14 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "bgpd, ripngd, zebra: Remove duplicate PSIZE define\n\nThe PSIZE macro is defined the same in multiple places.  Remove\nthe duplicates.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "3c964045459f66921f8a3dc33fe4c028e6b0b141",
      "tree": "e965c083d34feb5be294a51e2f0e18ff7d4fc527",
      "parents": [
        "687bea20fa61d8fc7cf48c0b227f16d0b324778c"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Mon Jan 25 23:38:53 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "bgpd: Fix \u0027show bgp ipv4 vpnv4 statistics\u0027 cli.\n\nWhen attempting to use the \u0027show bgp ipv4 vpnv4 statistics\u0027 cli, the safi\nchoosen is BGP_MPLS_LABELED_VPN which is #defined to 128.  The afi/safi\ncombination is fed to bgp-\u003erib, which limits the size of the safi to BGP_SAFI_MAX\nwhich is #defined to 5.   The correct value to use is BGP_MPLS_VPN\n\nThe bgp code differentiates between the actual safi value for BGP_MPLS_LABELED_VPN\nused defined by RFC 4364, to a internal SAFI value used to limit array size.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "687bea20fa61d8fc7cf48c0b227f16d0b324778c",
      "tree": "14621b8d6c3e43e751b9f8ff166ad7490a2c1114",
      "parents": [
        "9145f0e4cf776bd3156620da6c8a772fee4d4383"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Mon Jan 25 14:56:26 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "lib: Allow zclient do-over of connect on initial attempt\n\nWhen a protocol is attempting to connect to the zebra daemon\nthrough it\u0027s socket.  If the inital attempt fails, give it a\nfew more attempts before giving up and leaving the daemon in\na bizarre state.\n\nThis problem was found by Ashley Penney, and Ashley was of\nimmense help in debugging and testing the fix for this issue.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: Ashley Penney \u003capenney@ntoggle.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "9145f0e4cf776bd3156620da6c8a772fee4d4383",
      "tree": "9b8d99185c5755a5324ab859da422448ab88b6de",
      "parents": [
        "9c52caeaf40e32701ff79a721f0fee52cfcbd77c"
      ],
      "author": {
        "name": "Balaji",
        "email": "balajig81@gmail.com",
        "time": "Wed Jan 20 22:59:27 2016 +0530"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "bgpd: Addition of bgp dampening configuration commands under IPv4/multicast\n\nSigned-off-by: Balaji Gurudoss \u003cbalajig81@gmail.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "9c52caeaf40e32701ff79a721f0fee52cfcbd77c",
      "tree": "60b3defc89ed5610e13eab46edb997d17e276be1",
      "parents": [
        "df2ef24fb73c83a6e733be9eb8cac3e0df8467f8"
      ],
      "author": {
        "name": "Balaji",
        "email": "balajig81@gmail.com",
        "time": "Wed Jan 20 22:59:26 2016 +0530"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "bgpd: Addition of dampening show commands under v4 unicast/multicast tree\n\nPatch contains addition of show ip bgp ipv4 (unicast| multicast)\ndampening tree.\n\nSigned-off-by: Balaji Gurudoss \u003cbalajig81@gmail.com\u003e\n"
    },
    {
      "commit": "df2ef24fb73c83a6e733be9eb8cac3e0df8467f8",
      "tree": "0d208e09a57754656de13c222d321ed8a8c47b05",
      "parents": [
        "543e791be9257e60d4d02abd0cdac7337a31636a"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.univ-paris-diderot.fr",
        "time": "Wed Sep 10 16:50:45 2014 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "lib: Make distribute.c accepts both v4 and v6.\n\ndistribute.c doesn\u0027t allow to manage both v4 and v6 distribute lists.  This\npatch fix this problem by having 4 DISTRIBUTE* values in the enumeration instead\nof two. The code in all daemons using distribute.c is adapted.\n"
    },
    {
      "commit": "543e791be9257e60d4d02abd0cdac7337a31636a",
      "tree": "0110c7568215afddae497a4077dd767b28d233bc",
      "parents": [
        "fafa899b4e84c7b9fd07b076517744d9351aaa6b"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.univ-paris-diderot.fr",
        "time": "Wed Sep 10 16:50:44 2014 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "ripngd: code simplification for redistribution.\n\nUse loops and variables instead of doing each cases by hand.\nUse boolean instead of having 2 almost identical functions.\n"
    },
    {
      "commit": "fafa899b4e84c7b9fd07b076517744d9351aaa6b",
      "tree": "bc6f6e0d4f60df5cb3eb41695f490ef62b570608",
      "parents": [
        "2074d6752d1dafcd6511677e2bdc9bbe0b73c388"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.univ-paris-diderot.fr",
        "time": "Wed Sep 10 16:50:43 2014 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "ripd: code simplification for redistribution.\n\nUse loops and variables instead of doing each cases by hand.\nUse boolean instead of having 2 almost identical functions.\n"
    },
    {
      "commit": "2074d6752d1dafcd6511677e2bdc9bbe0b73c388",
      "tree": "bbbd02c455ae093426a6c478034471b6cf85cf7d",
      "parents": [
        "a3936d04942795bb92f04fefd25957c327e31c20"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.univ-paris-diderot.fr",
        "time": "Wed Sep 10 16:50:42 2014 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "lib: simplify distribute.c\u0027s code.\n\nUse loops and variables instead of doing each cases by hand.\nUse static functions instead of rewriting code.\n"
    },
    {
      "commit": "a3936d04942795bb92f04fefd25957c327e31c20",
      "tree": "1d75c7ed70aa655c4cc0429264bfb1832afe8636",
      "parents": [
        "6184c39e27d4b6f3721b8c4dc3df1b968e09606a"
      ],
      "author": {
        "name": "Boian Bonev",
        "email": "bbonev@ipacct.com",
        "time": "Wed Jun 25 20:26:44 2014 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "bgpd: add aspath_aggregate_mpath that preserves path length\n\nIssue - when two aspaths are aggregated the result will be with\ndifferent length if the two paths do not share common prefix.\n\nE.g.: aggregation of 100 101 400 500 and 200 201 400 500 currently\nwill result in {100,101,200,201,400,500} which is of much shorter\nlength and is not ok to be readvertised becase may create shortest\npath on the internet and cause infinite flapping.\n\naspath_aggregate_mpath will construct the followin path for the\nabove example: {100,200} {101,201} 400 500\n\nSigned-off-by: Boian Bonev \u003cbbonev at ipacct.com\u003e\n\npatchwork #994: http://patchwork.quagga.net/patch/994/\n"
    },
    {
      "commit": "6184c39e27d4b6f3721b8c4dc3df1b968e09606a",
      "tree": "2307896d8cbec453b3d2c829c1b299d3d3f996e1",
      "parents": [
        "d8f7f86a64842fcc6200c2fa4f560b9aa7a279bb"
      ],
      "author": {
        "name": "Roman Hoog Antink",
        "email": "rha@open.ch",
        "time": "Mon Mar 17 14:01:42 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "bgpd: implement admin distance\n\nUntil today the admin distance cannot be configured for any IPv6\nrouting protocol. This patch implements it for bgp.\n\nSigned-off-by: Maitane Zotes \u003cmaz@open.ch\u003e\n\npatchwork #993: http://patchwork.quagga.net/patch/993/\n"
    },
    {
      "commit": "d8f7f86a64842fcc6200c2fa4f560b9aa7a279bb",
      "tree": "90da2b249a53228d99fed940373e3aa6b5039416",
      "parents": [
        "a0a661f982c4a9726573faf28817d77d3e7cdad5"
      ],
      "author": {
        "name": "Roman Hoog Antink",
        "email": "rha@open.ch",
        "time": "Wed Mar 05 09:13:43 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "ospf6d: implement admin distance\n\nUntil today the admin distance cannot be configured for any IPv6\nrouting protocol. This patch implements it for ospf6.\n\nSigned-off-by: Maitane Zotes \u003cmaz@open.ch\u003e\n"
    },
    {
      "commit": "a0a661f982c4a9726573faf28817d77d3e7cdad5",
      "tree": "70f836df1c739c044addd3c3e701fa031505ce92",
      "parents": [
        "a343cf8d74920752ba0e35142e23a3ca56620755"
      ],
      "author": {
        "name": "boris yakubov",
        "email": "borisyakubov@ruggedcom.com",
        "time": "Fri Apr 26 14:38:34 2013 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "isisd: Segmentation fault on isis daemon fixes\n\nI have a fix for 2 segmentation fault scenarios on the isis daemon:\n1. When running a command \"isis passive\" on an interface in the\nfollowing context:\n\"end\"\n\"configure terminal \"\n\"interface dummy0\"\n\"isis passive\"\nThe trace back collected:\nisis_adjacency.c:521\nfamily\u003d2,\n     root_sysid\u003d0x20aee6d0 \"\", parent\u003d0x20af4d68) at isis_spf.c:999\nsysid\u003d0x20aee6d0 \"\")\n     at isis_spf.c:1217\nisis_spf.c:1372\nisis_lsp.c:416\nisis_lsp.c:1660\nisis_main.c:368\n\nThe fix location:\nfile name: isisd/isis_adjacency.c\nroutine name: isis_adj_build_up_list\n\n2. When deleting the existing isis router instance:\n\"end\"\n\"configure terminal \"\n\"no router isis DEAD\"\n\nThe fix location:\nisisd/isis_events.c, routine circuit_resign_level\nisisd/isis_lsp.c, routine lsp_destroy\nisisd/isis_route.c, isis_route_validate\n\nThe trace back collection:\n\"DEAD\") at isisd.c:252\nargc\u003d1, argv\u003d0xbfc39054) at isisd.c:1520\nvty\u003d0x20d6f528, cmd\u003d0x0) at command.c:2121\ncmd\u003d0x0, vtysh\u003d0) at command.c:2155\nisis DEAD\") at vty.c:433\nisis_main.c:368\n\nand\n\n\"DEAD\") at isisd.c:260\nargc\u003d1, argv\u003d0xbfd6cf54) at isisd.c:1520\nvty\u003d0x208cb528, cmd\u003d0x0) at command.c:2121\ncmd\u003d0x0, vtysh\u003d0) at command.c:2155\nisis DEAD\") at vty.c:433\nisis_main.c:368\n\nThe patch is included.\n\npatchwork #833: http://patchwork.quagga.net/patch/833/\n"
    },
    {
      "commit": "a343cf8d74920752ba0e35142e23a3ca56620755",
      "tree": "1e74cf6e6d6216c8a9d3ea9c0a9fad5c4a4568a4",
      "parents": [
        "d319a3abbf6e6c310b6b6a6891ebe1957592f9a9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Jan 14 23:41:57 2013 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:29 2016 +0100"
      },
      "message": "lib: update Solaris multicast API (BZ#725)\n\nOn OpenIndiana/Solaris the build fails with \"unsupported multicast API\".\nIt\u0027s only in the IPv4 part where setsockopt IP_MULTICAST_IF needs a\nlocal address and not the index (IPv6 wants the index).\nThe following code walks the list of interfaces until it finds the matching\nindex and uses the interface\u0027s local address for the setsockopt call.\nI don\u0027t know if it works on Solaris \u003c 10 (I guess yes, but I don\u0027t have\nany machine to verify it).\n\n[NB: this breaks unnumbered setups that use the same IPv4 address on\nmultiple interfaces. -- equinox@opensourcerouting.org]\n\nReported-by: Brian Utterback \u003cbrian.utterback@oracle.com\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n\nPatchwork #762\n"
    },
    {
      "commit": "d319a3abbf6e6c310b6b6a6891ebe1957592f9a9",
      "tree": "44c54674d263c78032cd217a57a12350882a380d",
      "parents": [
        "86b2a0a12ace817e64e8e4a719b1ba9a8e6af253"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Wed May 25 14:47:00 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:29 2016 +0100"
      },
      "message": "ripd: split-horizon default differed between rip_interface_new and _reset\n\n* rip_interface.c: Default for split_horizon_default differed between\n  rip_interface_new and rip_interface_reset, causing at least some issues\n  after interface events. See patchwork #604. Fix, and consolidate code.\n\n  (rip_interface_{reset,clean}) rename these to \u0027interface\u0027, as that\u0027s more\n  appropriate.  Spin the ri specific bodies of these functions out to\n  rip_interface_{reset,clean} helpers.  Factor out the overlaps, so\n  rip_interface_reset uses rip_interface_clean.\n\n  (rip_interface_new) just use rip_interface_reset.\n\n* ripd.h: Update for (rip_interface_{reset,clean})\n\nReported by xufeng zhang, with a suggested fix on which this commit expands.\nSee patchwork #604.  This commit addresses only the split-horizon\ndiscrepency, issue #2.  The other issue they reported, #1, is not addressed,\nthough suggested fix seems inappropriate.\n\nCc: xufeng.zhang@windriver.com\n"
    },
    {
      "commit": "86b2a0a12ace817e64e8e4a719b1ba9a8e6af253",
      "tree": "d077de18b7d595f88dc4fb423a5dba91f8650741",
      "parents": [
        "f53585d59b62b12d68282154af346796b75c7f2f"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue May 17 12:19:51 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:29 2016 +0100"
      },
      "message": "lib: change command logging to be off by default\n\n* lib/vty.c: add \u0027log_command\u0027 to enable logging of vty commands executed.\n  Default command logging to off.\n"
    },
    {
      "commit": "f53585d59b62b12d68282154af346796b75c7f2f",
      "tree": "23c84a60e16058427c069f0a406ff8f44f73b19b",
      "parents": [
        "ac6ff4643645315db648604771926218aa4ead2d"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue May 17 07:10:36 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:29 2016 +0100"
      },
      "message": "bgp: add \"debug bgp allow-martians\" next hops and related code/commands\n"
    },
    {
      "commit": "ac6ff4643645315db648604771926218aa4ead2d",
      "tree": "39a8c4f4910060019b2d6df9c944eb456f1d9579",
      "parents": [
        "5f678889843fb9bc3f07d05eebc2f8fb35584a91"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue May 17 07:10:37 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:29 2016 +0100"
      },
      "message": "bgpd: Add flag to not change e{u,g}id on startup and run as unprivileged user\n\n* bgp_main.c: add -S / --skip_runas flag to not change effective user/group\n  on start up.  Enables bgpd to be run by unprivileged user.\n"
    },
    {
      "commit": "5f678889843fb9bc3f07d05eebc2f8fb35584a91",
      "tree": "284e203bd4345265fae0648bbdd54460171951f0",
      "parents": [
        "aef4650851cf0f74d944466d50e26bb8f8635c3d"
      ],
      "author": {
        "name": "Igor Ryzhov",
        "email": "iryzhov@nfware.com",
        "time": "Fri Apr 22 17:38:24 2016 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 29 19:48:45 2016 -0400"
      },
      "message": "zebra: add missing vty commands\n\nSigned-off-by: Igor Ryzhov \u003ciryzhov@nfware.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "aef4650851cf0f74d944466d50e26bb8f8635c3d",
      "tree": "0fa32e61bc3c9d715247091fd3003690b3e056a1",
      "parents": [
        "bb01bdd740339b0c07d8ed0786811801b2a79192"
      ],
      "author": {
        "name": "Stas Nichiporovich",
        "email": "stas@iptel.by",
        "time": "Tue Apr 26 08:14:36 2016 +0000"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 29 19:46:16 2016 -0400"
      },
      "message": "zebra: fix crash caused by using route-map with \"set src\"\n\nSigned-off-by: Stas Nichiporovich \u003cstas@iptel.by\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "bb01bdd740339b0c07d8ed0786811801b2a79192",
      "tree": "946ffe458cc4ebea09407394b880443d0ed8f98b",
      "parents": [
        "e6ec2d6d18dadb119b93284ef2f5f5b5440d6f66"
      ],
      "author": {
        "name": "Jafar Al-Gharaibeh",
        "email": "jafar@atcorp.com",
        "time": "Thu Apr 21 16:22:33 2016 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 29 19:31:49 2016 -0400"
      },
      "message": "ospfd: fix - correct neighbor index on changing/p2p/virtual links\n\nospfd keeps a list of neighbor routers for each configured interface. This\n list is indexed using the neighbor router id in case of point-to-point and\n virtual link types, otherwise the list is indexed using the neighbor\u0027s\n source IP (RFC 2328, page 96). The router adds itself as a \"pseudo\" neighbor\n on each link, and also keeps a pointer called (nbr_self) to the neighbor\n structure. This takes place when the interface is first configured. Currently\n ospfd adds this pseudo neighbor before the link parameters are fully configure,\n including whether the link type is point-to-point or virtual link. This causes\n the pseudo neighbor to be always indexed using the source IP address regardless\n of th link type. For point-to-point and virtual links, this causes the lookup\n for the pseudo neighbor to always fail because the lookup is done using the\n router id whereas the neighbor was added using its source IP address.\n This becomes really problematic if there is a state change that requires a\n rebuild of nbr_self, changing the router id for example. When resetting\n nbr_self, the router first tries to remove the pseudo neighbor form its\n neighbor list on each link by looking it up and resetting any references to it\n before freeing the neighbor structure. since the lookup fails to retrieve any\n references in the case of point-to-point and virtual links the neighbor\n structure is freed leaving dangling references to it. Any access to the\n neighbor list after that is bound to stumble over this dangling pointer\n causing ospfd to crash.\n\nSigned-off-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "e6ec2d6d18dadb119b93284ef2f5f5b5440d6f66",
      "tree": "96202e2ff5a78834986e3dd35dce947bbca1f335",
      "parents": [
        "190591f0fe3388c746ea48f69a439f4bd0b49834"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 08 19:30:51 2016 -0400"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:38:54 2016 -0400"
      },
      "message": "lib: Fix priviledge modification for vty group specified\n\nWhen attempting to switch runtime permissions over to\nthe correct group specified for the vty group, if the\nuser specified to run as does not have that vty group\nthen do warn about the issue and stop running\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nReported-by: Thomas Martin \u003ctmartincpp@gmail.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "190591f0fe3388c746ea48f69a439f4bd0b49834",
      "tree": "de1420f8f017c3e36b5ce6233d01af4f75960c9e",
      "parents": [
        "80f61a9979079ed16b9eff50ba65ad8bf1b15fb6"
      ],
      "author": {
        "name": "Jafar Al-Gharaibeh",
        "email": "jafar@atcorp.com",
        "time": "Thu Apr 21 17:40:12 2016 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:37:53 2016 -0400"
      },
      "message": "zserv: [pimd] fix - avoid dereferencing a NULL pointer\n\nSigned-off-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "80f61a9979079ed16b9eff50ba65ad8bf1b15fb6",
      "tree": "886c30e2570dc6f5117c7dbf353de023524b0309",
      "parents": [
        "7e73eb740f3c52a5b7c0ae9c2cd33b486d885552"
      ],
      "author": {
        "name": "Jonathan Hart",
        "email": "jono@onlab.us",
        "time": "Tue Apr 19 22:13:49 2016 -0700"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:37:25 2016 -0400"
      },
      "message": "pimd: Fix hang when doing nexthop lookup from zebra\n\nI was running in to a bug when pimd would hang in some cases when\nit had to do a nexthop lookup from zebra, such as when a PIM JOIN\nwas received. This issue could be easily reproduced by running\n\u0027show ip rib \u003cip\u003e\u0027 from the pimd vty which forces a nexthop lookup.\n\nThe issue is in zclient_read_nexthop, the zclient_read_header function\nreads the message content into the stream, but then after that the\nzclient_read_nexthop function tries to read the message content again\nfrom the socket, but there are no bytes so it hangs waiting for input.\nThe solution is to not try to read the message content the second time.\nAcked-by: Jafar Al-Gharaibeh\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "7e73eb740f3c52a5b7c0ae9c2cd33b486d885552",
      "tree": "610292c5f4b071790a9fba7bcd77f68934a31809",
      "parents": [
        "7e7a101dde5969f62074801d84bb4cc75e50f548"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Sat Apr 09 17:22:32 2016 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:36:40 2016 -0400"
      },
      "message": "zebra: handle multihop nexthop changes properly\n\nThe rib entries are normally added and deleted when they are\nchanged. However, they are modified in placae when the nexthop\nreachability changes. This fixes to:\n - properly detect nexthop changes from nexthop_active_update()\n   calls from rib_process()\n - rib_update_kernel() to not reset FIB flags when a RIB entry\n   is being modifed (old and new RIB are same)\n - improves the \"show ip route \u003cprefix\u003e\" output to display\n   both ACTIVE and FIB flags for each nexthop\n\nFixes: 325823a5 \"zebra: support FIB override routes\"\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nReported-By: Igor Ryzhov \u003ciryzhov@nfware.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "7e7a101dde5969f62074801d84bb4cc75e50f548",
      "tree": "ac1ba465edce3956ba12ef87f1f3dd7c60be9322",
      "parents": [
        "e7207098c0fa88af6899c1b1483e3ddb19f5336a"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 08 22:03:22 2016 -0400"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:35:33 2016 -0400"
      },
      "message": "ripd: Fix Null pointer dereference\n\nThe rip_output_process function dereferenced a NULL\npointer.  Core file examination showed that tmp_rinfo\nwas NULL on line 2435.  Looking at the last diff\nassociated with this commit, it was obvious that\na formating mistake had been made in the loop over\nthe route nodes list of possible paths.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nReported-by: Sebastian Kricner \u003csebastian.kricner@tuxwave.net\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "e7207098c0fa88af6899c1b1483e3ddb19f5336a",
      "tree": "5df0525bedfed10c2380d191c550c81943d5e3cd",
      "parents": [
        "84a4da039fa620942b6c3a9ff21b7502803f53be"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Sun Apr 03 12:46:28 2016 -0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:34:08 2016 -0400"
      },
      "message": "isisd: ignore unknown interfaces when adjusting IS-IS mtu\n\nFor example during startup of isisd, the MTU of interfaces is not\nknown, since this information will only be available once the\ninterfaces have been learned from zebra.\n\nIt makes no sense to include the MTU 0 that is stored for interfaces\nin this state in the consideration whether a new lsp-mtu for an\narea is valid, so skip interfaces which are in this state.\n\nSigned-off-by: Christian Franke \u003cnobody@nowhere.ws\u003e\n"
    },
    {
      "commit": "84a4da039fa620942b6c3a9ff21b7502803f53be",
      "tree": "e08768425d8bd46c3b34f24886cec8753e84d101",
      "parents": [
        "8ed8d0b5d1596ec9a6cce5ca45eb1cb1dff94978"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Sun Apr 03 12:46:27 2016 -0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:34:01 2016 -0400"
      },
      "message": "isisd: make sure that all interface addresses are advertised\n\nIf the following configuration commands are run interactively in\nsuccession, the ipv6 addresses of this interface won\u0027t be advertised\nin the router\u0027s LSP immediately:\n\n   # interface eth0\n   # ip router isis test\n   # ipv6 router isis test\n\nThis is because the ipv6 router command won\u0027t trigger a state change\nfor the interface and therefore, it won\u0027t trigger a regeneration of\nthe LSPs.\n\nThe same thing happens if IPv4 is enabled after IPv6, or for the cases\nwhere IPv4 is disabled and IPv6 stays enabled or vice-versa.\n\nFix this by explicitly calling lsp_regenerate_schedule for the cases\nwhere it won\u0027t be called implicitly.\n\nSigned-off-by: Christian Franke \u003cnobody@nowhere.ws\u003e\n"
    },
    {
      "commit": "8ed8d0b5d1596ec9a6cce5ca45eb1cb1dff94978",
      "tree": "645a36cc091c6ab5d8ec6c8003d42c2085510a2f",
      "parents": [
        "106e38e4d42ecd94c083907872d514e8c67036f6"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Sun Apr 03 12:46:26 2016 -0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:33:54 2016 -0400"
      },
      "message": "isisd: fix a crash due to an lsp-mtu issue\n\nisisd crashed on startup if it was enabled for an interface with\na too small MTU.\n\nTo fix this, we treat this case as an invalid configuration and\ndisable isis on that interface if that case happens, since it is\na configuration error.\n\nSigned-off-by: Christian Franke \u003cnobody@nowhere.ws\u003e\n"
    },
    {
      "commit": "106e38e4d42ecd94c083907872d514e8c67036f6",
      "tree": "62bbf4b4203df99f92672f91cd361aa6f055a4df",
      "parents": [
        "86c5d2ee68f7b9c00ae4aeb5c8b3c5d82c5ebffc"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Sun Apr 03 12:46:25 2016 -0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:33:46 2016 -0400"
      },
      "message": "isisd: work around route table asserts for deleting node with info\n\nThe route table code in lib/table.c triggers an assertion when a route\nnode with rn-\u003einfo !\u003d NULL reaches refcount 0, probably to avoid\nmemleaks. In this particular case, this is not an issue, since the\ninfo will be freed by the destructor.\n\nHowever, since removing this assertion probably requires more\ndiscussion, just make sure that rn-\u003einfo gets freed and unset before\nits refcount is decremented to zero.\n\nSigned-off-by: Christian Franke \u003cnobody@nowhere.ws\u003e\n"
    },
    {
      "commit": "86c5d2ee68f7b9c00ae4aeb5c8b3c5d82c5ebffc",
      "tree": "adaa21df6998b5736c97bafefc2c59f04c9fdf4a",
      "parents": [
        "5e57b5fc621300427d3818f0723b8cd8d5e5ca6a"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Mar 15 19:17:17 2016 -0400"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Mar 15 19:17:17 2016 -0400"
      },
      "message": "release: 1.0.20160315\n"
    },
    {
      "commit": "5e57b5fc621300427d3818f0723b8cd8d5e5ca6a",
      "tree": "738345e0c3121f329266e8b8faaa88661e7cdb2e",
      "parents": [
        "e3f623be8b6556db9d70c2fc5d3c2b152f36dc1d"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 11 16:28:34 2016 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 11 18:29:14 2016 -0500"
      },
      "message": "quagga: Remove double read of stream\n\nThe addition of a MIN(X,Y) with a stream_getc in the Y\ncauses a double read of the stream due to the way that\nMIN is defined.\n\nThis fix removes a crash in all protocols.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "e3f623be8b6556db9d70c2fc5d3c2b152f36dc1d",
      "tree": "8b1443e7c17f0346589513f0db42d4dd24a28210",
      "parents": [
        "c0cb90c608f7dcb0807e05c70050d2e238d6c4e9"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Mar 09 08:41:59 2016 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Mar 09 08:41:59 2016 -0500"
      },
      "message": "release: 1.0.20160309\n"
    },
    {
      "commit": "c0cb90c608f7dcb0807e05c70050d2e238d6c4e9",
      "tree": "b66b70468004343789d532b1dc757e71177b0966",
      "parents": [
        "d849e23b1c6b7278aef2f460723ac17cdc63e1a7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 18:14:50 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 18:16:47 2016 +0000"
      },
      "message": "Revert \"bgpd: Lower BGP\u0027s default keepalive/holdtime to 3s/9s\"\n\nThis reverts commit f89b09be92bed03b1e5add55dc14ef92e94c52e1.\n\nMartin Winter has reported reliability issues in testing on some platforms.\nWe need a more comprehensive way to deal with defaults and updating them, e.g.\nprofiles of some kind.\n\nDefer this change till after next release.\n"
    },
    {
      "commit": "d849e23b1c6b7278aef2f460723ac17cdc63e1a7",
      "tree": "d0627a3b565375788d11f930143afe561d9b0d2b",
      "parents": [
        "f9f4731245eb9f83d0795acac24183c6cf709288"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Thu Feb 18 18:19:54 2016 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 18:05:23 2016 +0000"
      },
      "message": "zebra: Fix route deletion on *BSD\n\nFix for not handling RTM_CHANGE correctly.  This patch change it to\ndelete/add instead.  Using RTM_CHANGE on kernels where it works is better,\nbut is left as an exercise for developer who has access and will to fix it\non *BSD.\n\n[ed note: collaboration with Martin Winter]\n"
    },
    {
      "commit": "f9f4731245eb9f83d0795acac24183c6cf709288",
      "tree": "e338a7801ba100c822cba507ccce56d6be463105",
      "parents": [
        "f8113a2b10a97ba0d5e915b318cebea283d03169"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Feb 16 11:30:33 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:23 2016 +0000"
      },
      "message": "configure: Fix warnings on CentOS and bump the minimum autoconf version\n\n* configure.ac: Bump the minimum version to 2.60 as needed by\n  AC_USE_SYSTEM_EXTENSIONS.  AC 2.60 is nearly 10 years old, note.  Add\n  AC_PROG_RANLIB, for when --disable-shared is used.\n\n  There are other warnings on, e.g., CentOS 6.7 with 2.63, but they\n  don\u0027t go away if the suggestion to add AC_SYSTEM_EXTENSIONS is\n  followed. This warning doesn\u0027t occur on Fedora with AC 2.69.\n\n  Note: autoconf (and other auto*) should only be needed on developer\n  machines building direct from git.  Other systems should be using the\n  \u0027make dist\u0027 tarballs, with a ready-made build system, that does not\n  need auto* intalled.\n"
    },
    {
      "commit": "f8113a2b10a97ba0d5e915b318cebea283d03169",
      "tree": "5724eaebbbdc1a72bdbdb8f3c9f73aa06ceafd1a",
      "parents": [
        "e84e4d3d2d6127bfd467d9fc18e09450245f7c41"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Feb 16 11:28:35 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:23 2016 +0000"
      },
      "message": "doc: older versions of texinfo seem to be sensitive to location of unmacro\n\n* bgpd.texi: The unmacro of mprec seems to be disliked by older texinfos.\n  Moving it to after the section fixes it. Even easier, just don\u0027t undef the\n  macro.\n"
    },
    {
      "commit": "e84e4d3d2d6127bfd467d9fc18e09450245f7c41",
      "tree": "35fb3757c6d0f9675b67f17b3472824fa511d6a7",
      "parents": [
        "a5efdb60905049e1224a020b78dd9699bdd15b29"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Feb 15 14:11:06 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:23 2016 +0000"
      },
      "message": "doc: Distribute a modern version of texinfo.tex with the docs\n\n* doc/texinfo.tex: Ship a more recent texinfo.tex, from texinfo 6.1, so we\n  don\u0027t have to worry about that.  E.g., this should allow UTF-8 unicode\n  chars to be used directly in the text.\n* doc/Makefile.am: Add previous to EXTRA_DIST\n"
    },
    {
      "commit": "a5efdb60905049e1224a020b78dd9699bdd15b29",
      "tree": "601017049c958f96c0af4e57ecaaa42f6dfdf85e",
      "parents": [
        "988e22f8429ce678ba503bddaaf4ec9f9965eb73"
      ],
      "author": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Thu Oct 29 22:15:42 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:23 2016 +0000"
      },
      "message": "distro/redhat: Update to support CentOS/RHEL/Fedora, upstart/init/systemd\n\n* redhat/quagga.spec.in: Update to support CentOS, RHEL and Fedora, and\n  support the various init systems across different versions of these\n  distros, e.g.  upstart/init/systemd.\n\n  Clean up various warnings from rpmlint.\n\n  Remove configure options that are gone.\n\nA few edits and commit message by:\nPaul Jakma \u003cpaul.jakma@hpe.com\u003e / \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "988e22f8429ce678ba503bddaaf4ec9f9965eb73",
      "tree": "3b56d5e76973b570ed76b2db7b8bba207b28b094",
      "parents": [
        "283d5d7f2fa12c3d33dc17962154665a9993b2c5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Feb 11 15:25:52 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:23 2016 +0000"
      },
      "message": "configure.ac: remove -dev in version\n\n* configure.ac: Remove the -dev suffix from the version, some package\n  systems at least do not like non-numeric strings in package versions\n  (e.g., rpm, which I often use in testing Quagga).\n\n  TODO: Work out some sensible scheme for semi-autogenerating the version\n  perhaps via git describe. The --with-pkg-git-version doesn\u0027t affect the\n  tarball name.\n"
    },
    {
      "commit": "283d5d7f2fa12c3d33dc17962154665a9993b2c5",
      "tree": "bf4d3a1443830358e74188be8f0b11674b8d671d",
      "parents": [
        "fca2c24ff21a9d837229bc40e462c6615e368123"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Feb 11 13:54:23 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:23 2016 +0000"
      },
      "message": "distro/redhat/rpm: remove with_ipv6, package pimd binary, remove pam stack\n\n* redhat/quagga.spec.in: remove with_ipv6, it should just be the norm now.\n  The actual pimd binary wasn\u0027t being packaged, fix.\n  Remove deprecated pam.stack support.\n\n* redhat/quagga.pam.stack: ancient, nuke.\n* Makefile.am: ditto\n"
    },
    {
      "commit": "fca2c24ff21a9d837229bc40e462c6615e368123",
      "tree": "20c44839d10a5b0e81af5dd29f88c8b60707bff9",
      "parents": [
        "e07068c838142a127da8821afd660f075f7c35f8"
      ],
      "author": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Wed Aug 12 17:31:07 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:22 2016 +0000"
      },
      "message": "Adding redhat init/service files to start pimd\n\nAdded missing pimd.init (for RedHat/CentOS \u003c\u003d 6) and\npimd.service (for RedHat/CentOS \u003e\u003d 7)\n\nSigned-off-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e07068c838142a127da8821afd660f075f7c35f8",
      "tree": "1fc006fe7aa4042dc794d18271c0449740513a18",
      "parents": [
        "a3ee120fcf2b2b205e3e15f544eb4090653e7bff"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Fri Sep 04 14:25:13 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:22 2016 +0000"
      },
      "message": "distro: fix redhat/quagga.spec.in\n\n* quagga.spec.in: Add default for with_pimd macro.\n  Remove ancient condtional on quagga_buildreqs.\n  More recent rpmbuild complains about too many levels of recursion in\n  quagga_buildreqs, so use %{expand:..}.\n  Actually use quagga_buildreqs in BuildRequires!\n  groff is needed for build.\n  texi2html --number argument has disappeared, split into 2.\n\nAcked-by: Donald Sharp \u003csharpd at cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "a3ee120fcf2b2b205e3e15f544eb4090653e7bff",
      "tree": "695c9f4c16934d2621736ef73bed6ee46b58a32c",
      "parents": [
        "370b7e59170acf853ca3357c71dd5ab0d85e763c"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 16 19:38:23 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:22 2016 +0000"
      },
      "message": "lib: fix vrf_bitmap leak in zclient_free()\n\nzclient_stop(), which is used as antagonist to zclient_init(), needs to\nundo the vrf_bitmap allocation.  Otherwise zclient_init() will leak the\nallocated memory, for example when zclient_reset() is used.\n\nReported-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "370b7e59170acf853ca3357c71dd5ab0d85e763c",
      "tree": "24cd286ecd47f6c6439e1c5971a1abbacb9e5c3a",
      "parents": [
        "bf83fa25f1bddec6f09ad879cba5e975a3ae5495"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Thu Feb 04 21:29:49 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:22 2016 +0000"
      },
      "message": "bgpd: Fix crash reported by NetDEF CI\n\nThis patch is part of the previously submitted\n patch set on VPN and Encap SAFIs.  It fixes\n an issue identified by NetDEF CI.\n\n Ensure temp stack structures are initialized\n Add protection against double frees / post\n free access to bgp_attr_flush\n\n    Signed-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "bf83fa25f1bddec6f09ad879cba5e975a3ae5495",
      "tree": "a01a0137a4193d2d33d61bb43c113afef3e421a6",
      "parents": [
        "2db962760426ddb9e266f9a4bc0b274584c819cc"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Feb 09 15:23:03 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:22 2016 +0000"
      },
      "message": "lib: Check prefix length from zebra is sensible\n\n* zclient.c: prefix length on router-id and interface address add\n  messages not sanity checked.  fix.\n\n* */*_zebra.c: Prefix length on zebra route read was not checked, and\n  clients use it to write to storage.  An evil zebra could overflow\n  client structures by sending overly long prefixlen.\n\nPrompted by discussions with:\n\nDonald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "b0d02889624eaafa0984873dcd78c086418bdf13"
}
