)]}'
{
  "log": [
    {
      "commit": "a5c851c7ff41ef846e83d62394176ac1753ebf45",
      "tree": "b53c24d74e7db4d5e6cdd30199cb39093df0a5a4",
      "parents": [
        "913ff66ba30093d2fdc26af215f4bc0b3d359d75"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Nov 27 03:21:44 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jan 11 22:09:34 2013 +0100"
      },
      "message": "lib: remove ALL_LIST_ELEMENTS dead code branch\n\nALL_LIST_ELEMENTS is checking node \u003d\u003d NULL twice, which is causing a\nwhole slew of false positives in Coverity.  In this particular case,\naddressing this in the code is reasonable; being a macro, this appears\nall over the place without easy remedy.\n\nAcked-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "54dd61227352dd1dd4db4fe76dbf7d2e92522e74",
      "tree": "da320cdec867ca81748f3b85b772422b386bf376",
      "parents": [
        "8ced4e82e6f417b13f4bfc09018fc51fd31058e2"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 10:00:07 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:52:23 2012 -0700"
      },
      "message": "lib: Tweaks to linked list macros\n\n  * lib/linklist.h\n\n    - Change the listnextnode, listhead and listtail macros so that\n      they allow the list pointer to be NULL.\n\n    - Modify the ALL_LIST_ELEMENTS* macros such that they clear the\n      data pointer at the beginning and end of the loop.\n\nFrom: Josh Bailey \u003cjoshb@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "8cc4198f9fabe5f10f5a773de1503d82f33a01fb",
      "tree": "77045da709ff66629bd12029b9ee17700360909b",
      "parents": [
        "e7fe8c88c3d552400e1ae3ae9243319ab95d6f2d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:25:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:25:49 2005 +0000"
      },
      "message": "2005-05-06 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (general) extern and static\u0027ification of functions in code and\n\t  header.\n\t  Cleanup any definitions with unspecified arguments.\n\t  Add casts for callback assignments where the callback is defined,\n\t  typically, as passing void *, but the function being assigned has\n\t  some other pointer type defined as its argument, as gcc complains\n\t  about casts from void * to X* via function arguments.\n\t  Fix some old K\u0026R style function argument definitions.\n\t  Add noreturn gcc attribute to some functions, as appropriate.\n\t  Add unused gcc attribute to some functions (eg ones meant to help\n\t  while debugging)\n\t  Add guard defines to headers which were missing them.\n\t* command.c: (install_node) add const qualifier, still doesnt shut\n\t  up the warning though, because of the double pointer.\n\t  (cmp_node) ditto\n\t* keychain.c: (key_str2time) Add GET_LONG_RANGE() macro, derived\n\t  fromn vty.h ones to fix some of the (long) \u003c 0 warnings.\n\t* thread.c: (various) use thread_empty\n\t  (cpu_record_hash_key) should cast to uintptr_t, a stdint.h type\n\t* vty.h: Add VTY_GET_IPV4_ADDRESS and VTY_GET_IPV4_PREFIX so they\n\t  removed from ospfd/ospf_vty.h\n\t* zebra.h: Move definition of ZEBRA_PORT to here, to remove\n\t  dependence of lib on zebra/zserv.h\n"
    },
    {
      "commit": "1eb8ef2584833f18fb674e127d59cb5a7f771482",
      "tree": "f5b09d4781de9a9b08839fefb6530e64d2d2ec31",
      "parents": [
        "5920990fecba7e2430af3cfaa8bcbaed40d0ba1a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "message": "2005-04-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global): Fix up list loops to match changes in lib/linklist,\n\t  and some basic auditing of usage.\n\t* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES\n\t* HACKING: Add notes about deprecating interfaces and commands.\n\t* lib/linklist.h: Add usage comments.\n\t  Rename getdata macro to listgetdata.\n\t  Rename nextnode to listnextnode and fix its odd behaviour to be\n\t  less dangerous.\n\t  Make listgetdata macro assert node is not null, NULL list entries\n          should be bug condition.\n          ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use\n          with for loop, Suggested by Jim Carlson of Sun.\n          Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the\n          \"safety\" of previous macro.\n\t  LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to\n\t  distinguish from the similarly named functions, and reflect their\n\t  effect better.\n\t  Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section\n\t  with the old defines which were modified above,\n\t  for backwards compatibility - guarded to prevent Quagga using it..\n\t* lib/linklist.c: fix up for linklist.h changes.\n\t* ospf6d/ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single\n\t  scan of the area list, rather than scanning all areas first for\n\t  INTER_ROUTER and then again for INTER_NETWORK. According to\n\t  16.2, the scan should be area specific anyway, and further\n\t  ospf6d does not seem to implement 16.3 anyway.\n"
    },
    {
      "commit": "52dc7ee65f8d887b0730abc0a5d44d27fc6ecafd",
      "tree": "a557339540c56dd3953c29a50ca0e48c1911efc8",
      "parents": [
        "44983cf8a9c587dfbcad294b9dfe4dccbb68ba98"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "message": "Remove usage of evil list and listnode typedefs.\n"
    },
    {
      "commit": "630e48072a4a4685a7c04a7b73ae9170d2f0844a",
      "tree": "1a343e551a0ce24d8c8c93aa62860742749355ee",
      "parents": [
        "94755ea13e9466fc4590994b551dc23a44571622"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Aug 31 17:28:41 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Aug 31 17:28:41 2004 +0000"
      },
      "message": "Assorted changes from work at BBN.  Most are minor, and several are in\nsupport of more significant changes not in this commit.  The last item\nin the ChangeLog below may be needed for p2mp to work correctly.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* hash.c (hash_iterate): Save next pointer before calling\n\tprocedure, so that iteration works even if the called procedure\n\tdeletes the hash backet.\n\n\t* linklist.h (listtail): new macro, not yet used.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_spf.c (ospf_spf_calculate): Many more comments and debug\n\t  print statements.  New function ospf_vertex_dump used in debugging.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_spf.h (struct vertex): Comments for flags and structure members.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_route.c: When finding an alternate route, log cost as well.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_interface.c (ospf_lookup_if_params): Initialize af in\n\tstruct prefix allocated on stack.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_packet.c (ospf_ls_ack_send_delayed): In p2mp mode, send\n\tacks to AllSPFRouters, rather than All-DR.\n"
    },
    {
      "commit": "a7a9990f48d7e45463b0c50986805973956fdb4c",
      "tree": "57a40b0c7af971c3fc7256e452b90f32897470de",
      "parents": [
        "297602162c89b10f6ee41c21e6302bcc51199a3d"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Mon Dec 22 16:07:52 2003 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Mon Dec 22 16:07:52 2003 +0000"
      },
      "message": "comments about struct list\n"
    },
    {
      "commit": "071fcedb308f6b868b613453a0f78d12566f57a5",
      "tree": "3affcb5e71fb4b827ec33687be826f1d0d6a98e5",
      "parents": [
        "ac41b2a2d40356468edc84becc6d5800d119aef6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Aug 12 05:40:28 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Aug 12 05:40:28 2003 +0000"
      },
      "message": "2003-08-12 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* lib/linkhist.h: The LISTNODE_{ADD,DEL} macros (not used anywhere)\n\t  do not maintain the list count - fix.\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"
    }
  ]
}
