)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "f5603ccd01131a1905b842e36171d0f5c0424496",
      "tree": "ea200b09ca089e09bcedf8598461e2f35d700f88",
      "parents": [
        "b4e011985232f28d98e4df88c7cb13ee8f95ef46"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Sep 12 13:53:08 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:53 2016 +0100"
      },
      "message": "isisd: cleanup isis_circuit_lookup, errant from TE changes?\n"
    },
    {
      "commit": "b4e011985232f28d98e4df88c7cb13ee8f95ef46",
      "tree": "08645e444b7e7f5177ced9b880587e7184c56e2b",
      "parents": [
        "810ab34c56a9b9b8870b961bc96986e6b8550863"
      ],
      "author": {
        "name": "Evgeny Uskov",
        "email": "eu@qrator.net",
        "time": "Wed Jan 13 13:58:00 2016 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:53 2016 +0100"
      },
      "message": "bgpd: Fix buffer overflow error in bgp_dump_routes_func\n\nNow if the number of entries for some prefix is too large, multiple\nTABLE_DUMP_V2 records are created.  In the previous version in such\nsituation bgpd crashed with SIGABRT.\n"
    },
    {
      "commit": "810ab34c56a9b9b8870b961bc96986e6b8550863",
      "tree": "0b533fe031845ea162dbb6f54339f5b4124eebbd",
      "parents": [
        "19e6c193db0c74ed08dbb5cd30dfa8f6a4377af0"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Mon Sep 05 12:18:15 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:53 2016 +0100"
      },
      "message": "bgp: bgp_nexthop init/free AFI_ETHER related NH tables\n"
    },
    {
      "commit": "19e6c193db0c74ed08dbb5cd30dfa8f6a4377af0",
      "tree": "8b0b2a80222c2785f84ff3a0d30462d6c274ad8d",
      "parents": [
        "c365b534623279049bc4cc0c5d03fdbcd2d466b0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 06 17:23:48 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:53 2016 +0100"
      },
      "message": "bgpd: bgp_nexthop_cache not deleted with peers\n\n* Fix mild leak, bgp_nexthop_caches were not deleted when their peer was.\n  Not a huge one, but makes valgrinding for other leaks noisier.\n\n  Credit to Lou Berger \u003clberger@labn.net\u003e for doing the hard work of\n  debugging and pinning down the leak, and supplying an initial fix.\n  That one didn\u0027t quite get the refcounting right, it seemed, hence\n  this version.\n\n  This version also keeps bncs pinned so long as the peer is defined, where\n  Lou\u0027s tried to delete whenever the peer went through bgp_stop. That causes\n  lots of zebra traffic if down peers go Active-\u003eConnect-\u003eActive, etc., so\n  leaving bnc\u0027s in place until peer_delete seemed better.\n\n* bgp_nht.c: (bgp_unlink_nexthop_by_peer) similar to bgp_unlink_nexthop, but\n  by peer.\n* bgp_nht.c: (bgp_unlink_nexthop_check) helper to consolidate checking\n  if a bnc should be deleted.\n  (bgp_unlink_nexthop_by_peer) ensure the bnc-\u003enht_info peer reference\n  is removed, and hence allow bncs to be removed by previous.\n* bgpd.c: (peer_delete) cleanup the peer\u0027s bnc.\n"
    },
    {
      "commit": "c365b534623279049bc4cc0c5d03fdbcd2d466b0",
      "tree": "89e61557d1f172386a5b9c2f5f0ad194789f2115",
      "parents": [
        "4b502fdb64db6fcad5359973e3ff7e7c88e93a7d"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jul 26 10:58:53 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:53 2016 +0100"
      },
      "message": "bgpd: Remove unused and leaking code\n"
    },
    {
      "commit": "4b502fdb64db6fcad5359973e3ff7e7c88e93a7d",
      "tree": "ed2fc8123a6e40f2c498fa685849525e15f18b69",
      "parents": [
        "789dfc9fe07e23e6c73a299ecbbcbb6d3d411391"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Jul 27 17:06:32 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:53 2016 +0100"
      },
      "message": "tests: Fix testbgpmpattr and make check, broken by BGP NHT.\n\n* bgp_mp_attr_test.c: Fix segfault due to uninitialised bgp_nexthop_cache\n  globals in nexthop parsing path, which require bgp_scan_init() to have\n  been called.\n\n  Fixes issue introduced with:\n\n  \u0027bgpd, zebra: Use next hop tracking for connected routes too\u0027\n"
    },
    {
      "commit": "789dfc9fe07e23e6c73a299ecbbcbb6d3d411391",
      "tree": "dd0b1fbd41a83a3e18f6e2adc7e53b90f5bd428c",
      "parents": [
        "d9ab53ab40dcba66f34ca75695dc930e6093f789"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 06 11:20:27 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:52 2016 +0100"
      },
      "message": "bgpd: Fix crash in \u0027show ip bgp nexthop\u0027\n\n* bgp_nexthop.c: (show_ip_bgp_nexthop_table) the AFIs are sparse, and start\n  from 1, check there\u0027s a table before derefing so as not to crash.\n"
    },
    {
      "commit": "d9ab53ab40dcba66f34ca75695dc930e6093f789",
      "tree": "552f537b8f5decf1b74d8fc98b96ef3e65a01051",
      "parents": [
        "5bcd754ff8d7947978acb44e77dcab323973fb1e"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue May 19 17:47:21 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:52 2016 +0100"
      },
      "message": "bgpd, zebra: Use next hop tracking for connected routes too\n\nAllow next hop tracking to work with connected routes\nAnd cleanup obsolete code in bgp_scan and bgp_import.\n\nSigned-off-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nEdits: Paul Jakma \u003cpaul.jakma@hpe.com\u003e Rebase re-ordering conflicts with\n       NHT route-map, potential errors.\n"
    },
    {
      "commit": "5bcd754ff8d7947978acb44e77dcab323973fb1e",
      "tree": "75fab09b53d3d810d327d8569e0f1e289550f941",
      "parents": [
        "6c6c1bf0fc66713cb0b3448a4323042f44016502"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 17:58:10 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:52 2016 +0100"
      },
      "message": "bgpd: crash if attributes alone consume \u003e 4096 bytes\n\nThis patch fixes a crash if attributes on a patch consume\nmore than 4096 bytes.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "6c6c1bf0fc66713cb0b3448a4323042f44016502",
      "tree": "500f40a63728f968a8198db0300e8945131fb5b8",
      "parents": [
        "e25a9741fb1ba52a69833687caa01f13cd4d1320"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Mon Nov 09 20:21:56 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:52 2016 +0100"
      },
      "message": "bgpd: Improve peer scaling\n\nReduce the amount of time it takes to bring up a large number of peers.\n\nThis is accomplished by removing jitter and reducing the number\nof seconds to wait before connecting to a peer.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n\nEdited-by: Paul Jakma \u003cpaul.jakma@hpe.com\u003e for rebase conflicts, and to add\n           jitter on connect timer back in. Can be removed in an update.\n"
    },
    {
      "commit": "e25a9741fb1ba52a69833687caa01f13cd4d1320",
      "tree": "bc3eb6ea0e14e142095ada9a0dc44a3447dc009a",
      "parents": [
        "cb9ed1d867f6ac9e0bad85c47aabeb10b94be2e5"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Mon Nov 09 20:21:50 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:52 2016 +0100"
      },
      "message": "bgpd: don\u0027t count a route with an unreachable nexthop in PfxRcd\n\nWhen a route is received from a peer that we cannot\nreach do not count that route as a received route.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "cb9ed1d867f6ac9e0bad85c47aabeb10b94be2e5",
      "tree": "de6801469dbcb226b5373957638a80bc09e4e0d7",
      "parents": [
        "4f84737dee1e84b7219f66e983812abd8a6ca1d3"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Jan 14 09:19:29 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:52 2016 +0100"
      },
      "message": "ospf6d: Fix double increment of Sequence Number\n\nWhen OSPF6 is creating the header for the ROUTER LSA type\nif the packet being sent has interface information to add\nto the data, the Sequence Number is at least double incremented.\n\nThis commit may cause issues with ANVL 16.10.\n\n[note: folded in:\n \"ospf6d: Fix Some ANVL test cases 16.6 and partial 16.10\"\n -- Paul Jakma]\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "4f84737dee1e84b7219f66e983812abd8a6ca1d3",
      "tree": "19a9ba0340602be5754a862686dc0a3738048bac",
      "parents": [
        "afc9cf97363c0b7ec6c253731a75ac83e70ea190"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 22 15:24:25 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:52 2016 +0100"
      },
      "message": "zebra: Fix some warnings found during compile.\n\nThis commit fixes some warnings found in Martin\u0027s Testbed\nthat compiles sun solaris and freebsd images.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "afc9cf97363c0b7ec6c253731a75ac83e70ea190",
      "tree": "929cddfa8cda9136780bccd28ce365365841b3cc",
      "parents": [
        "fc2cee2bed4ebf664ba0afa1678027365f3923f7"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 18:03:50 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:51 2016 +0100"
      },
      "message": "osfd: Make OSPF compliant to the last sentence of this section in RFC 2328\n\n9.5 Sending Hello packets\n\nHello packets are sent out each functioning router interface.\nThey are used to discover and maintain neighbor\nrelationships.[6] On broadcast and NBMA networks, Hello Packets\nare also used to elect the Designated Router and Backup\nDesignated Router.\nThe format of an Hello packet is detailed in Section A.3.2.  The\nHello Packet contains the router\u0027s Router Priority (used in\nchoosing the Designated Router), and the interval between Hello\nPackets sent out the interface (HelloInterval).  The Hello\nPacket also indicates how often a neighbor must be heard from to\nremain active (RouterDeadInterval).  Both HelloInterval and\nRouterDeadInterval must be the same for all routers attached to\na common network.  The Hello packet also contains the IP address\nmask of the attached network (Network Mask).  On unnumbered\npoint-to-point networks and on virtual links this field should\nbe set to 0.0.0.0.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Vivek Venkatraman \u003cvivek@cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "fc2cee2bed4ebf664ba0afa1678027365f3923f7",
      "tree": "11a65e7d126c07460cc72a605831128bfdf38ffe",
      "parents": [
        "c69698704806a9ac5035521b1820057097919227"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 18:03:44 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:51 2016 +0100"
      },
      "message": "zebra: Fix incorrectly flagged nexthop\n\nA valid BGP nexthop is sometimes flagged as invalid, this patch\nfixes that issue.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nEdited-by: Paul Jakma \u003cpaul.jakma@hpe.com\u003e, also add the check for\nNEXTHOP_FLAG_ACTIVE which was added in a separate, route-map related commit\n(6baeed5 lib, zebra: Add route-map support for Next Hop Tracking)\n"
    },
    {
      "commit": "c69698704806a9ac5035521b1820057097919227",
      "tree": "51f9b001c139c75f0ac3088a172f2a6c23bab4a8",
      "parents": [
        "cb37de4c6863c772b654a851c9fe3eeb1f677692"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 18:03:43 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:51 2016 +0100"
      },
      "message": "bgpd: Correct a few fuzz failures in BGP\n\nTesting revealed some issues with handling data input.\nThis patch fixes those issues.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "cb37de4c6863c772b654a851c9fe3eeb1f677692",
      "tree": "602898c0435b1c4ad57afaa15b72d9c1b029d15b",
      "parents": [
        "2153090340f059eb787d72ba973ea55e150e9dec"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 18:03:40 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:51 2016 +0100"
      },
      "message": "ospf6d: Fix loss of hello\u0027s on interface\n\nSYMPTOM:\n\nWith quagga running on Linux, \u0027ifdown \u003cif-name\u003e\u0027 followed by \u0027ifup \u003cifname\u003e\ncan cause OSPFv3 to not receive Hello packets on the interface.\n\nISSUE:\n\nOperating System\u0027s interface IPv6 readiness may not be guaranteed at the\ntime of interface-up event. Thats because the ipv6 components in an OS may\nalso be listening to the same interface-up event that (in this case) is\nrelayed to OSPFv3.\n\nIn this failure case, setsockopt with option IPV6_JOIN_GROUP on the interface\nreturned EINVAL.\n\nError logs -\nOSPF6: Zebra Interface state change: swp1 index 3 flags 11043 metric 1 mtu 1500\nOSPF6: Interface Event swp1: [InterfaceUp]\nOSPF6: Network: setsockopt (20) on ifindex 3 failed: Invalid argument\n\nFIX:\n\nTo take care of this possible race condition, any address-family related\nsetting should be retried. Given it\u0027s a rare condition and window of this\nrace should be short, the patch adds a limited retry mechanism for the\nIPV6 membership setting on the socket.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\n             Satish Ashok \u003csashok@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "2153090340f059eb787d72ba973ea55e150e9dec",
      "tree": "42fa35eb7553402425ce6e836bed00aa828a7ef6",
      "parents": [
        "4c7efde6db75229069be72b34a93f279fe57d23b"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 18:03:38 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:51 2016 +0100"
      },
      "message": "bgpd: Fix BGP_INFO_ATTR_CHANGED being cleared incorrectly\n\nback to back route refreshes can set BGP_INFO_ATTR_CHANGED\non the first route refresh but then clear it on the second\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "4c7efde6db75229069be72b34a93f279fe57d23b",
      "tree": "fb3850cefcb7024fef5f16cc9e056e137d814b04",
      "parents": [
        "988a50c54dbd20290c085a36d4c2893f3d515803"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Mon Nov 16 18:19:18 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:51 2016 +0100"
      },
      "message": "zebra: Add check to notice when an interface is unnumbered\n\nIf an interface is not a loopback and it\u0027s prefixlen \u003d\u003d 32\nassume that it is unnumbered.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "988a50c54dbd20290c085a36d4c2893f3d515803",
      "tree": "def010434d1cf49f61ccbb73dd53f862fef53c82",
      "parents": [
        "9e518dd52b1fbf7d395a6bb49a101d632ced5e5b"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 17:58:11 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:51 2016 +0100"
      },
      "message": "bgpd, lib: Clarify the different permutations of soft clearing a peer\n\nCleanup vtysh output for the soft clearing of a bgp peer so\nthat it is clearer what is going to happen.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "9e518dd52b1fbf7d395a6bb49a101d632ced5e5b",
      "tree": "8cd92e6b61e0d3643b9000444fe252e0b781b8bd",
      "parents": [
        "9ae8552c7341071ffac34aec9902fa3dd7dc8fdf"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 17:47:26 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:50 2016 +0100"
      },
      "message": "bgpd: Alow gracefull shutdown of peers\n\nSend CEASE NOTIFICATIONS to all peers on \"no router bgp\"\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "9ae8552c7341071ffac34aec9902fa3dd7dc8fdf",
      "tree": "37f7b06f2915025b64560e130764007d7914f73f",
      "parents": [
        "c7f25b90902d4be39132b1174440746b571220ce"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue May 19 17:47:22 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:50 2016 +0100"
      },
      "message": "zebra: Gather and display detailed info about clients of Zebra\n\nThe display of zebra client info is rather paltry: just the name and the FD.\nFor troubleshooting and general helpfulness, its useful to gather more info\nabout each client and display that. This patch does just that.\n\nSigned-off-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "c7f25b90902d4be39132b1174440746b571220ce",
      "tree": "b66ca69885ba36884b09473700f08cc3909cfea3",
      "parents": [
        "f2eb9caac6425473af8d6d15534439fe715f7426"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 17:47:22 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:50 2016 +0100"
      },
      "message": "bgpd, ospfd, ospf6d, ripd, ripngd, zebra: \u0027set metric -12\u0027 is broken in the parser\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "f2eb9caac6425473af8d6d15534439fe715f7426",
      "tree": "17ee9ab41bc5afee212825a7fb0c6caeceb4b7bd",
      "parents": [
        "96d1060a704d88e04fcd446cce078a6131c3f6db"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 17:47:21 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:50 2016 +0100"
      },
      "message": "bgpd: atomic-aggregate is lost when we aggregate another aggregate that has atomic-aggregate\n\nThis patch ensures that we don\u0027t accidently loose the atomic-aggregate\nwhen we aggregate another aggregate that also has atomic-aggregates.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "96d1060a704d88e04fcd446cce078a6131c3f6db",
      "tree": "89a6f1285550a2d2f149479cc272450e63294ebc",
      "parents": [
        "3b4fb574b414e7b7776b581688f189f2fc736a38"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Jul 01 14:23:45 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:50 2016 +0100"
      },
      "message": "*: Widen width of Zserv routing tag field.\n\n* lib/zebra.h: Introduce a route_tag_t type for route tags generally,\n  and make it 4 bytes wide - so it can directly hold things like an ASN, or\n  the OSPF ASE-LSA tag.\n* zebra/rib.h: Use route_tag_t instead of u_short.\n* *: Update \u0027u_short (*)?(tag|tmp)\u0027 to use route_tag_t instead of u_short.\n  Update stream_{get,put} to l instead of w.\n* ospf_zebra.c: (ospf_zebra_add) test OSPF tag within range of ROUTE_TAG_MAX.\n"
    },
    {
      "commit": "3b4fb574b414e7b7776b581688f189f2fc736a38",
      "tree": "1ee9f627cef3a59b8e21f0a476a75ca4db43b883",
      "parents": [
        "fb214471c88616d67ece3734128ef04ed4a8ed86"
      ],
      "author": {
        "name": "Piotr Chytła",
        "email": "pch@packetconsulting.pl",
        "time": "Tue Dec 01 10:16:02 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:49 2016 +0100"
      },
      "message": "ripd, ripngd: add support for route tags\n\n[Forward ported by Cumulus]\n\nDocumentation\n-------------\nAll ipv4 and ipv6 static route commands now have a \"tag\" option\nwhich allows the user to set a tag between 1 and 65535.\n\nquagga(config)# ip route 1.1.1.1/32 10.1.1.1 tag ?\n  \u003c1-65535\u003e  Tag value\nquagga(config)# ip route 1.1.1.1/32 10.1.1.1 tag 40\nquagga(config)#\n\nquagga# show ip route 1.1.1.1/32\nRouting entry for 1.1.1.1/32\n  Known via \"static\", distance 1, metric 0, tag 40, best\n  * 10.1.1.1, via swp1\n\nquagga#\n\nThe route-map parser supports matching on tags and setting tags\n!\nroute-map MATCH_TAG_18 permit 10\n  match tag 18\n!\n\n!\nroute-map SET_TAG_22 permit 10\n  set tag 22\n!\n\nBGP and OSPF support:\n- matching on tags when redistribing routes from the RIB into BGP/OSPF.\n- setting tags when redistribing routes from the RIB into BGP/OSPF.\n\nBGP also supports setting a tag via a table-map, when installing BGP\nroutes into the RIB.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nSigned-off-by: Piotr Chytla \u003cpch@packetconsulting.pl\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "fb214471c88616d67ece3734128ef04ed4a8ed86",
      "tree": "04894d9d96861039b8b0cb1677d58c23e206acb3",
      "parents": [
        "605aa331d814b0977dd8435168dca5b2b7928996"
      ],
      "author": {
        "name": "Piotr Chytła",
        "email": "pch@packetconsulting.pl",
        "time": "Tue Dec 01 13:47:06 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:49 2016 +0100"
      },
      "message": "zebra: add support for route tags\n\n[Forward ported by Cumulus]\n\nDocumentation\n-------------\nAll ipv4 and ipv6 static route commands now have a \"tag\" option\nwhich allows the user to set a tag between 1 and 65535.\n\nquagga(config)# ip route 1.1.1.1/32 10.1.1.1 tag ?\n  \u003c1-65535\u003e  Tag value\nquagga(config)# ip route 1.1.1.1/32 10.1.1.1 tag 40\nquagga(config)#\n\nquagga# show ip route 1.1.1.1/32\nRouting entry for 1.1.1.1/32\n Known via \"static\", distance 1, metric 0, tag 40, best\n * 10.1.1.1, via swp1\n\nquagga#\n\nThe route-map parser supports matching on tags and setting tags\n!\nroute-map MATCH_TAG_18 permit 10\n match tag 18\n!\n\n!\nroute-map SET_TAG_22 permit 10\n set tag 22\n!\n\nBGP and OSPF support:\n- matching on tags when redistribing routes from the RIB into BGP/OSPF.\n- setting tags when redistribing routes from the RIB into BGP/OSPF.\n\nBGP also supports setting a tag via a table-map, when installing BGP\nroutes into the RIB.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nSigned-off-by: Piotr Chytla \u003cpch@packetconsulting.pl\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "605aa331d814b0977dd8435168dca5b2b7928996",
      "tree": "c33e213e83b219b61e19aa3dc8edec34dae962c7",
      "parents": [
        "2b2e38c3169ae0221645e4dd9b40388660ce3f68"
      ],
      "author": {
        "name": "Piotr Chytła",
        "email": "pch@packetconsulting.pl",
        "time": "Tue Dec 01 10:03:54 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:49 2016 +0100"
      },
      "message": "bgpd, vtysh: Add support for route tags\n\n[Forward ported by Cumulus]\n\nDocumentation\n-------------\nAll ipv4 and ipv6 static route commands now have a \"tag\" option\nwhich allows the user to set a tag between 1 and 65535.\n\nquagga(config)# ip route 1.1.1.1/32 10.1.1.1 tag ?\n  \u003c1-65535\u003e  Tag value\nquagga(config)# ip route 1.1.1.1/32 10.1.1.1 tag 40\nquagga(config)#\n\nquagga# show ip route 1.1.1.1/32\nRouting entry for 1.1.1.1/32\n  Known via \"static\", distance 1, metric 0, tag 40, best\n  * 10.1.1.1, via swp1\n\nquagga#\n\nThe route-map parser supports matching on tags and setting tags\n!\nroute-map MATCH_TAG_18 permit 10\n match tag 18\n!\n\n!\nroute-map SET_TAG_22 permit 10\n set tag 22\n!\n\nBGP and OSPF support:\n- matching on tags when redistribing routes from the RIB into BGP/OSPF.\n- setting tags when redistribing routes from the RIB into BGP/OSPF.\n\nBGP also supports setting a tag via a table-map, when installing BGP\nroutes into the RIB.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nSigned-off-by: Piotr Chytla \u003cpch@packetconsulting.pl\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n\nEdits by: Paul Jakma \u003cpaul.jakma@hpe.com - conflicts on re-ordering with the\nrmap-event and table-map patches, those will now need to update the tags stuff.\n"
    },
    {
      "commit": "2b2e38c3169ae0221645e4dd9b40388660ce3f68",
      "tree": "4201eb0ecd250b8da03ec7c129ef80a77007ee4a",
      "parents": [
        "eefddcc78abcc91d1d88633a3c6d5a438fe58790"
      ],
      "author": {
        "name": "Piotr Chytła",
        "email": "pch@packetconsulting.pl",
        "time": "Tue Dec 01 10:10:41 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:49 2016 +0100"
      },
      "message": "ospfd, vtysh: Add support for Route tags\n\n[Forward ported by Cumulus]\n\nCredit\n------\nA huge amount of credit for this patch goes to Piotr Chytla for\ntheir \u0027route tags support\u0027 patch that was submitted to quagga-dev\nin June 2007.\n\nDocumentation\n-------------\nAll ipv4 and ipv6 static route commands now have a \"tag\" option\nwhich allows the user to set a tag between 1 and 65535.\n\nquagga(config)# ip route 1.1.1.1/32 10.1.1.1 tag ?\n \u003c1-65535\u003e  Tag value\nquagga(config)# ip route 1.1.1.1/32 10.1.1.1 tag 40\nquagga(config)#\n\nquagga# show ip route 1.1.1.1/32\nRouting entry for 1.1.1.1/32\n  Known via \"static\", distance 1, metric 0, tag 40, best\n  * 10.1.1.1, via swp1\n\nquagga#\n\nThe route-map parser supports matching on tags and setting tags\n!\nroute-map MATCH_TAG_18 permit 10\n match tag 18\n!\n\n!\nroute-map SET_TAG_22 permit 10\n set tag 22\n!\n\nBGP and OSPF support:\n- matching on tags when redistribing routes from the RIB into BGP/OSPF.\n- setting tags when redistribing routes from the RIB into BGP/OSPF.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nSigned-off-by: Piotr Chytla \u003cpch@packetconsulting.pl\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "eefddcc78abcc91d1d88633a3c6d5a438fe58790",
      "tree": "1f5faa31c5070770c55e3f2c52911121fa095efe",
      "parents": [
        "de24f82d0ea7eadd0db7d5c0d340a0579312237c"
      ],
      "author": {
        "name": "Piotr Chytła",
        "email": "pch@packetconsulting.pl",
        "time": "Tue Dec 01 09:48:02 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:49 2016 +0100"
      },
      "message": "bgpd, lib, ospfd, zebra: Add ability to read/write tag value\n\nModify zebra to pass the tag value to and from the\nvarious protocols.\n\n[forward ported by Cumulus]\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nSigned-off-by: Piotr Chytla \u003cpch@packetconsulting.pl\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nEdits: Paul Jakma \u003cpaul.jakma@hpe.com\u003e rebase conflicts in bgp_zebra.c\n"
    },
    {
      "commit": "de24f82d0ea7eadd0db7d5c0d340a0579312237c",
      "tree": "8538c0c863445588c7402672e1cb30596933f66a",
      "parents": [
        "147a812ed15e171d1db882ac96f0f15723bf8b8f"
      ],
      "author": {
        "name": "Piotr Chytła",
        "email": "pch@packetconsulting.pl",
        "time": "Thu Jun 28 00:09:28 2007 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:49 2016 +0100"
      },
      "message": "zebra: Add internal support for route tags\n\nAdd internal support for a route tag to be applied to routes.\nAt this point in time, tags are not being used.\n\n[forward ported by Cumulus]\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nSigned-off-by: Piotr Chytła \u003cpch@packetconsulting.pl\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nEdited-by: Paul Jakma \u003cpaul.jakma@hpe.com\u003e - rebase conflicts\n"
    },
    {
      "commit": "147a812ed15e171d1db882ac96f0f15723bf8b8f",
      "tree": "d394af3adcf89b7eae806693cba7ae5ee5eea7e7",
      "parents": [
        "768d9098a526841d22a8f0b740a919bd6eccee47"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu May 21 16:06:21 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:48 2016 +0100"
      },
      "message": "vtysh: service integrated-vtysh-config not being written to file\n\nThe vtysh commands:\nservice integrated-vtysh-config\nhostname XXXX\n\nwere not being written to the /etc/quagga/Quagga.conf file with a wr mem\nwhen service integrated-vtysh-config was issued.  This patch fixes this\nissue\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "768d9098a526841d22a8f0b740a919bd6eccee47",
      "tree": "adcc88e6c578b62f04933d8741a02245150ebbdb",
      "parents": [
        "d8c5f27777051b3ea32f8b5979ecd9bb7b9475b9"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue May 19 18:04:13 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:48 2016 +0100"
      },
      "message": "zebra: Suppress displaying default config as part of running config\n\nQuagga doesn\u0027t display default config as part of the running config, only\nwhat is different from the default. However, in the case of rtadv, every\nlink displays the default \"ipv6 nd suppress-ra\" as part of running config.\nThis patch fixes that.\n\nSigned-off-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d8c5f27777051b3ea32f8b5979ecd9bb7b9475b9",
      "tree": "9a88ac0011a029b6c7ba5efe02d11e3a1339c4e7",
      "parents": [
        "743219e9abe79e8a3828fc00de679098061960bb"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Mar 16 08:10:56 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:48 2016 +0100"
      },
      "message": "bgpd: flag paths for multipath if we RX link-local and global nexthops\n\nPaths with global and link-local nexthops should be considered for multipath\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "743219e9abe79e8a3828fc00de679098061960bb",
      "tree": "5daff5c2b13c5e5fd9372269c1d74e24d25f0472",
      "parents": [
        "fa2e78677bde6926dc7cfa29e14925eb6d8e87b3"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 18:03:57 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:48 2016 +0100"
      },
      "message": "ospfd: \"show ip ospf neighbor\" header spacing\n\nThe column headers for displaying OSPF neighbors are not aligned,\nthis patch addresses this issue\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "fa2e78677bde6926dc7cfa29e14925eb6d8e87b3",
      "tree": "5d46321c69cf4ac0d97e3411799fbe3bb6c7de49",
      "parents": [
        "7d39125ea4d54624a4865dd272df5041ccac655e"
      ],
      "author": {
        "name": "Vivek Venkatraman",
        "email": "vivek@cumulusnetworks.com",
        "time": "Tue May 19 18:03:54 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:48 2016 +0100"
      },
      "message": "bgpd: Make source interface selection in BGP for nexthop determination more robust\n\nEnsure that if \u0027update-source \u003cinterface\u003e\u0027 is specified, that interface is\nchosen as the source for the local nexthops. Otherwise, do a complete\nmatch on the local IP address of the connection to determine the source\ninterface for the local nexthops; this will handle scenarios where there\nis an overlap of subnets between interfaces (e.g., loopback and another\ninterface).\n\nSigned-off-by: Vivek Venkatraman \u003cvivek@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7d39125ea4d54624a4865dd272df5041ccac655e",
      "tree": "5948b8421015af9e47885179d87ef727d79196b8",
      "parents": [
        "8c075ef01d64cba7dd52bdc642ccee22a8538b62"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 18:03:53 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:48 2016 +0100"
      },
      "message": "ospf6d: Adding the initialization check in ospfv3_clean()\n\nThis is to avoid a crash triggered by process termination\nwhen ospf6d daemon is running and \u0027router ospf6\u0027 config has not been done yet.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "8c075ef01d64cba7dd52bdc642ccee22a8538b62",
      "tree": "fb49387b6d69cf5ccc7550ae3c93f982f2916a71",
      "parents": [
        "f1b9611821bb73b6bc664afa263cdaa851e09d34"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 18:03:53 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:48 2016 +0100"
      },
      "message": "ospf6d: Fixing a couple of issues with ospf6_route_remove () routine.\n\nWhen a route_node has multiple ospf6_routes under it (common subnet case),\nthen the current implementation has an issue in adjusting the route_node-\u003einfo\non a ospf6_route_remove() call.\n\nThe main reason is that it ends up using exact match to determine if the next\nospf6_route belongs to the same route_node or not. Fixing that part to use\nrnode (the existing back-pointer to the route_node) from the ospf6_route to\ndetermine that.\n\nAlso fixing some of the walks to turn them safe so that the route deletion is\nfine.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Vivek Venkatraman \u003cvivek@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "f1b9611821bb73b6bc664afa263cdaa851e09d34",
      "tree": "e848a1f724143670b5e09531e74c85e364a99466",
      "parents": [
        "f687b62b14dd4e79528e9ba607da1ebdc44cf28d"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 18:03:51 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:07:47 2016 +0100"
      },
      "message": "ospf6d: LA (local-address) bit related inter-op fix.\n\nAs per the RFC, when the NU bit is set, prefix should be ignored.\nHowever, the code is currently ignoring prefix with LA bit too.\n\nFixing that part.\n\nIn future, we should also set LA bit for the loopback addresses. Not doing this\npart right away, as quagga wont be backward compatible with its own previous\nreleases. Maybe after a release or so, we should start setting LA bit too.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "f687b62b14dd4e79528e9ba607da1ebdc44cf28d",
      "tree": "8cf2a5934f0ed6069aaa1e0ebe2dcec5e7d75fc9",
      "parents": [
        "24521e24c739b130c247e864d22b734daa4281d1"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue May 19 18:03:50 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Oct 04 13:06:48 2016 +0100"
      },
      "message": "ospfd: Don\u0027t wait for state change to Exchange to start LSReq\n\nANVL test 17.5. The current implementation wouldn\u0027t start sending LSReq unti\nthe DB Desc packets have all been received (no M bit). This caused the test\nchoke up. RFC 2328 allows for sending LSReq on receiving the first DbDesc\npacket as long as the nbr state is Exchange. This patch fixes that.\n\nSigned-off-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\n\nEdited-by: Paul Jakma \u003cpaul.jakma@hpe.com\u003e to start the sending of LsReq\nfrom the nsm_negotiation_done FSM transition function for ExStart-\u003eExchange,\nrather than tacking the call to ospf_ls_req_send to the bottom of the DD\ndesc processing function.\n"
    },
    {
      "commit": "24521e24c739b130c247e864d22b734daa4281d1",
      "tree": "87c1101c1cf0057598051440ec248e39ea82284c",
      "parents": [
        "45af55a70379da6e1534185ffa20238aa6026d52"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 18:03:48 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:47 2016 +0100"
      },
      "message": "ospfd: Fix no ip ospf hello-interval\n\nOSPF silently ignores \u0027no ip ospf hello-interval X\u0027 and \u0027no ip ospf hello-interval X\u0027\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "45af55a70379da6e1534185ffa20238aa6026d52",
      "tree": "c7b7f526bb1806dbcd87dc2da6fab5b52f2d5acf",
      "parents": [
        "e2a0ebf26c640822c3488e6f371a043a91fdcc1b"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 18:03:43 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:47 2016 +0100"
      },
      "message": "ospfd: Make destination of p2p to multicast for LS-ACKS\n\nISSUE:\n\nLSAcks (for directed acks) are being sent to neighbor\u0027s unicast address.\n\nRFC 2328 says:\n\n\"The IP destination address for the packet is selected as\n follows.  On physical point-to-point networks, the IP\n destination is always set to the address AllSPFRouters\"\n\nFix is to unconditionally set the destination address for LSAcks over\npoint-to-point links as AllSPFRouters. Quagga OSPF already has similar\nchange for OSPF DBD, LSUpdate and LSrequest packets.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "e2a0ebf26c640822c3488e6f371a043a91fdcc1b",
      "tree": "2132335499fb8a3f3460958f01fcb2cd4a8289d8",
      "parents": [
        "69424be09ccf7233b184b89bb7bd6e98f72d252b"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 18:03:43 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:47 2016 +0100"
      },
      "message": "bgpd: Display BGP paths with unreachable nexthops as invalid\n\nIf a BGP path has an unreachable nexthop display that path as invalid\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "69424be09ccf7233b184b89bb7bd6e98f72d252b",
      "tree": "51d6c07ce0e9e3a6ba2ad12f87c0417d3e8d5c8f",
      "parents": [
        "f972dec83308986082b04711c8915e13c0a5e1c1"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 18:03:41 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:47 2016 +0100"
      },
      "message": "ospf6d: We should accept long form of \"no redistribute\"\n\nWhen turning off redistribution in ospf6, allow the\nuser to specify the full form of the command entered.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "f972dec83308986082b04711c8915e13c0a5e1c1",
      "tree": "beac1b5a2aa6553bc4fc51b421d6d984d8c00283",
      "parents": [
        "e87f8083ff677b569048ce7560169b64daee0c57"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 18:03:41 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:47 2016 +0100"
      },
      "message": "ospf6d: Add the missing ospf6 running check in show cmds\n\nSYMPTOM:\n\nIf some of the ospfv3 commands like \u0027show ipv6 ospf6 route\u0027 are executed\nwith ospf6d daemon running but before having any ospfv3 configuration, then\nospf6d crash is seen.\n\nISSUE:\n\nThere are a few show commands, which are (unlike others) not checking if\nospf6 instance is initialized already.\n\nFIX:\n\nAdd the missing checks, by using OSPF6_CMD_CHECK_RUNNING() in the commands\nwhere its needed and not yet used.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\n             Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "e87f8083ff677b569048ce7560169b64daee0c57",
      "tree": "f55fbeeb8ef6f66f0feb55cab9ce1cc5dc28196b",
      "parents": [
        "e509af86e3579944b7cde942ca3ee3427db1936a"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 18:03:40 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:47 2016 +0100"
      },
      "message": "ospf6d: Support for \u0027clear ipv6 ospf6 interface [ifname]\n\nClear interface commands for ospfv3.  Allow the user\nto clear all peers out the specified interface.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "e509af86e3579944b7cde942ca3ee3427db1936a",
      "tree": "d707edff140eeae0371e89d912a295bb8978d978",
      "parents": [
        "a90dc8752723ef6bad6fc5a7d5180ab313b0317c"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 18:03:40 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:47 2016 +0100"
      },
      "message": "opsf6d: Update router-LSA when nbr\u0027s interface-ID changes\n\nThis is a fix to make sure router-LSA is updated when neighbor\u0027s interface\nID change is received in hello packet.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "a90dc8752723ef6bad6fc5a7d5180ab313b0317c",
      "tree": "ba4bafa307695614b1def0e2223d9f6ae3ba6cec",
      "parents": [
        "59fe0eecd3498f28ec1b1cdb2de5dcc7c507f83f"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 17:58:13 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:46 2016 +0100"
      },
      "message": "ospfd: Support for \u0027clear ip ospf interface [IFNAME]\u0027\n\nAllow the user to enter the \u0027clear ip ospf interface [IFNAME]\u0027 command\nthis resets the connection between ospf and any peers out the\nspecified interface.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "59fe0eecd3498f28ec1b1cdb2de5dcc7c507f83f",
      "tree": "15f342a0a8955f0414133ef856c2509b7d92ef53",
      "parents": [
        "325fcfb6d83c9add415e24e786035b67b00fd719"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 17:58:11 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:46 2016 +0100"
      },
      "message": "bgpd: Add [bestpath|multipath] option to \u0027show ip bgp x.x.x.x\u0027\n\nWhen showing a prefix in bgp allow user to specify output\nbased upon the bestpath chosen, multipath information of all\ninformation about a prefix(the default)\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "325fcfb6d83c9add415e24e786035b67b00fd719",
      "tree": "f8608273e8b41d31888dd9112e978a5b0af21075",
      "parents": [
        "76a7280ddebd94b20c545e93d9773e7ad4db91de"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 17:58:10 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:46 2016 +0100"
      },
      "message": "bgpd: Add clear command to force a bestpath recalculation and re-advertisement of a prefix\n\nAdd these commands to bgp:\n\nclear ip bgp prefix A.B.C.D/M\nclear bgp ipv6 (unicast|multicast) prefix X:X::X:X/M\n\nThese two commands forces a bestpath calculation to happen again if\nnecessary to re-advertise the prefix.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "76a7280ddebd94b20c545e93d9773e7ad4db91de",
      "tree": "e23a452ad18059aa890731eb2cfdf6ec8c511562",
      "parents": [
        "78243040fc60babf83ef02572ad7966ebd20192e"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 17:47:24 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:46 2016 +0100"
      },
      "message": "bgpd: Fix aggregation issues found via ANVL\n\nThere were various failures in ANVL\u0027s aggregation tests, this\npatch fixes those issues found\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "78243040fc60babf83ef02572ad7966ebd20192e",
      "tree": "3f75137aa154ba159ed9e220b4b6e121bbec3344",
      "parents": [
        "d0aa6e8b222f44949b0a190d8ff70d90333b775c"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Tue May 19 17:47:23 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:46 2016 +0100"
      },
      "message": "bgpd: iBGP multipath is broken if \u0027bgp deterministic-med\u0027 is enabled.\n\nAS_PATH comparison is broken if CONFED_AS_SEQ are present.\nThis patch fixes this issue\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d0aa6e8b222f44949b0a190d8ff70d90333b775c",
      "tree": "023b3155124dbd19260e0886e1582da65889ec5e",
      "parents": [
        "5552da8f9abd786fb76019135277003f489626d6"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Fri Jun 17 14:45:42 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:46 2016 +0100"
      },
      "message": "bgpd: Make aspath_highest 4-byte compatible for private AS\n\n* bgp_aspath.h: Add BGP_AS_IS_PRIVATE macro.\n* bgp_aspath.c: (aspath_highest) use said macro to also ensure 4-byte private\n  AS range is ignored in calculating highest public ASN.\n  (aspath_private_as_check) consolidate to use said macro.\n\nNote: Extracted from \u0027bgpd: Add replace-as option to remove-private-as\u0027\nby paul@jakma.org.\n"
    },
    {
      "commit": "5552da8f9abd786fb76019135277003f489626d6",
      "tree": "c5dad1170dd671a48e949b92073afff78671a69e",
      "parents": [
        "dcc21851aa5f284bf57ccb2b662f4ff5b5a44321"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Jun 17 11:36:59 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:46 2016 +0100"
      },
      "message": "bgpd: Fix use after free in aspath_prepend with confeds\n\n* bgp_aspath.c: (aspath_prepend) aspath_delete_confed_seq may result\n  in as2 being updated, and seg2 becoming invalid. E.g. if the first\n  segment of of as2 is confeds. However, code there after unconditionally\n  reads from seg2.\n\n  Reset seg2, and re-do the empty check on it.\n\n  Caught by valgrinding tools/aspathtest.\n"
    },
    {
      "commit": "dcc21851aa5f284bf57ccb2b662f4ff5b5a44321",
      "tree": "531f26413dcc89db8b25dcb90cf154f6960b2bf8",
      "parents": [
        "c0a4cc74ef6994f9b4e4c1351d67a55a684faf38"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue May 19 17:47:20 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:45 2016 +0100"
      },
      "message": "bgpd: Make the private AS number check 4 byte compatible.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "c0a4cc74ef6994f9b4e4c1351d67a55a684faf38",
      "tree": "17c22ef80e7ecfc7f34e07e99eee66de2394388c",
      "parents": [
        "62f936e7960a7c08f4ae42ad43726d8d6e8e949d"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Mon Nov 09 20:22:00 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:45 2016 +0100"
      },
      "message": "bgpd: Make \"no redistribute\" always remove the redistribute statement\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "62f936e7960a7c08f4ae42ad43726d8d6e8e949d",
      "tree": "53dbbf703d51c38e0bf41cc979434b32c3b5d430",
      "parents": [
        "92992c69afd0095b183a3b905598d194115b27a7"
      ],
      "author": {
        "name": "Daniel Walton",
        "email": "dwalton@cumulusnetworks.com",
        "time": "Mon Nov 09 20:21:59 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:45 2016 +0100"
      },
      "message": "ospf6d, ripd, vtysh: Fix \"no set metric\" for ospf6 and RIP\n\nAllow the user to actually turn off the set metric command\nin ospf6d and rip.\n\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "92992c69afd0095b183a3b905598d194115b27a7",
      "tree": "ebe6c8bb20afd1b7ee9de87e5de281bc05a98022",
      "parents": [
        "083e5e2d7bc8098b92572792ab807da381db95ea"
      ],
      "author": {
        "name": "James Li",
        "email": "jli@cumulusnetworks.com",
        "time": "Mon Nov 09 20:21:57 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:45 2016 +0100"
      },
      "message": "zebra: Dissallow outside programs to delete Quagga routes\n\nDo not allow a program outside Quagga to delete a Quagga route from the kernel.\nTo delete a Quagga route, do it inside Quagga.\n\nSigned-off-by: James Li \u003cjli@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "083e5e2d7bc8098b92572792ab807da381db95ea",
      "tree": "740c756c2d0483b194f801bbef763f4483a489d1",
      "parents": [
        "5cf768a3f53029ecc482367a1ceaf7578237b06a"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Nov 09 20:21:54 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:45 2016 +0100"
      },
      "message": "bgpd, doc: Allow route-map policy modifications to also affect route reflectors.\n\nBy default, attribute modification via route-map policy out is ignored on\nreflected routes. This patch provides an option to allow this modification\nto occur. Once enabled, it affects all reflected routes.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "5cf768a3f53029ecc482367a1ceaf7578237b06a",
      "tree": "9cff44b2582ae8dcdf37749cbb5055b156d04488",
      "parents": [
        "af309fa58f41457eed226d6650d0b780c053c4d8"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Nov 09 20:21:53 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:45 2016 +0100"
      },
      "message": "bgpd: Support matching on local preference in route-map\n\nThis patch adds support for matching on local preference in\nBGP route-map.\n\nSigned-off-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "af309fa58f41457eed226d6650d0b780c053c4d8",
      "tree": "a11a111ef50ad82b73dbf2ab6a172c7db97bbc5f",
      "parents": [
        "a4f40293db1055387d5b901fe0dbb556226b2024"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Mon Nov 09 20:21:47 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:45 2016 +0100"
      },
      "message": "bgpd: Show more meaningful outq value in \u0027show ip bgp summary\u0027 output.\n\n\u0027outq\u0027 field in \u0027show ip bgp sum\u0027 displays the number of formatted packets\nto a peer. Since the route announcement follows an input-buffered pattern\n(i.e. adj-rib-out is a separate queue of routes per peer and packets are\nformatted from the routes at the time of TCP write), the outq field doesn\u0027t\nshow any interesting data worth watching.\n\nThe patch is to display the adj-rib-out queue depth instead.\n\nsigned-off-by: pmohapat@cumulusnetworks.com\nreviewed-by: dwalton@cumulusnetworks.com\n"
    },
    {
      "commit": "a4f40293db1055387d5b901fe0dbb556226b2024",
      "tree": "09ac6cebe377c249426a3760d008b031c84b1be5",
      "parents": [
        "0f2f7a3fa5d55e682d0739d586da021cbd43bc3c"
      ],
      "author": {
        "name": "vivek",
        "email": "vivek@cumulusnetworks.com",
        "time": "Mon Nov 09 20:21:46 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:44 2016 +0100"
      },
      "message": "vtysh: Make ipv6 unicast/multicast address-family work\n\nIn the absence of this patch, attempting to type \"address-family ipv6 unicast\"\nwould result in an \"Ambiguous command\" error and in the case of\n\"address-family ipv6 multicast\", the command would silently fail, without the\nprompt dropping into the address-family mode.\n\nThe cause is how the parse tree is constructed for ipv6 address family. There\nwas an error in extract.pl.in script and in vtysh.c files which assumed that\nthere was only address family ipv6 command, without unicast or multicast and\nso the command was failing.\n\nSigned-off-by: vivek \u003cvivek@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0f2f7a3fa5d55e682d0739d586da021cbd43bc3c",
      "tree": "a8bdff569d71a784e2ba4ab154ce6ab70103638a",
      "parents": [
        "94627e670d661f95217521ef0bfba141e5e37e68"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Jun 16 15:40:02 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:44 2016 +0100"
      },
      "message": "*: Fix duplicate commands from view/enable node consolidation\n"
    },
    {
      "commit": "94627e670d661f95217521ef0bfba141e5e37e68",
      "tree": "660d32856e15a4e2d9868cdd87d0937e20f0e9e5",
      "parents": [
        "60cc95921ae663de325ca3e76e8c05d8224986ab"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Mon Nov 09 20:21:45 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:44 2016 +0100"
      },
      "message": "bgpd: Add a null check in bgp_address_del() function when connected addresses are removed.\n\nWhen you flap an interface repeatedly, you can get into situations where\nthe code has not quite finished cleaning up before the next event happens.\nGracefully prevent a NULL dereference.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "60cc95921ae663de325ca3e76e8c05d8224986ab",
      "tree": "7d78102aa9650da4bba1355b2a6601135d687b37",
      "parents": [
        "4feb0d02c029e2e4f229f6283f579b8673b0ac11"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Mon Nov 09 20:21:41 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:44 2016 +0100"
      },
      "message": "bgpd, doc, lib, zebra: nexthop-tracking in zebra\n\n0. Introduction\n\nThis is the design specification for next hop tracking feature in\nQuagga.\n\n1. Background\n\nRecursive routes are of the form:\n\n   p/m --\u003e n\n  [Ex: 1.1.0.0/16 --\u003e 2.2.2.2]\n\nwhere \u0027n\u0027 itself is resolved through another route as follows:\n\n   p2/m --\u003e h, interface\n  [Ex: 2.2.2.0/24 --\u003e 3.3.3.3, eth0]\n\nUsually, BGP routes are recursive in nature and BGP nexthops get\nresolved through an IGP route. IGP usually adds its routes pointing to\nan interface (these are called non-recursive routes).\n\nWhen BGP receives a recursive route from a peer, it needs to validate\nthe nexthop. The path is marked valid or invalid based on the\nreachability status of the nexthop.  Nexthop validation is also\nimportant for BGP decision process as the metric to reach the nexthop\nis a parameter to best path selection process.\n\nAs it goes with routing, this is a dynamic process. Route to the\nnexthop can change. The nexthop can become unreachable or\nreachable. In the current BGP implementation, the nexthop validation\nis done periodically in the scanner run. The default scanner run\ninterval is one minute. Every minute, the scanner task walks the\nentire BGP table. It checks the validity of each nexthop with Zebra\n(the routing table manager) through a request and response message\nexchange between BGP and Zebra process. BGP process is blocked for\nthat duration. The mechanism has two major drawbacks:\n\n(1) The scanner task runs to completion. That can potentially starve\n    the other tasks for long periods of time, based on the BGP table\n    size and number of nexthops.\n\n(2) Convergence around routing changes that affect the nexthops can be\n    long (around a minute with the default intervals). The interval\n    can be shortened to achieve faster reaction time, but it makes the\n    first problem worse, with the scanner task consuming most of the\n    CPU resources.\n\n\"Next hop tracking\" feature makes this process event-driven. It\neliminates periodic nexthop validation and introduces an asynchronous\ncommunication path between BGP and Zebra for route change notifications\nthat can then be acted upon.\n\n2. Goal\n\nStating the obvious, the main goal is to remove the two limitations we\ndiscussed in the previous section. The goals, in a constructive tone,\nare the following:\n\n- fairness: the scanner run should not consume an unjustly high amount\n  of CPU time. This should give an overall good performance and\n  response time to other events (route changes, session events,\n  IO/user interface).\n\n- convergence: BGP must react to nexthop changes instantly and provide\n  sub-second convergence. This may involve diverting the routes from\n  one nexthop to another.\n\n3. Overview of the changes\n\nThe changes are in both BGP and Zebra modules.  The short summary is\nthe following:\n\n- Zebra implements a registration mechanism by which clients can\n   register for next hop notification. Consequently, it maintains a\n   separate table, per (VRF, AF) pair, of next hops and interested\n   client-list per next hop.\n\n- When the main routing table changes in Zebra, it evaluates the next\n   hop table: for each next hop, it checks if the route table\n   modifications have changed its state. If so, it notifies the\n   interested clients.\n\n- BGP is one such client. It registers the next hops corresponding to\n   all of its received routes/paths. It also threads the paths against\n   each nexthop structure.\n\n- When BGP receives a next hop notification from Zebra, it walks the\n   corresponding path list. It makes them valid or invalid depending\n   on the next hop notification. It then re-computes best path for the\n   corresponding destination. This may result in re-announcing those\n   destinations to peers.\n\n4. Design\n\n4.1. Modules\n\nThe core design introduces an \"nht\" (next hop tracking) module in BGP\nand \"rnh\" (recursive nexthop) module in Zebra. The \"nht\" module\nprovides the following APIs:\n\nbgp_find_or_add_nexthop() : find or add a nexthop in BGP nexthop table\nbgp_find_nexthop() : find a nexthop in BGP nexthop table\nbgp_parse_nexthop_update() : parse a nexthop update message coming\n                              from zebra\n\nThe \"rnh\" module provides the following APIs:\n\nzebra_add_rnh() : add a recursive nexthop\nzebra_delete_rnh() : delete a recursive nexthop\nzebra_lookup_rnh() : lookup a recursive nexthop\n\nzebra_add_rnh_client() : register a client for nexthop notifications\n                         against a recursive nexthop\n\nzebra_remove_rnh_client(): remove the client registration for a\n                            recursive nexthop\n\nzebra_evaluate_rnh_table(): (re)evaluate the recursive nexthop table\n                            (most probably because the main routing\n                            table has changed).\n\nzebra_cleanup_rnh_client(): Cleanup a client from the \"rnh\" module\n                            data structures (most probably because the\n                            client is going away).\n\n4.2. Control flow\n\nThe next hop registration control flow is the following:\n\n\u003c\u003d\u003d\u003d\u003d      BGP Process       \u003d\u003d\u003d\u003d\u003e|\u003c\u003d\u003d\u003d\u003d      Zebra Process      \u003d\u003d\u003d\u003d\u003e\n                                  |\nreceive module     nht module     |  zserv module        rnh module\n----------------------------------------------------------------------\n              |                   |                  |\nbgp_update_   |                   |                  |\n      main()  | bgp_find_or_add_  |                  |\n              |        nexthop()  |                  |\n              |                   |                  |\n              |                   | zserv_nexthop_   |\n              |                   |       register() |\n              |                   |                  | zebra_add_rnh()\n              |                   |                  |\n\nThe next hop notification control flow is the following:\n\n\u003c\u003d\u003d\u003d\u003d     Zebra Process    \u003d\u003d\u003d\u003d\u003e|\u003c\u003d\u003d\u003d\u003d      BGP Process       \u003d\u003d\u003d\u003d\u003e\n                                |\nrib module         rnh module   |     zebra module        nht module\n----------------------------------------------------------------------\n              |                 |                   |\nmeta_queue_   |                 |                   |\n    process() | zebra_evaluate_ |                   |\n              |     rnh_table() |                   |\n              |                 |                   |\n              |                 | bgp_read_nexthop_ |\n              |                 |          update() |\n              |                 |                   | bgp_parse_\n              |                 |                   | nexthop_update()\n              |                 |                   |\n\n4.3. zclient message format\n\nZEBRA_NEXTHOP_REGISTER and ZEBRA_NEXTHOP_UNREGISTER messages are\nencoded in the following way:\n\n/*\n *     0                   1                   2                   3\n *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * |     AF                        |  prefix len   |\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * .      Nexthop prefix                                           .\n * .                                                               .\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * .                                                               .\n * .                                                               .\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * |     AF                        |  prefix len   |\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * .      Nexthop prefix                                           .\n * .                                                               .\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n */\n\nZEBRA_NEXTHOP_UPDATE message is encoded as follows:\n\n/*\n *     0                   1                   2                   3\n *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * |     AF                        |  prefix len   |\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * .      Nexthop prefix getting resolved                          .\n * .                                                               .\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * |        metric                                                 |\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * |  #nexthops    |\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * | nexthop type  |\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * .      resolving Nexthop details                                .\n * .                                                               .\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * .                                                               .\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * | nexthop type  |\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n * .      resolving Nexthop details                                .\n * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n */\n\n4.4. BGP data structure\n\nLegend:\n\n/\\   struct bgp_node: a BGP destination/route/prefix\n\\/\n\n[ ]  struct bgp_info: a BGP path (e.g. route received from a peer)\n\n _\n(_)  struct bgp_nexthop_cache: a BGP nexthop\n\n   /\\         NULL\n   \\/--+        ^\n       |        :\n       +--[ ]--[ ]--[ ]--\u003e NULL\n   /\\           :\n   \\/--+        :\n       |        :\n       +--[ ]--[ ]--\u003e NULL\n                :\n  _             :\n (_).............\n\n4.5. Zebra data structure\n\nrnh table:\n\n           O\n          / \\\n         O   O\n            / \\\n           O   O\n\n        struct rnh\n        {\n          u_char flags;\n          struct rib *state;\n          struct list *client_list;\n          struct route_node *node;\n        };\n\n5. User interface changes\n\nquagga# show ip nht\n3.3.3.3\n resolved via kernel\n via 11.0.0.6, swp1\n Client list: bgp(fd 12)\n11.0.0.10\n resolved via connected\n is directly connected, swp2\n Client list: bgp(fd 12)\n11.0.0.18\n resolved via connected\n is directly connected, swp4\n Client list: bgp(fd 12)\n11.11.11.11\n resolved via kernel\n via 10.0.1.2, eth0\n Client list: bgp(fd 12)\n\nquagga# show ip bgp nexthop\nCurrent BGP nexthop cache:\n 3.3.3.3 valid [IGP metric 0], #paths 3\n  Last update: Wed Oct 16 04:43:49 2013\n\n 11.0.0.10 valid [IGP metric 1], #paths 1\n  Last update: Wed Oct 16 04:43:51 2013\n\n 11.0.0.18 valid [IGP metric 1], #paths 2\n  Last update: Wed Oct 16 04:43:47 2013\n\n 11.11.11.11 valid [IGP metric 0], #paths 1\n  Last update: Wed Oct 16 04:43:47 2013\n\nquagga# show ipv6 nht\nquagga# show ip bgp nexthop detail\n\nquagga# debug bgp nht\nquagga# debug zebra nht\n\n6. Sample test cases\n\n     r2----r3\n    /  \\  /\n  r1----r4\n\n- Verify that a change in IGP cost triggers NHT\n  + shutdown the r1-r4 and r2-r4 links\n  + no shut the r1-r4 and r2-r4 links and wait for OSPF to come back\n    up\n  + We should be back to the original nexthop via r4 now\n- Verify that a NH becoming unreachable triggers NHT\n  + Shutdown all links to r4\n- Verify that a NH becoming reachable triggers NHT\n  + no shut all links to r4\n\n7. Future work\n\n- route-policy for next hop validation (e.g. ignore default route)\n- damping for rapid next hop changes\n- prioritized handling of nexthop changes ((un)reachability vs. metric\n  changes)\n- handling recursion loop, e.g.\n   11.11.11.11/32 -\u003e 12.12.12.12\n   12.12.12.12/32 -\u003e 11.11.11.11\n   11.0.0.0/8 -\u003e \u003cinterface\u003e\n- better statistics\nAddresses upstream comments.\n\n\"show ip bgp nexthop detail\" couldn\u0027t display multiple NHs due to a bug.\nFix that.\n\nFix reference counts for the nexthop cache entries\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\nSigned-off-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\nSigned-off-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nSigned-off-by: Vivek Venkatraman \u003cvivek@cumulusnetworks.com\u003e\n\nFix reference counts for the nexthop cache entries.\n\nSigned-off-by: Vivek Venkatraman \u003cvivek@cumulusnetworks.com\u003e\n\nEdited-by: Paul Jakma \u003cpaul.jakma@hpe.com\u003e\n- Fix nexthop_ipv6_add defs in rib.h not having been modified with rib_ prefix.\n- Remove rib_lookup_and_pushup, appears not to be used except for\n  !HAVE_NETLINK \u0026\u0026 HAVE_STRUCT_IFALIASREQ case of ioctl.c::if_set_prefix,\n  so it\u0027s not being used at all on platform with most testing of RIB.\n"
    },
    {
      "commit": "4feb0d02c029e2e4f229f6283f579b8673b0ac11",
      "tree": "739e7e060eb6f3488f38dd38ea669304cfe68e9e",
      "parents": [
        "b8d1f713ba6bc91138debe9f895621b8f91a43c7"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Nov 09 20:14:55 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:44 2016 +0100"
      },
      "message": "bgpd: IPv6 Multipath broken with nexthop global address\n\nIPv6 multipath is broken in BGP if nexthop contains only global address.\nIPv6 always uses both nextop IPv6 address and ifIndex in sending routes down to\nzebra. In cases where only the global IPv6 address is present in the nexthop\ninformation, the existing code doesn\u0027t set the ifIndex. An example of such a\ncase is when a route-map isused with \"set ipv6 next-hop\" and only global\naddress is specified. This code causes the ifIndex to be determined and\nset thereby fixing the multipath programming.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\n"
    }
  ],
  "next": "b8d1f713ba6bc91138debe9f895621b8f91a43c7"
}
