)]}'
{
  "log": [
    {
      "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": "4dadc291e56195886fd047690ded9686f4e013fa",
      "tree": "ea7c0690912d2b7d0c487f6855960e768fff1b6e",
      "parents": [
        "69e10adaf28d4e116c38db2648786557fe131828"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:37:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:37:42 2005 +0000"
      },
      "message": "2005-05-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * (general) extern and static qualifiers added.\n          unspecified arguments in definitions fixed, typically they should\n          be \u0027void\u0027.\n          function casts added for callbacks.\n          Guards added to headers which lacked them.\n          Proper headers included rather than relying on incomplete\n          definitions.\n          gcc noreturn function attribute where appropriate.\n        * ospf_opaque.c: remove the private definition of ospf_lsa\u0027s\n          ospf_lsa_refresh_delay.\n        * ospf_lsa.h: export ospf_lsa_refresh_delay\n        * ospf_packet.c: (ospf_make_md5_digest) make *auth_key const,\n          correct thing to do - removes need for the casts later.\n        * ospf_vty.c: Use vty.h\u0027s VTY_GET_INTEGER rather than ospf_vty\u0027s\n          home-brewed versions, shuts up several warnings.\n        * ospf_vty.h: remove VTY_GET_UINT32. VTY_GET_IPV4_ADDRESS and\n          VTY_GET_IPV4_PREFIX moved to lib/vty.h.\n        * ospf_zebra.c: (ospf_distribute_list_update_timer) hacky\n          overloading of the THREAD_ARG pointer should at least use\n          uintptr_t.\n"
    },
    {
      "commit": "462f20d50c8f86c26904f1c7316d910c2b83ae41",
      "tree": "3edbff28c76bdb8e1c66ea5153b1cb58d40f15aa",
      "parents": [
        "c3c07f28dcd226975b5ed0c1f8842f51968a3288"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 23 11:29:02 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 23 11:29:02 2005 +0000"
      },
      "message": "\t* ospf_lsa.h: New flag to the LSA structure for the SPF calculation.\n\t* ospf_lsdb.h: Export ospf_lsdb_clean_stat() function.\n\t* ospf_spf.h: Add link to the LSA stat structure into vertex.\n\t* ospf_spf.c: New functions cmp() and update_stat() to manage\n\t  candidates. Remove ospf_spf_has_vertex(), ospf_vertex_lookup(),\n\t  ospf_install_candidate() and ospf_spf_register() functions not needed\n\t  any more. Update ospf_vertex_new(), ospf_spf_next() and\n\t  ospf_spf_calculate() functions to use pqueue instead of linked list.\n"
    },
    {
      "commit": "fe71a97da23e2282bc92f647227d5c97c73e3bc8",
      "tree": "d812d9a1b98b0a1e9c1621194bf58dba097d6e3b",
      "parents": [
        "16f6511e94c3765725b196aacaf6053385bca8a3"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Dec 22 16:16:02 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Dec 22 16:16:02 2004 +0000"
      },
      "message": "Show sums of checksums in \"show ip ospf\" output. Okayed by Paul and James\nR. Leu (author of original idea).\n"
    },
    {
      "commit": "718e3744195351130f4ce7dbe0613f4b3e23df93",
      "tree": "bac2ad39971cd43f31241ef123bd4e470f695ac9",
      "parents": [],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "message": "Initial revision\n"
    }
  ]
}
