)]}'
{
  "log": [
    {
      "commit": "6b0655a25194c7c0331154edaa6124cf783e5e5e",
      "tree": "c0c7d479f2684531249668210da27a60322ba395",
      "parents": [
        "fdb913aedb5a9807ad60715e8badb4f25d57acea"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:53:35 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:58:02 2014 +0200"
      },
      "message": "*: nuke ^L (page feed)\n\nQuagga sources have inherited a slew of Page Feed (^L, \\xC) characters\nfrom ancient history.  Among other things, these break patchwork\u0027s\nXML-RPC API because \\xC is not a valid character in XML documents.\n\nNuke them from high orbit.\n\nPatches can be adapted simply by:\n\tsed -e \u0027s%^L%%\u0027 -i filename.patch\n(you can type page feeds in some environments with Ctrl-V Ctrl-L)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "cbf435cb72b937c9e5bfe38905e05de3755b1021",
      "tree": "6d8d2927980cdce68c4a12e5dbfdd2920ff7ae32",
      "parents": [
        "b4b359a265f1b6272b4eb17c11e9c6ef9817f34b"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Apr 28 11:42:20 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:47:30 2014 +0200"
      },
      "message": "ospfd: add debug messages for router lsa-generation\n\nAdd log messages to lsa_link_broadcast_set so it becomes more\napparent why a particular broadcast interface was added as\ntransit or stub interface.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b4b359a265f1b6272b4eb17c11e9c6ef9817f34b",
      "tree": "f6721202e8ee9f44ccdc54a61e4b74c6552912c0",
      "parents": [
        "8afee5c1729e56f74d27ceb1766bea9f943f060c"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Mon Apr 28 10:58:06 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:41 2014 +0200"
      },
      "message": "ospfd: For an ABR, ensure the right LSID is MaxAge\u0027d\n\nPROBLEM:\n\nAccurate garbage collection of maxage LSAs. The global OSPF structure has\na maxage_lsa tree - the key to the tree is \u003cls-id, adv-router\u003e tuple. Suppose\nthe ABR has multiple areas and has originated some intra-area LSAs. The\nkey for all those LSAs is the same. The code then ends up in a state where\nall but the first LSA do not get cleaned up from the areas\u0027 LSDB. A subsequent\nevent would readvertise those LSAs.\n\nPATCH:\n\nSince the LSA is going to stick around till it actually gets cleaned up by\nthe maxage_walker, make the LSA pointer as the key. Each distinct LSA that\ngets maxage\u0027d then gets added to the tree and will get cleaned up correctly.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\n[CF: Use CHAR_BIT; use uintptr_t; use sizeof(field) instead of sizeof(type)]\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n[DL: this must remain a temporary fix! needs to be redone after 0.99.23]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8afee5c1729e56f74d27ceb1766bea9f943f060c",
      "tree": "2a3fb12d1a3f951d17df4299266eda47ec85087c",
      "parents": [
        "e387dfd18ded3ddfef4c0a9cb896f73831864579"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Apr 28 08:04:59 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:37 2014 +0200"
      },
      "message": "ospfd: clarify indentation and comments in ospf_lsa_maxage_delete\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e387dfd18ded3ddfef4c0a9cb896f73831864579",
      "tree": "9632ef5671fdbc44f43333427154002484c768e2",
      "parents": [
        "49d7af115177d05bd66d3115cbacd56a7591ec5e"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Apr 28 08:04:58 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:31 2014 +0200"
      },
      "message": "ospfd: fix a reference counting issue introduced by commit 4de8bf0011\n\nCommit 4de8bf0011 added a return statement to a loop iterating over a\nroute_table. That loop uses route_top/route_next.\n\nAs commit 4de8bf0011 failed to add a route_node_unlock before the\nreturn statement, a reference is leaked when this codepath is taken.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "49d7af115177d05bd66d3115cbacd56a7591ec5e",
      "tree": "7082972f63b091f0e8bcbbf9a285fe10e5136a8d",
      "parents": [
        "4b4bda9bb1913579bd54667f62fafe58e2746478"
      ],
      "author": {
        "name": "Lu Feng",
        "email": "lu.feng@6wind.com",
        "time": "Fri Feb 21 08:11:15 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:28 2014 +0200"
      },
      "message": "ospfd: check the LS-Ack\u0027s recentness instead of only comparing the #seq\n\nISSUE:\n\nRTA(DR)-----(BackupDR)RTB\n\nRTA advertises a new LSA to RTB, and then flushes the LSA (with setting\nthe age of the LSA to MaxAge) within 1 second. Then the LSA is deleted\nfrom RTA, while it still exists on RTB with non-MaxAge and can not be\nflushed any more.\n\nFIX:\n\nThe reason can be explained in below:\n\na) RTA -- new LSA, #seq\u003d1 --\u003e RTB (RTB will send the delayed Ack in 1s)\nb) RTA -- MaxAge LSA, #seq\u003d1 --\u003e RTB (RTB discards it for the MIN_LS_ARRIVAL)\nc) RTA \u003c-- Ack for the new LSA, #seq\u003d1 -- RTB (RTA accepts it)\n\nIn the step c), ospf_ls_ack() compares the #seq of the entry in the LS-Ack\nwith that of local MaxAge LSA. The #seq of the two entries are same. So\nthe Ack is accepted and the LSA is removed from the retransmit-list (while\nit should not).\n\nIn RFC2328, section  13.7.  Receiving link state acknowledgments:\n\no   If the acknowledgment is for the same instance that is  \u003c\u003d\u003d\n    contained on the list, remove the item from the list and\n    examine the next acknowledgment.  Otherwise:\n\nwhere \"same instance\" does not mean the same #seq. We must call\nospf_lsa_more_recent() to check whether the two instances are same.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4b4bda9bb1913579bd54667f62fafe58e2746478",
      "tree": "11b3a421f85686544d95425c13608736226a7225",
      "parents": [
        "7a9d983e4f961c2103f2cf82a51d5d8321ad0e43"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Jul 11 07:56:29 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:22 2014 +0200"
      },
      "message": "ospfd: don\u0027t allow to set network type on loopback interfaces\n\nOSPFd only allocates some stub information for loopback interfaces.\nThis causes a crash when the interface state machine is started on\nthat interface by configuring a different network type.\n\nIt doesn\u0027t make much sense to configure the network type of a loopback\ninterface, therefore, just forbid it.\n\nSee also bugzilla #670.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7a9d983e4f961c2103f2cf82a51d5d8321ad0e43",
      "tree": "11557e052ccb1f7606501a05eb5a1dc4d22dbdab",
      "parents": [
        "24c84dbe806084552d7bb14b9f1d00514a048b9d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Jul 10 11:56:18 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:08 2014 +0200"
      },
      "message": "ospfd: run DR election prior to LSA regeneration\n\nThe results from DR election are used when constructing router-LSAs.\nE.g. they are used to determine whether a broadcast interface should\nbe added with a link type of stub interface or transit interface.\n\nTherefore, we should run DR election prior before regenerating LSAs.\n\nBefore commit c363d3861b5384a31465a72ddc3b0f6ff007a95a the DR election\nwas called synchronously prior to router-LSA regeneration which was run\nasynchronously.\n\nThis fixes bug #761 on the Quagga bugzilla.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6f2a67031cfb21362fc7ecd3251761799c8ffe27",
      "tree": "514ba2ef904d56131bffaa5fbc40443826529641",
      "parents": [
        "cd40b329a2e4da882bcad0431c048c876bbeafbd"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:52 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 20:21:42 2014 +0200"
      },
      "message": "ospfd/ospf_vty.c: use keyword cmd style\n\nUse the new keyword command style for:\n\n  - default-information originate\n  - distance ospf\n  - redistribute\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "cd40b329a2e4da882bcad0431c048c876bbeafbd",
      "tree": "cfbdec5a7559c6d3e56766797896a18809aa1746",
      "parents": [
        "e712d0e3667ffad8109ef8bce3ce01927ee95bb7"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:51 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 20:21:41 2014 +0200"
      },
      "message": "lib/command.c: rewrite command matching/parsing\n\nAdd support for keyword commands.\n\nIncludes new documentation for DEFUN() in lib/command.h, for preexisting\nfeatures as well as new keyword specification.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2b00515a9b639fd1e057f3ebf10ded2dde920764",
      "tree": "1167cb145764208a132599e5d83980708501bac4",
      "parents": [
        "f7bf41534e885c7bc077529c591a1bce24a5f1e9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:49 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:32:49 2014 +0200"
      },
      "message": "bgpd, ospfd, zebra: fix some DEFUN definitions\n\nFixup some DEFUNS with incorrect command strings or mixed up helpstrings.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e708ed69aa0b993527f48b1f31b645c00750927f",
      "tree": "8f33d73b2a85b51c042318d58a1750eeb8019616",
      "parents": [
        "a11e012e8661629d665e992e765741a5eaa7d017",
        "424cc3bd48da0f417c9056c5c2ade697a3386cd4"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 17:04:25 2014 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 17:04:25 2014 +0100"
      },
      "message": "Merge volatile/cumulus_ospf6d\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a11e012e8661629d665e992e765741a5eaa7d017",
      "tree": "d6967d9c5044f8c924aa2f4b62bac8e3bda358e2",
      "parents": [
        "b52aef18a9f3acc8b24ab5c2631dc574b8e2ec70"
      ],
      "author": {
        "name": "Remi Gacogne",
        "email": "rgacogne-github@coredump.fr",
        "time": "Sun Sep 08 13:48:34 2013 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Tue Feb 11 10:28:03 2014 +0100"
      },
      "message": "security: Fix some typos and potential NULL-deref\n\nThis patch against the git tree fixes minor typos, some of them possibily\nleading to NULL-pointer dereference in rare conditions.\n\nSigned-off-by: Remi Gacogne \u003crgacogne-github@coredump.fr\u003e\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "a25a1264a5615a90e9ca9f60ccc1f397ca55bc56",
      "tree": "358307c0bf0d047c7279708ceed154f05dcbc707",
      "parents": [
        "6ee06fa9ed91412cb745668d462031cdbe2642e0"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Nov 27 14:36:05 2013 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Mon Feb 10 22:07:11 2014 +0100"
      },
      "message": "ospfd: fixup log message in ospf_zebra_delete\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "c5926a92235874574b20e426a3752c1451a90ec7",
      "tree": "c8b8b66eee832e3db5e5d315e966b168918ef57e",
      "parents": [
        "bf986da797e7d2a0aaae313fea626ba433581f03"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:00 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: add p2p interface support\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: Ayan Banerjee \u003cayabaner at gmail.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nReviewed-by: James Li \u003cjli at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2449fcd64ae95d5fbfd95d93468fc57003def57d",
      "tree": "8c152a482f2080ee425cd06381861d2bf69769d4",
      "parents": [
        "3810e06eebe14f75c66fb17a88574384573e95fa"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:17 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: reinvoke MaxAge remover thread if not all MaxAge LSAs were flushed.\n\nMaxAge LSAs are being flushed out only on an event, unlike OSPFv2 where they\u0027re flushed out\nperiodically. This causes certain LSAs to hang around forever, never getting flushed out.\nThis patch makes flushing out MaxAge LSAs periodic, retriggered after a certain period if\nnot all MaxAge LSAs were flushed out.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8551e6dadce41fb87a61767af723cb25ae611a04",
      "tree": "cb0854c2e216989a0fa211d56d2bf6fd6948b2d6",
      "parents": [
        "a83a1e9c2f035d3152451dcfc97ab13b4ac427b9"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue Oct 22 17:42:18 2013 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 18:01:31 2013 -0700"
      },
      "message": "ospf6d/ospfd: refactor some common defines\n\nRearranging common defs and structures for use betweeen OSPFv2 and\nOSPFv3.  Created a new file called libospf.h under lib directory to\nhold defines that are common between OSPFv2 and OSPFv3 code bases.\n\n[DL: split of defines refactor from timer refactor]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "23cd8fb7133befdb84b3a918f7b2f6147161ac6e",
      "tree": "b8ef335dcbc2051a5017aa50bc4b759882b638d2",
      "parents": [
        "a12afd5e8e57c95505d4d0166af234c7f19e9fe1"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Aug 02 07:27:53 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Aug 06 12:41:46 2013 +0200"
      },
      "message": "ospfd: protect vs. VU#229804 (malformed Router-LSA)\n\nVU#229804 reports that, by injecting Router LSAs with the Advertising\nRouter ID different from the Link State ID, OSPF implementations can be\ntricked into retaining and using invalid information.\n\nQuagga is not vulnerable to this because it looks up Router LSAs by\n(Router-ID, LS-ID) pair.  The relevant code is in ospf_lsa.c l.3140.\nNote the double \"id\" parameter at the end.\n\nStill, we can provide an improvement here by discarding such malformed\nLSAs and providing a warning to the administrator.  While we cannot\nprevent such malformed LSAs from entering the OSPF domain, we can\ncertainly try to limit their distribution.\n\ncf. http://www.kb.cert.org/vuls/id/229804 for the vulnerability report.\nThis issue is a specification issue in the OSPF protocol that was\ndiscovered by Dr. Gabi Nakibly.\n\nReported-by: CERT Coordination Center \u003ccert@cert.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c51443f4aa6b7f0b0d6ad5409ad7d4b215092443",
      "tree": "effbe8695f7bfd0ed5261b08d5beddb66cceed64",
      "parents": [
        "78116ab6e1524815910658898620776ae5fd4d18"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jul 08 23:05:28 2013 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Jul 28 16:13:10 2013 +0200"
      },
      "message": "ospfd: CVE-2013-2236, stack overrun in apiserver\n\nthe OSPF API-server (exporting the LSDB and allowing announcement of\nOpaque-LSAs) writes past the end of fixed on-stack buffers.  This leads\nto an exploitable stack overflow.\n\nFor this condition to occur, the following two conditions must be true:\n- Quagga is configured with --enable-opaque-lsa\n- ospfd is started with the \"-a\" command line option\n\nIf either of these does not hold, the relevant code is not executed and\nthe issue does not get triggered.\n\nSince the issue occurs on receiving large LSAs (larger than 1488 bytes),\nit is possible for this to happen during normal operation of a network.\nIn particular, if there is an OSPF router with a large number of\ninterfaces, the Router-LSA of that router may exceed 1488 bytes and\ntrigger this, leading to an ospfd crash.\n\nFor an attacker to exploit this, s/he must be able to inject valid LSAs\ninto the OSPF domain.  Any best-practice protection measure (using\ncrypto authentication, restricting OSPF to internal interfaces, packet\nfiltering protocol 89, etc.) will prevent exploitation.  On top of that,\nremote (not on an OSPF-speaking network segment) attackers will have\ndifficulties bringing up the adjacency needed to inject a LSA.\n\nThis patch only performs minimal changes to remove the possibility of a\nstack overrun.  The OSPF API in general is quite ugly and needs a\nrewrite.\n\nReported-by: Ricky Charlet \u003cricky.charlet@hp.com\u003e\nCc: Florian Weimer \u003cfweimer@redhat.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4c14b7f684510592f2eb46fd84859d8bca57def9",
      "tree": "f42890045f6d1cd37cdd61106b6524e6c476f445",
      "parents": [
        "4de8bf001189d40e086764fd804e59657d2e21e6"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Feb 20 10:00:54 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sat Apr 20 06:14:27 2013 +0200"
      },
      "message": "ospfd: fix flooding procedure\n\nAn ospf router should accept a new maxage LSA into its lsdb if it has any\nneighbors in state Exchange or Loading. ospfd would however only account\nfor neighbors on the same interface which does not seem to be a valid\noptimization.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "4de8bf001189d40e086764fd804e59657d2e21e6",
      "tree": "367c46fff12691e2622abc1d23ea0f95fdb97504",
      "parents": [
        "77ef01392f82c27a9892840c61a5e7391fd82415"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Feb 20 10:00:52 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sat Apr 20 06:12:13 2013 +0200"
      },
      "message": "ospfd: make ospf_maxage_lsa_remover actually yield\n\nospf_maxage_lsa_remover whould check whether to yield,\nbut run on anyway.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\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": "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": "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": "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": "8c9ed279852393804c26e3c8c556a13d08654907",
      "tree": "540dfd742339845bac1079b89122a4a7b33aaba0",
      "parents": [
        "9234b382735b690f403ce018ce392316b2ad6e38"
      ],
      "author": {
        "name": "Hasso Tepper",
        "email": "hasso.tepper@gmail.com",
        "time": "Thu Oct 11 11:15:18 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Nov 05 15:15:57 2012 -0500"
      },
      "message": "ospfd: remove some buggy extra \u0027;\u0027 symbols.\n\n * ospfd/ospf_apiserver.c: extra ; causing lookup to fail always\n * ospfd/ospf_lsa.c: extra ; causing debug output even when disabled\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "837d16ccbe0fca413f8927da6a34b1e97ccada8a",
      "tree": "7aed5a517b619c03d11bf567f6a14cda6f8f5efe",
      "parents": [
        "655071f44aab42e89bcece3a93da456fdd0d913a"
      ],
      "author": {
        "name": "Balaji.G",
        "email": "balajig81@gmail.com",
        "time": "Wed Sep 26 14:09:10 2012 +0530"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:59 2012 -0700"
      },
      "message": "*: use array_size() helper macro\n\nUse the array_size() helper macro.  Replaces several instances of local\nmacros with the same definition.\n\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b4154c145a2d1d0679983130413b81d44fbb04ab",
      "tree": "f46031cc4f632315fd7ebb71737c971faeb635f4",
      "parents": [
        "821755530e328182c885c98891af799926bd56bd"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Mon Sep 24 17:26:53 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "ospfd: respect max-metric over configured cost for summary LSAs\n\nISSUE\n\nWhen max-metric router-lsa administrative is invoked on an ABR created with...\narea \u003carea\u003e range \u003caddr/mask\u003e\nthe summary LSAs are sent out with 65535 (max-metric) added to the normal cost.\n\nWhen max-metric router-lsa administrative is invoked on an ABR created with...\narea \u003carea\u003e range \u003caddr/mask\u003e cost \u003ccost\u003e\nthe summary LSAs are sent out with \u003ccost\u003e (the max-metric is ignored).  This\nsecond behavior effectively incapacitates the max-metric function.\n\nPATCH\n\nThis patch evaluates the state of the router and if it\u0027s isolated as a stub\nrouter (rfc3137) via `max-metric router-lsa`, we unconditionally uses the\nvalue of 0xff0000 when advertising summary LSAs.\n\nSigned-off-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "821755530e328182c885c98891af799926bd56bd",
      "tree": "5227803e0f5cd089a41c1fc06a47cef18612b6a7",
      "parents": [
        "8fc9e007ee752a982fe47311702d7ff3b9c5b5cd"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Mon Sep 24 17:26:50 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "ospfd: ABR algorithm not propagating MAXAGE LSAs into area\n\nWhen a range (or sub-range) is deleted, the area is notified by propagating a\nMAXAGE LSA.  This LSA stays in the database for a while to both insure\npropagation as well as in the off chance that it\u0027s useful in the near future.\n\nUnfortunately, the ABR algorithm was treating these MAXAGE LSAs as unchanged and\nnot propagating them within the areas.\n\nSigned-off-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8fc9e007ee752a982fe47311702d7ff3b9c5b5cd",
      "tree": "8dd5ef95e303d34f1045afe538f44a07dab017d3",
      "parents": [
        "d8a4e42b7d19a87eacc00c825e913907a58f39ee"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Mon Sep 24 17:26:46 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "ospfd: blackhole route removal for area range\n\nISSUE\n\nWhen an area range is created in which there the sub-area has routes that are\nsmaller than the range, an ABR creates a blackhole route to cover the range.\nWhen the range is removed, the blackhole route is not removed.\n\n--A----B----C---\n\nB is an ABR with A in area 1 and C in area 0.  If A advertises `10.2.0.0/30` and\n`10.2.0.4/30` and B is configured with `area 0.0.0.1 range 10.2.0.0/29` a\nblackhole is created on B (`blackhole 10.2.0.0/29 proto zebra`).  When the\narea/range is removed via the command line, the blackhole remains in existence\neven though the \"range\" route is removed from area 0 and the individual routes\nare propagated.\n\nPATCH\n\nThe reason for this behavior is that, prior to this patch, the range is deleted\nfrom the area\u0027s list, so when ospf_abr_manage_discard_routes() gets called,\nthere is nothing to clean up.  The patch removes the discard route as part of\nthe processing of the command line (ospf_area_range_unset()).\n\nSigned-off-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d8a4e42b7d19a87eacc00c825e913907a58f39ee",
      "tree": "2d0777bfbef0e77ca1722fe0e7b2591ef89d4102",
      "parents": [
        "b0145ddb4bf75d2c8853aa3d0bc7c522f4f17531"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Thu Sep 13 17:17:36 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "lib: improve fletcher checksum validation\n\nOVERVIEW\n\nThe checksum used in OSPF (rfc2328) is specified in rc905 annex B.  There is an\nsample implementation in rfc1008 which forms the basis of the quagga\nimplementation.  This algorithm works perfectly when generating a checksum;\nhowever, validation is a bit problematic.\n\nThe following LSA (generated by a non-quagga implementation) is received by\nquagga and marked with an invalid checksum; however, it passes both the rfc905\nand rfc1008 validation checks.\n\nstatic uint8_t lsa_10_121_233_29[] \u003d {\n   0x0e, 0x10, 0x02, 0x03,\n   0x09, 0x00, 0x35, 0x40,\n   0x0a, 0x79, 0xe9, 0x1d,\n   0x80, 0x00, 0x00, 0x03,\n   0x00, 0x8a, 0x00, 0x1c,\n   0xff, 0xff, 0xff, 0xe0,\n   0x00, 0x00, 0x36, 0xb0\n};\n\nLS Type: Summary-LSA (IP network)\n   LS Age: 3600 seconds\n   Do Not Age: False\n   Options: 0x02 (E)\n   Link-State Advertisement Type: Summary-LSA (IP network) (3)\n   Link State ID: 9.0.53.64\n   Advertising Router: 10.121.233.29 (10.121.233.29)\n   LS Sequence Number: 0x80000003\n   LS Checksum: 0x008a\n   Length: 28\n   Netmask: 255.255.255.224\n   Metric: 14000\n\nYou\u0027ll note that one byte of the checksum is 0x00; quagga would calculate the\nchecksum as 0xff8a.\n\nIt can be argued that the sourcing implementation generates an incorrect\nchecksum; however, rfc905 indicates that, for 1\u0027s complement arithmetic, the\nvalue 255 shall be regarded as 0, thus either values are valid.\n\nEXPLANATION\n\nThe quagga ospfd and ospf6d implementations operate by copying the PDU\u0027s\nexisting checksum in a holding variable, calculating the checksum, and comparing\nthe resulting checksum to the original.  As a note, this implementation has the\nside effect of modifying the contents of the PDU.\n\nEvaluation of both rfc905 and rfc1008 shows that checksum validation should\ninvolve calculating the sum over the PDU and checking that both resulting C0 and\nC1 values are zero.  This behavior is enacted in the rfc1008 implementation by\ncalling encodecc with k \u003d 0 (checksum offset); however, this functionality had\nbeen omitted from the quagga implementation.\n\nPATCH\n\nThis patch adds the ability to call the quagga\u0027s fletcher_checksum() with a\nchecksum offset value of 0xffff (aka FLETCHER_CHECKSUM_VALIDATE) which returns\nthe sum over the buffer (a value of 0 indicates a valid checksum).  This is\nsimilar to the mechanism in rfc1008 when called with k \u003d 0.  The patch also\nintroduces ospf_lsa_checksum_valid().\n\nospf6d had it\u0027s own implementation of the fletcher checksum in\nospf6_lsa_checksum(); it\u0027s the same algorithm as in fletcher_checksum().  This\npatch removes the local implementation in favor of the library\u0027s as well as creates\nand uses ospf6_lsa_checksum_valid().\n\nquagga\u0027s ISIS implementation suffers from the same problem; however, I do not\nhave the facilities to validate a fix to ISIS, thus this change has been left to\nthe ISIS maintainers.  The function iso_csum_verify() should be reduced to\nrunning the fletcher checksum over the buffer using an offset of 0.\n\nSigned-off-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Nolan Leake \u003cnolan@cumulusnetworks.com\u003e\nReviewed-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "945ea293399af6c9ff3efd07686ff30c3d2a3e8b",
      "tree": "81f039e5b13b1f008a20e534e27c738b970c1874",
      "parents": [
        "28971c8cb1138700e87dc7da673e59b5596bb51b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Aug 06 12:17:12 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Oct 19 11:49:09 2012 +0100"
      },
      "message": "Revert \"ospfd: Do not fall back to intervening router.\"\n\nThis reverts commit 9289c6ff55cd96c943d23e43fc9e5f987aa965ed.\n\nThe commit reverted an earlier change which was fixed a bug that caused\nblack-holes to remote destinations with multiple paths, that could occur\nduring convergence. Overall, the previous code is more correct.\n"
    },
    {
      "commit": "4bed21c402fa1079301d47811a4579985997c881",
      "tree": "977e18bc3403395a33de2d5fef1d5d738fa42cf7",
      "parents": [
        "9289c6ff55cd96c943d23e43fc9e5f987aa965ed"
      ],
      "author": {
        "name": "Brad Smith",
        "email": "brad@comstyle.com",
        "time": "Thu Aug 09 00:40:09 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 25 05:56:00 2012 +0200"
      },
      "message": "build: correct libtool parameter used within Makefiles\n\nThis corrects the parameters passed to libtool when linking\nthe shared libraries. The paramter name is -version-info not\n-version.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9289c6ff55cd96c943d23e43fc9e5f987aa965ed",
      "tree": "b971fa4b0ce15e02abd27a62548d53371e4cc0b2",
      "parents": [
        "ba281d3d04053b7c59ecdfdbea91a62c09e9f8a4"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:14 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:45 2012 +0200"
      },
      "message": "ospfd: Do not fall back to intervening router.\n\nThe patch in bug 330 did two things. It add a return value\nwhether ospf_nexthop_calculation() failed or not and also\nmoved the return stmt for 16.1.1 para 5 so now SPF\nwill fallback to the intervening router when no back links are found\nby 16.1.1 para 5. This is wrong and can potentially create black holes\nor routing loops according to Dave Katz and Acee Lindem at ospf@ietf.org\n\nEven if the current code could be proved to be harmless in all cases,\nit adds substantial extra processing and memory allocations.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ba281d3d04053b7c59ecdfdbea91a62c09e9f8a4",
      "tree": "3ada2bf381bef8a571776a3e54879c8d1aa8f149",
      "parents": [
        "c963c20346c0e3cd75735b88beded98389607cd5"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:13 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:45 2012 +0200"
      },
      "message": "ospfd: use ZEBRA_NEXTHOP_IPV4_IFINDEX\n\nOSPF really needs to specify interface in its routes. Otherwise\nospf may change the wrong route.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n[fixed up some whitespace errors, split patch in two]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "57c639f01ec6be70ac858f412d32b638a9756bed",
      "tree": "cd415e8d098b827d69dcfdf3d3b22f5df11cc4c9",
      "parents": [
        "c81ee5c94f5b34375f3ef276fdb9bde9098e7ecb"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:12 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:37 2012 +0200"
      },
      "message": "ospf_spf_process_stubs: use LSA pos to find OSFP interface\n\nThis is better than a prefix lookup as prefixes may not be\nunique, that is, the same prefix can exist on several interfaces.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c81ee5c94f5b34375f3ef276fdb9bde9098e7ecb",
      "tree": "dad1ab0d81b72a7c7a869bc7dc051b703deec9be",
      "parents": [
        "7b92589c225ae46417fc3fa0714a1b6f53f19c51"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:11 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:30 2012 +0200"
      },
      "message": "ospfd: Optimize and improve SPF nexthop calculation\n\nMaintain router LSA positions in OSPF interface.\nFind the OSPF interface in nexthop_calculation using\nthe position in the router LSA. This is possible because\nthe only time nexthop_calculation needs to look up interfaces\nis when dealing with its own Router LSA.\n\nThis has the following advantages:\n - Multiple PtP interfaces with the same IP address between two routers.\n - Use Unnumbered PtP on just one end of the link.\n - Faster OI lookup for the OSPF interface and only\n   done once for PtoP links.\n\n*ospf_interface.h: (struct ospf_interface) Add storage for\n\t\t   storing router LSA position.\n\n*ospf_interface.c: (ospf_if_lookup_by_lsa_pos)\n\t\t   lookup OSPF I/F in an area using LSA position.\n\n*ospf_lsa.c: (router_lsa_link_set) record Router LSA position.\n\n*ospf_spf.c: (ospf_spf_next) Count and pass along lsa position.\n\t     (ospf_nexthop_calculation) Add lsa position argument.\n\t     call ospf_if_lookup_by_lsa_pos() for OSFP interface handle.\n\t     Clean up and remove all calls ospf_if_is_configured() the\n\t     rest. Adjust a few debug logs.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7b92589c225ae46417fc3fa0714a1b6f53f19c51",
      "tree": "38e1add198ee857211684250858a3b946c05c6a9",
      "parents": [
        "aa5cf24b9de96245f2166ef1c4e9612890ced1b3"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jul 23 18:17:57 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:02:31 2012 +0200"
      },
      "message": "ospfd: avoid exhausting memory with OSPF vertices (BZ#476)\n\nThis was found in scale testing at OSR;  ospfd is adding the same link\nover and over again to the SPF tree.  This fix prevents the resulting\nmemory corruption from happening and adds a debug message to track\noccurence of this issue and/or confirm a proper fix.\n\n(This version was improved by Scott Feldman over the earlier RFC.)\n\n* ospfd/ospf_spf.c: (ospf_spf_add_parent) loop over existing vertices\n  and refuse to add duplicates.\n\nTested-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8046ba6ec4d6e87bf8da6563c0f3e5e66c4652b3",
      "tree": "1b38b2eae4e1cee042f96a42217b14647159bf0f",
      "parents": [
        "0ff4b9c96793898429052de576d8da368e48997e"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Thu May 31 13:30:28 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "snmp: let handlers accept OID from a lesser prefix\n\nMost table handlers do not expect to be given an OID whose prefix is\noutside what they can handle. This is not a problem with the SMUX\nimplementation since it always correct the OID such that the prefix\nmatches. However, this is not the case for the AgentX\nimplementation. A new function, smux_header_table() is used to do this\nnormalization.\n"
    },
    {
      "commit": "b7c0d0651cd64f644d02ef5e4d1b82febe7e57d8",
      "tree": "5480eff7b8581e1168d23657da0f30e23100d7bc",
      "parents": [
        "b8cf46b715b2c21db5dce8118c70b4dd9b5255a3"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Fri May 25 11:17:01 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "agentx: handle SNMP traps\n\nsmux_trap() signature has been changed to provide appropriate level\ninformation to send SNMPv2 notifications. This includes the addition\nof the enterprise OID to use (from which is derived the SNMP trap OID)\nand the MIB registry to locate the appropriate function for variable\nbindings provided by the trap.\n\nThe SMUX implementation has been updated but ignore the provided\nenterprise OID. Instead, it still uses the SMUX peer OID to keep\ncompatibility with previous versions of Quagga. The SMUX\nimplementation also ignores the provided MIB registry since it uses\nsmux_get() function to grab the appropriate values. This is not\npossible with the AgentX implementation since there is no such\nfunction provided by NetSNMP.\n"
    },
    {
      "commit": "b8cf46b715b2c21db5dce8118c70b4dd9b5255a3",
      "tree": "61fea7fd6d75345f5224e36d8ca33badc9d39b17",
      "parents": [
        "4b89e45d928d41bb5d32a00ba7b402d6a3bbdf44"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Fri May 25 08:56:44 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "smux: drop findVar element from trap object struct\n\nThis element was not unused.\n"
    },
    {
      "commit": "4b89e45d928d41bb5d32a00ba7b402d6a3bbdf44",
      "tree": "7471ad396e285ff5b0ca3d85600f3c184f43dd2c",
      "parents": [
        "d6be5fb9bc41ea77547204eeedd12132b26ad662"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Thu May 24 21:22:01 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "smux: remove `tick` argument from smux_trap()\n\nsmux_trap() contains an argument whose use appears to be to set\nsysUpTime.0/timestamp field in SNMP trap. However, this value is not\nused in smux_trap(). Moreover, it is expected that this field is the\nvalue of sysUpTime.0 when the trap was sent and not any other time\nrelated to the trap. To avoid any confusion, we remove this field from\nthe signature of the function.\n"
    },
    {
      "commit": "08d7f6533ecc0f935a76918c462982004534864d",
      "tree": "0e67590a8a2aba551439c46bfa8b33d7fba4feb7",
      "parents": [
        "6b1e37f8537fa2a4560de32e83ca5089763e2d39"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 22:29:17 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "build: use net-snmp-config to configure NetSNMP\n\nThe correct method to link to NetSNMP is to use net-snmp-config (which\nis like pkg-config). Explicit link to libcrypto is also dropped\n(NetSNMP libs are linked to libcrypto, no need to link Quagga to\nit). Moreover, @SNMP_INCLUDES@ is dropped because useless. Due to a\nbug in configure.ac, it was properly populated.\n"
    },
    {
      "commit": "6b1e37f8537fa2a4560de32e83ca5089763e2d39",
      "tree": "941dfbfbe62981ec214ac1e5a3f607368f4bf1d4",
      "parents": [
        "9e7a548ce421660b0d22bfeb90c2b2b53742aac7"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 22:15:20 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "build: only define HAVE_SNMP\n\nNetSNMP is the only SNMP implementation for Quagga. We don\u0027t need two\ndifferent symbols.\n"
    },
    {
      "commit": "9e7a548ce421660b0d22bfeb90c2b2b53742aac7",
      "tree": "4c962403808f98806781fb4ad15594152bc1effa",
      "parents": [
        "a47c5838e9f445ab887ad927706b11ccbb181364"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 14:32:22 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "build: allow configure and build in a separate directory\n\nSome .h files in lib/ are autogenerated. The search path should\ninclude the build directory and the source directory. They usually\nmatch but sometimes, they may be different. For example:\n\n $ mkdir build\n $ cd build\n $ ../configure\n $ make\n"
    },
    {
      "commit": "7939e016b3d4ecd2f5b8ad708b69607e05a084a6",
      "tree": "eb33846c71de49df9d1128eec149f2a214bb74f9",
      "parents": [
        "3cadc0cdebb8f8262b1c1fbb8bfcbcdc3baa3733"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon Apr 09 18:03:57 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:37:17 2012 +0200"
      },
      "message": "ospfd: Fixes a crash of the daemon with a snmp walk\n\n    - And allows to walk the LSDB.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n"
    },
    {
      "commit": "a25a44dba84e9a6ac2b87e24472b6e9f959d845b",
      "tree": "86ce0bc9de906bf9aaf6ea822b157b31b7c45a06",
      "parents": [
        "e96b312150d8e376c1ef463793d1929eca3618d5"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Apr 03 20:33:24 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Apr 11 23:18:29 2012 +0200"
      },
      "message": "ospfd: adjust OSPF_ROUTER_LSA_MIN_SIZE for VL case\n"
    },
    {
      "commit": "aee567450eaf32877d00f47c4cc5d05c5fb85a51",
      "tree": "9fb0df5ce6fedc3e403f8b2b4d59ed0e556a1453",
      "parents": [
        "bd5651f0ec7aa94627a2a6868dd458f016750a35"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 28 15:15:29 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:45 2012 +0100"
      },
      "message": "ospfd: reduce ospf_verify_header()\n\nProtocol version checks fits ospf_packet_examin() better (like it is\nimplemented in ospf6d), and packet type check is already there.\n"
    },
    {
      "commit": "bd5651f0ec7aa94627a2a6868dd458f016750a35",
      "tree": "9f5dcd01bd90d1ea78cd841f00fea4bbdc3a6dee",
      "parents": [
        "ef1b78cbcd8ade0c5444f3ff9dd00a40e760ec92"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Feb 26 17:59:43 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:38 2012 +0100"
      },
      "message": "ospfd: bring ospf_check_auth() into focus\n\nThe old ospf_check_auth() function did two different jobs depending on\nAuType. For Null and Simple cases it actually authenticated the packet,\nbut for Cryptographic case it only checked declared packet size (not\ntaking the actual number of bytes on wire into account). The calling\nfunction, ospf_verify_header(), had its own set of MD5/checksum checks\ndispatched depending on AuType.\n\nThis commit makes the packet size check work against the real number of\nbytes and moves it to ospf_packet_examine(). All MD5/checksum\nverification is now performed in ospf_check_auth() function.\n\n* ospf_packet.c\n  * ospf_packet_examin(): check length with MD5 bytes in mind\n  * ospf_verify_header(): remove all AuType-specific code\n  * ospf_check_auth(): completely rewrite\n"
    },
    {
      "commit": "ef1b78cbcd8ade0c5444f3ff9dd00a40e760ec92",
      "tree": "ad1f4d0ac76be5cff0cea5c44ba23b76967746c2",
      "parents": [
        "b29adf9c3e69f298f748564a20abdf7274bbc549"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Feb 26 17:00:57 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:34 2012 +0100"
      },
      "message": "ospfd: introduce ospf_auth_type_str[]\n"
    },
    {
      "commit": "b29adf9c3e69f298f748564a20abdf7274bbc549",
      "tree": "1b1d18c542fa6cae9f4d7f7a6e559a23b0bdafc3",
      "parents": [
        "4e31de792ec5e48a97360b5b86196b4fa02996a3"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Feb 20 23:08:10 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:30 2012 +0100"
      },
      "message": "ospfd: fix packet length check for auth/LLS cases\n\nAn OSPFv2 packet with trailing data blocks (authentication and/or\nlink-local signaling) failed the recently implemented packet length\ncheck, because trailing data length isn\u0027t counted in the packet header\n\"length\" field. This commit fixes respective check conditions.\n\n* ospf_packet.c\n  * ospf_packet_examin(): use \"bytesdeclared\" instead of \"bytesonwire\"\n"
    },
    {
      "commit": "4e31de792ec5e48a97360b5b86196b4fa02996a3",
      "tree": "6312c43f628d69392676c85129f107e4ee53b802",
      "parents": [
        "2d8223c5472129eba89d630dc4f2688ebeae1dd8"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Feb 17 16:20:50 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:28 2012 +0100"
      },
      "message": "ospfd: introduce ospf_lsa_minlen[] (BZ#705)\n\nThis commit ports more packet checks to OSPFv2, in particular, LSA size\nverification and Router-LSA link blocks verification.\n\n* ospf_lsa.h: add LSA size macros\n* ospf_packet.h: add struct ospf_ls_update\n* ospf_packet.c\n  * ospf_lsa_minlen[]: a direct equivalent of ospf6_lsa_minlen[]\n  * ospf_router_lsa_links_examin(): new function, verifies trailing\n    part of a Router-LSA\n  * ospf_lsa_examin(): new function like ospf6_lsa_examin()\n  * ospf_lsaseq_examin(): new function like ospf6_lsaseq_examin()\n  * ospf_packet_examin(): add type-specific deeper level checks\n"
    },
    {
      "commit": "2d8223c5472129eba89d630dc4f2688ebeae1dd8",
      "tree": "482c71c9a6f149ab78938de2df7f3e534a9756a3",
      "parents": [
        "e52591481ed64e4cf9f26a76ad682ed7e6b451e7"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 30 20:32:39 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:22 2012 +0100"
      },
      "message": "ospfd: review ospf_check_md5_digest()\n\nRewrite some pointer arithmetics without the additional variables and\nmove byte order conversion inside the function.\n"
    },
    {
      "commit": "e52591481ed64e4cf9f26a76ad682ed7e6b451e7",
      "tree": "738a2ba31eb42b6d5d61fd61bad772a73c5cd82e",
      "parents": [
        "75c8eabbb5d3dc8aa21b61e8700ab939ce272f5c"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 30 16:07:18 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:19 2012 +0100"
      },
      "message": "ospfd: review ospf_check_auth()\n\n1. The only purpose of \"ibuf\" argument was to get stream size, which\nwas always equal to OSPF_MAX_PACKET_SIZE + 1, exactly as initialized\nin ospf_new().\n\n2. Fix the packet size check condition, which was incorrect for very\nlarge packets, at least in theory.\n"
    },
    {
      "commit": "75c8eabbb5d3dc8aa21b61e8700ab939ce272f5c",
      "tree": "9ecfa0b4bedf00abb544fea8b9242e59af31a5b6",
      "parents": [
        "7e0e2cb14ca16ce9eaca3b0300c1ffa92a6a104b"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 30 15:41:39 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:14 2012 +0100"
      },
      "message": "ospfd: introduce ospf_packet_minlen[] (BZ#705)\n\nThis commit ports some of the OSPFv3 packet reception checks\nto OSPFv2.\n\n* ospf_packet.c\n  * ospf_packet_minlen[]: a direct equivalent of ospf6_packet_minlen[]\n  * ospf_packet_examin(): new function designed after the first part\n    of ospf6_packet_examin()\n  * ospf_read(): verify received packet with ospf_packet_examin()\n* ospf_packet.h: add convenience macros\n"
    },
    {
      "commit": "7e0e2cb14ca16ce9eaca3b0300c1ffa92a6a104b",
      "tree": "1327873f183d26d4a329f1a135fb414e9163975d",
      "parents": [
        "272ca1e33016b1cbf9c72038d5e631b0adb04dc9"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Jan 20 22:32:10 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:11 2012 +0100"
      },
      "message": "ospfd: fix ospf_packet_add_top() to use LOOKUP()\n"
    },
    {
      "commit": "272ca1e33016b1cbf9c72038d5e631b0adb04dc9",
      "tree": "6728fe6847947d0ddf600bd22f4bf7f040da8274",
      "parents": [
        "a20a4060c8b90e3d88ce97d439eee1a38260d7c5"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 15 19:12:19 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:04:54 2012 +0100"
      },
      "message": "ospfd: use LOOKUP() for ospf_packet_type_str\n\n* ospf_packet.h: add proper str/max extern declarations\n* ospf_packet.c\n  * ospf_packet_type_str: rewrite in \"struct message\", add max value\n  * ospf_packet_add(): use LOOKUP()\n  * ospf_write(): ditto\n  * ospf_hello(): ditto\n  * ospf_read(): ditto\n* ospf_dump.h: the declaration does not belong here\n* ospf_dump.c\n  * ospf_header_dump(): use LOOKUP()\n  * show_debugging_ospf(): ditto\n"
    },
    {
      "commit": "b4e45f67057be22133b6bec88cdf285d5c8214db",
      "tree": "80f775047efb255ef573b2e9d3affb1a7caeb6d1",
      "parents": [
        "6eac79a6fed4842e00607c00c445213b51bba377"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 05 16:35:14 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:31:42 2012 +0400"
      },
      "message": "fix zebra protocol after MP-BGP changes\n\nThe previous commits modified both zebra and bgpd for additional\nSAFI field, but not any other routing daemon, which led to zebra\ndaemon crashing with failed assertion.\n"
    },
    {
      "commit": "ce3cdcfbed2ca65d0d3a12b926dd1103910a6056",
      "tree": "5f0b3df2ba3a0337e535b1ed590b1adf0891485e",
      "parents": [
        "afcb767922509c4d998f1c567e350b9809c148ab"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Oct 24 18:17:09 2011 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 08 13:40:11 2012 +0000"
      },
      "message": "ospfd: use IS_LSA_SELF() where appropriate\n"
    },
    {
      "commit": "8216f53b73d8eb375615ad4395deace11d1e22d6",
      "tree": "b5ffdff7813c92555889b1be89c907a9f1a14789",
      "parents": [
        "72f062b6ebd7f279dc3f0b66acdb0b718ff42e40"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Oct 03 14:08:01 2011 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 08 11:46:11 2012 +0000"
      },
      "message": "ospfd: justify ospf_default_originate_timer()\n\nThe function is implemented in ospf_lsa.c, move its \"extern\" declaration\nto ospf_lsa.h for consistency.\n"
    },
    {
      "commit": "72f062b6ebd7f279dc3f0b66acdb0b718ff42e40",
      "tree": "260bffa9e869cabb392f1914da036e9eabe04017",
      "parents": [
        "5e1731ac1d8593c1317d5d907eda62b52b17470f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Aug 28 22:38:45 2011 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 08 11:43:07 2012 +0000"
      },
      "message": "ospfd: address more trivial compiler warnings\n\n* ospf_ase.c\n  * ospf_ase_complete_direct_routes(): dismiss unused variable\n"
    },
    {
      "commit": "f63f06da2e7be6b17c72dd6110aae179f42f3700",
      "tree": "a36b625a9ea06d0720a240276ed1b8af33193ed7",
      "parents": [
        "651e70d7f419ee7af75113f80e688c0100e9cff5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Apr 08 12:44:43 2011 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jan 06 16:18:18 2012 +0000"
      },
      "message": "general: remove inline qualifiers and move in-header functions to objects\n\n* (general) Move functions in headers into files, to be compiled into\n  shared object files. Remove inline qualifier from functions. Let the\n  compiler do the work.\n"
    },
    {
      "commit": "664711c1f4cc218073783ff6ce362093debd7b53",
      "tree": "5566b0c8b9d22de55772717ad6c701ea85b6241e",
      "parents": [
        "6fd16207fee6d4d09f29ed7ecf26303a7220e473"
      ],
      "author": {
        "name": "Ulrich Weber",
        "email": "ulrich.weber@sophos.com",
        "time": "Wed Dec 21 02:24:11 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 19:13:28 2012 +0400"
      },
      "message": "lib: fix some strtoul() use cases\n\n...otherwise 4294967295 is not a valid value on 32bit systems\n"
    },
    {
      "commit": "4e677f52db2276b92bcc201b4379a66a83d45caa",
      "tree": "9abc7790ba98ed7a865cba20c7f4fd3947dbf9e3",
      "parents": [
        "fe40bfa2e1b913e24d6b8374fd83a19d00ad7c1c"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Dec 18 16:27:02 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 18:38:04 2012 +0400"
      },
      "message": "ospfd: fix bug in NSSA ABR status check\n\n* ospf_abr.c\n  * ospf_abr_nssa_am_elected(): feed \"best\" instead of \"address of best\"\n    into IPV4_ADDR_CMP(), because \"best\" is a pointer; also, mean s_addr\n    field of the structures to get better typed pointers\n"
    },
    {
      "commit": "de5ccb96023181765c9904ab40e645c397f536d6",
      "tree": "6f933ed4a727da24167cac66138418de4088d135",
      "parents": [
        "2ea1ab1c30c765cd4703794fcfaf044454fb533c"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Mon Dec 12 20:30:10 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 18:37:32 2012 +0400"
      },
      "message": "ospfd: fix packet reception for FreeBSD 10.\n\n* ospf_packet.c (ospf_recv_packet): FreeBSD, starting from version 10, will not\n  subtract the IP header size from ip_len.\n\nThis is the patch from FreeBSD\u0027s ports/net/quagga/files/patch-ospfd__ospf_packet.c,\nby Boris Kovalenko.\n"
    },
    {
      "commit": "223da1a912305f2cac6f72c3b480ce103a25d7d6",
      "tree": "5ecb7b554a0844b17a3782a891f4a8f45499baac",
      "parents": [
        "9206f9ecd5526778bf449bbb12f056d681d3b040"
      ],
      "author": {
        "name": "Jaroslav Fojtik",
        "email": "jafojtik@seznam.cz",
        "time": "Sun Dec 11 18:22:16 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 21 16:42:35 2011 +0400"
      },
      "message": "ospfd: more info in LSA checksum warning (BZ#685)\n"
    },
    {
      "commit": "e0ca5fde7be5b5ce90dae78c2477e8245aecb8e9",
      "tree": "0e0b32ddbed4a84a3b2de9dd7217165cb81f52fa",
      "parents": [
        "ebf08631cad8a420fc6bfb7c45af5496dc11023e"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Sep 16 01:52:42 2009 +0200"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:13:17 2011 +0400"
      },
      "message": "lib: put route_types.txt to real use\n\nthis replaces most occurences of routing protocol lists by preprocessor\ndefines from route_types.h. the latter is autogenerated from\nroute_types.txt by a perl script (previously awk). adding a routing\nprotocol now is mostly a matter of changing route_types.txt and log.c.\n\nConflicts:\n\n\tlib/route_types.awk\n"
    },
    {
      "commit": "05e54ee3df973194f2a00e3ea0b1da7bebc71fd6",
      "tree": "c07e2bbad0c55fe03eb2975b98f121de6ae55707",
      "parents": [
        "ad8d4802a3078de694539fa9bae12322fc82042f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Dec 03 17:45:17 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:27:01 2011 +0400"
      },
      "message": "build: delete .cvsignore files\n"
    },
    {
      "commit": "ad8d4802a3078de694539fa9bae12322fc82042f",
      "tree": "b99a8a6a31ce269067dae6de71cabdb7dcf4d547",
      "parents": [
        "3414d03545205eda9fb47890e01b780485a613c6"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Dec 02 20:02:40 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:26:53 2011 +0400"
      },
      "message": "ospfd: spelling\n"
    },
    {
      "commit": "b51146856e660bcec723f535c17dc1c38b2f6efc",
      "tree": "8f501c98b3714e1d5ed381bd4d82fece4106aa8c",
      "parents": [
        "2f658673fa477b58ed38caf94c156c95948de382"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Fri Nov 25 18:51:48 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:26:28 2011 +0400"
      },
      "message": "quagga: option \"-z\" (\"--socket \u003cpath\u003e\") added\n\nAll daemons modified to support custom path to zserv\nsocket.\n\nlib: generalize a zclient connection\n\nzclient_socket_connect added. zclient_socket and\nzclient_socket_un were hidden under static expression.\n\"zclient_serv_path_set\" modified.\n"
    },
    {
      "commit": "075e12f57d6c0b115cd177c7b244d9810460e3ff",
      "tree": "755a8a7960a918c77f38a15d931634e9d9170879",
      "parents": [
        "f04a80a5d209dbb54f6fec5d0149b7c0e489d29e"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Dec 06 23:54:17 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 07 01:23:32 2011 +0400"
      },
      "message": "ospfd: remove unused code\n\nThe code for nssa_range and other bits that were written but\nnever used.\n"
    },
    {
      "commit": "fb01f87f4f50744206222343a780721af19fe56c",
      "tree": "3c425d161ddac2a24c2c2fec91e3e794163a8ffd",
      "parents": [
        "b24b19f719fdd9c3d61a0c93552cd64d832d964c"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Dec 06 14:46:42 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 06 15:02:52 2011 +0400"
      },
      "message": "ospfd: avoid redundant lookup in ospf_redistribute_withdraw\n\nThe old algorithim looked up every node twice as it withdrew\nthe entry. It looks up entry once in redistribute_withdraw, then\nlooks it up again info_delete. Use result of first lookup\nto do the free directly.\n\nThis may explain the slow performance observed in\n https://bugzilla.vyatta.com/show_bug.cgi?id\u003d4421\n"
    },
    {
      "commit": "4de148e5d6f6f7885b2c0952a236a3bc3ec36250",
      "tree": "5360772467235934673f5b7e3c039424bcc61329",
      "parents": [
        "1758dbaa3b69bd6e95fb501c40f044f751557e76"
      ],
      "author": {
        "name": "Thomas Ries",
        "email": "tries@gmx.net",
        "time": "Thu Oct 27 17:43:38 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Nov 15 20:50:48 2011 +0400"
      },
      "message": "ospfd: improve fix to CVE-2011-3326 (BZ#586)\n\nMake ospf_flood() propagate error returned by ospf_lsa_install() further\nto properly discard the malformed LSA, not just prevent the immediate\ncrash.\n"
    },
    {
      "commit": "3aad46bdaa0a2700e43252904b9481750c8cb45d",
      "tree": "2f98b0538dc45324910201ee445460a68f6e5389",
      "parents": [
        "52ecbbea36439758590f0c31a0ec147fec041d7a"
      ],
      "author": {
        "name": "YAMAMOTO Shigeru",
        "email": "shigeru@iij.ad.jp",
        "time": "Wed Sep 28 21:00:14 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Sep 29 16:27:29 2011 +0400"
      },
      "message": "ospfd: fix regression in recent commit\n\ncommit \u0027717750433839762d23a5f8d88fe0b4d57c8d490a\u0027 causes SEGV error,\nwhen \u0027oi \u003d ospf_if_lookup_recv_if (ospf, iph-\u003eip_src, ifp);\u0027 returns\nNULL.\n\n* ospf_packet.c\n  * ospf_read(): change a place of calling \u0027ospf_verify_header()\u0027\n"
    },
    {
      "commit": "52ecbbea36439758590f0c31a0ec147fec041d7a",
      "tree": "7bbf3187dbace4a7e51f45826920f1cc6138beae",
      "parents": [
        "4b4e07d2d83bdbe46ccf4b4a2fd2aa3842370098"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Sep 15 15:40:47 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:46:14 2011 +0400"
      },
      "message": "ospfd: remove unused macro\n"
    },
    {
      "commit": "bcc6c59ac5e9c1e8cf9693b4768f6b8cad5e559a",
      "tree": "110dc04ffd64f9a259015231981165e92a225502",
      "parents": [
        "e6ec1c3648cf3304c1a36341487659aadb9dce95"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Sep 10 23:29:19 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:43:27 2011 +0400"
      },
      "message": "ospfd: spelling\n"
    },
    {
      "commit": "171c9a996dd75a8b9aa596288c974f9ac0fbc5d6",
      "tree": "61c7aae794eee1d93fb4bafaca4e73c16bc3b947",
      "parents": [
        "7dbeea9d4f43fda84971d0bcffb6da88228dab53"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Sep 10 16:40:23 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:42:52 2011 +0400"
      },
      "message": "ospfd: use existing macro for consistency\n"
    },
    {
      "commit": "05b7709dad416146376cc4f41db0c866b3738f5b",
      "tree": "bf17ceea5864f3bd4d6beb0a5dff4ba5b718b339",
      "parents": [
        "10d04cdb4198b69073ea0cdd4c26a64d6697b33e"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Aug 23 11:36:27 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:41:00 2011 +0400"
      },
      "message": "ospfd: sizing macros cleanup\n\n* ospf_spf.c\n  * ROUTER_LSA_TOS_SIZE: prepend OSPF_ and move to ospf_lsa.h\n  * ROUTER_LSA_MIN_SIZE: replace with existing OSPF_ROUTER_LSA_LINK_SIZE\n"
    },
    {
      "commit": "69bf3a39931ce61a92fb04d8888b4655fd5620a2",
      "tree": "e49dae20b1dbc0d1ee37121cd45c75d94290bdd1",
      "parents": [
        "ea4021984f9eec3f2a85551ae0822e1dff0ed2bc"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Thu Aug 18 20:22:17 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:37:35 2011 +0400"
      },
      "message": "lib: simplify interface of setsockopt_multicast_ipv4().\n\n* sockopt.[ch] (setsockopt_ipv4_multicast): ifindex is now mandatory (all\n  non-ancient OSes can use it anyway), and if_addr parameter (the address\n  of the interface) is now gone. (setsockopt_ipv4_multicast_if):\n  IP_MULTICAST_IF processing moved to this new function\n\n* ospf_network.c (ospf_if_add_allspfrouters, ospf_if_drop_allspfrouters,\n  ospf_if_add_alldrouters, ospf_if_drop_alldrouters, ospf_if_ipmulticast),\n  rip_interface.c (ipv4_multicast_join, ipv4_multicast_leave,\n  rip_interface_new): adapt to the new interface\n"
    },
    {
      "commit": "3c9cfcdebf680c1d2c0e6b69cb4e11885a049e05",
      "tree": "c374a8a8d26ed9481e78828b96f7480574521197",
      "parents": [
        "c31e5726bece392e1d20081c712482e9954fec66"
      ],
      "author": {
        "name": "Alexandre Chappuis",
        "email": "alc@open.ch",
        "time": "Tue Aug 02 17:37:39 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 20:45:22 2011 +0400"
      },
      "message": "ospfd: remove useless RFC1583 check\n\n* ospf_route.c: Function ospf_asbr_route_cmp is called uniquely from\n  ospf_route_cmp() when the flag OSPF_RFC1583_COMPATIBLE is not set.\n  Therefore, the check that the flag is set doesn\u0027t make sense at all\n  and it can consequently be removed without doing any harm.\n\nSigned-off-by: Alexandre Chappuis \u003calc@open.ch\u003e\nSigned-off-by: Roman Hoog Antink \u003crha@open.ch\u003e\n"
    },
    {
      "commit": "717750433839762d23a5f8d88fe0b4d57c8d490a",
      "tree": "aea292ef6dab658197d1df6c9a5bf3f3925013ad",
      "parents": [
        "61ab0301606053192f45c188bc48afc837518770"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 13:18:02 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 18:46:54 2011 +0400"
      },
      "message": "ospfd: CVE-2011-3325 part 2 (OSPF pkt type segv)\n\nThis vulnerability (CERT-FI #514838) was reported by CROSS project.\n\nThe error is reproducible only when ospfd debugging is enabled:\n  * debug ospf packet all\n  * debug ospf zebra\nWhen incoming packet header type field is set to 0x0a, ospfd will crash.\n\n* ospf_packet.c\n  * ospf_verify_header(): add type field check\n  * ospf_read(): perform input checks early\n"
    },
    {
      "commit": "61ab0301606053192f45c188bc48afc837518770",
      "tree": "b7d9037390cd7beefcd7c1c54d2573ef92af80cd",
      "parents": [
        "6b161fc12a15aba8824c84d1eb38e529aaf70769"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 13:17:52 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 18:46:42 2011 +0400"
      },
      "message": "ospfd: CVE-2011-3325 part 1 (OSPF header underrun)\n\nThis vulnerability (CERT-FI #514838) was reported by CROSS project.\n\nWhen only 14 first bytes of a Hello packet is delivered, ospfd crashes.\n\n* ospf_packet.c\n  * ospf_read(): add size check\n"
    },
    {
      "commit": "6b161fc12a15aba8824c84d1eb38e529aaf70769",
      "tree": "abd6c391a491495c70203420e5d91dbcdf282383",
      "parents": [
        "94431dbc753171b48b5c6806af97fd690813b00a"
      ],
      "author": {
        "name": "CROSS",
        "email": "info@codenomicon.com",
        "time": "Mon Sep 26 13:17:21 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 18:46:28 2011 +0400"
      },
      "message": "ospfd: CVE-2011-3326 (uknown LSA type segfault)\n\nThis vulnerability (CERT-FI #514837) was reported by CROSS project.\nThey have also suggested a fix to the problem, which was found\nacceptable.\n\nQuagga ospfd does not seem to handle unknown LSA types in a Link State\nUpdate message correctly. If LSA type is something else than one\nsupported\nby Quagga, the default handling of unknown types leads to an error.\n\n* ospf_flood.c\n  * ospf_flood(): check return value of ospf_lsa_install()\n"
    },
    {
      "commit": "8ced4e82e6f417b13f4bfc09018fc51fd31058e2",
      "tree": "9d744d6f95473a0b8d49338ee502dfb765e00f5f",
      "parents": [
        "7e924e11a965fc1053a16945ace10c9bd1d868f8",
        "0150c9c969cfbacb28fa9e05c8bf7f65448d9914"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Jul 13 13:20:06 2011 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Jul 13 13:20:06 2011 -0400"
      },
      "message": "Merge remote-tracking branch \u0027polymorf/master\u0027\n"
    },
    {
      "commit": "072990e22e66ed9a15261b70658dc4a8801975b5",
      "tree": "6fd4e1dcfb4d076a5c14ab148da71679b06a6322",
      "parents": [
        "8f6f78a761fc66f9668b68810a1bac032227b2d1"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Apr 11 16:28:16 2011 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Apr 13 15:13:33 2011 +0100"
      },
      "message": "ospf: Fix OSPF API and ospf-te LSA refreshers to match recent API change\n\n* ospf_apiserver.{c,h}: (ospf_apiserver_lsa_refresher) refreshers must now\n  return the refreshed LSA.\n* ospf_te.{c,h}: (ospf_mpls_te_lsa_refresh) ditto\n* ospf_api.c: trivial compiler warning fix\n"
    },
    {
      "commit": "d71ea65270408a45e4bec036671ec73b24b994b4",
      "tree": "8690d8a3e447ececf09d7a760af66703b7268f4d",
      "parents": [
        "36de261b57eab7a7539fb6527a1f02f3898cbafd"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 22 15:23:55 2011 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 22 15:23:55 2011 +0000"
      },
      "message": "ospfd: Compile fix for opaque support\n\n* ospfd: Refresher logic cleanup broke OSPF opaque, which does its own thing\n  with regard to refresher logic and which also, in the protocol, requires\n  implementations to keep state of which OI an LSA is received on (rather\n  than providing information in the LSA to allow it to be looked up - as\n  other LSAs requiring such assocation were careful to do).\n* ospf_lsa.h: (struct ospf_interface) Add back the pointer to oi, but only\n  for type-9 now.\n* ospf_nsm.c: (ospf_db_summary_add) check the oi actually exists first -\n  doesn\u0027t obviate the need for opaque to ensure oi pointers get cleaned up\n  when ospf_interfaces disappear.\n* ospf_opaque.{c,h}: (ospf_opaque_functab,ospf_opaque_lsa_refresh) Refresher\n  LSA functions now need to return the LSA to the general refresh logic,\n  to indicate whether the LSA was refreshed.\n"
    },
    {
      "commit": "4dd87df5af8a59174362e44f83df11f12457c8b4",
      "tree": "bec3ba26fcf730d6348567ddd530e74846af824b",
      "parents": [
        "dfbd5176ea863e378999c03314dc42adfdd4e424"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Apr 15 08:11:51 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:13:19 2010 +0000"
      },
      "message": "ospfd: Remove oi field from LSA, have network_lsa_refresh look up when needed\n\n* ospf_lsa.h: (struct ospf_lsa) remove oi pointer\n* ospf_lsa.c: (ospf_network_lsa_refresh) instead of keeping a pointer, just\n  lookup the oi when it\u0027s needed. This decouples network LSA from oi lifetime\n  and avoids having to invalidate pointers in LSAs when an oi changes,\n  simplifying the code.\n"
    }
  ],
  "next": "dfbd5176ea863e378999c03314dc42adfdd4e424"
}
