)]}'
{
  "log": [
    {
      "commit": "5bb7e4d12b3a3015208fad5ee0f3c055b704c8c4",
      "tree": "715ef4c4c267687d86e0c8fb7a494c31038c32bd",
      "parents": [
        "f281ab9752393fcc7cbb54c50edb66f25c2a31fb"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Feb 26 17:53:30 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sun Apr 14 16:01:11 2013 +0200"
      },
      "message": "tests: DejaGNU bgpd\n\nthis just wraps the existing test programs in expect wrappers that make\ntheir results usable to DejaGNU.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f281ab9752393fcc7cbb54c50edb66f25c2a31fb",
      "tree": "53be958c127d21c6bc0e2e2abd02f33a3fde16c2",
      "parents": [
        "f2b53dac4c72811c06779c596c6162b994eb427a"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Feb 26 16:21:20 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sun Apr 14 16:01:05 2013 +0200"
      },
      "message": "tests: add DejaGNU framework\n\nDejaGNU seems to be the \u0027standard\u0027 GNU test framework (which by itself\ndoesn\u0027t say much), but it seems relatively usable and the \"remote\nsystem\" capabilities might come in handy for virtualisation-based tests\nfor kernel interactions or something.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f2b53dac4c72811c06779c596c6162b994eb427a",
      "tree": "9402b6fc1cf366121ba9f3bc623344284fac4196",
      "parents": [
        "677bcbbf153fe73e57cb44f668977cbd26661fd4"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Mar 20 15:28:46 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 22:38:04 2013 +0200"
      },
      "message": "ospfd: restore nexthop IP for p2p interfaces\n\ncommit c81ee5c... \"ospfd: Optimize and improve SPF nexthop calculation\"\nsubtly changed semantics of routes calculated over pointopoint links by\nremoving the nexthop IP address and instead using an ifindex route.\n\nThis breaks calculation of AS-Ext routes with a forwarding address since\nin ospf_ase_complete_direct_routes() this will be hit:\n    if (op-\u003enexthop.s_addr \u003d\u003d 0)\n      op-\u003enexthop.s_addr \u003d nexthop.s_addr;\nthus turning the route unusable by having an invalid nexthop.\n\nFix by restoring the nexthop IP on routes over PtP links.  This also\nallows running multi-access (Ethernet) interfaces in PtP mode again.\n\nThis bug is a regression against 0.99.21 and only present in 0.99.22.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n[patch description and code comments rewritten]\nAcked-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nAcked-by: James Li \u003cjli@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "677bcbbf153fe73e57cb44f668977cbd26661fd4",
      "tree": "545636b73b23f02c3ec13261c71ec3058cf089b7",
      "parents": [
        "b68da446e977f8069fb72bce73402e2234ffc1d9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Feb 27 13:47:23 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 22:35:29 2013 +0200"
      },
      "message": "lib/vty: register vtysh socket in server socket vector (BZ#754)\n\nRegister the vtysh socket in Vvty_serv_thread so it will be\ncorrectly closed on vty_reset instead of being leaked.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b68da446e977f8069fb72bce73402e2234ffc1d9",
      "tree": "6c310ad8fdccf588fcc2ad8b6f03a4602d1b2a13",
      "parents": [
        "8df55970b64984e5071afd510caad5e778569bc1"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Feb 28 22:17:00 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 22:33:19 2013 +0200"
      },
      "message": "ripd: correctly redistribute ifindex routes (BZ#664)\n\nripd had a check to restrict metric 0 to only directly connected routes.\nThis check was implemented by checking against Connected as route type.\nThis is, however, incorrect -- all routes that directly use an interface\nwithout a nexthop should be treated as directly connected and passed off\nwith metric 0.\n\nripngd does not posess such a check and was not touched.\n\nReported-by: Sean Fulton \u003csean@gcnpublishing.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8df55970b64984e5071afd510caad5e778569bc1",
      "tree": "9aedcd7fa1c9b8ced8a140aa2cf7292c9d48d879",
      "parents": [
        "58952492d2eedd4b7974274a578a1fa9707125bb"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 01 12:03:58 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 17:07:07 2013 +0200"
      },
      "message": "build: reference libcap from libzebra (BZ#393,626)\n\nWhile the actual build failures have been fixed independently by\nd1d3ac9 \"build: reorder libraries to address linker error\", libzebra\nstill does not reference libcap.  This will lead to more build failures\nif someone else tries to use libzebra and doesn\u0027t add libcap.\n\nLet\u0027s just add libcap here and be done with it.\n\nI\u0027ve not added libcap to the _DEPENDENCIES variable above since libcap\nis a system library.  Actually, the whole _DEPENDENCIES thing is rather\nfishy; automake automatically sets _DEPENDENCIES from _LIBADD.  For the\nsake of not breaking stuff that works (especially since most autotools\nstuff is arcane magic), I\u0027m leaving it alone...\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "58952492d2eedd4b7974274a578a1fa9707125bb",
      "tree": "ef09366f20a103188a07bc9ed753bec723345967",
      "parents": [
        "c095185c26f72bff14238ca1209ef6b2d7a8b935"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Feb 20 10:00:53 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 17:06:38 2013 +0200"
      },
      "message": "ospfd: fix LSA initialization for build without opaque LSA\n\nIf configured without opaque LSA support, the old code would incorrectly\nassociate type 5 LSAs with an area.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c095185c26f72bff14238ca1209ef6b2d7a8b935",
      "tree": "b6d9fa2ef2a225ff2c85d3d74dc1c94e327eeaab",
      "parents": [
        "4a014580ff85428aa41b28503554b2ce982805be"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 23 22:17:21 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 17:05:37 2013 +0200"
      },
      "message": "tests: make --disable-bgpd kill bgpd tests too\n\nbgpd tests don\u0027t compile or run with --disable-bgpd, let\u0027s catch this in\nthe Makefile.\n\nReported-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4a014580ff85428aa41b28503554b2ce982805be",
      "tree": "b66414d21e1a19ab65b34682b2027de349f5d291",
      "parents": [
        "b58c90807c9d0bfa9601704c7490a16070906004"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Feb 27 11:24:24 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 17:05:08 2013 +0200"
      },
      "message": "build: fix minimal mixup in gitinfo suffix\n\nthe original version of this had issues with tagless repositories; to\nfix that I removed the \"-g\" part from one of the regexes.  I then failed\nto add those 2 characters back, leading to version numbers like\n\"0.99.220123456\" instead of \"0.99.22-ga123456\".  Let\u0027s put the \"-g\"\nback...\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b58c90807c9d0bfa9601704c7490a16070906004",
      "tree": "b984d7577d72e5af08cba391c5a2446ec02bac8c",
      "parents": [
        "24c6bb86f4d21c74149bc0a7e50f9b95da0b6fd3"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Mar 22 08:54:44 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 17:04:25 2013 +0200"
      },
      "message": "doc: fix makeinfo errors and one warning\n\ncommit 4afa50b added few lines that are syntactically incorrect\nwith leading plus sign.\n\nCc: Denis Ovsienko \u003cinfrastation@yandex.ru\u003e\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "24c6bb86f4d21c74149bc0a7e50f9b95da0b6fd3",
      "tree": "7776b6a7bb4b8ea60a4d3fe17cc4b0acbf76bffd",
      "parents": [
        "3d1e5791c53bf67ebd8ce45322779856974c687f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 29 19:40:39 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 29 19:40:39 2013 +0100"
      },
      "message": "doc: add OSPFv3 homenet to TODO\n\nThe homenet OSPFv3 extensions are not only relevant TODO items, but also\nsuitable for GSoC students.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3d1e5791c53bf67ebd8ce45322779856974c687f",
      "tree": "fe041bdbeaaa793b6a9cfd578ead99c0ff08bf67",
      "parents": [
        "f05a5595e6b4805bc1a6bd86fe7076c5ffbb7f00"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 29 19:31:55 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 29 19:33:25 2013 +0100"
      },
      "message": "doc: update TODO\n\nthe TODO was last touched in 2006.  This is a first pass at cleaning it\nup, motivated primarily by the need for an up-to-date idea list for the\nGoogle Summer of Code 2013.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f05a5595e6b4805bc1a6bd86fe7076c5ffbb7f00",
      "tree": "ce7f828822bd61f5c312056eb40949173f5f2e72",
      "parents": [
        "97c84db00c01b808337bedf69f696a1517e3d8c0"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Sun Mar 03 11:38:17 2013 -0500"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Sun Mar 03 11:38:17 2013 -0500"
      },
      "message": "build: Update supported versions.\n\nINSTALL.quagga.tex:\n  Given the statement that it\u0027s viewed as a bug if quagga doesn\u0027t\n  build on OS versions on the list, prune the list to the set for\n  which there would be near-universal agreement that it\u0027s a bug.\n\n  Clarify that the response to a system on the list not building might\n  be dropping it from the list. (Time marches on, and these lists are\n  not necessarily maintained.  As an example, the comment saying\n  FreeBSD4 support was iffy is now 6 years old.)\n\n  Delete old discussion of ancient texinfo.\n\n  Delete discussion of NetBSD versions before 4 (as no longer relevant).\n"
    },
    {
      "commit": "97c84db00c01b808337bedf69f696a1517e3d8c0",
      "tree": "1af03fc32c0fc938c148ebdf3ad1eb812e254efc",
      "parents": [
        "90645f5598ca8b25cd2692f2ac0d2778a3fd2755"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Jan 11 18:25:26 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Feb 24 20:48:16 2013 +0100"
      },
      "message": "hash: dynamically grow hash table\n\nDynamically grow the hash table index if the chains get too long.\nIf expansion doesn\u0027t help keep chain length short, then stop expanding,\nto avoid bad behavior if there is a poor hash function.\nNot a new idea, based on concepts in uthash.\n\nDepends on my previous patch to restrict hash to power of 2.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\n[profiling results: sum of cycles spent in hash_get/jhash with RIPE RIS\n test data (single simple BGP peer) improved to 69% of previously spent]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "90645f5598ca8b25cd2692f2ac0d2778a3fd2755",
      "tree": "2b5e67b020eb3f7a2fd9df4faf2f0914e0cbf0cf",
      "parents": [
        "44a86a0278c1678fd4b8dfa56c4f5f2feb6df3ad"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Jan 04 22:29:21 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Feb 24 20:42:40 2013 +0100"
      },
      "message": "hash: force size to be a power of 2\n\nBy forcing the hash table size to be a power of 2, a potentially\nexpensive divide can be replaced by a mask operation. Almost all\nusage of the hash table was using default size of 1024. Only places\nwith different size was thread library (1011) and bgp aspath.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "44a86a0278c1678fd4b8dfa56c4f5f2feb6df3ad",
      "tree": "6a959802774bd76621baccfc4d3e79fb7759add6",
      "parents": [
        "fa75585d3cac97616de4ea7c6805d91f709456eb"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 25 09:14:52 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 23 22:10:09 2013 +0100"
      },
      "message": "guile: remove\n"
    },
    {
      "commit": "fa75585d3cac97616de4ea7c6805d91f709456eb",
      "tree": "c7900e2f118b558ba87262ee6bf377b438a1b9a5",
      "parents": [
        "844ee10416c42debbfbc4d470eb2fe328e060977"
      ],
      "author": {
        "name": "Matti-Oskari Leppänen",
        "email": "mongrelx@gmail.com",
        "time": "Fri Feb 15 10:12:55 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 23 19:43:18 2013 +0100"
      },
      "message": "build: update quagga.spec.in\n\nboth Quagga and RPM have moved a bit since this was last touched.\nShould now work again on CentOS 5 and 6.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "844ee10416c42debbfbc4d470eb2fe328e060977",
      "tree": "a0e49697ba2079ea271b5003c36455e242827051",
      "parents": [
        "0e4303d3173ecc264b3ec39a863174670bbe2900"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Feb 23 19:38:37 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 23 19:38:37 2013 +0100"
      },
      "message": "vtysh: fix false lib path matching in extract.pl.in\n\nThe if ($file \u003d~ /lib/) path matching logic is supposed to\nmatch Quagga\u0027s lib directory only but will match all path\nhaving lib in it such as /var/lib/jenkins/quagga/...\n\nFix by matching both lib and file: lib/keychain.c etc.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "0e4303d3173ecc264b3ec39a863174670bbe2900",
      "tree": "f525c8543f07581c9a87fcffb843537e87ddf820",
      "parents": [
        "f1ef81b2476ea533ac3d2129aa0e89653c427323"
      ],
      "author": {
        "name": "Roman Hoog Antink",
        "email": "rha@open.ch",
        "time": "Fri Jan 18 13:52:03 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 23 18:22:34 2013 +0100"
      },
      "message": "bgpd: fix lost passwords of grouped neighbors\n\nThis patch resolves the significance of order of group and password\nstatements.\n\nIt prevents passwords from being lost in cases where all\nthree conditions apply:\n  1. the peer is member of a group with or without group password\n  2. the peer has an individual password set\n  3. the peer is added to a group within an address-family ipv6\n     section\n\nIn addition this patch prevents the same issue in cases, where an IPv4\npeer\u0027s password is set first and the peer is added to a group\nafterwards.\n\nAdding a peer to a group cancels his individual password. Without ipv6\nthis is not a problem, because choosing the right order of config\nstatements will do (set password only after adding peer to group).\n\nWhen adding the peer to a group within the address-family\nsection, his password is definitely lost. The same workaround (ie.\nsetting the password after the address-family section) can not be used,\nbecause \"show run\" will print the configuration statements in the wrong\norder.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f1ef81b2476ea533ac3d2129aa0e89653c427323",
      "tree": "107bc07162b377b16af43d59cca4ce1a82a747f0",
      "parents": [
        "66b63aa036c75737c3a8cea9693eff4dec84f903"
      ],
      "author": {
        "name": "Ulrich Weber",
        "email": "ulrich.weber@Sophos.com",
        "time": "Tue Jan 22 10:39:18 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 23 18:19:24 2013 +0100"
      },
      "message": "zebra: use SO_RCVBUFFORCE for netlink socket\n\nso net.core.rmem_max must not be adjusted. Requires\nlinux kernel \u003e\u003d 2.6.14, falls back to SO_RCVBUF on error\n\nSigned-off-by: Ulrich Weber \u003culrich.weber@sophos.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "66b63aa036c75737c3a8cea9693eff4dec84f903",
      "tree": "01abd59759289ab0d5bc4a94fda44abb0d585c7b",
      "parents": [
        "b2baffe8d255890b85d93aee653bed2c18371128"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sun Feb 10 03:08:33 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Feb 10 03:09:32 2013 +0100"
      },
      "message": "release: 0.99.22\n"
    },
    {
      "commit": "b2baffe8d255890b85d93aee653bed2c18371128",
      "tree": "59fd3cada2ac805f46641e4aaf6ee98edddee0bd",
      "parents": [
        "b0baf0740e3d6a01980cef7ea0af0a61c10b1bcd"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Jan 27 04:46:02 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 09 03:00:12 2013 +0100"
      },
      "message": "build: fix \"pragma weak\" mixups\n\nNot only was there a minor typo in the \"pragma weak\" preprocessor\nchecks, but also were the tests not behaving as needed - they only\nindicated support for the /first/ method of implementing weak aliases,\nwhich on Linux is __attribute__ and not #pragma.\n\n* m4/ax_sys_weak_alias.m4: set defines for _all_ weak alias methods\n* zebra/kernel_null.c: fix typo\n\nCc: Doug VanLeuven \u003croamdad@sonic.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b0baf0740e3d6a01980cef7ea0af0a61c10b1bcd",
      "tree": "d0cd2ba0f37bfceee09ade59f3571a09fd03d628",
      "parents": [
        "d3c74d218bfbd9b5b9c39ef7d286f1dd007f2a74"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 18 19:11:59 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 01 17:55:05 2013 +0100"
      },
      "message": "doc: update some introduction paragraphs\n\nin particular,\n- add IS-IS to some listings\n- list Solaris \u0026 OSX as \"some work required\"\n- remove OS version numbers.  We have no base to specify any of them.\n- list supported C compilers (gcc, clang, icc)\n- cut the Quagga 2.0 stuff that promises QoS and firewall functionality\n"
    },
    {
      "commit": "d3c74d218bfbd9b5b9c39ef7d286f1dd007f2a74",
      "tree": "3fcb3df529979097de1bbe8cc33af00b0763394a",
      "parents": [
        "d53d8fda42e1ce43852d3b4cff914ce79b5c6785"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 18 18:56:39 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 01 17:55:05 2013 +0100"
      },
      "message": "doc: update NEWS for 0.99.22 changes\n"
    },
    {
      "commit": "d53d8fda42e1ce43852d3b4cff914ce79b5c6785",
      "tree": "65fabd06d7388d593c1260c18558acd29c82b523",
      "parents": [
        "aeef13b0d5b50a90f293c93eb5a34c2a099d140b"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Jan 28 07:14:43 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 01 17:55:04 2013 +0100"
      },
      "message": "bgpd: fix crash in soft-reconfiguration\n\nCommit 8692c50652 introduced a bug where bgpd would crash on\nsoft-reconfiguration.\n\nThis happens e.g. when there are filtered unicast routes because\nrn-\u003einfo is NULL in that case, which the code did not account for.\n\nReported-by: Paweł Staszewski \u003cpstaszewski@itcare.pl\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "aeef13b0d5b50a90f293c93eb5a34c2a099d140b",
      "tree": "b2463778c9b28b78af6ef722d2ac6b32df7ade6b",
      "parents": [
        "1cb9cf062ec3ed7a3f13fb5465eb5fb917ce3329"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 23 04:20:37 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 01 17:55:04 2013 +0100"
      },
      "message": "tests: fix missing init in bgp_mp_attr_test.c\n\nturns out, bgp_mp_reach_parse really doesn\u0027t like getting garbage\nattribute input.  In particular, attr-\u003eextra better be NULL or we\nmerrily go trample random places (like our stack).\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1cb9cf062ec3ed7a3f13fb5465eb5fb917ce3329",
      "tree": "4ca551c562d14cdd116155dba6aed6d9087c7f7d",
      "parents": [
        "5e728e929942d39ce5a4ab3d01c33f7b688c4e3f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 22 23:39:17 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 01 17:55:04 2013 +0100"
      },
      "message": "tests: update \u0026 extend AS_PATH tests\n\nNB: these tests test for current implementation state, not for RFC\nconformance.  In particular, behaviour with confederations in AS4_PATH\nas well as reconcilation of short AS_PATH + AS4_PATH is currently NOT\nconforming to RFC 4893/6793.\n\n* tests/aspath_test.c:  add capability to put both AS4_PATH \u0026 AS_PATH,\n  add test for AS4_PATH w/o AS_PATH, update confederation test\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "5e728e929942d39ce5a4ab3d01c33f7b688c4e3f",
      "tree": "6f2b2413fc182b75b589fdb340c813d7da944771",
      "parents": [
        "f47e5a18b5beb00d6b5b94965e305dadb5aa5bad"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 23 05:50:24 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 01 17:55:04 2013 +0100"
      },
      "message": "bgpd: relax ORF capability length handling\n\ncommit fe9bb64... \"bgpd: CVE-2012-1820, DoS in bgp_capability_orf()\"\nmade the length test in bgp_capability_orf_entry() stricter and is now\ncausing us to refuse (with CEASE) ORF capabilites carrying any excess\ndata.  This does not conform to the robustness principle as laid out by\nRFC1122 (\"be liberal in what you accept\").\n\nEven worse, RFC5291 is quite unclear on how to use the ORF capability\nwith multiple AFI/SAFIs.  It can be interpreted as either \"use one\ninstance, stuff everything in\" but also as \"use multiple instances\".\nSo, if not for applying robustness, we end up clearing sessions from\nimplementations going by the former interpretation.  (or if anyone dares\nadd a byte of padding...)\n\nCc: Denis Ovsienko \u003cinfrastation@yandex.ru\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f47e5a18b5beb00d6b5b94965e305dadb5aa5bad",
      "tree": "c870b37cdba8e36effae527faf6c266847ad2621",
      "parents": [
        "955be06f8a647d1149d5547e1265fb66f55a9161"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Jan 20 18:29:28 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 01 17:55:04 2013 +0100"
      },
      "message": "bgpd: don\u0027t try to reconcile AS4_PATH with NULL\n\nbgp_attr_munge_as4_attrs would previously try to reintegrate an AS4_PATH\nwith a NULL AS_PATH, leading to a rather nasty SEGV.  Let\u0027s go by\nRFC6793 and treat missing AS_PATH as 0-length AS_PATH, which in turn\nmeans discarding the AS4_PATH.\n\n[NB: we don\u0027t actually stick to the actual rule, which is discarding\nAS4_PATH if it\u0027s longer than AS_PATH; indeed we should probably fix that\ntoo]\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "955be06f8a647d1149d5547e1265fb66f55a9161",
      "tree": "3b49f6c76457e2d47a9223fa2d1dc4b3af8b9e5e",
      "parents": [
        "dcab1bb822161d55795aad59b14c5c5d79b71e1f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 16 01:48:04 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 16 01:50:52 2013 +0100"
      },
      "message": "build: Quagga 0.99.22-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": "dcab1bb822161d55795aad59b14c5c5d79b71e1f",
      "tree": "0e55397d41d91f613123c6c812bc8691caa02b27",
      "parents": [
        "86998bc2bc9506841250c8d49dd2df2464660a18"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Dec 07 16:45:52 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 16 01:45:57 2013 +0100"
      },
      "message": "bgpd: conditional default-originate using route-map\n\nIncorporate a patch by Svetozar Mihailov which implements\ndefault-originate route-maps to behave as expected, i.e. allowing\nthe default route to be advertised conditionally, depending on a\ncriterion given by the route-map.\n\nI am aware that the performance attributes of the following implementation\nare far from optimal. However, this affects only code paths belonging to\na feature that is broken without this patch, therefore, it seems reasonable\nto me to have this in the mainline for now.\n\nCc: Svetozar Mihailov \u003cquagga@j.zarhi.com\u003e\nReported-by: Sébastien Cramatte \u003cscramatte@gmail.com\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "86998bc2bc9506841250c8d49dd2df2464660a18",
      "tree": "1f6796236e69496f3db2bfd32eb2d43c6bfb1a37",
      "parents": [
        "a6694fe8a89b957216f548938cc31602df04d495"
      ],
      "author": {
        "name": "Leonid Rosenboim",
        "email": "Leonid.Rosenboim@windriver.com",
        "time": "Fri Dec 14 19:12:17 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 16 01:45:57 2013 +0100"
      },
      "message": "bgpd: uncork/nagle socket when sending BGP NOTIFY\n\nThis pushes out the NOTIFY message before closing a connection.\n\nPreviously, the TCP_CORK bandwidth optimization code caused NOTIFY\nmessages to disappear prior to when the connection is closed.\n\n* bgpd/bgp_packet.c: unset CORK, set NODELAY, and replace\n                     writen() by more correct write()\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a6694fe8a89b957216f548938cc31602df04d495",
      "tree": "cfa46c9261215f8fa6bc991fbc335e99da196ea9",
      "parents": [
        "ca3ccd8748434719e4670ce812d1310013fad518"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 16 01:28:36 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 16 01:45:57 2013 +0100"
      },
      "message": "Revert \"bgpd: flock() dump files (BZ#742)\"\n\nThis reverts commit b07458a055493dd37cb955ae90f11ae8bc334d3a.\n\nOn second thought, the right way to do this is with rename(), not by\nintroducing a lock that can potentially even stall bgpd.\n\nReported-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ca3ccd8748434719e4670ce812d1310013fad518",
      "tree": "3fae89070206bc47704a456219350c34b5f8ea54",
      "parents": [
        "8d083b9ec5bb0375ebb6d8b2b05c848febd92cb5"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Sep 26 14:52:39 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 16 01:45:57 2013 +0100"
      },
      "message": "zebra: fix sockaddr_dl length assumptions (BZ#737)\n\nQuagga makes bad assumptions about sockaddr_dl (on NetBSD, but possibly\non other systems as well).  Particularly, sizeof(struct sockaddr_dl)\nreturns a size that does not include the full sdl_data field, leading to\nnot enough data being copied.  This breaks IPv6 RAs in particular, as\na broken mac address from sockaddr_dl will be included in the packets.\n\nFrom: Matthias-Christian Ott \u003cott@mirix.org\u003e\nTested-by: Uwe Toenjes \u003c6bone@6bone.informatik.uni-leipzig.de\u003e\n[further simplified + more comments]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8d083b9ec5bb0375ebb6d8b2b05c848febd92cb5",
      "tree": "42786e058df85f087e48022c33e85f2a9464b1aa",
      "parents": [
        "f6295c29070631b24a391f79d4d37ab9c0807ecc"
      ],
      "author": {
        "name": "Leonid Rosenboim",
        "email": "lrosenbo@wrs.com",
        "time": "Tue Nov 06 11:44:04 2012 -0800"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 16 01:10:24 2013 +0100"
      },
      "message": "build: update .gitignore for all test programs\n"
    },
    {
      "commit": "f6295c29070631b24a391f79d4d37ab9c0807ecc",
      "tree": "8440bfe8f442f7610b5108ec924dafd556921527",
      "parents": [
        "ea05767770d759d46f97d1dc33423de72ae20ccd"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 15 17:59:08 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 15 18:01:41 2013 +0100"
      },
      "message": "build: add buildtest.sh script\n\nThis script compiles Quagga in a variety of configurations and\noptionally with LLVM and ICC (if those are installed).\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ea05767770d759d46f97d1dc33423de72ae20ccd",
      "tree": "20917e0852385f08817998a027bd75f4df33a2ea",
      "parents": [
        "303bb005889a843b0d7e07a9b67b68ee55653d8f"
      ],
      "author": {
        "name": "Hasso Tepper",
        "email": "hasso.tepper@gmail.com",
        "time": "Sun Jan 13 17:45:29 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 15 17:57:03 2013 +0100"
      },
      "message": "build: Fix build on MacOSX 10.8 (Mountain Lion)\n\nNewer MacOSX versions have support for both IPv6 advanced socket API\nRFCs (2292 and 3542) switchable in compile time, but neither of these\nis default for some strange reason. RFC3542 will be default in future,\nbut for now we have to declare that we want to use the RFC3542 API\nbefore including \u003cnetinet/in.h\u003e.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "303bb005889a843b0d7e07a9b67b68ee55653d8f",
      "tree": "25c5cd7a5b642818a7aee89a03e58b3f2dd648db",
      "parents": [
        "3a69f74a0a903659e8a5bb930b257d9d09a87626"
      ],
      "author": {
        "name": "Hasso Tepper",
        "email": "hasso.tepper@gmail.com",
        "time": "Sun Jan 13 17:45:28 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 15 17:56:57 2013 +0100"
      },
      "message": "build: Remove deprecated AM_CONFIG_HEADER\n\nAM_CONFIG_HEADER has been deprecated for many years and is removed\ncompletely from automake 1.13.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3a69f74a0a903659e8a5bb930b257d9d09a87626",
      "tree": "e54c3459cbd555d66d915c92f64dcc3a6b90cca2",
      "parents": [
        "d61c1bbd4bf6ddf717dda88350668a9f1e2da0ac"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Jan 11 18:27:23 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 15 17:50:34 2013 +0100"
      },
      "message": "bgpd: uncork after each write\n\nKeep data flowing, uncork after each BGP_WRITE_PACKET_MAX.\nThis makes TCP send data sooner, since thread may not be scheduled\nagain for a a longish time because of new UPDATE\u0027s coming in.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d61c1bbd4bf6ddf717dda88350668a9f1e2da0ac",
      "tree": "c6a056bdfb24031339eb5781c0f57748059dbea4",
      "parents": [
        "47f6aef02b85c604bbd556574e2c724b7304e9e8"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Jan 04 22:29:23 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 15 17:49:48 2013 +0100"
      },
      "message": "bgpd: use recent monotonic time for readtime\n\nThe readtime value is for diagnostic, and doesn\u0027t have to be highly\naccurate. This also fixes a problem where the readtime was being measured\nwith system clock, but the peer_uptime() was comparing with bgp_clock.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "47f6aef02b85c604bbd556574e2c724b7304e9e8",
      "tree": "9636758bb30cd8f96f6c3d6fc396e350f01b654c",
      "parents": [
        "07ff4dc4d29f6f8db77e0e73da5d59e864ae2e66"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Jan 04 22:29:22 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 15 17:49:46 2013 +0100"
      },
      "message": "configure: allow building without getrusage\n\nMeasuring the resource usage of threads is moderately expensive\nsince it requires doing an additional system call everytime a\nthread context switches. Make it possible to disable this with\na configuration option.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "07ff4dc4d29f6f8db77e0e73da5d59e864ae2e66",
      "tree": "b631ce8f75ae8e932eac212d454dd8c27fe6b4d7",
      "parents": [
        "1e0ce7caa622f07c20bb74414a4a5b4cbd732c75"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Jan 04 22:29:20 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 15 17:49:41 2013 +0100"
      },
      "message": "bgpd: mark route nodes scheduled into work queue\n\nThe flag bit BGP_NODE_PROCESS_SCHEDULED is checked but never set.\nThis causes route node to be scheduled multiple times under load.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1e0ce7caa622f07c20bb74414a4a5b4cbd732c75",
      "tree": "35a221f0912891b2b04f9337288fbfd479761169",
      "parents": [
        "a689e6a9f470d2a72493b907c94ef23516bbbda6"
      ],
      "author": {
        "name": "Leonid Rosenboim",
        "email": "lrosenbo@wrs.com",
        "time": "Fri Dec 07 21:31:07 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 15 17:22:01 2013 +0100"
      },
      "message": "bgpd: improve logging of invalid BGP Notifications\n\nInvalid BGP Notification messages should be logged locally, cf.\nRFC4271, Sect. 6.4, p 34,\n  NOTIFICATION Message Error Handling\n\nCurrent notification for invalid Notification code:\n\n  2012/10/10 02:17:54 BGP: message index 10 not found in bgp_notify_msg (max is 8)\n  2012/10/10 02:17:54 BGP: 192.168.1.1 received NOTIFICATION 10/0 ((no item found)) 0 bytes\n\nthe logging should be a bit more clear. The above logging really doesn\u0027t\nexplain much and looks more like a programming error.\n\n[rewrote most of it to get in something I can call a shape -David]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a689e6a9f470d2a72493b907c94ef23516bbbda6",
      "tree": "90dc123c2f7528c59e08c9aa492dfd4a92603aed",
      "parents": [
        "a0de1d16cd00694b07b266d4a5dae5985e9072ff"
      ],
      "author": {
        "name": "Leonid Rosenboim",
        "email": "lrosenbo@wrs.com",
        "time": "Fri Dec 07 21:25:00 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jan 14 17:58:42 2013 +0100"
      },
      "message": "bgpd: fix error response to invalid BGP version number\n\nBGP4-ANVL 20.1 ANVL tries to open BGP with version 5 and expects correct\nnotification in response. Quagga sends notification, but with incorrect\ninformation in it.\n\nThe data needs to be a 2-byte value, and for now we respond with 0004 for any\npeer version other than 4.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a0de1d16cd00694b07b266d4a5dae5985e9072ff",
      "tree": "93924a57c690d75454b3489df7f87021fbf4dcde",
      "parents": [
        "b06b35f0754747f9f178be155a2903b360aa2b6c"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Dec 07 16:35:00 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jan 14 16:09:20 2013 +0100"
      },
      "message": "bgpd: fix a bug in bgp_attr_dup\n\nCommit 558d1fec11749d3257e improved bgp_attr_dup so it would be possible\nfor the caller to provide attr_extra, allowing to use the stack instead\nof the heap for operations requiring only a short lived attr.\n\nHowever, this commit introduced a bug where bgp_attr_dup wouldn\u0027t copy\nattr_extra at all (but provide a reference to the original) if the\ncaller provided attr_extra.\n\nCc: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b06b35f0754747f9f178be155a2903b360aa2b6c",
      "tree": "a92d70e724c5b5133ecebf9c4d4444bde3870cc2",
      "parents": [
        "9499bf2bc6daf0a9b7170d3cf994daef2f1a8920"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Dec 07 14:26:09 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jan 14 16:09:19 2013 +0100"
      },
      "message": "bgpd: fix a memleak on \"set community none\"\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9499bf2bc6daf0a9b7170d3cf994daef2f1a8920",
      "tree": "da0c36589c64c385b2f2ace17b92076febb9afe6",
      "parents": [
        "15c713485699fd22dfa5b7ce3ca7c6be049f1033"
      ],
      "author": {
        "name": "Leonid Rosenboim",
        "email": "lrosenbo@wrs.com",
        "time": "Thu Dec 06 20:17:41 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jan 14 16:07:25 2013 +0100"
      },
      "message": "zebra: don\u0027t overrun afi/safi array boundaries\n\nzebra was not checking afi/safi values.  This was leading to crashes where\nthese values were coming directly from some protocol\u0027s on-wire fields.\nSafeguarding them in zebra is a good start.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "15c713485699fd22dfa5b7ce3ca7c6be049f1033",
      "tree": "26348d73018fa2351410e88ca1cde0e12acae1a6",
      "parents": [
        "24e50f2013e64a73b1f7ecdbd5688360002d09f7"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Nov 19 11:17:31 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jan 14 16:00:58 2013 +0100"
      },
      "message": "bgpd: store \"no neighbor activate\" for IPv4 unicast\n\nIf a neighbor was in a peer group for any AFI/SAFI, bgpd would never write a\n\"no neighbor activate\" line for IPv4 unicast, so a valid setup like following\ncould be configured, but not saved:\n\n    router bgp 64600\n     bgp router-id 198.51.100.1\n     network 198.51.100.0/24\n     neighbor peers peer-group\n     neighbor 2001:db8::2 remote-as 64601\n     no neighbor 2001:db8::2 activate\n    !\n     address-family ipv6\n     network 2001:db8:1::/48\n     neighbor peers activate\n     neighbor peers soft-reconfiguration inbound\n     neighbor 2001:db8::2 peer-group peers\n     exit-address-family\n    !\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "24e50f2013e64a73b1f7ecdbd5688360002d09f7",
      "tree": "3c53b418e2f91f703ee79fd4b224e157b25218b3",
      "parents": [
        "ebbb5fca5ca899a9a125aa2770d3fdf857186bac"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 15:17:33 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jan 14 14:43:51 2013 +0100"
      },
      "message": "bgpd: avoid heap fragmentation in bgp_clear_route_table\n\nIn bgp_clear_route_table, moved cleanup code before the allocation\nof the work queue items. This returns the memory to the system\nallocator before allocating new and might therefore help avoiding\nheap fragmentation.\n\n* bgp_route.c: (bgp_clear_route_table) moved code blocks.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nReviewed-by: Leonid Rosenboim \u003cLeonid.Rosenboim@windriver.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ebbb5fca5ca899a9a125aa2770d3fdf857186bac",
      "tree": "b2e5f525e5dc30a378dc4ace24f5feca70c33e71",
      "parents": [
        "a5c851c7ff41ef846e83d62394176ac1753ebf45"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 15:17:33 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jan 14 14:42:38 2013 +0100"
      },
      "message": "bgpd: fix for leaked struct bgp_adj_[in|out] on peer shutdown\n\n    If a peer with soft-reconfiguration configured is cleared, the\nfunction bgp_clear_route_table() doesn\u0027t free the bgp_adj_in and bgp_adj_out\nstructures of route nodes that for some reason, ej. denied by a filter,\ndon\u0027t have routes attached \"rn-\u003einfo \u003d\u003d NULL\".\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nReviewed-by: Leonid Rosenboim \u003cLeonid.Rosenboim@windriver.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a5c851c7ff41ef846e83d62394176ac1753ebf45",
      "tree": "b53c24d74e7db4d5e6cdd30199cb39093df0a5a4",
      "parents": [
        "913ff66ba30093d2fdc26af215f4bc0b3d359d75"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 27 03:21:44 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 11 22:09:34 2013 +0100"
      },
      "message": "lib: remove ALL_LIST_ELEMENTS dead code branch\n\nALL_LIST_ELEMENTS is checking node \u003d\u003d NULL twice, which is causing a\nwhole slew of false positives in Coverity.  In this particular case,\naddressing this in the code is reasonable; being a macro, this appears\nall over the place without easy remedy.\n\nAcked-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "913ff66ba30093d2fdc26af215f4bc0b3d359d75",
      "tree": "c05c1df603a7ef8d73460777cd6017f720b29b3a",
      "parents": [
        "61be0ee8824b30e94ddd2bfe8b51fcfd330c41dd"
      ],
      "author": {
        "name": "高鹏",
        "email": "gpstrive@gmail.com",
        "time": "Wed Nov 21 18:15:43 2012 +0800"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 11 22:06:04 2013 +0100"
      },
      "message": "zebra: fix netlink NL_PKT_BUF_SIZE\n\nChange default value of variable NL_PKT_BUF_SIZE to 8192UL.  Cf.\nNLMSG_GOODSIZE definition of linux in include/linux/netlink.h for detail.\n\nPreviously, on platforms with a page size greater than 8192, if you had added\ntoo many interfaces, zebra would not have enough buffer space to get the entire\ninterface list.  This resulted in an incomplete interface list.\n\nFrom: 高鹏 \u003cgpstrive@gmail.com\u003e\n[updated to apply after FPM patches]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "61be0ee8824b30e94ddd2bfe8b51fcfd330c41dd",
      "tree": "483968a7a26038e2f88056458ac575ff9938e386",
      "parents": [
        "675769b1b17a068526d90786e1c35304656faba7"
      ],
      "author": {
        "name": "Hasso Tepper",
        "email": "hasso.tepper@gmail.com",
        "time": "Fri Dec 14 14:58:32 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 11 21:50:06 2013 +0100"
      },
      "message": "build: Fix build for systems with no /bin/true\n\nThere are systems with no /bin/true - it might have different path\n(/usr/bin/true) or even a shell builtin.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "675769b1b17a068526d90786e1c35304656faba7",
      "tree": "21fd12ed1bb51b5111f07614a79dc7325f4ac7d5",
      "parents": [
        "327c4cdf7578debcc140f04f03d02479771c9e11"
      ],
      "author": {
        "name": "Hasso Tepper",
        "email": "hasso.tepper@gmail.com",
        "time": "Fri Dec 14 14:58:31 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 11 21:50:06 2013 +0100"
      },
      "message": "build: MacOSX needs BSD struct ip_mreq hack too\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "327c4cdf7578debcc140f04f03d02479771c9e11",
      "tree": "a0e02a0614f12601d8a58eeeebf9e54b27198c9f",
      "parents": [
        "b2e5bdbe10c4145f508fcf1486ffe29d5ce516f7"
      ],
      "author": {
        "name": "Doug VanLeuven",
        "email": "roamdad@sonic.net",
        "time": "Fri Dec 14 14:58:30 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 11 21:50:06 2013 +0100"
      },
      "message": "testzebra: pragma weak: detect systems with weak alias and provide alternative\n\nLLVM clang does not support #pragma weak (bug 3679) on OS X. There are\nother systems where the #pragma weak has varying syntax.\n\nAdded m4 file from the autoconf archives:\nhttp://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html\n\nFix up zebra/*_null.c files to use #pragma weak alias or stub functions\nif not available. It\u0027s incomplete in that the different format #pragma\nenable easier fixes on need.\n\nTested on 64bit OS X 10.7, FreeBSD 9.0 amd64 \u0026 i386 (32bit) using\ngcc \u0026 clang. Tested on linux 64bit.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b2e5bdbe10c4145f508fcf1486ffe29d5ce516f7",
      "tree": "fae70e8c1580d99fee0c2a59d6bef831c4c9465c",
      "parents": [
        "a16dcf7c11d80775b07a0fa6f3ac5527190fb486",
        "e0630cb4d61557f956318a088f68f1fc4d261ef3"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 11 21:46:18 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 11 21:46:22 2013 +0100"
      },
      "message": "Merge remote-tracking branch \u0027savannah/sf/ospfd\u0027\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e0630cb4d61557f956318a088f68f1fc4d261ef3",
      "tree": "954964aed06b0247b59686d73e109218951df369",
      "parents": [
        "d265548ffb8da9ba3e1dd327efbff31c7cd15027"
      ],
      "author": {
        "name": "Dinesh G Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Jan 07 10:12:52 2013 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 10:12:52 2013 -0800"
      },
      "message": "ospfd: Remove dup MaxAge LSA flood\n\nStop additional, unnecessary flooding of MaxAge LSAs.\n\nWhen a MaxAge LSA is installed, if the LSA is prematurely aged or the LSA is\nnot self-originated, the LSA is flushed. This results in a the LSA being\nflooded a second time and in some cases flooded back to the receiver\n(unless the receiver is also the advertising router). A MaxAge\u0027d LSA has\nalready been flooded in ospf_flood() as part of the LSA receive processing\n(ospf_ls_upd). A self-originated LSA will be flooded from the originate/refresh\nroutine. Thus, in the install routine, a MaxAge\u0027d LSA only needs to be added\nto the MaxAge LSA list.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d265548ffb8da9ba3e1dd327efbff31c7cd15027",
      "tree": "2a44f386797da60d850f27f591a7d5d7d763c710",
      "parents": [
        "0798cee34f5c436cd2a4b6e1d9a1ca90eee94292"
      ],
      "author": {
        "name": "Vishal Kumar",
        "email": "vishal3.kumar@gmail.com",
        "time": "Fri Dec 07 14:47:58 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 10:00:00 2013 -0800"
      },
      "message": "ospfd: Corrected ospfd Type-4/Type-5 ls update handling\n\nThis fix is for Type-4 LS updates handling at a ABR router where\nospf daemon is not distributing Type-4 LS updates with correct LS-Age\nafter learning about a ASBR router in a ospf network. Because of this\nType-5 LS updates are not learnt in ospf network.\nTesting Scenario:\nThis can be re-produced by restarting the ospfd daemon on DUT\n(mentioned in figure below)before the Hello time interval expires\nfor area 0.0.0.1.\n\n ____                       _______                       ____                    _________\n|    |   area: 0.0.0.1     |       |   area: 0.0.0.0     |    |   area: 0.0.0.2  |         |\n| R1 |---------------------|DUT/ABR|---------------------| R2 |------------------| R3/ASBR |\n|____|     x.x.x.0/24      |_______|    y.y.y.0/64       |____|     z.z.z.0/24   |_________|\n\nIn the above setup when ospfd is restarted (imp:before the Hello interval\nat R1 expires) and DUT learns about ASBR router R3 (Type-4) in the\nnetwork from R2, but this ls-update is not propagates in area\n0.0.0.1. So R1 never comes to know about the ASBR router in the\nnetwork, so all the type-5 LS updates coming from R3 are not learnt\nby R1. Further if we again restart ospfd daemon it starts working fine.\nWith the fix given this issue can be resolved.\n\nMore Discussion on this is available at:\nhttp://www.gossamer-threads.com/lists/quagga/dev/23892\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0798cee34f5c436cd2a4b6e1d9a1ca90eee94292",
      "tree": "1b2293b711a12d743a0cd814235589bc4ce8d84f",
      "parents": [
        "de54b26caca7442af29656282e753b02aac6f093"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:43:42 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:59 2013 -0800"
      },
      "message": "ospfd: compile warning cleanups\n\nA set of patches to clarify some comments as well as cleanup code that was\ncausing warnings.  After these patches, the code can be compiled with\n\n-Wall -Wsign-compare -Wpointer-arith -Wbad-function-cast -Wwrite-strings\n-Wmissing-prototypes -Wmissing-declarations -Wchar-subscripts -Wcast-qual\n-Wextra -Wno-unused-parameter -Wno-missing-field-initializers\n\n(what is current in trunk plus -Wextra -Wno-unused-parameter\n-Wno-missing-field-initializers).\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "de54b26caca7442af29656282e753b02aac6f093",
      "tree": "9457016f36d1e59edf672b54cf5b66fb29c68dd9",
      "parents": [
        "703819a9314692f3a3b7f888887b0cebc15c18ae"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:40:58 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:57 2013 -0800"
      },
      "message": "ospfd: Update nsm_change_state to static scope, as it is not called from elsewhere\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "703819a9314692f3a3b7f888887b0cebc15c18ae",
      "tree": "5a109e346ba409f3707bd5f041f5ffb3b2b5f94c",
      "parents": [
        "7798b6321cd0c6281b1a119ac894ff3749e88cc1"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:36:41 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:53 2013 -0800"
      },
      "message": "ospfd: Changed TE instance check to remove -Wtype-limits warning\n\nSince LEGAL_TE_INSTANCE_RANGE() was being passed an unsigned int, a warning\nwas being thrown due to the compare against \u003e\u003d 0.  Since this macro was used\nonly in one place, I removed the macro for an explict compare against a\nconstant for the MAX.\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7798b6321cd0c6281b1a119ac894ff3749e88cc1",
      "tree": "2be0e1ed9af8a9fdf156d013287c154cb081965a",
      "parents": [
        "f92c57f8ba4f1e856934ec1736be3cad62be4785"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:33:24 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:51 2013 -0800"
      },
      "message": "lib: Changes to VTY string-parsing macros to remove warnings\n\nThe VTY_GET_INTEGER_RANGE macro was being used also just to check the range\non a variable that wasn\u0027t used (for the \"no\" version of a VTY command), so I\nsplit the macro into two.  Also, since the variable is unsigned, if MIN is\nzero, you get a warning about comparing an unsigned number against 0, giving\nrise to slightly convoluted logic.  Note that the previous two patches were\nfound by the -Wtype-limits and -Wunused-variables warnings.  Without the\nchanges to these macros, these warnings are triggered erroneously, making it\nharder to find the real problems.\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "f92c57f8ba4f1e856934ec1736be3cad62be4785",
      "tree": "44c11ce2ea55d168218f654baf9cb8a83a4d6cd0",
      "parents": [
        "fbc043a847149499436fe4083b6384bde43fe578"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:29:21 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:50 2013 -0800"
      },
      "message": "ospfd: Update comments to be more clear in packet processing\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "fbc043a847149499436fe4083b6384bde43fe578",
      "tree": "17b90e2e2b22e91eb670ce0b0102047ac0862e16",
      "parents": [
        "1a61ad1011c498c4ae66cc145db673e53ef02962"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 12:54:18 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:49 2013 -0800"
      },
      "message": "ospfd: Fixed signed/unsigned masking of negative metrics\n\nIn the original code, negative metrics would be converted successfully by\natoi() and then converted to an unsigned int that would always compare\nsuccessfully against \u003e\u003d 0, leaving a large positive metric in the route map.\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "1a61ad1011c498c4ae66cc145db673e53ef02962",
      "tree": "f46f6e0146c30159a1908c18ca54c8449fb1e075",
      "parents": [
        "bda3c326a3fe843417726bfe1bc8d4bafbb51fa9"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 12:50:23 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:49 2013 -0800"
      },
      "message": "ospfd: Fixed typo bug in ospf_vty.h:ospf_neighbor\n\nTypo bug. ospf_nbr_nbma_poll_interval_set() was being sent priority instead\nof interval.\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "bda3c326a3fe843417726bfe1bc8d4bafbb51fa9",
      "tree": "009521f1cf14b3a546bfbe3ec8850dfc0e4974d4",
      "parents": [
        "822d8f55199c0aee32c64f91532f637694d30e11"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Dec 04 11:31:16 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:48 2013 -0800"
      },
      "message": "ospfd: fix argument parsing for distribute-list\n\nUse the correct argument for the protocol lookup in\nospf distribute-list commands.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "822d8f55199c0aee32c64f91532f637694d30e11",
      "tree": "db881758131d63c95b0bca943ba52e2b33228236",
      "parents": [
        "2345a2221aa0a02b96846beab6088815f41e791b"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Dec 04 11:11:41 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:46 2013 -0800"
      },
      "message": "ospf: fix apiserver enable\n\nThe ospf_apiserver_enable flag was being cleared _after_ the \"-a\"\ncommand-line option set it to 1.  Move up the initialisation, so\nenabling the OSPF API is actually possible.\n\nReported-by: Rosario Mattera \u003crosmattera@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "2345a2221aa0a02b96846beab6088815f41e791b",
      "tree": "2486cfbf3985c95a8f5ab0724de4d256e71bfd5e",
      "parents": [
        "faf9875832539f00940904e1424f2e789fef52d4"
      ],
      "author": {
        "name": "Leonard Tracy",
        "email": "letracy@amazon.com",
        "time": "Tue Dec 04 11:02:35 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:45 2013 -0800"
      },
      "message": "ospf: Fix type-4 network mask to 0 per RFC\n\nThe OSPF RFC (2328) states that the network mask field of a type 4\nLSA \"is not meaningful and must be zero\".  OSPFD has been setting\nthe mask as /32.  This patch changes OSPFD to set the mask to 0 per\nthe RFC\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "faf9875832539f00940904e1424f2e789fef52d4",
      "tree": "ebf2d85a78f96b5d7b2e2a8eab7d3ad07b484af6",
      "parents": [
        "91e6a0e5ca973c7183f638987b67aa370e9b484c"
      ],
      "author": {
        "name": "Ayan Banerjee",
        "email": "ayan@cumulusnetworks.com",
        "time": "Tue Dec 04 10:49:12 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:45 2013 -0800"
      },
      "message": "ospf: Reduce MaxAge log level\n\nReduce the log level for the MaxAge LSA reception when such an LSA does\nnot exist in the database.\n\nSigned-off-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Nolan Leake \u003cnolan@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "91e6a0e5ca973c7183f638987b67aa370e9b484c",
      "tree": "734c8c74baaaa6d3c303928b4f6d1d35d3394115",
      "parents": [
        "4ba4fc857685bfe31c7127826652012a750367c5"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue Dec 04 10:46:37 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:43 2013 -0800"
      },
      "message": "ospf: Convert MAX_AGE LSA list to tree\n\nStore the MaxAge LSA list in a tree instead of a linked list for efficient access.\nWalking the list can be quite inefficient in some large systems and under certain tests.\n\nospfd maintains the list of LSA\u0027s that have been MaxAge\u0027d out in a separate\nlinked list for removal by a remover/walker thread. When a new LSA is to be\ninstalled, the old LSA is ejected and when it is ejected, the MaxAge LSA list\nis traversed to ensure that the old LSA is also removed from this list if it\nexists on this list.\n\nWhen a large number (\u003e 5K) MaxAge LSAs are bombarding the system, walking this\nlist takes a significant time causing timers to fire and actions to be taken\nsuch as expiring neighbors due to expiry of DeadInterval (especially when timer\nis really low, \u003c\u003d 12s), creating a spiral of instability.\n\nBy making this MaxAge LSA list be a tree, this problem is mitigated.\n\nSigned-off-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "4ba4fc857685bfe31c7127826652012a750367c5",
      "tree": "d7f07b950c43907d9c8c07dc4423bc008c01174a",
      "parents": [
        "16a86b3e2f82d3e19a722e2ab34c2c77f62ed926"
      ],
      "author": {
        "name": "Ayan Banerjee",
        "email": "ayan@cumulusnetworks.com",
        "time": "Mon Dec 03 11:17:24 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:41 2013 -0800"
      },
      "message": "ospf: forward ref. of areas for \"max-metric router-lsa administrative\" cmd\n\nIn the event areas are created at a later point of time with respect\nto the playback of the \"max-metric router-lsa administrative\" command,\nthose areas do not get into indefinite max-metric mode. This patch is\ninteneded to store the configuration and apply it to all future areas\nthat may be created.\n\nIn the process, some other bugs that were there with respect to restart\netc are fixed up.\n\nTested locally to see that the fix works across multiple\nareas and across multiple restarts.\n\nSigned-off-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "16a86b3e2f82d3e19a722e2ab34c2c77f62ed926",
      "tree": "7c0826c1f684292ec80f8b7898e07f9c8e56b3f1",
      "parents": [
        "e1a555b67cc868f95ea2b53c278bd8d091333e5f"
      ],
      "author": {
        "name": "Ayan Banerjee",
        "email": "ayan@cumulusnetworks.com",
        "time": "Mon Dec 03 10:48:46 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:40 2013 -0800"
      },
      "message": "ospf: suppress delete using replacement\n\nAfter a SPF run, OSPF deletes routes that have changed in terms of any\nmetric, type, and/or next-hops and re-adds them. Given that the Zebra-RIB\nalready support replacement semantics, we suppress deletes for routes\nthat will be added back again.\n\nThis has the following advantages. It reduces the number of IPC messages\nbetween OSPF/Zebra. Also, in the current flow, a batch of route deletes\nwere followed by a batch of adds even for say a metric change.\n\nWith the change, routes are sent as \"add\" when they are modified. Zebra\nalready implicitly deletes older routes.\n\nSigned-off-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "a16dcf7c11d80775b07a0fa6f3ac5527190fb486",
      "tree": "b75001e80db7f24cc861b3d0d1092e4b96fafd21",
      "parents": [
        "4209a88759c41aac54465b6d4389b7daaad6ac80"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Dec 13 11:20:50 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Dec 13 11:20:50 2012 +0100"
      },
      "message": "build: check for .git in configure.ac\n\nDon\u0027t error out when someone tries using --with-pkg-git-version on\nsomething that isn\u0027t actually a git checkout (like a dist tarball).\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4209a88759c41aac54465b6d4389b7daaad6ac80",
      "tree": "bab409239b92b7151284b03640c07aa3f18127f6",
      "parents": [
        "fd76f41ac0267dc4cf5438ac8f5e23fae6810d31"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Dec 13 10:59:00 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Dec 13 11:04:37 2012 +0100"
      },
      "message": "build: fix dist tarball\n\nautomake file lists haven\u0027t quite kept up with recent changes, time to\nfix them up so the dist tarball actually works...\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fd76f41ac0267dc4cf5438ac8f5e23fae6810d31",
      "tree": "9b1e98811be47c511c8545183b3cd145dd3b273b",
      "parents": [
        "e1a555b67cc868f95ea2b53c278bd8d091333e5f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Dec 13 10:35:45 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Dec 13 10:41:18 2012 +0100"
      },
      "message": "build: update ICC warning CFLAGS\n\nIntel\u0027s icc doesn\u0027t accept \"-wd \u003cnumber\u003e\" anymore, it\u0027s \"-wd\u003cnumber\u003e\"\nthese days.  But, anyhow, the warnings disabled in Quagga\u0027s configure.ac\ndon\u0027t seem to appear anywhere at all, so let\u0027s just remove the option\ncompletely.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e1a555b67cc868f95ea2b53c278bd8d091333e5f",
      "tree": "c6d2a170693da4b78ed977b1badf9c38f84c693d",
      "parents": [
        "478c1125cfcf92c3f2a574d6b76eea28126284dc"
      ],
      "author": {
        "name": "Nick Hilliard",
        "email": "nick@inex.ie",
        "time": "Wed Nov 28 14:39:56 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:38:14 2012 +0100"
      },
      "message": "isisd: fix ipv6 metric endianness\n\nthe isis ipv6 reachability metric is transmitted in big endian / network\nformat, but isis_spf_process_lsp() does not convert this into host endian\nformat when mucking around with local cost + received metric.  This patch\nfixes this problem and makes received ipv6 metrics work properly on\nlittle-endian machines.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "478c1125cfcf92c3f2a574d6b76eea28126284dc",
      "tree": "a53e56a4ad3d5342a36b967ae968a2523840c0bb",
      "parents": [
        "4fb7c84f1b5e282c7dc413a578d3f42353ac7fec"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 27 19:52:00 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:38:08 2012 +0100"
      },
      "message": "isisd: verify metrics on metric-style transition\n\nWhen switching to metric-style transition, circuit metrics should also be\nverified to be in the narrow range 0..63.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4fb7c84f1b5e282c7dc413a578d3f42353ac7fec",
      "tree": "69fe847ce5ce242c2a714ca75182dc39c7a9b210",
      "parents": [
        "e8aca32f312cbef1cb0b0dd9e87b7e59dc9fa251"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 27 19:51:59 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:38:08 2012 +0100"
      },
      "message": "isisd: fix metrics check for metric-style narrow\n\nWhen switching to narrow metric style, all configured circuits are\nverified to have a valid narrow style metric. Check te_metric instead\nof metric_default as the latter is only 8bit wide and may overflow for\nwide style metrics.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e8aca32f312cbef1cb0b0dd9e87b7e59dc9fa251",
      "tree": "f1dd65169e4cbc6bb7da2d76466b049703587123",
      "parents": [
        "318c8040abc1b8a737c941382e8aca82e546da09"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 27 01:10:30 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:38:08 2012 +0100"
      },
      "message": "isisd: address Coverity warnings\n\nthis fixes a bunch of issues found by Coverity SCAN and flagged as\n\"high\" impact -- although, they\u0027re all rather minute issues.\n\n* isisd/isis_adjacency.c: one superfluous check, one possible NULL deref\n* isisd/isis_circuit.c: two prefix memory leaks\n* isisd/isis_csm.c: one missing break\n* isisd/isis_lsp.c: one possible NULL deref\n* isisd/isis_pfpacket.c: one error-case fd leak\n* isisd/isis_route.c: one isis_route_info memory leak\n* isisd/isis_routemap.c: one... fnord\n* isisd/isis_tlv.c: one infinite loop\n\nReported-by: Coverity SCAN\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "318c8040abc1b8a737c941382e8aca82e546da09",
      "tree": "3eb37c0549c27b1db1a08aadab6166728b663348",
      "parents": [
        "f818c8f3fb9c98490df29e99aa9cddde8e0296d5"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 27 01:10:29 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:38:07 2012 +0100"
      },
      "message": "isisd: always join all IS-IS multicast groups\n\nThe socket is only created once when an interface is brought up, and the\nmulticast groups were joined according to configuration at that point.\nThis breaks when later switching an interface to another IS-IS level.\n\nSince, for a separate conformance issue (ANVL ISIS-6.4), we should be\ninspecting the destination address anyway, the simplest fix here is to\njust join all groups unconditionally.  There shouldn\u0027t be much traffic\non these anyway, worst case we might be picking up some unrelated\nmulticast groups due to NIC filter aliasing though...\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nTested-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f818c8f3fb9c98490df29e99aa9cddde8e0296d5",
      "tree": "1b5bea6bd8996e8ab5349fc2b2abfa0dc7ac2ca4",
      "parents": [
        "de543de3d7682eaeb8c9b657e9a3bb4bcd17993d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Nov 27 01:10:28 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:38:07 2012 +0100"
      },
      "message": "isisd: save metric-style narrow\n\nisisd defaults to wide metric style. So if narrow metric style is\nconfigured, a matching setting should be written to the configuration,\nallowing a narrow metric-style setting to be saved.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "de543de3d7682eaeb8c9b657e9a3bb4bcd17993d",
      "tree": "34ea71f71b59a717f1500d2f7b6860227ecaea6d",
      "parents": [
        "b72f345d2e078d4cd0559234d051214f58eef542"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 27 01:10:27 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:38:07 2012 +0100"
      },
      "message": "isisd: fix spftree_area_del typo causing SEGV\n\nspftree_area_del didn\u0027t clear the IPv6 L2 spftree due to a simple typo,\nleading to a SEGV on shutdown when the still-armed timer would try to\nrun an IPv6 L2 SPF calculation with its data free\u0027d already.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b72f345d2e078d4cd0559234d051214f58eef542",
      "tree": "c41a98533af78d54c5e5cca0151848b86c9d5139",
      "parents": [
        "19f78cebd2ce50f0d1f367cd759cdcfb1a500f59"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 27 01:10:26 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:38:07 2012 +0100"
      },
      "message": "isisd: drop hellos without supported protocol list\n\nisisd should not form adjacencies on receiving an IS-IS Hello without a\nlist of supported protocols (cf. RFC 1195 s4.4 p32 \"Maintaining Router\nAdjacencies\")  Also fixes memleaks in these error cases.\n\n* isisd/isis_pdu.c: improve TLVFLAG_NLPID handling\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nTested-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "19f78cebd2ce50f0d1f367cd759cdcfb1a500f59",
      "tree": "94526e2119d9142ca53217a9d0e5a357a260abba",
      "parents": [
        "91d799e8cdd24ad3c195ed9d11882aacc91cc2ea"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 27 01:10:25 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:38:07 2012 +0100"
      },
      "message": "isisd: refuse adjacencies with our own system ID\n\nisisd would form an adjacency with another router despite the system IDs\nbeing identical.  This would later cause an assertion failure like this:\n\n  assertion\u003d0x555555596db8 \"isis_find_vertex (spftree-\u003epaths, id, vtype) \u003d\u003d ((void *)0)\",\n  file\u003d0x555555596c60 \"isis_spf.c\", line\u003d515, function\u003d0x555555597900 \"isis_spf_add2tent\") at log.c:619\n\nwhich is caused by trying to add a path expected to not exist, but\nsuddenly colliding due to the duplicate system ID.\n\n* isis_pdu.c: check for system ID collision on receiving Hello\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "91d799e8cdd24ad3c195ed9d11882aacc91cc2ea",
      "tree": "935c32631fdb828d4ef624d081953f212a792912",
      "parents": [
        "0be793e674c8b076f0e8bf327257f15803480f49"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 27 01:10:24 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:38:07 2012 +0100"
      },
      "message": "isisd: do not add \u003e63 IP addresses to hello\n\nRFC1195 s4.2 \"Multiple IP Addresses per Interface\" explicitly forbids us\nfrom adding multiple tuples of IP addresses, putting a hard cutoff at 63\nIP addresses.\n\n* isisd/isis_tlv.c: cut off (and return success) at 63 addrs.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nTested-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "0be793e674c8b076f0e8bf327257f15803480f49",
      "tree": "28c42a679265d25ea41f4265232e2bcc167b1f49",
      "parents": [
        "324ed1f87aedf30a45aea951edb2e717c5f9b7fb"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 27 01:34:56 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Dec 12 15:34:37 2012 +0100"
      },
      "message": "build: include git info\n\nIf enabled with --with-pkg-gitversion on ./configure, this will append\ngit version strings and branch information at the following places:\n - overall version number: 0.99.21-g0123456\n - login motd and show version: tag information + git id + branches\n\nSample output:\n  Hello, this is Quagga (version 0.99.21-g14b49ad-dirty).\n  Copyright 1996-2005 Kunihiro Ishiguro, et al.\n\n  This is a git build of quagga_0_99_21_release-106-g14b49ad-dirty\n  Associated branch(es):\n\tlocal:master\n\n[v2]: fix build without gitinfo (add \"else\" branch)\n[v2]: fix for repos without any tags (different git describe output)\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "324ed1f87aedf30a45aea951edb2e717c5f9b7fb",
      "tree": "3e23528caf97c699bc2403a7e87443005f87f446",
      "parents": [
        "b9c24cd23091e817942d4eaab95712e84dbec8aa"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Tue Nov 13 22:49:01 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:41:17 2012 +0100"
      },
      "message": "zebra: include intf when sending IPv4 nexthop to FPM\n\n* zebra/zebra_fpm_netlink.c\n\n    Change the zebra FPM code to include an interface index when\n    encoding a nexthop even if the protocol only provided a gateway\n    address (e.g, NEXTHOP_TYPE_IPV4).\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b9c24cd23091e817942d4eaab95712e84dbec8aa",
      "tree": "69f4c48db4625a6fbd40eb912024db8a50f199c1",
      "parents": [
        "5adc2528d386f037cc39e8029616295c3fec2db4"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Tue Nov 13 22:49:00 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:41:17 2012 +0100"
      },
      "message": "doc: add blurbs on zebra FPM interface and commands\n\nUpdate documentation with some text on the zebra interface to the\noptional Forwarding Path Manager component, and the related cli\ncommands.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "5adc2528d386f037cc39e8029616295c3fec2db4",
      "tree": "2f54793f50a591d99a39d75fbf6bbd7dbe752dda",
      "parents": [
        "443b993777e3e86fceb988f647d1c5b57661a182"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Tue Nov 13 22:48:59 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:41:17 2012 +0100"
      },
      "message": "zebra: add module to communicate routes to FPM\n\nEnhance zebra to send routes to the (optional) Forwarding Path Manager\ncomponent using the interface defined by fpm/fpm.h.\n\n  * configure.ac\n\n    - Add --enable-fpm flag.\n\n      The FPM-related code in zebra is activated only if the build is\n      configured with \u0027--enable-fpm\u0027.\n\n    - Add HAVE_NETLINK automake conditional.\n\n      This allows us to conditionally build netlink-dependent C code.\n\n  * zebra/{rib.h,zebra_rib.c}\n\n    - Add the \u0027fpm_q_entries\u0027 field to the rib_dest_t structure. This\n      allows dests to be placed on the fpm queue.\n\n    - Define a couple new rib_dest_t flags that hold FPM-related\n      state.\n\n    - Invoke the zfpm_trigger_update() function for a route_node\n      whenever the information to be sent to the FPM changes.\n\n    - rib_can_delete_dest(): Return FALSE if we have to update the FPM\n      about the given dest. This ensures that the dest is not deleted\n      even if there are no ribs hanging off of it.\n\n  * zebra/zebra_fpm.c\n\n    This file holds most of the code for interacting with the FPM.\n\n    - If quagga was configured with \u0027--enable-fpm\u0027, periodically try\n      to connect to the FPM.\n\n    - When the connection comes up, enqueue all relevent dests to the\n      FPM queue.\n\n    - When the FPM socket is readable, dequeue the next rib_dest_t\n      from the FPM queue, encode it in to a message and send the\n      message to the FPM.\n\n    - When the connection to the FPM goes down, remove all dests from\n      the FPM queue, and then start trying to connect to the FPM\n      again.\n\n    - Expose the following new operational commands:\n\n      show zebra fpm stats\n      clear zebra fpm stats\n\n  * zebra/zebra_fpm_netlink.c\n\n    - zfpm_netlink_encode_route(): Function to encode information\n      about a rib_dest_t in netlink format.\n\n  * zebra/zebra_fpm_private.h\n\n    Private header file for the zebra FPM module.\n\n  * zebra/zebra_fpm.h\n\n    Header file exported by zebra FPM module to the rest of zebra.\n\n  * zebra/debug.c\n\n    Add the \u0027debug zebra fpm\u0027 command.\n\n  * zebra/main.c\n\n    Initialize the zebra-FPM code on startup.\n\n  * zebra/misc_null.c\n\n    Add stub for zfpm_trigger_update().\n\n  * zebra/Makefile.am\n\n    - Include new file zebra_fpm.c in build.\n\n    - Include zebra_fpm_netlink.c in build if HAVE_NETLINK is defined.\n\n  * vtysh/Makefile.am\n\n    Include zebra_fpm.c in list of files that define cli commands.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "443b993777e3e86fceb988f647d1c5b57661a182",
      "tree": "49e929ef6339feea5bd8b634381f753dd71fa79a",
      "parents": [
        "04f7dd64dfa0f339208f0d4833276b7684ee3343"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Tue Nov 13 22:48:58 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:41:17 2012 +0100"
      },
      "message": "fpm: Add public header for Forwarding Plane Manager\n\nThe Forwarding Plane Manager (FPM) is an optional component that may\nbe used in scenarios where the router has a forwarding path that is\ndistinct from the kernel, commonly a hardware-based fast path. It is\nresponsible for programming forwarding information (such as routes and\nnexthops) in the fast path.\n\nIn Quagga, the Routing Information Base is maintained in the \u0027zebra\u0027\ninfrastructure daemon. Routing protocols communicate their best routes\nto zebra, and zebra computes the best route across protocols for each\nprefix. This latter information comprises the bulk of the Forwarding\nInformation Base.\n\nThe new header file added by this patch, \u0027fpm/fpm.h\u0027, defines a\npoint-to-point interface using which zebra can update the FPM about\nchanges in routes. The communication takes place over a stream\nsocket. The FPM listens on a well-known TCP port, and zebra initiates\nthe connection.\n\nAll messages sent over the connection start with a short \u0027FPM header\u0027.\nIn the case of route add/delete messages, the header is followed by a\nnetlink message. Zebra should send a complete copy of the forwarding\ntable(s) to the FPM, including routes that it may have picked up from\nthe kernel.\n\nThe FPM interface uses replace semantics. That is, if a \u0027route add\u0027\nmessage for a prefix is followed by another \u0027route add\u0027 message, the\ninformation in the second message is complete by itself, and replaces\nthe information sent in the first message.\n\nIf the connection to the FPM goes down for some reason, the client\n(zebra) should send the FPM a complete copy of the forwarding table(s)\nwhen it reconnects.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "04f7dd64dfa0f339208f0d4833276b7684ee3343",
      "tree": "4f753475c70762ba3a96eead9795a0f3a5904c10",
      "parents": [
        "78deec450cfa5ddcad290c13b36dd1d187da213e"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Tue Nov 13 22:48:57 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:41:17 2012 +0100"
      },
      "message": "lib: bring in sys/queue.h from FreeBSD tree\n\nBring in sys/queue.h from the FreeBSD tree as lib/queue.h.\n\nThis header implements lists of various flavors using inline\nlinkages. The imported file corresponds to SVN revision 221843 (url\nbelow) and is available under the terms of the New BSD license\n(3-clause).\n\n  http://svnweb.freebsd.org/base/head/sys/sys/queue.h?revision\u003d221843\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "78deec450cfa5ddcad290c13b36dd1d187da213e",
      "tree": "bf6e811b78c726db3fe00b168b35a67e9aa586c1",
      "parents": [
        "0915bb0ce2ca6b5fee2cd214be4499eeeaf1c9af"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Tue Nov 13 22:48:56 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:41:17 2012 +0100"
      },
      "message": "zebra: extern/extract some functions from rt_netlink.c\n\n* zebra/{rib.h,zebra_rib.c}\n\n    Add nexthop_type_to_str(), which returns a human-readable string\n    corresponding to a nexthop type.\n\n  * zebra/rt_netlink.[hc]\n\n    - Add new header file that exposes some existing and new\n      netlink-related functions from rt_netlink.c to the rest of\n      zebra.\n\n        addattr32\n        addattr_l\n        rta_addattr_l\n        nl_msg_type_to_str (new)\n        nl_rtproto_to_str (new)\n\n    - Use nexthop_type_to_str() instead of the static array\n      \u0027nexthop_types_desc\u0027.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "0915bb0ce2ca6b5fee2cd214be4499eeeaf1c9af",
      "tree": "eb3cb410ed0dd341e2e565e71d74bba81c0dbf8a",
      "parents": [
        "1b5ed1b054b955275bb7cf0f80fb7767094bc28b"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Tue Nov 13 22:48:55 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:41:16 2012 +0100"
      },
      "message": "zebra: add iterator for walking all tables in RIB\n\n* lib/zebra.h\n\n    Add macro ZEBRA_NUM_OF, which returns the number of elements in a\n    static array.\n\n  * zebra/rib.h\n\n    Add the rib_tables_iter_t structure and associated functions,\n    which allow one to walk all tables in the rib.\n\n  * zebra/zebra_rib.c\n\n    - Add vrf_id_get_next() to retrieve the first VRF id (if any) that\n      is greater than a given VRF id.\n\n    - Add rib_tables_iter_next().\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1b5ed1b054b955275bb7cf0f80fb7767094bc28b",
      "tree": "b8d886b85615f1b05679e6879c961e5dcb1496c4",
      "parents": [
        "9fd92e3c4bdcc78e0f0d94d53a2d4c7b0e893fcb"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Tue Nov 13 22:48:54 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:41:16 2012 +0100"
      },
      "message": "zebra: add way to determine VRF/AFI/SAFI of table\n\nAdd some code that allows us to determine which VRF and AFI/SAFI a\ngiven RIB table corresponds to.\n\n  * zebra/rib.h\n\n    Add rib_table_info_t structure, which contains information about\n    the VRF, AFI and SAFI that a table is for.\n\n  * zebra/zebra_rib.c\n\n    - Add the vrf_table_create() function, which creates a table and\n      sets its \u0027info\u0027 pointer to a newly created rib_table_info_t.\n      The \u0027info\u0027 pointer allows us to go from a route_node or a table\n      to the associated vrf.\n\n    - vrf_alloc(): Use vrf_create_table() to create tables.\n\n  * lib/memtypes.c\n\n    Add memory type for rib_table_info_t.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9fd92e3c4bdcc78e0f0d94d53a2d4c7b0e893fcb",
      "tree": "a3adf090e5ef776b8c6dc6223890a2640217a95b",
      "parents": [
        "5aebb9c77fc2257c9d9df72db66668fabb24fc52"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Tue Nov 13 22:48:53 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:41:16 2012 +0100"
      },
      "message": "zebra: add structure to hold per-prefix state in RIB\n\nAdd the rib_dest_t structure to hold per-prefix state in the routing\ninformation base. This gives us an appropriate place to maintain the\nqueueing state of a route_node. Queuing state was previously being\nstored on the first rib in the list of ribs hanging off the\nroute_node.\n\n  * zebra/rib.h\n\n    - Add new structure rib_dest_t.\n\n    - Remove the rn_status field from \u0027struct rib\u0027, it is no longer\n      required.\n\n    - Add macros (RNODE_FOREACH_RIB, RNODE_FOREACH_RIB_SAFE) for\n      walking all \u0027struct ribs\u0027 corresponding to a route_node. These\n      hide the fact that there is an intermediate rib_dest_t\n      structure.\n\n    - Add a few utility inlines to go between a rib_dest_t and\n      associated structures.\n\n  * zebra/zebra_rib.c\n\n    - rib_link()/rib_unlink()\n\n      Tweak for new behavior, where the \u0027info\u0027 pointer of a route_node\n      points to a rib_dest_t. The list of ribs for a prefix now hangs\n      off of the dest.\n\n      Change the way we ref count route_nodes. We now hold a single\n      ref count on a route_node if there is a corresponding\n      rib_dest_t.\n\n    - Maintain the queuing state of a route_node on the flags field of\n      the rib_dest_t.\n\n    - Add the rib_gc_dest() function, which deletes a rib_dest_t if it\n      is no longer required. A rib_dest_t can be deleted iff there are\n      no struct ribs hanging off of it.\n\n    - Call rib_gc_dest() any time we unlink a rib from the\n      rib_dest_t. Currently we only need to call it once, just before\n      we return from rib_process().\n\n  * zebra/{redistribute,zebra_rib,zebra_snmp,zebra_vty}.c\n\n    Use new macros to walk over route_node ribs.\n\n  * lib/memtypes.c\n\n    Add memory type for rib_dest_t.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "5aebb9c77fc2257c9d9df72db66668fabb24fc52",
      "tree": "eb6964198f32c3196710ba1812902c43ef87f1b4",
      "parents": [
        "8b366b9cfd1f3ec1a45e0f82db7fdb27e3bb3594"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Wed Nov 07 23:50:09 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:10:51 2012 +0100"
      },
      "message": "bgpd: document bgp neighbor local-as peer command\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8b366b9cfd1f3ec1a45e0f82db7fdb27e3bb3594",
      "tree": "855e826ba80328b0fa106bfd8e1f826357806406",
      "parents": [
        "9d3f9705d8b386ccf006c106967c700141e5d049"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Wed Nov 07 23:50:08 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:10:25 2012 +0100"
      },
      "message": "bgpd: Fixed out-of-date comment\n\nWhen going through the code to write the documentation for local-as,\nI discovered that one of the comments was out-of-date.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9d3f9705d8b386ccf006c106967c700141e5d049",
      "tree": "9edfe2653741fa0f49ffef15bd66f5a522dcd025",
      "parents": [
        "3b96b78136d04ddb7e39d86577cad75acb25237a"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Wed Nov 07 23:50:07 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Nov 30 21:10:00 2012 +0100"
      },
      "message": "bgpd: add replace-as modifier for BGP neighbor\n\nAdded replace-as modifier for BGP neighbors when using\nlocal-as. If the replace-as modifier is specified, only the\nreplacement AS as specified by the local-as modifier is\nprepended to the AS_PATH, not the process\u0027s AS.\n\nIn bgp_attr.c, I decided that\n\nif (peer-\u003echange_local_as) {\n  /* If replace-as is specified, we only use the change_local_as when\n     advertising routes. */\n  if( ! CHECK_FLAG (peer-\u003eflags, PEER_FLAG_LOCAL_AS_REPLACE_AS) ) {\n    aspath \u003d aspath_add_seq (aspath, peer-\u003elocal_as);\n  }\n  aspath \u003d aspath_add_seq (aspath, peer-\u003echange_local_as);\n} else {\n  aspath \u003d aspath_add_seq (aspath, peer-\u003elocal_as);\n}\n\nwas clearer than the alternative that didn\u0027t duplicate the prepending of the\nprocess\u0027s AS:\n\n/* First, append the process local AS unless we have an alternate local_as\n * and we\u0027re replacing it (as opposed to just prepending it). */\nif (! (peer-\u003echange_local_as\n       \u0026\u0026 CHECK_FLAG (peer-\u003eflags, PEER_FLAG_LOCAL_AS_REPLACE_AS) ) ) {\n  aspath \u003d aspath_add_seq (aspath, peer-\u003elocal_as);\n}\n\nif (peer-\u003echange_local_as)\n  aspath \u003d aspath_add_seq (aspath, peer-\u003echange_local_as);\n}\n\nBut I could be convinced otherwise.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3b96b78136d04ddb7e39d86577cad75acb25237a",
      "tree": "a056f89d771aa6706816b0b8507fc4b44028d865",
      "parents": [
        "43057bf22a4240b5e163c30a1f66deb702ce746e"
      ],
      "author": {
        "name": "Hasso Tepper",
        "email": "hasso.tepper@gmail.com",
        "time": "Thu Oct 11 11:31:54 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Nov 05 15:16:53 2012 -0500"
      },
      "message": "lib: Implement monotonically increasing clock for Darwin.\n\nThere is no Posix CLOCK_MONOTONIC in Darwin, but monotonically\nincreasing clock can be implemented using mach_absolute_time().\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "43057bf22a4240b5e163c30a1f66deb702ce746e",
      "tree": "d5b4d164efa3034ae8006020d6d1ae5e314a867c",
      "parents": [
        "8c9ed279852393804c26e3c8c556a13d08654907"
      ],
      "author": {
        "name": "Hasso Tepper",
        "email": "hasso.tepper@gmail.com",
        "time": "Thu Oct 11 11:19:51 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Nov 05 15:16:53 2012 -0500"
      },
      "message": "isisd: clock_gettime() -\u003e quagga_gettime() conversion.\n\n* isisd/isis_spf.c: Use portable quagga_gettime() like the rest of\n    the Quagga code.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    }
  ],
  "next": "8c9ed279852393804c26e3c8c556a13d08654907"
}
