)]}'
{
  "log": [
    {
      "commit": "b1b1579bf16e6c3a21216d7f68b1b175ab1303bd",
      "tree": "74c239199590b805879524aadc5f3d54bb56a292",
      "parents": [
        "5a9f13a4a0df45c72dc425cc930e5e5682ba59ae"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Sep 21 18:50:23 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:59 2017 +0000"
      },
      "message": "bgpd: consolidate start timer backoff via a \u0027BGP_Stop_with_error\u0027 FSM event\n\n* Exponential increase/back-off on the peer start timer is replicated in\n  a few places. Consolidate by adding a \"BGP_Stop_with_error\" event\n  so places outside FSM can just raise that event.\n* bgpd.h: Add BGP_Stop_with_error\n* bgp_fsm.c: (bgp_event_str[]) Add text for BGP_Stop_with_error.\n  FSM table: Handle BGP_Stop_with_error, identical to bgp_stop\n  in nearly all cases.\n* bgp_packet.c: (bgp_write,bgp_write_notify) can just raise new event now.\n"
    },
    {
      "commit": "5a9f13a4a0df45c72dc425cc930e5e5682ba59ae",
      "tree": "611a01c6c70e1320edd289b0fcab722f15e5b738",
      "parents": [
        "3dda6b3eccb9a2a88d607372c83c04c796e7daac"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:00:00 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:59 2017 +0000"
      },
      "message": "bgpd: Remove change that makes NHT tickle BGP FSM.\n\n* bgpd NHT patch makes NHT tickle FSM to restart session attempts that\n  are still very early, pre sending of messages.  Not really necessary,\n  and conceptually it may be nicer to just keep these two pieces\n  separate from each other.\n* bgpd.h: Remove NHT_Update FSM event\n* bgp_fsm.c: Remove NHT_Update event action from the FSM.\n* bgp_nht.c: Remove NHT_Update event.\n"
    },
    {
      "commit": "3dda6b3eccb9a2a88d607372c83c04c796e7daac",
      "tree": "24fb970719d0565acd47e9f826c818eb53626aa1",
      "parents": [
        "05c9075b09bea9e2328980df7138da5fd8157dc3"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 06 16:57:40 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:59 2017 +0000"
      },
      "message": "bgpd: Rejiggle exported nht function names and consolidate some code\n\n* bgp_nht.h: Tweak the API a bit to simplify and make names a bit clearer on\n  function. Remove AFI argument, it\u0027s implied in both bgp_infos and peers.\n\n  (bgp_find_nexthop) this doesn\u0027t so much find a bnc, as check the bnc\n  for the given bgp_info is valid. Rename to (bgp_nexthop_check).\n\n  (bgp_find_or_add_nexthop) This ensures a bnc exists, so call it\n  (bgp_ensure_nexthop).\n\n  (bgp_unlink_nexthop_by_peer) Remove via peer.\n\n* bgp_nht.c: Adjust to above.\n  (bgp_get_nexthop_rn) helper to get the rn.\n  (bgp_find_nexthop) further helper to get the bnc for path or peer.\n  (bgp_unlink_nexthop_check) helper to check whether a bnc should go.\n  (bgp_ensure_nexthop) Use the helpers.\n\n* bgp_{route,fsm}.c: s/bgp_find_or_add_nexthop/bgp_ensure_nexthop/\n"
    },
    {
      "commit": "05c9075b09bea9e2328980df7138da5fd8157dc3",
      "tree": "89db8427d6133250d80e20b00a6d9b209c7933a9",
      "parents": [
        "a2f0db2be27385211f033271d8b83e9caf362236"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue May 17 13:28:16 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:59 2017 +0000"
      },
      "message": "bgpd: Modernise BGP defaults for MRAI and connect time\n\nQuagga uses historic BGP defaults for its minimum route advertisement\ninterval (MRAI) timers, and its ConnectRetry timer.  It uses 30s and\n5s for the eBGP and iBGP MRAIs, and 120s for the ConnectRetry timer.\nThese values are quite high, and delay convergence and session\nestablishment, and are unlikely to be desirable in modern networks.\n\nThe MRAI can, without a doubt, be significantly reduced.  The optimal\nMRAI is related to the size of the network, its diameter in terms of\nBGP propagation latency particularly.  Prior research suggests values\nof 5s to 15s for Internet BGP, as reasonably conservative values.\nFurther, other implementations have long shipped with 1s or even 0s\nMRAI values.\n\nA too low MRAI, e.g.  a 0 MRAI, can greatly increase the number of\nBGP messages a speaker sends, and hence the bandwidth and even CPU it\nmight use.  I.e.  some MRAI is better than no MRAI, with current BGP,\nor it is prone to excessive - even extreme - chattiness.\n\nThe ConnectRetry timer default also should be set much lower.\n\nLowering the MRAI had previously been suggested by:\n\n   \"Lower the default MRAI timer for iBGP peers to 0\n\n    Signed-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n    Reviewed-by:   Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\"\n\n* bgpd/bgpd.h: Set defaults to:\n  - 3s for the eBGP MRAI\n  - 1s for iBGP MRAI (lower, but non-0, would be nice for this)\n  - 5s for the ConnectRetry timer\n"
    },
    {
      "commit": "a2f0db2be27385211f033271d8b83e9caf362236",
      "tree": "15de9347d92427dd99d7566ccfcf7a787b12dc61",
      "parents": [
        "366bb4ab851137e669a2e7db7a45d73b39090249"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Feb 25 16:41:56 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:59 2017 +0000"
      },
      "message": "lib: track worst case # of cycles and don\u0027t allow granularity to go above\n\n* The workqueue code at present errs towards optimising the granularity\n  for throughput of queue items in runs.  This perhaps is at the cost\n  of risking excessive delays at times.  Make the workqueue take\n  worst-cases into account.\n\n* thread.c: (thread_should_yield) When thread should yield, we can\n  return the time taken for free, as it might be useful to caller.\n  work_queue_run\n\n* workqueue.h: (struct work_queue) Add fields for worst # of cycles,\n  and (independently) worst time taken.\n\n* workqueue.c: (work_queue_new) Worst starts high.\n\n  (work_queue_run) Track the worst number of cycles taken, where a\n  queue run had to yield before clearing out the queue.  Use this as an\n  upper-bound on the granularity, so the granulity can never increase.\n\n  Track the worst-case delay per work-queue, where it had to yield, thanks\n  to the thread_should_yield return value change.  Note that \"show thread\n  cpu\" already shows stats for the work_queue_run function, inc average and\n  worst cases.\n\nDeficiencies:\n\n- A spurious outside delay (e.g.  process not run in ages) could cause\n  \u0027worst\u0027 to be very low in some particular invocation of a process,\n  and it will stay that way for life of process.\n\n- The whole thing of trying to calculate suitable granularities is just\n  fragile and impossible to get 100% right.\n"
    },
    {
      "commit": "366bb4ab851137e669a2e7db7a45d73b39090249",
      "tree": "587600b6a0f58641b7930061507708c12cc6faf8",
      "parents": [
        "a6efbab768b94a398adb52f0e2b3fe064cfe2f59"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue May 17 13:59:55 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:58 2017 +0000"
      },
      "message": "tools: Extend multiple-bgpd.sh to support BIRD, ExaBGP plus more configurables\n\n* tools/multiple-bgpd.sh: Extend this script to support having\n  multiple different implementations in the ring.  Add config\n  generator and launch functions for BIRD and ExaBGP.\n\n  Allow the proportion of other instances in the ring to peer with to\n  be configurable as %age via PEERPROP. Allow number of v4 routes to\n  advertise to be configurable via ADV. Allow \"external\", non-ring\n  BGP peers to be defined via the EXPEER* arrays.\n"
    },
    {
      "commit": "a6efbab768b94a398adb52f0e2b3fe064cfe2f59",
      "tree": "13f16ae807e0ded1aec62682fba0ba4eebbaf2ba",
      "parents": [
        "5931124b6c78ec211e3171606fc2ad2dd448b12a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Dec 01 16:09:08 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:58 2017 +0000"
      },
      "message": "tools/multiple-bgpd: extend the ring, enable mpath, add links to +-2 instances\n\n* multiple-bgpd.sh: Configure mpath to test it. Add links to the ±2 instances\n  in the ring to get a bit more multi-pathing (otherwise, only mpath to\n  the furthest neighbour IF there\u0027s an even number of instances).\n"
    },
    {
      "commit": "5931124b6c78ec211e3171606fc2ad2dd448b12a",
      "tree": "57f9bc0f89ece0632f4f3d56632f3174f0b38288",
      "parents": [
        "b174a58467d155b8609f1b5a1f6e27f22afdb81c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Jul 08 11:24:09 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:58 2017 +0000"
      },
      "message": "tools: Remove historic scripts\n"
    },
    {
      "commit": "b174a58467d155b8609f1b5a1f6e27f22afdb81c",
      "tree": "68352a6b3fc37427690708937cccfbfd337d4a55",
      "parents": [
        "5bc62ca9561fa01a989e386cbf6e71cbdef77a3c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Mon Jan 23 10:55:26 2017 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:58 2017 +0000"
      },
      "message": "ripd: Fix GCC6 warning on misleading indentation\n"
    },
    {
      "commit": "5bc62ca9561fa01a989e386cbf6e71cbdef77a3c",
      "tree": "280eb7047661122253bfbcce62cac8445eba4acd",
      "parents": [
        "40fc3dda2b7a345e447d2ef355108c987e59ed13"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Jul 11 16:21:23 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:58 2017 +0000"
      },
      "message": "isisd,ospf6d,bgpd: Fix GCC 6 warnings on indentation not matching control flow\n\nGCC 6 can now give warnings when the indentation of code does not\nalign with the scope of prior control flow statement(s).  I.e., where\nthe code visually suggests one kind of control flow, but in actuality\nfollows another.\n\nFix warnings found. They all seem to be simple cases of the indentation being\ndeceptive, but the existing flow being correct.\n"
    },
    {
      "commit": "40fc3dda2b7a345e447d2ef355108c987e59ed13",
      "tree": "23e8600b8bf389d1766cd2461f0ee26cd6616215",
      "parents": [
        "867946bb8802c02049bf68a4e97843d777cbcb68"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 11 16:00:27 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:58 2017 +0000"
      },
      "message": "build: Add GCC stack-protector/SSP to default flag set\n\n* configure.ac: Add GCC SSP / -fstack-protector-strong to default flag\n  set, when available, as part of defence in depth. At least some\n  distros already use SSP by default and it can detect buffer overflows\n  above a certain size.\n"
    },
    {
      "commit": "867946bb8802c02049bf68a4e97843d777cbcb68",
      "tree": "572fbcb0edcdb3fd53a0ad6d8f9d402be43dd266",
      "parents": [
        "0c175f82a812c6e86eeb2c11b7f3f96bf46459fa"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Dec 21 13:39:33 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:58 2017 +0000"
      },
      "message": "lib: vty_prefix_list_install should validate afi/safi\n\n* lib/plist.c: (vty_prefix_list_install) Check afi/safi is supported and warn\n  if not, as a safeguard and to ensure the user is warned, if somehow that\n  code is ever called for non-IP AFI.\n"
    },
    {
      "commit": "0c175f82a812c6e86eeb2c11b7f3f96bf46459fa",
      "tree": "a06715088400962839cdac19827db0534d9b20e7",
      "parents": [
        "574e5007d5155ee261a4da39fc18502f76e40a30"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Dec 21 12:57:31 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:57 2017 +0000"
      },
      "message": "ospfd: \u0027ip ospf network\u0027 interface should down iface before changing type\n\n* ospf_vty.c: (ip_ospf_network) This function changes the interface type\n  and only then downs/ups the interface if already up.  So the down happens\n  with the interface type already altered.  However, the interface type\n  can have major ramifications for how underlying state is stored/indexed,\n  which may cause problems.\n\n  Further, bit of an encapsulation violation to twiddle state here.\n  (no_ip_ospf_network) ditto.\n* ospf_interface.c: (ospf_if_reset_type) New function to reset the OSPF\n  interface type on an interface. Ensure the interface is downed before\n  the type is changed.\n* ospf_interface.h: (ospf_if_reset_type) Export, for ospf_vty.c\n"
    },
    {
      "commit": "574e5007d5155ee261a4da39fc18502f76e40a30",
      "tree": "616090a448fda07f137f18a7513fb3eb1e4e689f",
      "parents": [
        "670f3dba6721a500418b5793a2b00579198d2bd7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue May 17 13:33:11 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:57 2017 +0000"
      },
      "message": "bgpd: Add route count from neighbours \u0026 established sessions to bgp summary\n\n* bgp_vty.c: (bgp_show_summary) The sum of the routes received from\n  each neighbour can be interesting/useful.  Add a line with this to\n  end of \u0027show ...  bgp ...  summary\u0027. Also, add a count of the number of\n  established sessions.\n\n  Note, the route count is also available from \u0027show bgp \u003cafi\u003e \u003csafi\u003e\n  statistics\u0027, along with more.\n"
    },
    {
      "commit": "670f3dba6721a500418b5793a2b00579198d2bd7",
      "tree": "6ad3c568371acfc18e96883644f76ecdedd34d07",
      "parents": [
        "4d48bb360db5148b18524d06616555b06342fa68"
      ],
      "author": {
        "name": "Renato Westphal",
        "email": "renato@opensourcerouting.org",
        "time": "Mon Nov 28 16:47:13 2016 -0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:57 2017 +0000"
      },
      "message": "bgpd: fix invalid memory access in peer_free()\n\nWe shoult not call bgp_unlock() before calling\nbgp_delete_connected_nexthop() in the peer_free() function. Otherwise,\nif bgp-\u003elock reaches zero, bgp_free() is called and peer-\u003ebgp becomes\nan invalid pointer in the bgp_delete_connected_nexthop() function.\n\nTo fix this, move the call to bgp_unlock() to the end of peer_free().\n"
    },
    {
      "commit": "4d48bb360db5148b18524d06616555b06342fa68",
      "tree": "82ed5fecb41cb5d52e4f6c52e088148b3e44a66b",
      "parents": [
        "2c0adbf9bc0c2425f567848ba7f790059d18b253"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue Nov 29 12:47:12 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:57 2017 +0000"
      },
      "message": "bgpd: fix \"show ip bgp\" column alignment\n\nThe \"Weight\" column is off:\n\nBGP table version is 0, local router ID is 10.1.1.1\nStatus codes: s suppressed, d damped, h history, * valid, \u003e best, \u003d\nmultipath,\n              i internal, r RIB-failure, S Stale, R Removed\nOrigin codes: i - IGP, e - EGP, ? - incomplete\n   Network          Next Hop            Metric LocPrf Weight Path\n*\u003e 4.1.1.2/32       9.9.9.2                  0          32768 ?\n*\u003e 4.1.1.4/32       9.9.9.2                  0          32768 ?\nDisplayed  2 out of 2 total prefixes\n\nReviewed-by:   Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "2c0adbf9bc0c2425f567848ba7f790059d18b253",
      "tree": "45a7267272bb312c13d24db395e7cd94c95094bb",
      "parents": [
        "f2f44eaa321be5a52e5ad67069bd8061603589a1"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Nov 18 15:42:41 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:57 2017 +0000"
      },
      "message": "vtysh, zebra: Fix link-params to use exit-link-params\n\nFix the link-params submode to use the \u0027exit-link-params\u0027\nto indicate we are exiting a submode.\n\nFixup all the relevant bits.\n"
    },
    {
      "commit": "f2f44eaa321be5a52e5ad67069bd8061603589a1",
      "tree": "c4d73f47fb23cf972b0cd1bd18efd37aca06978d",
      "parents": [
        "a53d4e55a51518ae5735a65405dcee88c59cd5d8"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Nov 12 17:43:15 2016 +0900"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:57 2017 +0000"
      },
      "message": "zebra: fix link-params CLI handling\n\nvtysh was breaking in a rather ugly way, and some \"no\" forms were\nmissing too.\n"
    },
    {
      "commit": "a53d4e55a51518ae5735a65405dcee88c59cd5d8",
      "tree": "1e618c5d2ee2284ec9b2787a52d2feecf1182925",
      "parents": [
        "c2c63cb3d5e2f56cf2b2d3f00535d275ab23a969"
      ],
      "author": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Thu Oct 20 23:55:10 2016 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:57 2017 +0000"
      },
      "message": "build: configure.ac - use AC_PROG_CC_C99 instead of cflags to force c99 mode\n"
    },
    {
      "commit": "c2c63cb3d5e2f56cf2b2d3f00535d275ab23a969",
      "tree": "a02ded36ae5127a61149e18aea5e6e47617159cf",
      "parents": [
        "5bb328e82137a0a9cc73e887d5074da273562d38"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Mon Oct 10 19:35:43 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:56 2017 +0000"
      },
      "message": "ospfd: Fix arm compile issue\n\nsize_t printf formatter is %zd!\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "5bb328e82137a0a9cc73e887d5074da273562d38",
      "tree": "d1feb30e6acd44260c0fa3454cb142c4509d998a",
      "parents": [
        "2bbacea824300be05f46094a4d156cb12c0dca13"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Sat Oct 01 22:35:32 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:56 2017 +0000"
      },
      "message": "ripngd: add support for route tags\n"
    },
    {
      "commit": "2bbacea824300be05f46094a4d156cb12c0dca13",
      "tree": "2e0e1b3ef91215068ea89eba2ba4a409bd151b42",
      "parents": [
        "7ae2b609875756663e0a7d677609d04baa04b613"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Sat Oct 01 21:43:17 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:56 2017 +0000"
      },
      "message": "ripd: add support for route tags\n"
    },
    {
      "commit": "7ae2b609875756663e0a7d677609d04baa04b613",
      "tree": "a8ca729e499968e33344208f5a52ece09a6af091",
      "parents": [
        "ddc160cce1767ef006a812f5213cabfb24e3cd4d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Sat Oct 01 06:41:40 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:56 2017 +0000"
      },
      "message": "ospf6d: add support for route tags\n\n[ported by Paul Jakma, paul@jakma.org]\n"
    },
    {
      "commit": "ddc160cce1767ef006a812f5213cabfb24e3cd4d",
      "tree": "6e4aa078fb897d77edcb7ef16282471c518440b4",
      "parents": [
        "5958b8f790f0049f980b74b3e2916979850e5d09"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Sat Oct 01 20:42:34 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:56 2017 +0000"
      },
      "message": "*: Port Christians tweaks for 32-bit route tags\n\nPort over Christian\u0027s tweaks from his port of my commit widening the\nroute-tag field width to 32-bit.  Commit dc9ffce8786844\n \"*: Consistently support 32-bit route tags\".\n\nwith \"changes which make this actually useful for all the daemons\".\n\nThis is missing the zebra route-map changes.\n"
    },
    {
      "commit": "5958b8f790f0049f980b74b3e2916979850e5d09",
      "tree": "1829d6b27b3b4b650fe90b6b2baa4b803925c848",
      "parents": [
        "dafa05e65fe4b3b3ed5525443f554215ba14f42c"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Sat Oct 01 04:06:03 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:56 2017 +0000"
      },
      "message": "ospfd: Update route in zebra when tag changes\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "dafa05e65fe4b3b3ed5525443f554215ba14f42c",
      "tree": "77d152b32b3fc3766f1813927b0eb40efa36425e",
      "parents": [
        "56ae5c4847f53f10e2151039556ec76a7a94c7fb"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Thu Jan 19 17:27:01 2017 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:55 2017 +0000"
      },
      "message": "nhrpd: implement next hop resolution protocol\n\nThis provides DMVPN support and integrates to strongSwan. Please read\nREADME.nhrpd and README.kernel for more details.\n"
    },
    {
      "commit": "56ae5c4847f53f10e2151039556ec76a7a94c7fb",
      "tree": "087d428b4d3c64b8b2a4b068aa31c50551f508f3",
      "parents": [
        "54f1476c2ab201808fae1ec9f2ee1a5460f7882b"
      ],
      "author": {
        "name": "Jafar Al-Gharaibeh",
        "email": "jafar@atcorp.com",
        "time": "Fri Jun 17 16:01:12 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:55 2017 +0000"
      },
      "message": "zserv: get rid of code duplication in nexthop_lookup[_mrib] functions\n\nz[send/read]_ipv4_nexthop_lookup functions have been duplicated for multicast mrib lookup. The mrib versions are identical to the unicast versions except for a couple of places. The differences do not justify duplicating two functions and 80 lines of codes. Code refactoring and an if statement with a few lines of code are enough to handle the differences with a lot less and cleaner code.\n\nSigned-off-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nSigned-off-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "54f1476c2ab201808fae1ec9f2ee1a5460f7882b",
      "tree": "038a2fe8af729e9cbf18af0cbbd3cc284581cfbc",
      "parents": [
        "be987c2804730f39828e2e047fb09f05ebd9915a"
      ],
      "author": {
        "name": "Quentin Young",
        "email": "qlyoung@cumulusnetworks.com",
        "time": "Mon Jun 20 13:58:05 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:55 2017 +0000"
      },
      "message": "zebra: Change bitwise operations to purpose-built macros\n\nSome bitfields for zebra_debug_* flags were being modified\nwith bitwise operators instead of the purpose-built macros\nin lib/zebra.h. Changed such instances to use the macros.\n\nSigned-off-by: Quentin Young \u003cqlyoung@cumulusnetworks.com\u003e\nSigned-off-by: Quentin Young \u003cqlyoung@cumulusnetworks.com\u003e\nAcked-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "be987c2804730f39828e2e047fb09f05ebd9915a",
      "tree": "f13703cdc26dd6cf78184228cd1b1209ed6838f9",
      "parents": [
        "99f567205357570091ba109caad126b7bafcf8ce"
      ],
      "author": {
        "name": "Quentin Young",
        "email": "qlyoung@cumulusnetworks.com",
        "time": "Thu Jun 16 11:26:44 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:55 2017 +0000"
      },
      "message": "lib: Clean command.c\n\nRemoved dead code paths and fixed a typo.\n\nSigned-off-by: Quentin Young \u003cqlyoung@cumulusnetworks.com\u003e\nSigned-off-by: Quentin Young \u003cqlyoung@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "99f567205357570091ba109caad126b7bafcf8ce",
      "tree": "7b3a0df7600b77a133aa0ae5baa002bccd313d14",
      "parents": [
        "5d9fae294228ad39d12913312485429b9129a3b0"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:10 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:55 2017 +0000"
      },
      "message": "vtysh: fix a memory leak in vtysh_client_execute\n\nbuf is dynamically allocated and needs to be freed in the error handling\npath too.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "5d9fae294228ad39d12913312485429b9129a3b0",
      "tree": "d2bc5a8a6cbf57a7d6238e75684107982b1001dc",
      "parents": [
        "93ad10e27beebb0416cf33d2f0acf96425064a48"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:09 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:55 2017 +0000"
      },
      "message": "vtysh: handle case if there is no match in \"write terminal $daemon\"\n\nWhile the DEFUN should match the list of clients registered in\nvtysh, it seems better to handle the case explicitly instead of\nrelying on the client list and the DEFUN signature being in sync.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "93ad10e27beebb0416cf33d2f0acf96425064a48",
      "tree": "37439c2626b6fea2eded6943a65ecafa1aac0300",
      "parents": [
        "d1da1e9d18f46d80da4e91fdabafb03fa4272a01"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:08 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:55 2017 +0000"
      },
      "message": "ripd: print md5 auth digest correctly\n\nThe dump of the md5 hash was missing one byte of the hash.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d1da1e9d18f46d80da4e91fdabafb03fa4272a01",
      "tree": "16bb703e39104352bb8f27eee134b116f2a4b923",
      "parents": [
        "5bd78b9f409b0a7d4b6a9e15d495ca2c53757a4d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:07 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:54 2017 +0000"
      },
      "message": "pimd: don\u0027t leak original_s_route on error\n\noriginal_s_route is allocated on the heap and was not freed during the\nerror case.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "5bd78b9f409b0a7d4b6a9e15d495ca2c53757a4d",
      "tree": "eebe200fba3a396801e0fae8dcc4ce214da68453",
      "parents": [
        "c8e80972d5b99fb8baaa367a726f1dc36a840744"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:02 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:54 2017 +0000"
      },
      "message": "ospfd: fix double assignment in ospf_vl_set_timers\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "c8e80972d5b99fb8baaa367a726f1dc36a840744",
      "tree": "470029d31433fef22dbd1cd538173a1cc396a163",
      "parents": [
        "32e41f75fd1735071e0fa0bdd918e9b1241d1837"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:01 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:54 2017 +0000"
      },
      "message": "bgpd: fix memory leaks in show commands\n\nsockunion_str2su allocates a struct sockunion that used to be leaked\nin the show commands. Use str2sockunion and keep the information\non the stack instead.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nSigned-off-by: Philippe Guibert \u003cphilippe.guibert@6wind.com\u003e\n"
    },
    {
      "commit": "32e41f75fd1735071e0fa0bdd918e9b1241d1837",
      "tree": "d9f46afc41cdda2413bac46268ccd53f66a0590c",
      "parents": [
        "708ea62f82f34c8674042b369ee8cba5d7b34c02"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:06:59 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:54 2017 +0000"
      },
      "message": "bgpd: don\u0027t leak memory in community_regexp_include\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "708ea62f82f34c8674042b369ee8cba5d7b34c02",
      "tree": "86d4105d340426a86b53dcc47b013e8720b0b195",
      "parents": [
        "5cb81ce51d5c2ed6b6f7ce51dcfa5388b1836c27"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:06:57 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:54 2017 +0000"
      },
      "message": "bgpd: check return value of zebra_interface_state_read\n\nzebra_interface_state_read can return NULL in cornercases. The other\ndaemons check for this, so should bgpd.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "5cb81ce51d5c2ed6b6f7ce51dcfa5388b1836c27",
      "tree": "d07cac62092a01a19f1a065d5a6b8be89a484997",
      "parents": [
        "cfb4826340ab177b3cfbce4f138187f41860b68e"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:06:56 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:54 2017 +0000"
      },
      "message": "bgpd: setting nexthop doesn\u0027t need inet_pton\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "cfb4826340ab177b3cfbce4f138187f41860b68e",
      "tree": "ae45c07809bbb976e42b34e1b5966879065ba2c5",
      "parents": [
        "47fb0a8eb8138572a9117156223259413a956e81"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jun 13 17:29:14 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:54 2017 +0000"
      },
      "message": "lib: AgentX: use threads instead of eventloop hack\n\nAgentX fd/timeout handling is rather hackishly monkeyed into thread.c.\nReplace with code that uses plain thread_* functions.\n\nNB: Net-SNMP\u0027s API rivals Quagga\u0027s in terms of age and absence of\ndocumentation.  netsnmp_check_outstanding_agent_requests() in particular\nseems to be unused and is therefore untested.\n\nThe most useful documentation on this is actually the blog post Vincent\nBernat wrote when he originally integrated this into lldpd and Quagga:\nhttps://vincent.bernat.im/en/blog/2012-snmp-event-loop.html\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "47fb0a8eb8138572a9117156223259413a956e81",
      "tree": "e5653fd70a24b908b63509d5721e66a15d1ea157",
      "parents": [
        "449b29e8bd9fb1ae2e57cea7074e1b9778343455"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jun 13 17:29:13 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:53 2017 +0000"
      },
      "message": "lib: add thread_add_timer_tv (struct timeval)\n\nAnother zoo extension, this adds a timer scheduling function that takes\na struct timeval argument (which is actually what the wrappers boil down\nto, yet it\u0027s not exposed...)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "449b29e8bd9fb1ae2e57cea7074e1b9778343455",
      "tree": "0f4d1897e1b17123a50f7351c74006badbd232da",
      "parents": [
        "c96e78dde1f118eaee4269aa2c91ef70850e5423"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jun 13 17:29:12 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:53 2017 +0000"
      },
      "message": "lib: linklist: add listnode_add_before()\n\nThis utility function, to join the zoo that the Quagga linked-list\nimplementation has accumulated, does an insert-before while returning\nthe newly allocated node.\n\nIt is similar to:\n- listnode_add_after(), but\n  - complementary direction\n  - returns allocated node\n- list_add_node_prev(), but\n  - supports before \u003d\u003d NULL\n  - returns allocated node\n\nIn general, the entire linked-list implementation is in bad shape, and\nwhile it needs a cleanup / rewrite / replacement, this would both cause\nsignificant conflicts and block other cleanups...\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c96e78dde1f118eaee4269aa2c91ef70850e5423",
      "tree": "1eeb7d8fc431e25d8bdc8a53b2e8ed9594374153",
      "parents": [
        "6ff2acde9291b855c44edf9a7a0423580c901d03"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Jun 09 15:34:59 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:53 2017 +0000"
      },
      "message": "pimd: Fix of using uninitialized Memory\n\nValgrind is reporting that pimd is using uninitialized\nmemory for comparisons.  This commit addresses\nthe issues found there.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "6ff2acde9291b855c44edf9a7a0423580c901d03",
      "tree": "0e32692dcbe552fa7e10688d0a1741accd404af6",
      "parents": [
        "c0a613f3a2be8e40265704fd00166cd5342ca409"
      ],
      "author": {
        "name": "Igor Ryzhov",
        "email": "iryzhov@nfware.com",
        "time": "Thu Jun 09 16:44:21 2016 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:53 2017 +0000"
      },
      "message": "vtysh: send \"no interface\" command to all daemons that support it\n\nSigned-off-by: Igor Ryzhov \u003ciryzhov@nfware.com\u003e\nSigned-off-by: Igor Ryzhov \u003ciryzhov@nfware.com\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "c0a613f3a2be8e40265704fd00166cd5342ca409",
      "tree": "22e57cbb8df2c245a00ae2dc4ab11f9acf37fbc0",
      "parents": [
        "51b45a52adf944ac391c0e90f86597454ab4d657"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Mon Jun 06 22:22:15 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:53 2017 +0000"
      },
      "message": "bgpd: fix potential crash in community_list_dup_check\n\nextcommunity_list_set may set the -\u003econfig for an entry\nto NULL. In this case, the old code in community_list_dup_check\nwould cause a NULL pointer dereference.\n\nAdjust the code so it behaves the same in the absence of NULL\npointers and otherwise checks if both are NULL to determine\nequality.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "51b45a52adf944ac391c0e90f86597454ab4d657",
      "tree": "3cc9fc8966b99333da565eb9cd6606ed11730da3",
      "parents": [
        "8db38639cc4cf796484b352c57f2709151f0e2e4"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Mon Jun 06 22:04:30 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:53 2017 +0000"
      },
      "message": "zebra: make fpm netlink_route_info_fill more robust\n\nHaving an RTM_ADDROUTE with a rib \u003d\u003d NULL would lead\nto a crash due to a NULL pointer dereference.\n\nSince an RTM_ADDROUTE without a rib object doesn\u0027t make\nmuch sense, print a warning and remove the concerned\nroute instead.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "8db38639cc4cf796484b352c57f2709151f0e2e4",
      "tree": "0b31fc87a19b7ac8adbaaef7ef70bbb16f500bcf",
      "parents": [
        "5a7a23b09fed1cb26b901e3160c2f6e560cfd679"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Mon Jun 06 21:49:59 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:53 2017 +0000"
      },
      "message": "ospf6d: remove unused broken function\n\nospf6_interface_if_del has not been in use since for quite some\nyears and is broken. (Will crash ospf6d if oi-\u003earea \u003d\u003d NULL)\n\nSince it is not used, just remove it.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "5a7a23b09fed1cb26b901e3160c2f6e560cfd679",
      "tree": "0dbb526300f9510eb7621f046a3dce25a759ed7b",
      "parents": [
        "68cfaabc2e281b6ef9810138db3b42e52f1f0060"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Mon Jun 06 21:13:15 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:52 2017 +0000"
      },
      "message": "isisd: exit if daemonizing fails\n\nThe other daemons in Quagga exit with an error if they cannot fork.\nChange isisd to behave consistently.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "68cfaabc2e281b6ef9810138db3b42e52f1f0060",
      "tree": "16766ab85cf16643e4dba71ede5dd85e7654c312",
      "parents": [
        "456cb633436c567a173dadb9b6fb4610266c2ef9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Mon Jun 06 21:10:24 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:52 2017 +0000"
      },
      "message": "zebra: fix a crash in static_add_ipv6 caused by a NULL dereference\n\nsi will be NULL after end of the preceeding for loop. update is the\nright static route info to use for deleting the old route.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "456cb633436c567a173dadb9b6fb4610266c2ef9",
      "tree": "b87d7cb01607f2d86aca935b7c4c8985941d4ea0",
      "parents": [
        "18343eeff67b9b17b7d688a13a1f0829db1ad436"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Jun 02 02:37:52 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:52 2017 +0000"
      },
      "message": "pimd: Add ability to safely ignore route-maps\n\npim was not parsing route-map code and causing issues\nusing vtysh because of this.  Add code to safely\nignore the route-map code and set us up for future\nexpansion into route-maps if neeeded.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\n"
    },
    {
      "commit": "18343eeff67b9b17b7d688a13a1f0829db1ad436",
      "tree": "e5581267f4428586d28517687db354d24c650198",
      "parents": [
        "f8aef5fd4aa48eceedb67fb8919378e33617bc5d"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Jun 02 02:30:46 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:52 2017 +0000"
      },
      "message": "pimd: Add support for displaying ip mroute\n\nWhen you enter a static mroute under an interface\nthe \u0027show run\u0027 is not displaying this information.\nAdd code to allow this.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nReviewed-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nReviewed-by: Don Slice \u003cdslice@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nReviewed-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nReviewed-by: Don Slice \u003cdslice@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\n"
    },
    {
      "commit": "f8aef5fd4aa48eceedb67fb8919378e33617bc5d",
      "tree": "f0b90174929565da98ba2b287dd03ae66d963099",
      "parents": [
        "3e6a3a64359ae6fa370fbd9c843b7c0d04a946c3"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Jun 02 02:20:29 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:52 2017 +0000"
      },
      "message": "pimd: Remove igmp_add_group_by_addr unneeded parameter\n\nThe interface name is already passed in as\npart of the \u0027struct igrmp *group\u0027 pointer.\nNo need to do it twice.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\n"
    },
    {
      "commit": "3e6a3a64359ae6fa370fbd9c843b7c0d04a946c3",
      "tree": "9ef5cf6cf4825ce3e7a0ef7fc716bdf530285c6d",
      "parents": [
        "d395fd1996df70eb5e6ecc4fc1cf90e8303f43a6"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Jun 02 02:20:28 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:52 2017 +0000"
      },
      "message": "pimd: Remove source_new unneeded parameter\n\nThe interface name is already passed in as\npart of the \u0027struct igmp_group *group\u0027 pointer.\nNo need to do it twice.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nAcked-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\n"
    },
    {
      "commit": "d395fd1996df70eb5e6ecc4fc1cf90e8303f43a6",
      "tree": "9cc87da9547783e000c8ca125f02dbae437e4dde",
      "parents": [
        "dc633bd1833c4b9df44df27135ce12fef884b53f"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Jun 02 02:20:27 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:52 2017 +0000"
      },
      "message": "pimd: Remove dead code.\n\nNo need to keep \u0027#if 0\u0027 code.  If we need it in the future,\njust go back into the history and grab it.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nAcked-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\n"
    },
    {
      "commit": "dc633bd1833c4b9df44df27135ce12fef884b53f",
      "tree": "96e7a64e4b664b7ac7f64eb35782d92a4817fa9a",
      "parents": [
        "95509a6f55c63b72541fa390f7dda7fab2fa3210"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Mon Dec 26 17:25:26 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:52 2017 +0000"
      },
      "message": "lib/stream: Add stream_discard, to discard read data from a stream\n\n* stream.c: (stream_discard) Discard the already data from a stream, as\n  indicated by the getp. Move remaining, unread data, to the beginning of\n  the stream. get and end stream pointers are updated as appropriate.\n\n  If all data has been consumed, then this behaves identically to\n  stream_reset.\n"
    },
    {
      "commit": "95509a6f55c63b72541fa390f7dda7fab2fa3210",
      "tree": "697673cf127fd4b48b5147ffdf65893158b2d8b5",
      "parents": [
        "9ed99f040f0dd14d0aca82e159f67d27e64042ae"
      ],
      "author": {
        "name": "Thorvald Natvig",
        "email": "thorvald@medallia.com",
        "time": "Thu Sep 29 10:25:35 2016 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:51 2017 +0000"
      },
      "message": "Extend BGP_SEND_ASPATH_CHECK to cover confederations\n\nExtend the check for BGP_SEND_ASPATH_CHECK to also cover confederations.\n"
    },
    {
      "commit": "9ed99f040f0dd14d0aca82e159f67d27e64042ae",
      "tree": "d6b41a1731532d9258e3ad0638675b6191edaa82",
      "parents": [
        "64f8c7d80fd9685936613f6c564b9572dd28561d"
      ],
      "author": {
        "name": "Baruch Siach",
        "email": "baruch@tkos.co.il",
        "time": "Sun Aug 21 09:23:05 2016 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:51 2017 +0000"
      },
      "message": "lib/memory: fix indirect static link with zlib\n\nquagga SNMP support depends on netsnmp, that optionally depends on OpenSSL,\nwhich in turn requires zlib. zlib exports the \u0027zcalloc\u0027 symbol, which collides\nwith a function of the same name in memory.c. This is not a problem when\nlinking dynamically, since quagga does not use zlib directly. But static\nlinking fails with the error:\n\n  CCLD     ospfd\n.../output/host/usr/mips64el-buildroot-linux-uclibc/sysroot/usr/lib/libz.a(zutil.o): In function `zcalloc\u0027:\nzutil.c:(.text+0x48): multiple definition of `zcalloc\u0027\n.../output/build/quagga-1.0.20160315/lib/.libs/libzebra.a(memory.o):memory.c:(.text+0x1a0): first defined here\n\nRename \u0027zcalloc\u0027 to \u0027zzcalloc\u0027 to avoid symbol collision.\n\nSigned-off-by: Baruch Siach \u003cbaruch@tkos.co.il\u003e\nSigned-off-by: Baruch Siach \u003cbaruch@tkos.co.il\u003e\n"
    },
    {
      "commit": "64f8c7d80fd9685936613f6c564b9572dd28561d",
      "tree": "74f7481b1c2ac5c89102b1e6d0dd256fa4cf1f36",
      "parents": [
        "a8f9790a9bae34b4ef6b1c0c9391d2a9cc991f47"
      ],
      "author": {
        "name": "Thomas Petazzoni",
        "email": "thomas.petazzoni@free-electrons.com",
        "time": "Sun Aug 21 09:23:04 2016 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:51 2017 +0000"
      },
      "message": "configure: fix static linking with readline\n\nWhen static linking is used, the order of the libraries is important,\nand the libraries using a symbol from another library should be listed\n*before* the library providing that symbol (see\nhttp://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking)\nfor details.\n\nWhen vtysh is linked statically, the command line contains \"-lcurses\n-lreadline\", which causes a build failure due to unresolved\nsymbols. This is because readline is using symbols from the curses\nlibrary: the order should be the opposite.\n\nThis patch fixes that problem by putting the -lreadline at the\nbeginning of the LIBREADLINE variable calcualted by the configure\nscript.\n\nSigned-off-by: Thomas Petazzoni \u003cthomas.petazzoni@free-electrons.com\u003e\nSigned-off-by: Baruch Siach \u003cbaruch@tkos.co.il\u003e\nSigned-off-by: Thomas Petazzoni \u003cthomas.petazzoni@free-electrons.com\u003e\nSigned-off-by: Baruch Siach \u003cbaruch@tkos.co.il\u003e\n"
    },
    {
      "commit": "a8f9790a9bae34b4ef6b1c0c9391d2a9cc991f47",
      "tree": "cfc4c7981bbf6b815bbff14971709ecb4934b5a5",
      "parents": [
        "e3443a21552b6a3cd6ebdbb98336eede217a478f"
      ],
      "author": {
        "name": "Jafar Al-Gharaibeh",
        "email": "jafar@atcorp.com",
        "time": "Thu Jul 28 14:41:20 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:51 2017 +0000"
      },
      "message": "config: Give the option of disabling run as user/group\n\nLeave \"user/group\" unset when explicitly configuring with\n\"--disable-user\" / \"--enable-user\u003dno\" and\n\"--disable-group\" / \"--enable-group\u003dno\"\nThis allows quagga to skip unsupported system calls such\nas setuid() on certain platfroms.\n\nSigned-off-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nSigned-off-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "e3443a21552b6a3cd6ebdbb98336eede217a478f",
      "tree": "7465134a450f779b9fc314819aa1f1e1c5c956e3",
      "parents": [
        "c9cc52af9edf0f23a1434c944812064de220a7bf"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Oct 19 16:02:34 2016 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:51 2017 +0000"
      },
      "message": "bgpd: simplify ebgp-multihop and ttl-security handling\n\nChange to track configured value in -\u003ettl and -\u003egtsm_hops;\nnot the value set to sockopt. Instead, setting of socket\u0027s ttl\nand minttl options are now merged to one function which calculates\nit on demand. This greatly simplifies the code.\n"
    },
    {
      "commit": "c9cc52af9edf0f23a1434c944812064de220a7bf",
      "tree": "0d74b412ef0e02ebbcfdadc21dcf3a8067369073",
      "parents": [
        "b41bb62e039454f53e54959b2c3f7eea816e6422"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Oct 19 16:02:33 2016 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:51 2017 +0000"
      },
      "message": "bgpd: honor disable-connected-check option with next hop tracking\n\nMake bgpd ignore connected state again if configured to do so.\n"
    },
    {
      "commit": "b41bb62e039454f53e54959b2c3f7eea816e6422",
      "tree": "91d50d30c96a60359a20c89dbbcd1171c2f4c200",
      "parents": [
        "631fcd2e51b02b3d5548bee4108044921fb3e58b"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Oct 19 16:02:32 2016 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:51 2017 +0000"
      },
      "message": "zebra: fix nht validity checking to be same as when it\u0027s resolved\n\nThis reverts commit 7e3a435bd99 \"A valid BGP nexthop is flagged as invalid\"\n\nProblem is BGP thinks the nexthop is accessible when it\u0027s recursive, and\nselects it, but zebra rejects it at route install time. Causing FIB and\nBGP state to be out-of-sync. Fix nht to follow same rules as zebra rib.\n"
    },
    {
      "commit": "631fcd2e51b02b3d5548bee4108044921fb3e58b",
      "tree": "0723168ac470f529f2fbed9259196d62a5474c55",
      "parents": [
        "3b0e3008e41c967e459f87b6ca8658ef26f49bc9"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Oct 19 16:02:31 2016 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 18:51:50 2017 +0000"
      },
      "message": "zebra: use FIB state for nexthop tracking\n\nThe FIB override routes can override ZEBRA_FLAG_SELECTED routes\nin FIB. Use the FIB state instead to report correct nexthop when\nFIB override routes are present.\n"
    },
    {
      "commit": "3b0e3008e41c967e459f87b6ca8658ef26f49bc9",
      "tree": "a9a0d5d005e5b57330d47cb944328a5e4521f0ed",
      "parents": [
        "f0705d523420ece274410c3df9f4b8fb043094c0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Mon Jan 23 15:14:08 2017 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 17:20:51 2017 +0000"
      },
      "message": "configure: Bump version to 1.1.1\n"
    },
    {
      "commit": "f0705d523420ece274410c3df9f4b8fb043094c0",
      "tree": "4a77168bfb0e3d24f2efa51d5d57a39779c5e1f1",
      "parents": [
        "a66b46208f10f4453dd63cec8a99a2218c7b4764"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Wed Jan 11 10:02:32 2017 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 17:20:51 2017 +0000"
      },
      "message": "HACKING: Update useful URLs\n"
    },
    {
      "commit": "a66b46208f10f4453dd63cec8a99a2218c7b4764",
      "tree": "81490f751fc3615f9de48cd4cfbaa04e2bb22f43",
      "parents": [
        "e992eb98d1ec8da84c7d0dffb1388bfbe935f16b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Mon Jan 09 13:06:56 2017 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 17:20:51 2017 +0000"
      },
      "message": "HACKING: Add \u0027Objectives\u0027, \u0027Governance\u0027, and an initial \u0027Code of Conduct\u0027\n"
    },
    {
      "commit": "e992eb98d1ec8da84c7d0dffb1388bfbe935f16b",
      "tree": "a595bcd5731cd1b67c5df5d13836afb96603b40a",
      "parents": [
        "126b0e7c2915fb7ec3e5f72e625433a83568c7d6"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Thu Jan 05 12:46:17 2017 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 17:20:51 2017 +0000"
      },
      "message": "HACKING: set a4paper by default\n"
    },
    {
      "commit": "126b0e7c2915fb7ec3e5f72e625433a83568c7d6",
      "tree": "c864b9af705854b133a96a417057b5605ff4b37d",
      "parents": [
        "f5a4488a0dda521f19e96f2615f4a8b134c5878b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Nov 18 14:40:41 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 17:20:51 2017 +0000"
      },
      "message": "vty: Add ctrl-v \u003cliteral\u003e to allow, e.g., \u0027?\u0027 to be input for regex\n\n* Support the standard ctrl-v \u003cliteral\u003e control sequence. Otherwise there\n  is no way to do this from the venerable telnet vty. vtysh supports this\n  (configurably) via readline.\n* lib/vty.c: (VTY_ESC_LITERAL) New mode, for ctrl-v.\n  (vty_read) Additional mode to go ctrl-v -\u003e VTY_ESC_LITERAL, and\n  always insert next char.\n\nAcked-by: Vincent.Jardin@6wind.com\n"
    },
    {
      "commit": "f5a4488a0dda521f19e96f2615f4a8b134c5878b",
      "tree": "e324aad6d223345952d85fb6b5149059e04b0fd8",
      "parents": [
        "71e0ba780bd7ba1a6fdc71ff673e3ef5aee61e08"
      ],
      "author": {
        "name": "Jafar Al-Gharaibeh",
        "email": "jafar@atcorp.com",
        "time": "Mon Aug 01 18:14:38 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 17:20:51 2017 +0000"
      },
      "message": "vtysh: Fix, guard against NULL pointer dereference\n\ngetpwuid() may fail returning a null value leaving subsequent\ncode vulnerable to a null pointer dereference.\n\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "71e0ba780bd7ba1a6fdc71ff673e3ef5aee61e08",
      "tree": "f7d95da993316c23f1a8f751fc9cafff01eedcf9",
      "parents": [
        "a64c66b105929b0f0fc19743f34dc29c760df967"
      ],
      "author": {
        "name": "Nick Hilliard",
        "email": "nick@foobar.org",
        "time": "Tue Dec 27 22:51:51 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 17:20:50 2017 +0000"
      },
      "message": "vtysh: make warnings about node installs a non-default compile-time option\n\n* lib/command.c: (install_element) Suppress duplicate command install warnings\n  for vtysh\n"
    },
    {
      "commit": "a64c66b105929b0f0fc19743f34dc29c760df967",
      "tree": "a8aa6907f32b27db0348501262513d6109c1a03a",
      "parents": [
        "99e00a19bb8afcf081d1551b886c6d85188e6c60"
      ],
      "author": {
        "name": "Renato Westphal",
        "email": "renato@opensourcerouting.org",
        "time": "Fri Jan 06 16:30:03 2017 +0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 17:20:50 2017 +0000"
      },
      "message": "zebra: fix build on OpenBSD \u003e\u003d 5.9\n\nRTF_XRESOLVE was removed from the OpenBSD tree recently.\n"
    },
    {
      "commit": "99e00a19bb8afcf081d1551b886c6d85188e6c60",
      "tree": "37bd6710fcb40e44b6e2f8e53b22c4cb81f77efb",
      "parents": [
        "7d66284a5817a1613b1e4d64a0775ec04fdf8c01"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Mon Jan 23 14:47:32 2017 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 17:20:50 2017 +0000"
      },
      "message": "lib: Bump library version-info\n"
    },
    {
      "commit": "7d66284a5817a1613b1e4d64a0775ec04fdf8c01",
      "tree": "263bc1ad86743e45f14c74e83cddef326330b578",
      "parents": [
        "b7ceefea77a246fe5c1dcd1b91bf6079d1b97c02"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Thu Jan 19 10:39:23 2017 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 23 17:19:39 2017 +0000"
      },
      "message": "lib: ensure vty buf is nul terminated and wrap puts to it with checks\n\n* vty.c: Fix str* overruns in previous commit, which I reported to the\n  author. Add bit more checking of updates to vty buffer.\n  Swap VTY_BUFSIZ over to vty-\u003emax, as that should be the external API.\n* vty.c: (vty_buf_assert) conditions that should always be assertable for\n  vty buffer.\n  (vty_buf_put) little wrapper to check char puts to vty input buffer,\n  and unconditionally write nul at very end of buffer as guard.\n  Won\u0027t always work, as some places use mem* to manipulate.\n  (vty_self_insert{,_overwrite}) Length check needs to leave room for nul.\n  Use vty_buf_put.\n  (vty_insert_word_overwrite) Length check needs to leave room for nul.\n  (*) Add vty_buf_assert calls.\n\nMerging in fixes from Quentin Young \u003cqlyoung@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "b7ceefea77a246fe5c1dcd1b91bf6079d1b97c02",
      "tree": "a67ab3ef89e499e8ff7d8d044f6ee2837ca75f0d",
      "parents": [
        "5477ee7b9d8d24d2bb61335c62f3d6c5e99fc901"
      ],
      "author": {
        "name": "Quentin Young",
        "email": "qlyoung@cumulusnetworks.com",
        "time": "Tue Jan 10 23:33:50 2017 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jan 20 12:25:22 2017 +0000"
      },
      "message": "lib: limit size of vty buffer to 4096 bytes\n\nThis removes the automatic resizing of the vty input buffer and places a\nhard size cap of 4096 bytes. It also fixes a potentially unsafe strcpy.\n\n[Edits by Paul Jakma, paul@jakma.org]\n"
    },
    {
      "commit": "5477ee7b9d8d24d2bb61335c62f3d6c5e99fc901",
      "tree": "e594369217510323b34f6d8bfe6cd0fda4bc7674",
      "parents": [
        "258f3dad6471a680c2c583a300cfd396efe9a037"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Wed Jan 11 11:18:22 2017 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jan 19 13:22:50 2017 +0000"
      },
      "message": "Revert \"opsf6d: Update router-LSA when nbr\u0027s interface-ID changes\"\n\nThis reverts commit e509af86e3579944b7cde942ca3ee3427db1936a.\n\nSee Bug #885\n"
    },
    {
      "commit": "258f3dad6471a680c2c583a300cfd396efe9a037",
      "tree": "a71e3e98a234b12a2838bdc686852d7b65413240",
      "parents": [
        "de58bdb9cdbd88baae7123856462380df365b7ff"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 18 14:03:52 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 18 14:03:52 2016 +0100"
      },
      "message": "release: Bump version to 1.1.0\n"
    },
    {
      "commit": "de58bdb9cdbd88baae7123856462380df365b7ff",
      "tree": "1a6c38efc510f07eb8d421556281ba67737689d2",
      "parents": [
        "cfb1fae25f8c092e0d17073eaf7bd428ce1cd546"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 18 14:03:37 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 18 14:03:37 2016 +0100"
      },
      "message": "build: remove werror from buildtest.sh for now\n"
    },
    {
      "commit": "cfb1fae25f8c092e0d17073eaf7bd428ce1cd546",
      "tree": "60162a121a7898dc20e9a18ec12d3dc88edf1e61",
      "parents": [
        "ef9bc88981570ef8ea744f0ab96730d192328a49"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Aug 31 13:31:16 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Oct 17 17:41:36 2016 +0100"
      },
      "message": "zebra: stack overrun in IPv6 RA receive code (CVE-2016-1245)\n\nThe IPv6 RA code also receives ICMPv6 RS and RA messages.\nUnfortunately, by bad coding practice, the buffer size specified on\nreceiving such messages mixed up 2 constants that in fact have\ndifferent values.\n\nThe code itself has:\n #define RTADV_MSG_SIZE 4096\nWhile BUFSIZ is system-dependent, in my case (x86_64 glibc):\n /usr/include/_G_config.h:#define _G_BUFSIZ 8192\n /usr/include/libio.h:#define _IO_BUFSIZ _G_BUFSIZ\n /usr/include/stdio.h:# define BUFSIZ _IO_BUFSIZ\n\nFreeBSD, OpenBSD, NetBSD and Illumos are not affected, since all of them\nhave BUFSIZ \u003d\u003d 1024.\n\nAs the latter is passed to the kernel on recvmsg(), it\u0027s possible to\noverwrite 4kB of stack -- with ICMPv6 packets that can be globally sent\nto any of the system\u0027s addresses (using fragmentation to get to 8k).\n\n(The socket has filters installed limiting this to RS and RA packets,\nbut does not have a filter for source address or TTL.)\n\nIssue discovered by trying to test other stuff, which randomly caused\nthe stack to be smaller than 8kB in that code location, which then\ncauses the kernel to report EFAULT (Bad address).\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nReviewed-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "ef9bc88981570ef8ea744f0ab96730d192328a49",
      "tree": "1262be07ccbda5e412eed1e54a640723a03b81bb",
      "parents": [
        "985823ff91ed784b9affdb0104f617b2c1732dab"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:06 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Oct 17 17:41:36 2016 +0100"
      },
      "message": "isisd: Fix size of malloc\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "985823ff91ed784b9affdb0104f617b2c1732dab",
      "tree": "638c16eaef3a8b6d752eaf568e4a8db1644ccfcb",
      "parents": [
        "8548973ace90a78035893c3663c18b485425e291"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:05 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Oct 17 17:41:36 2016 +0100"
      },
      "message": "isisd: fix an error that was probably a result of copypasting\n\nThe code should check for the existance of the correct list prior to\naccessing it.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "8548973ace90a78035893c3663c18b485425e291",
      "tree": "e13fa59edf39c65057b728fb81e8866fb5cb33ed",
      "parents": [
        "7fca43f7184f6eb9fbe952f1eecaafcf079502f2"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:04 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Oct 17 17:41:36 2016 +0100"
      },
      "message": "ospf6d: fix off-by-one on display of spf reasons\n\nThe loop should only iterate to array_size - 1.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7fca43f7184f6eb9fbe952f1eecaafcf079502f2",
      "tree": "6b6fee2ba5c0877a4032eaaffee6c241ba84dca4",
      "parents": [
        "0d8b32a5ee43ccc4a67dd87ab21a4ab553e3bf44"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:03 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Oct 17 17:41:36 2016 +0100"
      },
      "message": "ospf6d: don\u0027t access nexthops out of bounds\n\nGiven that the \u0026\u0026 is evaluated lazily from left to right,\ni \u003c OSPF6_MULTI_PATH_LIMIT should be checked prior to calling\nospf6_nexthop_is_set on the array element, not the other way around.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0d8b32a5ee43ccc4a67dd87ab21a4ab553e3bf44",
      "tree": "866250b3e2c949344bfce2f104b8820a752834ca",
      "parents": [
        "bb04351973bd369623a0fbed3ef59e7b4fd0bd05"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue Jun 14 20:07:00 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Oct 17 17:41:36 2016 +0100"
      },
      "message": "bgpd: fix off-by-one in attribute flags handling\n\nbgp_attr_flag_invalid can access beyond the last element of attr_flags_values.\nFix this by initializing attr_flags_values_max to the correct value.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "bb04351973bd369623a0fbed3ef59e7b4fd0bd05",
      "tree": "0bc7a8213129c88bd1cfe0c33caadb9255ebf702",
      "parents": [
        "e33545cb9d7a8c7875f18b6d44bf75d320ccedfb"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Mon Oct 10 11:56:52 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 11 12:00:00 2016 +0100"
      },
      "message": "bgp: restore missing check from original ignore NHT change\n"
    },
    {
      "commit": "e33545cb9d7a8c7875f18b6d44bf75d320ccedfb",
      "tree": "be90abff85648955fbfc00d6ea0310b49caba452",
      "parents": [
        "68bfb6190e19898adc0e420b6346cf4778705e60"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Mon Oct 10 09:50:58 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 11 11:59:22 2016 +0100"
      },
      "message": "bgp: fix warning in bgp_nht.c\n"
    },
    {
      "commit": "68bfb6190e19898adc0e420b6346cf4778705e60",
      "tree": "fbccbc160a94c245abee2696fef805da7f620b4b",
      "parents": [
        "743dd42b3f5d4bc5f9a86b91364c67217f42c6d1"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Thu Oct 06 09:59:32 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Oct 07 10:53:15 2016 +0100"
      },
      "message": "bgp: ignore NHT when bgpd has never connected zebra\n"
    },
    {
      "commit": "743dd42b3f5d4bc5f9a86b91364c67217f42c6d1",
      "tree": "365a266a5e8b3602e359aeadfb921133a2c70c22",
      "parents": [
        "af177b245ef3f092ecd0ae75cb75c2d797a7b139"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Sep 30 13:55:47 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:56 2016 +0100"
      },
      "message": "bgpd: Fix NHT race with Connect leading to test tool issues\n\n* The NHT change:\n\n   \"bgpd, zebra: Use next hop tracking for connected routes too\"\n\n  introduces a race where bgp_connect_check can be called on a peer in\n  Connect state before the TCP handshake has completed. If this happens,\n  then the SO_ERROR sockopt to check the state of the socket is undefined\n  or at least does not return a useful result - it returns 0, as with\n  a connected socket. SO_ERROR should only be called on non-block sockets\n  after the socket has been ready for writing.\n\n  The net result is that bgpd can then incorrectly advance the peer FSM for\n  the socket (also the main \u0027peer\u0027), to OpenSent. As part of which, any\n  incoming connection from the peer will pass through collision_detect and\n  may be (incorrectly) closed, depending on the RIDs.\n\n  This race is reliably hit with testing tools which wait to listen for\n  incoming BGP connections from the RUT to know it is in Connect/Active, and\n  which ignore the TCP connection (no SYN|ACK, no RST), and then launch their\n  own connection.\n\n  The fix is to better integrate the BGP FSM and the NHT update, to ensure\n  connect_check is not called on peers in Connect state.\n\n  Note: There may be no need at all for NHT to tickle FSM.\n\n* bgpd.h: Add NHT_Update FSM event for NHT valid.\n\n* bgp_fsm.c: (bgp_fsm_nht_update) There is no need to have a separate\n  switch based FSM with its own event via an exported function.  Have\n  NHT raise the NHT_Update even on the peer, instead of calling a\n  side-channel function into a sub-FSM in the FSM.  No need to have\n  code for BGP_Start, FSM can call that.  Actions for Connect and\n  Active are the same and just lead to ConnectRetry_timer_expired\n  event - so FSM can just call same transition func as that.\n\n  No need to call bgp_connect_check on Connect, as Connect implies no\n  connection.\n\n  (FSM) Handle the NHT_Update event, replacing bgp_fsm_nht_update.\n  Idle -\u003e bgp_start, Connect and Active were doing the same as\n  ConnectRetry_timer_expired so replicate those. Rest are No-Ops.\n\n* bgp_nht.c: (evaluate_paths) Raise NHT_Update FSM event. Always valid.\n* bgp_packet.{c,h}: (bgp_connect_check) NHT change now unnecessary, revert.\n"
    },
    {
      "commit": "af177b245ef3f092ecd0ae75cb75c2d797a7b139",
      "tree": "7306eac3fa1e2d9a897a33e3fb733b0a7dfed4e2",
      "parents": [
        "4c7d7173baa9fe064349f5fe2e0bdcb367475499"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Mon Aug 15 13:36:59 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:55 2016 +0100"
      },
      "message": "isisd: warn if there is an MTU issue on circuits\n\nInstead of later tripping over an assert, add a proper warning for\ninterfaces whose MTU is too low.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4c7d7173baa9fe064349f5fe2e0bdcb367475499",
      "tree": "d1543cb7c7180e733f5e1561b69dcb23a427def7",
      "parents": [
        "1187e25191b38a1876fafbfd733a70942ebcb062"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Aug 13 01:32:52 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:55 2016 +0100"
      },
      "message": "isisd: fold up isis_circuit_is_type_set()\n\nsee previous commit.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1187e25191b38a1876fafbfd733a70942ebcb062",
      "tree": "9d026f5df8181b5a09fcd480899a31cee7cfee11",
      "parents": [
        "a798abbe65cc2cdce050a1aef85c6d243d44a575"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Aug 13 01:20:20 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:55 2016 +0100"
      },
      "message": "isisd: fix is_type_set\n\nCode\u0027s \"is_type\" is \"circuit-type\" in CLI, \"circuit_type\" is \"network\"\n(type) in CLI, and the function to change is_type is\nisis_event_circuit_type_change()... *headdesk*\n\nReported-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a798abbe65cc2cdce050a1aef85c6d243d44a575",
      "tree": "6c0fd64d82679ab93e0b653352cd380eef9bd033",
      "parents": [
        "5a1a087baebcc4a996de66c558bac49419034ee0"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Thu Aug 11 16:08:05 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:55 2016 +0100"
      },
      "message": "isisd: fix network-type configuration\n\nReported-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "5a1a087baebcc4a996de66c558bac49419034ee0",
      "tree": "ad386b2556a0072a39ea88ad36c54369c36cf68d",
      "parents": [
        "515812ddbbb6a41298261688c8ccd0df8e900f17"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Aug 11 17:02:50 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:55 2016 +0100"
      },
      "message": "isisd: fix isis_circuit_af_set() on fresh circuit\n\nA newly-created circuit will be in enabled state but have neither IPv4\nnor IPv6 configured.  The logic in isis_circuit_af_set assumed that\n\"enabled\" is equivalent to \"ip || ipv6\".\n\nThis is the only place where this distinction is currently relevant, as\nthe CLI won\u0027t allow enabling an interface without enabling either IPv4\nor IPv6;  and it will also disable a circuit when both are deconfigured.\n\nReported-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "515812ddbbb6a41298261688c8ccd0df8e900f17",
      "tree": "520c4a03130356863365f19f9c19f293e6fdd3d1",
      "parents": [
        "f263413f762058d887aa7b2b6c502bd84af3c923"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Aug 11 16:59:08 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:55 2016 +0100"
      },
      "message": "isisd: fix isis_circuit_create()\n\nBetween the awkwardly managed CSM and the tacked-on IPv6 support, the\nsimplified logic to setup a circuit wasn\u0027t quite right.\n\nNote that the API essentially allows creating a circuit without enabling\neither IPv4 or IPv6.  This wasn\u0027t possible before and probably breaks\nisisd in \u0027interesting\u0027 ways.  The CLI won\u0027t do this, so it\u0027s only an\nissue when adding on other configuration mechanisms.\n\nReported-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f263413f762058d887aa7b2b6c502bd84af3c923",
      "tree": "22f9b44007f7b9dbfe530830fe245afd13d8f518",
      "parents": [
        "68845c19e468480dbdf5483f0b60323674a5ec28"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jul 28 17:23:32 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:55 2016 +0100"
      },
      "message": "isisd: drop unused per-type metric values\n\nExpense, Error and Delay metrics never quite made it into the real\nworld.  Either way isisd does nothing useful with them, so let\u0027s drop\nthem from the code.  If someone wants to implement them, this patch can\nstill be reverted.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "68845c19e468480dbdf5483f0b60323674a5ec28",
      "tree": "e83a69267e6ca10a2396dd6180a3eaa998e62ef3",
      "parents": [
        "4570ca47e11602b25e37ab709fa00bdf8c183afb"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Thu Jul 28 17:23:31 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:54 2016 +0100"
      },
      "message": "isisd: API: area (L1), domain (L2) passwords\n\nLast isisd CLI cleanup for now.  This also folds L1 \u0026 L2 configs into\ncommon functions, reducing CLI function bloat by a bit.\n\n(This patch contains changes authored by both Christian Franke and David\nLamparter.)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4570ca47e11602b25e37ab709fa00bdf8c183afb",
      "tree": "2ff5974261ae0de057068425373acad40c29a43d",
      "parents": [
        "304c7dac53e2b1b3dc135ce2ff1aa38df46ec727"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Thu Jul 28 17:23:30 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:54 2016 +0100"
      },
      "message": "isisd: API: timers (LSP, SPF)\n\nSee previous commits...\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "304c7dac53e2b1b3dc135ce2ff1aa38df46ec727",
      "tree": "9efebc027cd961b40971bcdad862459ae416efd7",
      "parents": [
        "b5d2f5f5085147ff9e9d5ace7705c422cbc6afd0"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Thu Jul 28 17:23:29 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:54 2016 +0100"
      },
      "message": "isisd: API: LSP-MTU \u0026 area level\n\nYet more CLI functions in isis_vty.c using more nice setters.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b5d2f5f5085147ff9e9d5ace7705c422cbc6afd0",
      "tree": "33f36c73478ed1d1583493d8e3841c72dbbba099",
      "parents": [
        "f5fbfb26e961d6b4b129f98bc27a3e822620eba3"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jul 28 17:23:28 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:54 2016 +0100"
      },
      "message": "isisd: API: timers (IIH, CSNP, PSNP)\n\nNo setters needed since change of fields doesn\u0027t require any\nspecific action to make it apply.  Just move the CLI defs to isis_vty.c.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f5fbfb26e961d6b4b129f98bc27a3e822620eba3",
      "tree": "37bb83e030bac19caac5e0eae9ca3055ef0ad38b",
      "parents": [
        "ccd485d17b13f3b6f5669be9b8820d8807468d98"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Thu Jul 28 17:23:27 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:54 2016 +0100"
      },
      "message": "isisd: API: circuit password\n\nThis cleans up circuit password configuration a little bit.\n(Restructured several times by both Christian Franke and David\nLamparter.)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ccd485d17b13f3b6f5669be9b8820d8807468d98",
      "tree": "84eeee1ba7bdba92f85192febbc2504c2b46a34b",
      "parents": [
        "3732cba03049b18fc414c36254cfc11186b2ba53"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Thu Jul 28 17:23:26 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:54 2016 +0100"
      },
      "message": "isisd: API: basic area config\n\nMove out basic area configuration (metric type, overload and attachment\nbits, dynamic hostname extension enable) into isis_vty.c.\n\n[v2: moved stuff back here that accidentally was in the previous patch]\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3732cba03049b18fc414c36254cfc11186b2ba53",
      "tree": "ddcd74c7700ad2118659a35139ab4e80e8c0094b",
      "parents": [
        "f5603ccd01131a1905b842e36171d0f5c0424496"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jul 29 16:19:40 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:54 2016 +0100"
      },
      "message": "isisd: API: basic circuit config\n\nCreate isis_vty.c and start moving off CLI functions into that.  These\nthen call newly-added \"nice\" API wrappers.\n\nPatch contains significant work authored by Christian Franke.\n\n[v2: removed stuff that crept in from the next patch]\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    }
  ],
  "next": "f5603ccd01131a1905b842e36171d0f5c0424496"
}
