)]}'
{
  "log": [
    {
      "commit": "6b0655a25194c7c0331154edaa6124cf783e5e5e",
      "tree": "c0c7d479f2684531249668210da27a60322ba395",
      "parents": [
        "fdb913aedb5a9807ad60715e8badb4f25d57acea"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:53:35 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:58:02 2014 +0200"
      },
      "message": "*: nuke ^L (page feed)\n\nQuagga sources have inherited a slew of Page Feed (^L, \\xC) characters\nfrom ancient history.  Among other things, these break patchwork\u0027s\nXML-RPC API because \\xC is not a valid character in XML documents.\n\nNuke them from high orbit.\n\nPatches can be adapted simply by:\n\tsed -e \u0027s%^L%%\u0027 -i filename.patch\n(you can type page feeds in some environments with Ctrl-V Ctrl-L)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fdb913aedb5a9807ad60715e8badb4f25d57acea",
      "tree": "0146642cbd4e6234b21e088c789a801a58299d21",
      "parents": [
        "fd6f39a514093973bb0fb39484a0ed9615534c89"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue Jun 03 18:42:25 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 03 18:43:07 2014 +0200"
      },
      "message": "build: Quagga 0.99.23-rc1\n\nthis is not a full release version, so neither release notes nor\ndocumentation are updated yet.  Also, signing the tag with my private\nGPG key instead of the Quagga one.\n"
    },
    {
      "commit": "fd6f39a514093973bb0fb39484a0ed9615534c89",
      "tree": "a5365a15610b6d02ad8e761013b65e26637c1700",
      "parents": [
        "404fd2974fb53340be6d570b86f2f6f4c0a100c6"
      ],
      "author": {
        "name": "Lu Feng",
        "email": "lu.feng@6wind.com",
        "time": "Wed Feb 19 09:05:05 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 03 15:48:14 2014 +0200"
      },
      "message": "isisd: ignore the unrecognized TLVs\n\nWhen processing LSPDUs, the unrecognized TLVs/sub-TLVs should be\nsilently ignored.\n\nIn parse_tlvs(), ISIS_WARNING is returned once an unrecognized TLV\nexists. It breaks the processing in lsp_authentication_check() and\nlsp_update_data(). So remove it.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "404fd2974fb53340be6d570b86f2f6f4c0a100c6",
      "tree": "28941c7a03fdd30fbebdc7e734d51854823261a8",
      "parents": [
        "7b3b98ae3ecdad20cf5cebd2a6532aee17184d95"
      ],
      "author": {
        "name": "Joachim Nilsson",
        "email": "troglobit@gmail.com",
        "time": "Wed Aug 21 09:39:33 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 03 15:34:22 2014 +0200"
      },
      "message": "ripd: fix \"show ip rip status\" documentation\n\nThe command was mis-named in the documentation as \"show ip protocols\".\n\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7b3b98ae3ecdad20cf5cebd2a6532aee17184d95",
      "tree": "e95cee3c81dec96641e6c7497f69faa3134a5085",
      "parents": [
        "224e7e515747b74dd6d3610570a64b9726a27722"
      ],
      "author": {
        "name": "Lu Feng",
        "email": "lu.feng@6wind.com",
        "time": "Mon Apr 14 08:09:29 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 03 15:32:11 2014 +0200"
      },
      "message": "ripd \u0026 ripngd: avoid the zero interface metric\n\nThe interface metric is initialized to 0 in the commit db19c85:\nzebra: set metric for directly connected routes via netlink to 0\n\nRipd and ripngd must be aware of it and avoid increase the\nroute metric by 0.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "224e7e515747b74dd6d3610570a64b9726a27722",
      "tree": "7e461067f11c264931c3f2a03174db434a174c58",
      "parents": [
        "d9d4ae5157207b9b8bdb167983519a7ffb860f2c"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Thu Apr 24 06:40:33 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 03 15:31:32 2014 +0200"
      },
      "message": "lib: remove redundant and incorrect sys/fcntl.h include\n\nPOSIX defines \u003cfcntl.h\u003e, \u003csys/fcntl.h\u003e is the same thing. However,\nit should not be used as it\u0027s existence can depend on C-library\nimplementation. E.g. musl gives warning if \u003csys/fcntl.h\u003e is used.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d9d4ae5157207b9b8bdb167983519a7ffb860f2c",
      "tree": "8919a83dcb99aac5fa0141f873525517d5e3b7ac",
      "parents": [
        "8c71e481dae11b7ae3f1ef561a989624b2ae84b6"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Wed Jan 13 00:32:39 2010 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 03 15:30:22 2014 +0200"
      },
      "message": "bgpd: fix crash when allowas-in is done on inactive peer\n\nWhen allowas-in is changed on a peer that is not up, BGP would crash\ntrying to do route_refresh.  If peer is not up, there is no need\nto do notification or send.\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8c71e481dae11b7ae3f1ef561a989624b2ae84b6",
      "tree": "4c13b76e1b9aedc45ad9b086be972ba4999ada03",
      "parents": [
        "2c13299a05e5544a5e79c2a970256a21f488a3fa"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Wed Jan 15 06:57:57 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 03 15:08:32 2014 +0200"
      },
      "message": "bgpd: efficient NLRI packing for AFs !\u003d ipv4-unicast\n\nISSUE:\n\n  Currently, for non-ipv4-unicast address families where prefixes are\n  encoded in MP_REACH/MP_UNREACH attributes, BGP ends up sending one\n  prefix per UPDATE message. This is quite inefficient. The patch\n  addresses the issue.\n\nPATCH:\n\n  We introduce a scratch buffer in the peer structure that stores the\n  MP_REACH/MP_UNREACH attributes for non-ipv4-unicast families. This\n  enables us to encode multiple prefixes. In the end, the two buffers\n  are merged to create the UPDATE packet.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\nReviewed-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n[DL: removed no longer existing bgp_packet_withdraw prototype]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2c13299a05e5544a5e79c2a970256a21f488a3fa",
      "tree": "1d277afb9b346388e1aa244484c3af41dcd6a72e",
      "parents": [
        "66d2ead7df2db9144605c973fcd80b88df33f81b"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Sat Sep 07 07:07:20 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 03 15:08:08 2014 +0200"
      },
      "message": "bgpd: don\u0027t compare next-hop to router-id\n\nWhile announcing a path to a peer, the code currently compares the path\u0027s\nnext-hop with the peer\u0027s router-id. This can lead to problems as the router\nIDs are unique only within an AS. Suppose AS 1 sends route with next-hop\n10.1.1.1. It is possible that the speaker has an established BGP peering\nwith a router in AS 2 with router ID 10.1.1.1. The route will not be\nadvertised to that peer in AS 2.\n\nThe patch removes this check.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "66d2ead7df2db9144605c973fcd80b88df33f81b",
      "tree": "77ebf094c8084f2a22c9c00fb53a88df798301b6",
      "parents": [
        "8e998b1eb5fea53f2a2eddd9f7f2b8ab004406f3"
      ],
      "author": {
        "name": "Sébastien Luttringer",
        "email": "seblu@seblu.net",
        "time": "Tue May 27 19:55:11 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 27 19:55:11 2014 +0200"
      },
      "message": "vtysh: fix build against readline 6.3\n\nreadline 6.3 removes some old deprecated funnily-named types.  This\nupdates vtysh to use the new types so it builds again.\n\nReported-by: Joel Teichroeb \u003cklusark@archlinux.invalid\u003e\nReferences: https://bugs.archlinux.org/task/39495\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8e998b1eb5fea53f2a2eddd9f7f2b8ab004406f3",
      "tree": "95b756ddc86e043189c49a930a016051128c949b",
      "parents": [
        "000e157c852653288c5a1e6d0dee821c1765d315"
      ],
      "author": {
        "name": "Michal Sekletar",
        "email": "msekleta@redhat.com",
        "time": "Fri May 16 14:13:43 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 27 19:50:45 2014 +0200"
      },
      "message": "zebra: raise the privileges before calling socket()\n\nBecause of recent changes when creating AF_NETLINK socket, kernel will\ncache capabilities of the caller and if file descriptor is used or\notherwise handed to another process it will check that current user has\nnecessary capabilities to use the socket. Hence we need to ensure we\nhave necessary capabilities when creating the socket and at the time we\nuse the socket.\n\nSee: http://www.spinics.net/lists/netdev/msg280198.html\n\nSigned-off-by: Michal Sekletar \u003cmsekleta@redhat.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "000e157c852653288c5a1e6d0dee821c1765d315",
      "tree": "28a654105d50b5f55c9e865a223ba93366fe3839",
      "parents": [
        "5d804b439a4138c77f81de30c64f923e2b5c1340"
      ],
      "author": {
        "name": "Milan Kocian",
        "email": "milon@wq.cz",
        "time": "Fri Oct 18 07:59:38 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon May 19 23:51:19 2014 +0200"
      },
      "message": "bgpd: Fix condition allowas-in in rsclient code\n\nCurrently when you set neighbour\u0027s \u0027allowas-in\u0027 option on route server side\nyou get redistribution of the prefixes from this neighbour\u0027s table into all\nneighbour\u0027s tables which have the same AS number. I think that wanted behaviour\nis to allow import prefixes from neighbour\u0027s tables with the same AS num\ninto neighbour which has \u0027allowas-in\u0027 option set.\n\nSigned-off-by: Milan Kocian \u003cmilon@wq.cz\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "5d804b439a4138c77f81de30c64f923e2b5c1340",
      "tree": "b63e3dc3a266d42311392e57c37e2b0a9855ff0b",
      "parents": [
        "5f9adb5d26d3af31b00c02084468e9f92b461b01"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Thu Sep 12 03:37:07 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon May 19 23:25:46 2014 +0200"
      },
      "message": "bgpd: support TTL-security with iBGP\n\nTraditionally, ttl-security feature has been associated with EBGP\nsessions as those identify directly connected external peers. The\nGTSM RFC (rfc 5082) does not make any restrictions on type of\npeering. In fact, it is beneficial to support ttl-security for both\nEBGP and IBGP sessions. Specifically, in data centers, there are\ndirectly connected IBGP peerings that will benefit from the protection\nttl-security provides.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\n[DL: function refactoring split out into previous 2 patches.  changes:\n     - bgp_set_socket_ttl(): ret type int -\u003e void\n     - is_ebgp_multihop_configured(): stripped peer \u003d\u003d NULL check\n     - comments/whitespace]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "5f9adb5d26d3af31b00c02084468e9f92b461b01",
      "tree": "640a6c4e855697777f672c384c37fffd5ae72d07",
      "parents": [
        "ef0b0c3e95a1f30d6f338100c689feef8ad5cd6e"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon May 19 23:15:02 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon May 19 23:25:46 2014 +0200"
      },
      "message": "bgpd: factor out eBGP multihop check\n\nThe check for an eBGP multihop configuration is unwieldy;  factor it out\ninto a separate function.\n\n[DL: originally by Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e,\n     split off from the next commit]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ef0b0c3e95a1f30d6f338100c689feef8ad5cd6e",
      "tree": "9848b1d05c2e1424e464cac41be51f32d7b87d78",
      "parents": [
        "8da8689d91a6436c17aca5000b1426aaea47e23c"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon May 19 22:52:04 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon May 19 23:25:46 2014 +0200"
      },
      "message": "bgpd: factor out TTL setting\n\nTTL/min TTL are set from both bgp_accept() and bgp_connect().  Factor\nthem out so the following change to enable iBGP GTSM becomes more\nreadable.\n\n[DL: originally by Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e,\n     split off from the next commit]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8da8689d91a6436c17aca5000b1426aaea47e23c",
      "tree": "f4929119d4f41c668708d19374719765d7cb7f25",
      "parents": [
        "3374bef0412ac11815779f54321cbc4bf96da909"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Wed Sep 11 03:33:55 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon May 19 23:25:39 2014 +0200"
      },
      "message": "bgpd: fix fast external fallover behavior\n\nISSUES\n\n1. When an interface goes down, the zclient callbacks are invoked\n   in the following order: (a) address_delete() that removes the\n   connected address list: ifp-\u003econnected, (b) interface_down()\n   that performs \"fast external fallover\" operation. The operation\n   relies on ifp-\u003econnected to look for peers that should be brought\n   down. That\u0027s a cyclic dependency.\n\n2. \u0027ttl-security\u0027 configuration handler sets peer-\u003ettl to\n   MAXTTL (so that BGP packets are sent with TTL\u003d255, as per the\n   requirement of ttl-security). This, however, is incompatible\n   with \u0027fast external fallover\u0027 as the fallover operation checks\n   for (ttl \u003d\u003d 1) to determine directly connected peers.\n\n3. The current fallover operation does not work for IPv6 address family.\n\nPATCH\n\n1. The patch removes the dependency on \u0027ifp-\u003econnected\u0027 list for fast\n   fallover. The peer already contains a nexthop structure that reflects\n   the peering address. The nexthop structure has a pointer to the\n   interface (ifp) that peering address resolves to. Everytime the TCP\n   connection succeeds, the ifp is updated. The patch uses this ifp in\n   the interface_down() callback for a match for the peers that should be\n   brought down.\n\n2. The evaluation for directly connected peering is enhanced as\n   \u0027peer-\u003ettl \u003d\u003d 1\u0027 OR \u0027peer-\u003egtsm_hops \u003d\u003d 1\u0027. Thus a ttl-security\n   configuration on the peer with one hop is directly connected and\n   should be brought down under \u0027fast external fallover\u0027.\n\n3. Because of fix (1), IPv6 address family works automatically.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3374bef0412ac11815779f54321cbc4bf96da909",
      "tree": "bba5f91b10c31e5987aa2d02d44de7d5c74c537c",
      "parents": [
        "48fc05fb7e6ee44db9f73f3194bfd4738b7f9dc1"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Thu Jan 09 00:31:22 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 15 20:34:53 2014 +0200"
      },
      "message": "bgpd: increase TCP socket buffer size\n\nBGP does not respond fairly in high scale.  As the number of BGP peers\nand prefixes increase, triggers like interface flaps which lead to BGP\npeer flaps, cause blockage in bgp_write.\n\nBGP does handle the cases of TCP socket buffer full by queuing a write\nevent back, there is no functional issue there as such. Still,\nincreasing the peer socket buffer size should help reduce event queueing\nin BGP.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\n[DL: patch split, this is item 3.]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "48fc05fb7e6ee44db9f73f3194bfd4738b7f9dc1",
      "tree": "e0c11382f69fd3159600d18150f846dc104d8e43",
      "parents": [
        "6aa136f1eaeb0dfc1e39e6c2cd6380a399ef126f"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Thu Jan 09 00:31:22 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 15 20:27:12 2014 +0200"
      },
      "message": "bgpd: fix O_NONBLOCK on outgoing connects\n\nBGP was setting sockets to be non-blocking only for the accepted passive\npeers.  As a fix, setting the BGP sockets to be non-blocking even for\nthe active peers.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\n[DL: patch split, this is item 1.]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6aa136f1eaeb0dfc1e39e6c2cd6380a399ef126f",
      "tree": "b1313a9961fe29a4ccf91571a5c772545351084d",
      "parents": [
        "b366b518401e0b0652cd70d297d3fb67b4803db0"
      ],
      "author": {
        "name": "Vitaliy Senchyshyn",
        "email": "vsenchyshyn@toroki.com",
        "time": "Wed Oct 02 10:40:20 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 15 19:54:04 2014 +0200"
      },
      "message": "bgpd: send notify in OpenSent when stopping manually\n\nThe issue it fixes is that the notification message is not sent to a\nsecond peer when bgp is stopped manually.\n\nAccording to BGP RFC4271, section 8.2.2, regarding the FSM transitions,\nin OpenSent state:\n\nIf a ManualStop event (Event 2) is issued in the OpenSent state, the\nlocal system:\n\n  * sends the NOTIFICATION with a Cease,\n  * sets the ConnectRetryTimer to zero,\n  * releases all BGP resources,\n  * drops the TCP connection,\n  * sets the ConnectRetryCounter to zero, and\n  * changes its state to Idle.\n\nI\u0027ve added a check for OpenSent state when the notification is sent from\nthe functions which are called from the CLI commands which\ndirectly/indirectly stop/restart BGP.\n\nAcked-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b366b518401e0b0652cd70d297d3fb67b4803db0",
      "tree": "5f05079e281f0ec503ee408b1f7502cc49cad82e",
      "parents": [
        "689bb66c6a92d238bed1a8b0920438c5a2271966"
      ],
      "author": {
        "name": "Boian Bonev",
        "email": "bbonev@ipacct.com",
        "time": "Mon Sep 09 16:41:35 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 15 19:23:36 2014 +0200"
      },
      "message": "bgpd: display multipath status in \"show ip bgp\"\n\nThe output of \"show ip bg\" does not show whether and which routes are\ninstalled as multipath routes along the best route:\n\nBGP table version is 0, local router ID is 10.10.100.209\nStatus codes: s suppressed, d damped, h history, * valid, \u003e best, i - internal,\n              r RIB-failure, S Stale, R Removed\nOrigin codes: i - IGP, e - EGP, ? - incomplete\n\n   Network          Next Hop            Metric LocPrf Weight Path\n*\u003ei1.0.0.0/24       10.10.100.1              1    111      0 15169 i\n* i                 10.10.100.2              1    111      0 15169 i\n* i                 10.10.100.3              1    111      0 65100 15169 i\n\nThis patch adds a new status code that is showing exactly which routes\nare used as multipath:\n\nBGP table version is 0, local router ID is 10.10.100.209\nStatus codes: s suppressed, d damped, h history, * valid, \u003e best, \u003d multipath,\n              i internal, r RIB-failure, S Stale, R Removed\nOrigin codes: i - IGP, e - EGP, ? - incomplete\n\n   Network          Next Hop            Metric LocPrf Weight Path\n*\u003ei1.0.0.0/24       10.10.100.1              1    111      0 15169 i\n*\u003di                 10.10.100.2              1    111      0 15169 i\n* i                 10.10.100.3              1    111      0 65100 15169 i\n\nThe inconsistency in the status code legend (\"i - internal\" vs. \"i internal\")\ninherent from old IOS was fixed. It had to be touched anyways.\n\nSigned-off-by: Boian Bonev \u003cbbonev at ipacct.com\u003e\n[DL: rewrap long line, clean whitespace in same chunk]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "689bb66c6a92d238bed1a8b0920438c5a2271966",
      "tree": "4cf3ee1be6acdb4cf3b85d3da83e09cb64d29ba9",
      "parents": [
        "2fdd455cfd1f758b7aa2e6c8e3d185098b93908c"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Sat Sep 07 07:13:37 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 15 19:15:45 2014 +0200"
      },
      "message": "bgpd: track correct originator-id in reflected routes\n\nISSUE:\n\nSuppose route1 and route2 received from route-reflector-client1 and client2\nrespectively have identical attributes. The current logic of creating the\nadj-rib-out for a peer threads the \u0027adv\u0027 structures for both routes against\nthe same attribute. This results in \u0027bgp_update_packet()\u0027 to pack those\nroutes in the same UPDATE message with one attr structure formatted. The\noriginator-id is thus set according to the first route\u0027s received router id.\nThis is incorrect.\n\nPATCH:\n\nFix bgp_announce_check() function to set the originator-id in the\nadvertising attr structure. Also, fix the attribute hash function and\ncompare function to consider originator-id. Otherwise attributes where all\nfields except the originator-id are identical get merged into one memory\nlocation.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nReviewed-by: Ken Yin \u003ckyin at cumulusnetworks.com\u003e\n[DL: whitespace changes dropped]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2fdd455cfd1f758b7aa2e6c8e3d185098b93908c",
      "tree": "3b2d28c7b389228cc6c1e3809660c4f7f22c3f18",
      "parents": [
        "d92a2f39b46f1990052d2db046b47edf7bb21ebb"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Sat Sep 07 07:02:36 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 15 19:15:22 2014 +0200"
      },
      "message": "bgpd: add \u0027bgp bestpath as-path multipath-relax\u0027\n\nCompute multipath in BGP based on AS_PATH hop count match. If the knob\nis turned on, it is not required to have an exact match of AS_PATHs\n(provided other multipath conditions are met, of course).\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d92a2f39b46f1990052d2db046b47edf7bb21ebb",
      "tree": "17d73b5e879e6ce15c28496d86166bd78ec3f3b0",
      "parents": [
        "cbf435cb72b937c9e5bfe38905e05de3755b1021"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Wed Jul 31 16:36:08 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 15 19:02:21 2014 +0200"
      },
      "message": "bgpd: use ATTR_FLAG_BIT() for BGP_ATTR_ values\n\n* bgp_attr.c: this UNSET_FLAG()s are bogus. I did a quick review and\n  I think that they could not cause any bug anyway.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "cbf435cb72b937c9e5bfe38905e05de3755b1021",
      "tree": "6d8d2927980cdce68c4a12e5dbfdd2920ff7ae32",
      "parents": [
        "b4b359a265f1b6272b4eb17c11e9c6ef9817f34b"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Apr 28 11:42:20 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:47:30 2014 +0200"
      },
      "message": "ospfd: add debug messages for router lsa-generation\n\nAdd log messages to lsa_link_broadcast_set so it becomes more\napparent why a particular broadcast interface was added as\ntransit or stub interface.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b4b359a265f1b6272b4eb17c11e9c6ef9817f34b",
      "tree": "f6721202e8ee9f44ccdc54a61e4b74c6552912c0",
      "parents": [
        "8afee5c1729e56f74d27ceb1766bea9f943f060c"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Mon Apr 28 10:58:06 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:41 2014 +0200"
      },
      "message": "ospfd: For an ABR, ensure the right LSID is MaxAge\u0027d\n\nPROBLEM:\n\nAccurate garbage collection of maxage LSAs. The global OSPF structure has\na maxage_lsa tree - the key to the tree is \u003cls-id, adv-router\u003e tuple. Suppose\nthe ABR has multiple areas and has originated some intra-area LSAs. The\nkey for all those LSAs is the same. The code then ends up in a state where\nall but the first LSA do not get cleaned up from the areas\u0027 LSDB. A subsequent\nevent would readvertise those LSAs.\n\nPATCH:\n\nSince the LSA is going to stick around till it actually gets cleaned up by\nthe maxage_walker, make the LSA pointer as the key. Each distinct LSA that\ngets maxage\u0027d then gets added to the tree and will get cleaned up correctly.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\n[CF: Use CHAR_BIT; use uintptr_t; use sizeof(field) instead of sizeof(type)]\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n[DL: this must remain a temporary fix! needs to be redone after 0.99.23]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8afee5c1729e56f74d27ceb1766bea9f943f060c",
      "tree": "2a3fb12d1a3f951d17df4299266eda47ec85087c",
      "parents": [
        "e387dfd18ded3ddfef4c0a9cb896f73831864579"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Apr 28 08:04:59 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:37 2014 +0200"
      },
      "message": "ospfd: clarify indentation and comments in ospf_lsa_maxage_delete\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e387dfd18ded3ddfef4c0a9cb896f73831864579",
      "tree": "9632ef5671fdbc44f43333427154002484c768e2",
      "parents": [
        "49d7af115177d05bd66d3115cbacd56a7591ec5e"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Apr 28 08:04:58 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:31 2014 +0200"
      },
      "message": "ospfd: fix a reference counting issue introduced by commit 4de8bf0011\n\nCommit 4de8bf0011 added a return statement to a loop iterating over a\nroute_table. That loop uses route_top/route_next.\n\nAs commit 4de8bf0011 failed to add a route_node_unlock before the\nreturn statement, a reference is leaked when this codepath is taken.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "49d7af115177d05bd66d3115cbacd56a7591ec5e",
      "tree": "7082972f63b091f0e8bcbbf9a285fe10e5136a8d",
      "parents": [
        "4b4bda9bb1913579bd54667f62fafe58e2746478"
      ],
      "author": {
        "name": "Lu Feng",
        "email": "lu.feng@6wind.com",
        "time": "Fri Feb 21 08:11:15 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:28 2014 +0200"
      },
      "message": "ospfd: check the LS-Ack\u0027s recentness instead of only comparing the #seq\n\nISSUE:\n\nRTA(DR)-----(BackupDR)RTB\n\nRTA advertises a new LSA to RTB, and then flushes the LSA (with setting\nthe age of the LSA to MaxAge) within 1 second. Then the LSA is deleted\nfrom RTA, while it still exists on RTB with non-MaxAge and can not be\nflushed any more.\n\nFIX:\n\nThe reason can be explained in below:\n\na) RTA -- new LSA, #seq\u003d1 --\u003e RTB (RTB will send the delayed Ack in 1s)\nb) RTA -- MaxAge LSA, #seq\u003d1 --\u003e RTB (RTB discards it for the MIN_LS_ARRIVAL)\nc) RTA \u003c-- Ack for the new LSA, #seq\u003d1 -- RTB (RTA accepts it)\n\nIn the step c), ospf_ls_ack() compares the #seq of the entry in the LS-Ack\nwith that of local MaxAge LSA. The #seq of the two entries are same. So\nthe Ack is accepted and the LSA is removed from the retransmit-list (while\nit should not).\n\nIn RFC2328, section  13.7.  Receiving link state acknowledgments:\n\no   If the acknowledgment is for the same instance that is  \u003c\u003d\u003d\n    contained on the list, remove the item from the list and\n    examine the next acknowledgment.  Otherwise:\n\nwhere \"same instance\" does not mean the same #seq. We must call\nospf_lsa_more_recent() to check whether the two instances are same.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4b4bda9bb1913579bd54667f62fafe58e2746478",
      "tree": "11b3a421f85686544d95425c13608736226a7225",
      "parents": [
        "7a9d983e4f961c2103f2cf82a51d5d8321ad0e43"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Jul 11 07:56:29 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:22 2014 +0200"
      },
      "message": "ospfd: don\u0027t allow to set network type on loopback interfaces\n\nOSPFd only allocates some stub information for loopback interfaces.\nThis causes a crash when the interface state machine is started on\nthat interface by configuring a different network type.\n\nIt doesn\u0027t make much sense to configure the network type of a loopback\ninterface, therefore, just forbid it.\n\nSee also bugzilla #670.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7a9d983e4f961c2103f2cf82a51d5d8321ad0e43",
      "tree": "11557e052ccb1f7606501a05eb5a1dc4d22dbdab",
      "parents": [
        "24c84dbe806084552d7bb14b9f1d00514a048b9d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Jul 10 11:56:18 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:08 2014 +0200"
      },
      "message": "ospfd: run DR election prior to LSA regeneration\n\nThe results from DR election are used when constructing router-LSAs.\nE.g. they are used to determine whether a broadcast interface should\nbe added with a link type of stub interface or transit interface.\n\nTherefore, we should run DR election prior before regenerating LSAs.\n\nBefore commit c363d3861b5384a31465a72ddc3b0f6ff007a95a the DR election\nwas called synchronously prior to router-LSA regeneration which was run\nasynchronously.\n\nThis fixes bug #761 on the Quagga bugzilla.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "24c84dbe806084552d7bb14b9f1d00514a048b9d",
      "tree": "cb53212866638b8aa559e573aa320f027d7ed8b7",
      "parents": [
        "4becea724ccd87e88f8454622ae227308b5fa3ce"
      ],
      "author": {
        "name": "Ken Williams",
        "email": "kenneth.j.williams@intel.com",
        "time": "Tue Apr 15 02:23:11 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 22 21:17:26 2014 +0200"
      },
      "message": "zebra: Change the mechanism for comparing route ID\u0027s.\n\nThe current format uses subtraction of two ints. Unfortunately, the\nsubtraction method does not work for all combinations of numbers.\nFor example, the with numbers represented by 10.x.x.x and 192.x.x.x,\n10.x.x.x - 192.x.x.x will yield a very large positive number indicating\nthat 10.x.x.x is larger.\n\nSigned-off-by: Ken Williams \u003ckenneth.j.williams@intel.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4becea724ccd87e88f8454622ae227308b5fa3ce",
      "tree": "a1e07f06ae43698a72a15ee801de86ce3d9ffdf4",
      "parents": [
        "514991c76366c2a9f4c644714ad0722df0eed532"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 19 14:11:42 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 22 21:17:00 2014 +0200"
      },
      "message": "lib: use heap to manage timers\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "514991c76366c2a9f4c644714ad0722df0eed532",
      "tree": "e9cb854e881c4733b3aa5145d7c17388ee99f035",
      "parents": [
        "ba32db1e854ff2b26861a2d4e4193a9f1b3816cd"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 19 14:11:41 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 22 21:16:10 2014 +0200"
      },
      "message": "lib: remove unused thread_master_debug function\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ba32db1e854ff2b26861a2d4e4193a9f1b3816cd",
      "tree": "ac1e4d87ad17a4ae653576009800b4077c4db00f",
      "parents": [
        "6f2a67031cfb21362fc7ecd3251761799c8ffe27"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 19 14:11:40 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 22 21:15:11 2014 +0200"
      },
      "message": "tests: Add tests for timers\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6f2a67031cfb21362fc7ecd3251761799c8ffe27",
      "tree": "514ba2ef904d56131bffaa5fbc40443826529641",
      "parents": [
        "cd40b329a2e4da882bcad0431c048c876bbeafbd"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:52 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 20:21:42 2014 +0200"
      },
      "message": "ospfd/ospf_vty.c: use keyword cmd style\n\nUse the new keyword command style for:\n\n  - default-information originate\n  - distance ospf\n  - redistribute\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "cd40b329a2e4da882bcad0431c048c876bbeafbd",
      "tree": "cfbdec5a7559c6d3e56766797896a18809aa1746",
      "parents": [
        "e712d0e3667ffad8109ef8bce3ce01927ee95bb7"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:51 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 20:21:41 2014 +0200"
      },
      "message": "lib/command.c: rewrite command matching/parsing\n\nAdd support for keyword commands.\n\nIncludes new documentation for DEFUN() in lib/command.h, for preexisting\nfeatures as well as new keyword specification.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e712d0e3667ffad8109ef8bce3ce01927ee95bb7",
      "tree": "7d3fd696c771e742c20135a12b4a8f1e382944ac",
      "parents": [
        "8f399b0e4fff2344d75ebf709e1ce55f15269db2"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 19:34:55 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 20:21:19 2014 +0200"
      },
      "message": "tests: fix build \u0026 disable testcommands\n\nThe perils of having tests, the test wasn\u0027t tested thoroughly enough...\nFixup various automake problems, and then disable it since it depends on\nconfigure parameters in its current version.\n\nFor 0.99.24 we can ship a static copy of vtysh_cmd.c and have it\nreenabled.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8f399b0e4fff2344d75ebf709e1ce55f15269db2",
      "tree": "e9a2384156a90267a846b03c51435618b2427b1c",
      "parents": [
        "2b00515a9b639fd1e057f3ebf10ded2dde920764"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:50 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:38:29 2014 +0200"
      },
      "message": "tests: add a test program for lib/command.c\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2b00515a9b639fd1e057f3ebf10ded2dde920764",
      "tree": "1167cb145764208a132599e5d83980708501bac4",
      "parents": [
        "f7bf41534e885c7bc077529c591a1bce24a5f1e9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:49 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:32:49 2014 +0200"
      },
      "message": "bgpd, ospfd, zebra: fix some DEFUN definitions\n\nFixup some DEFUNS with incorrect command strings or mixed up helpstrings.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f7bf41534e885c7bc077529c591a1bce24a5f1e9",
      "tree": "2c119e01872468b249bba44e5f7d20da67147756",
      "parents": [
        "db19c85679b08668c3dce73a655c21753042cf06"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 17:10:21 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:27:58 2014 +0200"
      },
      "message": "zebra: apply syntactic sugar to rib_dump()\n\nstrip the explicit __func__ present on all calls and make the prefix\nargument a transparent union.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "db19c85679b08668c3dce73a655c21753042cf06",
      "tree": "d36e66a2a34265b9a31bd93ed6bf00d7973b1232",
      "parents": [
        "98a59492d9152df8c93612d2d12f170b5c034189"
      ],
      "author": {
        "name": "Brett Ciphery",
        "email": "brett.ciphery@windriver.com",
        "time": "Thu Oct 03 13:48:54 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:27:53 2014 +0200"
      },
      "message": "zebra: set metric for directly connected routes via netlink to 0\n\na value of 1 is hard coded for the metric field, much like the\nifconfig utility it may have roots in.  in order to be in line\nwith the metric used in the linux kernel itself, we switch this\nto 0.\n\nSigned-off-by: Brett Ciphery \u003cbrett.ciphery@windriver.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "98a59492d9152df8c93612d2d12f170b5c034189",
      "tree": "e1c2944f409d2fff83f0498ce5e0504f8d03bf13",
      "parents": [
        "8c99b4c11e69e4cf0ac03c551764cccc0a3fe35a"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Aug 01 08:12:25 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:23:21 2014 +0200"
      },
      "message": "build: remove now-useless --{en, dis}able-tests\n\ncommit d771020 \"don\u0027t build tests unless make check is run\" has made the\n --{en,dis}able-tests switch completely useless.  The differentiation is\nnow made by running \"make check\" or not doing so.  The only effect of\nthe switch is an \"empty\" excursion of make into the tests/ directory.\n\n(well, and it turns \"make check\" useless from the main directory if\n --disable-tests is given, which I don\u0027t think makes sense either)\n\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8c99b4c11e69e4cf0ac03c551764cccc0a3fe35a",
      "tree": "930f0e123c239adf23553dfb3d5b5e4f83ab0e5e",
      "parents": [
        "af514777f4327932a3e84f83d79e941967503e15"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Aug 01 07:43:36 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:20:44 2014 +0200"
      },
      "message": "build: improve backtrace support/detection\n\nlibexecinfo is used to provide backtrace() on *BSD.  The API is\ncompatible with glibc\u0027s, so this is a \"free\" improvement.\n\nTo improve configure behaviour, the following configure options are\nmodified/introduced:\n\n* --enable-gcc-rdynamic now defaults to \"on\" if the compiler is gcc.\n  (I sadly wasn\u0027t able to find any documentation on the availability of\n  this option for llvm, even though at least the version I have\n  installed does support it)\n\n* --enable-backtrace has been added.  This behaves as off/auto/on\n  switch, i.e. giving either {dis,en}able will result in the requested\n  behaviour (or an error if support wasn\u0027t found)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "af514777f4327932a3e84f83d79e941967503e15",
      "tree": "68ddb2e6dd758b2c50f3a4facea1dfc925460312",
      "parents": [
        "6d729eeac91578dca29961e0e46f246f33c37f0c"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Wed Jul 31 16:16:05 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:14:44 2014 +0200"
      },
      "message": "lib: fix possible off-by-one in stream_put_prefix()\n\nThe STREAM_WRITEABLE() call only checks if there is space for the\nprefix in the stream but does not account for the prefixlen. The\nstream_putc() call reduces available space by 1 and we can end\ncopying one byte too much and with \"endp\" off by one if we are\nnear the buffer end.\n\nInstead of moving the stream_putc() call before STREAM_WRITEABLE(),\nwe check before hand for the required space, and open-code it. This\navoids a function call and verifying again the stream buffer.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6d729eeac91578dca29961e0e46f246f33c37f0c",
      "tree": "38727ce4ac7c9d6e06298e374ed1a526fe8effb3",
      "parents": [
        "4d474fa3297c0d5d632e2c0bff6ccb0edbedaa5d"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Wed Jul 31 15:01:18 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:13:02 2014 +0200"
      },
      "message": "lib: fix for dynamically grown hashes\n\nFixes commit 97c84db00c (hash: dynamically grow hash table). The\nno_expand field it\u0027s not initialized and could make the hashes to\nnever grow the table index.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4d474fa3297c0d5d632e2c0bff6ccb0edbedaa5d",
      "tree": "61ca2f19e552df821eb2dc06cd9e06c81993aacf",
      "parents": [
        "c78a46c27f6dfdd42fe0800cebabc1e49cb0a4bf"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 19 15:00:06 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 21 06:28:48 2014 +0100"
      },
      "message": "lib: fix backtraces broken by 837d16c...\n\n837d16c (\"*: use array_size() helper macro\") accidentally changed one of\nthe expressions in the backtrace code, which afterwards read:\n\nzlog_backtrace_sigsafe():\n  if (((size \u003d backtrace(array,array_size(array)) \u003c\u003d 0) ||\n\nwhich boils down to: (size \u003d backtrace(...)  \u003c\u003d 0).  The braces were\nintended to go:      (size \u003d backtrace(...)) \u003c\u003d 0.\n\nAll in all, this makes a nice textbook example of the original author\nbeing too clever (trying to save a single line by pulling the assignment\ninto the condition) and the next person touching the code tripping over\nit...\n\nThis code occurs another time in zlog_backtrace() where it is actually\ncorrect.  Pulling out the assignment nonetheless.  Also, new test\nprogram.\n\nCc: Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\nCc: Balaji.G \u003cbalajig81@gmail.com\u003e\nCc: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c78a46c27f6dfdd42fe0800cebabc1e49cb0a4bf",
      "tree": "5d88a885415f3b5e63f7dac5c72dcbcc647a7dfb",
      "parents": [
        "fd5006896fce2816244c1ef4cabc736279548538"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Mar 20 10:50:09 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 21 06:28:48 2014 +0100"
      },
      "message": "ospf6d: fix refcounting in ospf6_asbr_lsa_remove\n\nWhen iterating over a list, also the last node should be unlocked again.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fd5006896fce2816244c1ef4cabc736279548538",
      "tree": "c9fb889019186c6aa7c800643f3ff1d9171a96a7",
      "parents": [
        "c19543b223d3b8463c048f346b8044589e0cce39"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Wed Oct 24 14:45:54 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 21 06:28:48 2014 +0100"
      },
      "message": "ospf6d: add \"auto-cost reference-bandwidth\" command\n\nThis command allows the user to change to default reference bandwidth\nfor cost calculations. The default value is 100 Mbps. With a default\nbandwidth of 10 MBps, the default cost becomes 10. Those values are\nconsistent with OSPFv2.\n\n[DL: resolved conflicts in vty command additions \u0026 docs]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c19543b223d3b8463c048f346b8044589e0cce39",
      "tree": "7da71baef36e7c7b4e628c645580f8cc18c1aabe",
      "parents": [
        "1db65fadf627637621c342b789b9a3604ca5fab5"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Wed Oct 24 14:45:53 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 21 06:28:47 2014 +0100"
      },
      "message": "ospf6d: compute interface cost from its bandwidth\n\nPreviously, the interface cost was a fixed default value that a user\nwas allowed to change with \"ipv6 ospf6 cost XX\". As what is done with\nOSPFv2, we change this behaviour to compute the default interface cost\nfrom the interface bandwidth.\n\nThe user can still force a cost with \"ipv6 ospf6 cost XX\". He can get\nthe default value with \"no ipv6 ospf6 cost\". Moreover, the default\ncost value was 1. The cost is now computed from the bandwidth and a\ndefault reference bandwidth of 100 MBps (as for OSPFv2). Since the\ndefault bandwidth for an interface is 10 MBps, the \"default\" cost\nbecomes 10 instead of 1.\n\n[DL: resolved conflict in ospf6d/ospf6_interface.c]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1db65fadf627637621c342b789b9a3604ca5fab5",
      "tree": "546c769ca03e71e6c7bb55a52b4f7ea525542864",
      "parents": [
        "e708ed69aa0b993527f48b1f31b645c00750927f"
      ],
      "author": {
        "name": "Ingo Flaschberger",
        "email": "if@xip.at",
        "time": "Sun Apr 17 18:28:20 2011 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 21 06:28:23 2014 +0100"
      },
      "message": "ospf6d: solve segfaults with ospf6d on FreeBSD\n\nDo not send ospf6d hellos on fresh created interfaces without\nconfiguration (ie. no vlan configured).  Ospf6d use ip6_mtu, if it\u0027s not\ninitalised, Ospf6d tries to alloc indefinite size of memory.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e708ed69aa0b993527f48b1f31b645c00750927f",
      "tree": "8f33d73b2a85b51c042318d58a1750eeb8019616",
      "parents": [
        "a11e012e8661629d665e992e765741a5eaa7d017",
        "424cc3bd48da0f417c9056c5c2ade697a3386cd4"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 17:04:25 2014 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 17:04:25 2014 +0100"
      },
      "message": "Merge volatile/cumulus_ospf6d\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "424cc3bd48da0f417c9056c5c2ade697a3386cd4",
      "tree": "1d0e9a71f6c27b64d435c276a100f046c30e2a8b",
      "parents": [
        "11b4f01355703d34099d4da145c7d92e32d98636"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Nov 23 16:55:36 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 08:45:29 2014 +0100"
      },
      "message": "ospf6d: fix interface_down() stopping hellos\n\ninterface_down() - which also handles some nonobvious cases like the\nlast linklocal address disappearing - was previously not cancelling the\nhello timer.  This had the effect of multiple such threads ending up\nscheduled after a quick down-up cycle.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "11b4f01355703d34099d4da145c7d92e32d98636",
      "tree": "e895a3794edbfe60c481954ed4ad79fcc2b661c3",
      "parents": [
        "b13c1d9299d6426f48f074545f3e403e5a9b8a61"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Dec 09 16:48:55 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 08:45:29 2014 +0100"
      },
      "message": "ospf6d: clear lsa-\u003erefresh before clearing LSAs\n\nThis fixes a SEGV when we receive a higher-SeqNum copy of a LSA that we\noriginated ourselves, before a reboot of ospf6d.  We create a new\ncopy of the LSA to resync the SeqNum, but then half an hour later\nthe old refresh thread ends up trying to refresh the free()\u0027d old LSA.\n\nThe SEGV is triggered by this chain:\n  ospf6_lsdb_maxage_remover\n  -\u003e thread_execute(ospf6_lsa_refresh)\n     -\u003e old-\u003erefresh \u003d NULL\nWhich assumes that old-\u003erefresh is no longer scheduled to run, as it is\nbeing run right there.  But the thread_execute() doesn\u0027t know about\nold-\u003erefresh and therefore didn\u0027t remove it.\n\n(Found by ANVL OSPFV3-16.17)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b13c1d9299d6426f48f074545f3e403e5a9b8a61",
      "tree": "b313288f60c8d76a16e4f9f1796e934c0c8fefc0",
      "parents": [
        "d9628728e0924ae13ef6e8f8a67a2c9802745184"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Dec 13 16:11:16 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 08:45:20 2014 +0100"
      },
      "message": "ospf6d: handle missing link local address more gracefully\n\nospf6 can\u0027t run on an interface without a link local address.\nDon\u0027t start the state machine when an interface comes up without\nsuch an ip and bring it up later, when a usable link local\naddress is added.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d9628728e0924ae13ef6e8f8a67a2c9802745184",
      "tree": "af4cee6c7018580655cb53a0900471128cc0a8bb",
      "parents": [
        "37531a7ec380554b18c004bcae9f5a070385d132"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Mar 08 21:47:35 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 08:44:05 2014 +0100"
      },
      "message": "ospf6d: improve ordered shutdown\n\nImprove the _disable/_enable infrastructure so it gets into\na more usable shape and make \u0027no router ospf6\u0027 actually work.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a11e012e8661629d665e992e765741a5eaa7d017",
      "tree": "d6967d9c5044f8c924aa2f4b62bac8e3bda358e2",
      "parents": [
        "b52aef18a9f3acc8b24ab5c2631dc574b8e2ec70"
      ],
      "author": {
        "name": "Remi Gacogne",
        "email": "rgacogne-github@coredump.fr",
        "time": "Sun Sep 08 13:48:34 2013 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Tue Feb 11 10:28:03 2014 +0100"
      },
      "message": "security: Fix some typos and potential NULL-deref\n\nThis patch against the git tree fixes minor typos, some of them possibily\nleading to NULL-pointer dereference in rare conditions.\n\nSigned-off-by: Remi Gacogne \u003crgacogne-github@coredump.fr\u003e\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "b52aef18a9f3acc8b24ab5c2631dc574b8e2ec70",
      "tree": "bfa979bb182304582f6c03884e8c4e3c27c22165",
      "parents": [
        "23f5f7c3dd805b7d6a46d86d23aaa5c71273a84a"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Nov 27 17:06:15 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Feb 11 04:53:14 2014 +0100"
      },
      "message": "zebra: log routes w/o gateway in rib_delete_ipv4\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "23f5f7c3dd805b7d6a46d86d23aaa5c71273a84a",
      "tree": "9e512404ad6146e17ee689c16e1509e692d9101c",
      "parents": [
        "a25a1264a5615a90e9ca9f60ccc1f397ca55bc56"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Nov 27 17:06:14 2013 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Mon Feb 10 22:38:00 2014 +0100"
      },
      "message": "zebra: match gateway when deleting NEXTHOP_IPV4_IFINDEX routes\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "a25a1264a5615a90e9ca9f60ccc1f397ca55bc56",
      "tree": "358307c0bf0d047c7279708ceed154f05dcbc707",
      "parents": [
        "6ee06fa9ed91412cb745668d462031cdbe2642e0"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Nov 27 14:36:05 2013 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Mon Feb 10 22:07:11 2014 +0100"
      },
      "message": "ospfd: fixup log message in ospf_zebra_delete\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "6ee06fa9ed91412cb745668d462031cdbe2642e0",
      "tree": "107e951abc716c2ca15fbcc62bdb0858b35036e8",
      "parents": [
        "a83a1e9c2f035d3152451dcfc97ab13b4ac427b9"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Sun Jan 12 18:30:13 2014 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Mon Feb 10 09:37:30 2014 +0100"
      },
      "message": "bgpd: bgpd-set-v4-nexthop-for-v6-peering.patch\n\nBGP: While advertising v4 prefixes over a v6 session, set the correct v4 nexthop.\n\nISSUE:\n\nFor an IPv6 peer, BGPd sets the local router-id as the next-hop\u0027s v4 address.\nThis is incorrect as the router-id may not be a valid next-hop to be included\nin UPDATEs that contain v4 prefixes.\n\nPATCH:\n\nSet the v4 address in the next-hop field based on the interface that the\npeering is on (directly connected interface or loopback).\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "37531a7ec380554b18c004bcae9f5a070385d132",
      "tree": "fb1893fcf7be8f613a3cd0a82f0150af4a3974f7",
      "parents": [
        "1579a67f130ca34df9acefac14ebcdfdd8f6600a"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Dec 13 13:50:28 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Nov 20 10:35:59 2013 +0100"
      },
      "message": "ospf6d: clear DR info on interface_down\n\nThis fixes an issue where ospf6d would send incorrect hellos and\nperform wrong DR election when an interface went down and up\nagain.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1579a67f130ca34df9acefac14ebcdfdd8f6600a",
      "tree": "8c12770a8628fc786e08c08a125114f7d56b66d4",
      "parents": [
        "7d4aa1d57d54a57aae78e6b12cf4524e2c43a514"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Mar 08 02:35:38 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Nov 20 10:35:59 2013 +0100"
      },
      "message": "ospf6d: set cmsg size correctly\n\nOn both Linux and FreeBSD, msg_controllen should be set to\nCMSG_LEN, not CMSG_SPACE. This avoids sending 4 bytes of\ntrailing garbage to the kernel.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7d4aa1d57d54a57aae78e6b12cf4524e2c43a514",
      "tree": "f6c80b75e1f258a9bc3fa7a452807a5762ca7465",
      "parents": [
        "ba960d5ae43e49991ed70fbe9ffa2e4567437a31"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Dec 13 16:10:05 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Nov 20 10:35:59 2013 +0100"
      },
      "message": "ospf6d: don\u0027t run DR election early on \"ipv6 ospf6 priority\"\n\nOn changing the router priority, DR election should only be run when it\nwas completed at least once before.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ba960d5ae43e49991ed70fbe9ffa2e4567437a31",
      "tree": "8ffe0291edf209d936ce874c7a7104369f611e7e",
      "parents": [
        "a0edf6740e8203abec1ee3efa344a417c16fec7b"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Aug 26 03:40:37 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Nov 20 10:35:59 2013 +0100"
      },
      "message": "ospf6d: fix integrated config\n\nWith integrated config, the line defining an interface to be p2p is defined\nbefore assigning the interface to an area. When during the interface\ntransition, there is an attempt to generate a router LSA, the process\ncrashes. This fix addresses that.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a0edf6740e8203abec1ee3efa344a417c16fec7b",
      "tree": "501efcc33069c129987ac1ec98dd0656ad67e278",
      "parents": [
        "3d35ca482babab4267570143b8327fc894df0ff8"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Aug 26 03:40:23 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: add SPF logs, statistics, and display of SPF parameters\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\n[DL: adapted to rebase / readded randomly lost line]\n[DL: killed timeval_subtract]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3d35ca482babab4267570143b8327fc894df0ff8",
      "tree": "594c2040b3746a16780d748f24f395688751dd4f",
      "parents": [
        "7cf997226e86d98839f1e7872ca98b023ffea98e"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Aug 26 03:40:16 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: add \u0027log-adjacency-changes [detail]\u0027\n\nSimilar to OSPFv2, add support for \u0027log-adjacency-changes [detail]\u0027 to log\nchanges in adjacency state of ospfv3 neighbors.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7cf997226e86d98839f1e7872ca98b023ffea98e",
      "tree": "4407f125907aa5ac7a524d7bf71b9e0028f4c6cb",
      "parents": [
        "01879114f73adaf1cd4c9f5e7ae1550b72ff9ca9"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sun Aug 25 03:03:39 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: don\u0027t send LSAck on an interface if we\u0027ve flooded the LSU out that i/f\n\nIf we flood an LSA back out the same interface we received it from, don\u0027t send\nan LSAck out that interface for that LSA. This is as per RFC 2328, section 13.5\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "01879114f73adaf1cd4c9f5e7ae1550b72ff9ca9",
      "tree": "95f60a636ad4e2ebb0c55f31301a897fb6559b24",
      "parents": [
        "e68a67672ccfabefadac36c66e88af997fb572b2"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sun Aug 25 03:03:31 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: handle Prefix and Router Options bits correctly\n\nEnsure that prefixes with the NU/LA bit set do not get added to the routing\ntable. Ensure that routers with the V6/R bit set do not get added as transit\nroutes.\n\nSigned-off-by: Dinesh Dutt \u003cddutt at cumulusnetworks.com\u003e\n[DL: adjust to rebase]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e68a67672ccfabefadac36c66e88af997fb572b2",
      "tree": "7f5b3c1386121457cc5052fc2530018093d947ae",
      "parents": [
        "931b1b8c9a612665391ed43653c970fcb38bbbf0"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sun Aug 25 03:03:23 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: add LSA payload to show summary output\n\nUnlike OSPFv2, the LSID of an LSA isn\u0027t sufficient to know what the contents\nof the LSA are. Its useful for debugging and basic eyeball tests to see the\ncontents of the LSA in the simple tabular format of \"show ipv6 ospf6 database\".\nThis patch adds that output to the command. It replaces the existing fields of\n\"duration, Chksum and Length\" with a single field called Payload which is\ndependent on the LSA type. For Inter-Area Prefix, Intra-Area Prefix and\nAS-External LSAs, this will be the advertised prefix/prefix length, for Router\nLSAs, it is RtrID/IfID etc.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\n[DL: rebase fix, line disappeared in ospf6_abr_originate_summary_to_area]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "931b1b8c9a612665391ed43653c970fcb38bbbf0",
      "tree": "570f2aca4df8ef6a394925c5a1b7c9e772d3d1a1",
      "parents": [
        "7a10a359e9740710c1e39c8be0f761f506795480"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sun Aug 25 03:03:15 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: increment dbdesc seqnum on SeqNumberMismatch/BadLsReq event\n\nAs per RFC 2328, section 10.3, if the neighbor state machine reaches\nSeqNumberMismatch state when the NSM is in state Exchange or greater,\n\"router increments the DD sequence number in the neighbor data structure,\ndeclares itself master (sets the master/slave bit to master), and starts\nsending Database Description Packets, with the initialize (I), more (M)\nand master (MS) bits set.\".\n\nThe existing code doesn\u0027t increment the DD SeqNum. This patch fixes that.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7a10a359e9740710c1e39c8be0f761f506795480",
      "tree": "acf3db650a76ef97da33b0703d97920ea3d8e53a",
      "parents": [
        "3b220289a4d0da4539d965ca71e9479d68c87b11"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sun Aug 25 03:03:07 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: don\u0027t change SeqNum on initial DbDesc message\n\nThe code was setting the DbDesc seqnum to the current seconds value of time if\nthis was the initial DbDesc. However, the same code was getting invoked if the\ninitial DbDesc was retransmitted. Caused ANVL test XX.XX to fail.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3b220289a4d0da4539d965ca71e9479d68c87b11",
      "tree": "232f6c56c5c12cf292937f7b21b002ef63b8c7e3",
      "parents": [
        "f41b4a021659dd48d62b1a7aac4b28e3663dbdaa"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 08:00:44 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: handle seqnum wrapping\n\nSigned-off-by: Shrijeet Mukherjee \u003cshm at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\n[DL: mechanical adjust to rebase]\n[DL: adjust to removal of timerwheel code]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f41b4a021659dd48d62b1a7aac4b28e3663dbdaa",
      "tree": "ec4595f0d79279eef4da07145a30d104604b0035",
      "parents": [
        "e7ad6b20d7a7c63ed7c640ab9f61c853e77508c5"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 08:00:37 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: add overload support\n\nOSPFv3: Support setting/clearing overload bit on router\n\nIt is sometimes necessary for a router to gracefully remove itself from\nthe SPF tree i.e. it cannot act as a transit router. It does this by\nsetting the overload bit in the router LSA. This patch adds support for\nenabling/disabling the overload bit.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\n[DL: patch applied with fuzz]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e7ad6b20d7a7c63ed7c640ab9f61c853e77508c5",
      "tree": "92454d3f9eca7c5f579c0c463f976e3e3b5873cc",
      "parents": [
        "b81e97a8a7f85ecc7489dc8a7c7b9d403d9c4bc6"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:57 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: fix linkdown handling\n\nEnsure OSPFv3 handles link down even correctly.\n\nOSPFv3 checks only the administrative status of a link instead of its\noperative status. This prevents it up from detecting a real link down\nevent and reacting appropriately. Only protocol timer timeouts make it\ndetect a link down eventually. This patch makes it look for the operative\nstatus of a link instead of admin status.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: James Li \u003cjli at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b81e97a8a7f85ecc7489dc8a7c7b9d403d9c4bc6",
      "tree": "48e2c8492f01cc177a6691878cf4e5a329fe4d2d",
      "parents": [
        "17d003da963d6294e5ab95c690de285eccf0bac0"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:50 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: correct nexthop through directly connected networks\n\nThis is implementing this part of RFC 2328:\n\nThis is the \"first case\", see below,\n\n16.1.1. The next hop calculation\n\n...\nIf there is at least one intervening router in the current\nshortest path between the destination and the root, the\ndestination simply inherits the set of next hops from the\nparent. Otherwise, there are two cases. In the first case,\nthe parent vertex is the root (the calculating router\nitself). This means that the destination is either a\ndirectly connected network or directly connected router.\nThe outgoing interface in this case is simply the OSPF\ninterface connecting to the destination network/router.\n...\n\nThe current Quagga code always tries to inherit the nexthop from\na parent vertex, but does not cover the case that the destination\nis directly connected to the root vertex. This patch adds support\nfor that case.\n\nSigned-off-by: James Li \u003cjli at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "17d003da963d6294e5ab95c690de285eccf0bac0",
      "tree": "3972c371b676459408d560f4a18dc16295b70c54",
      "parents": [
        "e39d05384d4563f04edf339bbd67a117dd18e533"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:43 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: don\u0027t suppress empty router LSA\n\nCurrently in OSPFv3 implementation, if all the interfaces are down/loopback\nor are without any full adjacencies, the router LSA is suppressed. So for\na router with only stub networks, no router LSA is generated. However,\nintra-prefix LSAs are generated for the stub networks and these intra-prefix\nLSAs will reference the router LSA. So the router LSA really should not be\nsuppressed. It needs to be generated to be the starting vertex for SPF\nw.r.t the stub networks.\n\nSigned-off-by: James Li \u003cjli at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e39d05384d4563f04edf339bbd67a117dd18e533",
      "tree": "5c1ea95d4fcd993014974c862c4b97c8064e7a5f",
      "parents": [
        "a765eb9383c53c68523a67b36cea92eadf6f3439"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:36 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: turn off expensive debugging\n\nOSPF6 has very expensive LSDB and route debug on by default. This needs to be\nturned off for scaled performance.\n\nSigned-off-by: James Li \u003cjli at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003eSummary:\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a765eb9383c53c68523a67b36cea92eadf6f3439",
      "tree": "16fa0d6d9bb3ddda5b01d01f31c1eeffd02ded8a",
      "parents": [
        "eb82e9ee81792f86548d4937486b5dcbbd411a98"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:14 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: convert LSDB to use route_node, improve performance\n\nthe performance in the presence of a large number of LSAs. I also verified\nthat the performance improvements stayed in the presence of a large number\nof peers (I tested upto 128).\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003eSummary:\nReviewed-by: James Li \u003cjli at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "eb82e9ee81792f86548d4937486b5dcbbd411a98",
      "tree": "9c1f216017923cc40af71755506dc35c5c2c0fbc",
      "parents": [
        "c5926a92235874574b20e426a3752c1451a90ec7"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:07 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: fix neighbor state machine (faster lsdb sync, RFC compliance)\n\nThe OSPFv3 code doesn\u0027t do the following things right as part of an adjacency\nbringup:\n - Transmit DbDesc frames appropriately to ensure faster state transition to\n   Loading state\n - Transmit LsReq frames when switching to exchange state and on receipt of\n   an LS update in Loading state\n - Requesting LSAs multiple times in LsReq.\n\nIt currently uses retransmit timer expiry to send the LsReq and DbDesc frames\nwhich significantly slows down large lsdb syncs.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c5926a92235874574b20e426a3752c1451a90ec7",
      "tree": "c8b8b66eee832e3db5e5d315e966b168918ef57e",
      "parents": [
        "bf986da797e7d2a0aaae313fea626ba433581f03"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:00 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: add p2p interface support\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: Ayan Banerjee \u003cayabaner at gmail.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nReviewed-by: James Li \u003cjli at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "bf986da797e7d2a0aaae313fea626ba433581f03",
      "tree": "79e852020d1f9eb2be774d3050dcc1ea3a88e73b",
      "parents": [
        "8ae454e779d5620576990f4bf5da3a35f913cc4d"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:50 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: fix various bugs in installing and flooding LSAs\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8ae454e779d5620576990f4bf5da3a35f913cc4d",
      "tree": "cbfb907e0aeef1d5b3076629c8e8d510bb326068",
      "parents": [
        "09df4574b95dbb5880eb2d3c3c3c900687a9a3ef"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:41 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: add more details to show ipv6 ospf6 data\n\nSpecifically, it displays the flags, lock and retransmission count fields.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: JR Rivers \u003cjrrivers at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "09df4574b95dbb5880eb2d3c3c3c900687a9a3ef",
      "tree": "b332c0a50379a5efea3ecb9e29931dcd03e0a0ab",
      "parents": [
        "ac58e143f7278d5faaad7a8672e48328b03cffa5"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:31 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: enable the commands to support detailed debugging of LSAs.\n\nThe code for the commands exists, but it hasn\u0027t been defined in the\ndefinition of the command itself. This patch fixes that.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ac58e143f7278d5faaad7a8672e48328b03cffa5",
      "tree": "52ea2eeb0cf614f9fcdf72badfc705d88f623ee3",
      "parents": [
        "2449fcd64ae95d5fbfd95d93468fc57003def57d"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:24 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: remove older version of LSA from neigbor retx list before prematurely aging it.\n\nSee comment in code for very detailed issue and fix.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2449fcd64ae95d5fbfd95d93468fc57003def57d",
      "tree": "8c152a482f2080ee425cd06381861d2bf69769d4",
      "parents": [
        "3810e06eebe14f75c66fb17a88574384573e95fa"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:17 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: reinvoke MaxAge remover thread if not all MaxAge LSAs were flushed.\n\nMaxAge LSAs are being flushed out only on an event, unlike OSPFv2 where they\u0027re flushed out\nperiodically. This causes certain LSAs to hang around forever, never getting flushed out.\nThis patch makes flushing out MaxAge LSAs periodic, retriggered after a certain period if\nnot all MaxAge LSAs were flushed out.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3810e06eebe14f75c66fb17a88574384573e95fa",
      "tree": "0e7ba30d0b24d1ea874eb257b78fdeed2eaebf4c",
      "parents": [
        "8551e6dadce41fb87a61767af723cb25ae611a04"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:09 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:30 2013 -0800"
      },
      "message": "ospf6d: schedule SPF to run on events rather than directly on each event.\n\nOSPV3 SPF triggers on every SPF-able event instead of using timers the way\nOSPFv2 does. This patch makes SPF be triggered/throttled similar to OSPFv2.\nIt adds a command to quagga identical to the OSPFv2 equivalent to configure\nthese timers.\nSummary:\n\nSigned-off-by: Dinesh Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\n[DL: removed reference to oa-\u003ets_spf for rebase]\n[DL: killed timeval_subtract]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8551e6dadce41fb87a61767af723cb25ae611a04",
      "tree": "cb0854c2e216989a0fa211d56d2bf6fd6948b2d6",
      "parents": [
        "a83a1e9c2f035d3152451dcfc97ab13b4ac427b9"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue Oct 22 17:42:18 2013 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 18:01:31 2013 -0700"
      },
      "message": "ospf6d/ospfd: refactor some common defines\n\nRearranging common defs and structures for use betweeen OSPFv2 and\nOSPFv3.  Created a new file called libospf.h under lib directory to\nhold defines that are common between OSPFv2 and OSPFv3 code bases.\n\n[DL: split of defines refactor from timer refactor]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a83a1e9c2f035d3152451dcfc97ab13b4ac427b9",
      "tree": "fa8652ff314e4e6ac5a45192742140f2d4157d85",
      "parents": [
        "fed643f4093abc0ed5e796aab9047768f7036ed6"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 11:35:48 2013 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 11:35:48 2013 -0700"
      },
      "message": "build: fix tests/prng.h missing from dist\n\nbroken by fa713d9... \"zebra: rework recursive route resolution\", and I\nforgot to squash the fix into that.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fed643f4093abc0ed5e796aab9047768f7036ed6",
      "tree": "ffa07bd17a939b386813f5b08c8f92f302d8c505",
      "parents": [
        "f3a1732eb3bb41c094ec558d2aeee2766878a91d"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue Oct 23 16:00:42 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 10:38:35 2013 -0700"
      },
      "message": "zebra: make rib_dump() compatible with IPv6 RIB\n\n[DL: resolved conflicts in zebra_rib.c]\n[DL: fix usage with --disable-ipv6]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f3a1732eb3bb41c094ec558d2aeee2766878a91d",
      "tree": "9cc740a8d4b37bb5e1aa2c00ea1102a26d67809b",
      "parents": [
        "c3e6b595160cd3aa601ae7e1887e695710cde15d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Jul 05 15:35:41 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 18:04:40 2013 +0200"
      },
      "message": "zebra: apply route-maps for interface routes\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c3e6b595160cd3aa601ae7e1887e695710cde15d",
      "tree": "d7face57a402bd5e4bbdbbeee071df52a84a6fac",
      "parents": [
        "e8d3d2991f72613edb76dea244a8c8e4684873dd"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Jul 05 15:35:40 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 18:04:40 2013 +0200"
      },
      "message": "zebra: fix recursive-routes via ifindex routes\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e8d3d2991f72613edb76dea244a8c8e4684873dd",
      "tree": "d02f768800ebaac51439368ff3d851e63ed6359e",
      "parents": [
        "48a53dc71cb422e619859b79d5069e02fcd867d0"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Jul 05 15:35:39 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 18:04:40 2013 +0200"
      },
      "message": "zebra: implement NEXTHOP_FLAG_ONLINK\n\nOn Linux, the kernel will only allow for a route to be installed when\nits gateway is directly attached according the kernel fib.\n\nThere are cases when this restriction by the kernel is too strong, in\nthose cases, we deploy the RTNH_F_ONLINK netlink flag.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "48a53dc71cb422e619859b79d5069e02fcd867d0",
      "tree": "ff5e8148efb422e0dd074657951f5dd5a1c0150b",
      "parents": [
        "fa713d9ee5ed30dedd0a290be9aaff780a2896be"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Jul 05 15:35:38 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 18:04:40 2013 +0200"
      },
      "message": "zebra: handle blackholes encountered in recursive resolution\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fa713d9ee5ed30dedd0a290be9aaff780a2896be",
      "tree": "1d263cce70c341f3f2a73a47d4b1cd5a38b09129",
      "parents": [
        "bfac8dcd2fe7ed099a679b5c8245599c6d0312ed"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Jul 05 15:35:37 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 18:04:40 2013 +0200"
      },
      "message": "zebra: rework recursive route resolution\n\nChange the datastructure for recursive routes. This brings the following\nbenefits:\n\nBy using struct nexthop also to store nexthops obtained by recursive\nresolution, we can get rid of quite a bit of code duplication in the fib\nmanagement. (rt_netlink, rt_socket, ...)\n\nWith the new datastructure we can make use of all available paths when\nrecursive routes are resolved with multipath routes.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "bfac8dcd2fe7ed099a679b5c8245599c6d0312ed",
      "tree": "7674e567b6824aac9dfe78f0e149871b4d49a44c",
      "parents": [
        "02b4805f3914ef6ba0242c6f4dd1b6759ef97bf2"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Jan 24 14:04:50 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 17:51:16 2013 +0200"
      },
      "message": "zebra: improve interface shutdown behaviour\n\nLinux removes IPv6 addresses when the interface is set down. Those\naddresses need to be readded when the interface is set up again.\n\nAlso, an interface should not be reactivated from shutdown by configuring\nan ip address.\n\nFinally, remove the three-state logic for the shutdown setting as its\nsole current use may be mild confusion.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "02b4805f3914ef6ba0242c6f4dd1b6759ef97bf2",
      "tree": "f5194e173f172e7c75cf869c7b7621e09e5e3557",
      "parents": [
        "f7f740fe58fb838fc87e82dc7e1e2d4e5ccf085c"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Jan 24 14:04:49 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 17:51:16 2013 +0200"
      },
      "message": "zebra: don\u0027t change connected state from zebra/interface.c\n\nTry to avoid changing connected state from zebra/interface.c as this\nmeans making assumptions about kernel behaviour which may be or may\nbecome wrong. This state should rather be updated by events from the\nkernel.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f7f740fe58fb838fc87e82dc7e1e2d4e5ccf085c",
      "tree": "5f3d9c866aaf7f8f23aaa5956eb7323d49ef472f",
      "parents": [
        "c7df92de2dc91d0a934cf892e543728cb1a10849"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Jan 24 14:04:48 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 17:51:16 2013 +0200"
      },
      "message": "zebra: add ZEBRA_IFC_QUEUED to keep track of kernel state\n\nAs there are timeframes when we don\u0027t get a notification from the kernel\nabout new addresses. (e.g. while Linux performs IPv6 DAD), we need to\nhave some information whether an address has been sent to the kernel or\nnot.\n\nOne case where this is relevant would be a user adding an IPv6 address,\nbut deleting it before DAD has been complete. With the next patch which\nremoves some (ill assuming) synchronous parts in address setup,\nipv6_address_uninstall would not know whether or not it has to actually\ndelete the prefix from the kernel. Resolving these windows where we lack\ninformation is what the flag ZEBRA_IFC_QUEUED is intended for.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c7df92de2dc91d0a934cf892e543728cb1a10849",
      "tree": "81bbf6ded1b86ccd95cc76d17f9ff3cec55ad9fb",
      "parents": [
        "d7f5dad6d1ab3078fcabc79e15a88873940c074d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Jan 24 14:04:47 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 17:51:16 2013 +0200"
      },
      "message": "zebra: warn if advertising connected with _REAL unset\n\nThe implementation in zebra and the zclient protocol allow to communicate\naddresses to clients which are not yet in the kernel.\n\nThis is usually not done and most clients seem to expect an address to be\nconfigured in the kernel when they receive it. Therefore, it seems\nreasonable to issue a warning when advertising an address to the clients\nthat is not yet in the kernel.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d7f5dad6d1ab3078fcabc79e15a88873940c074d",
      "tree": "54906529478fcfbd02168a3958430ddf4c4a5139",
      "parents": [
        "676e1a0142ec8b181d4d7ea1038f461bc67c1ee1"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Jan 24 14:04:46 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 17:51:16 2013 +0200"
      },
      "message": "zebra: consolidate connected_implicit_withdraw\n\nconnected_implicit_withdraw is used at two places and followed by exactly\nthe same code. Move that code into connected_implicit_withdraw and give\nthat function a more descriptive name.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "676e1a0142ec8b181d4d7ea1038f461bc67c1ee1",
      "tree": "69b6bd044d956a591a24bed2245cc48ef2a5c06b",
      "parents": [
        "9db047fcb1bedcf1a5a1962e49aa70f48f969b96"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Jan 24 14:04:45 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 17:51:16 2013 +0200"
      },
      "message": "zebra: clear ZEBRA_IFC_CONFIGURED on \"no ipv6 addr\"\n\nTo match the semantics of IPv4, the ZEBRA_IFC_CONFIGURED flag\nshould be cleared when an IPv6 connected is uninstalled via\nvty.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    }
  ],
  "next": "9db047fcb1bedcf1a5a1962e49aa70f48f969b96"
}
