)]}'
{
  "log": [
    {
      "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": "09395e2a0e93b2cf4258cb1de91887948796bb68",
      "tree": "771622102161a372b45f730bd48ab23e69676350",
      "parents": [
        "717750433839762d23a5f8d88fe0b4d57c8d490a"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 13:18:36 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 18:47:06 2011 +0400"
      },
      "message": "ospf6d: CVE-2011-3324 (DD LSA assertion)\n\nThis vulnerability (CERT-FI #514839) was reported by CROSS project.\n\nWhen Database Description LSA header list contains trailing zero octets,\nospf6d tries to process this data as an LSA header. This triggers an\nassertion in the code and ospf6d shuts down.\n\n* ospf6_lsa.c\n  * ospf6_lsa_is_changed(): handle header-only argument(s)\n    appropriately, do not treat LSA length underrun as a fatal error.\n"
    },
    {
      "commit": "ae2254aa7f2eb7436734f497658f1f26f4bf37c7",
      "tree": "8734f0e2aa855b90d9ec5cb961cd9990b5574905",
      "parents": [
        "fd795eb89cc421097f6580016ea9fbd3585d07bb"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Wed Nov 10 13:01:41 2010 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Mar 21 13:31:16 2011 +0000"
      },
      "message": "ospf6d: Have ospf6d cleanup when it terminates normally\n\nA clean exit makes it easier to use memory debuggers.\n\n* ospf6_asbr.c: (ospf6_asbr_terminate) Add a function to do route map\n  cleanup.\n* ospf6_lsa.c: (ospf6_lsa_terminate) Add a function to cleanup the lsa\n  handler vector.\n* ospf6_main.c: (ospf6_exit) Add an function that causes ospf6d to\n  gracefully exit.\n* ospf6_message.c: (ospf6_message_terminate) Add a function that frees\n  the send and receive buffers.\n* ospf6_top.c: (ospf6_delete) Enable the ospf6_delete() function.\n  Disable ospf6 before freeing everything.\n"
    },
    {
      "commit": "64bf3ab7291cc5c39c5add0dc1a7de447914248b",
      "tree": "d5ae874814083d89815e6c521b42d0f3eaaec69c",
      "parents": [
        "2eb445e1c22e36d07e2dbfd302ff438c4190b9fe"
      ],
      "author": {
        "name": "Ondrej Zajicek",
        "email": "santiago@crfreenet.org",
        "time": "Mon Dec 07 12:33:20 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 07 12:33:20 2009 +0300"
      },
      "message": "ospf6d: review LSA sequence number comparison\n\nIt seems that there is a bug in ospf6d in ospf6_lsa_compare(): If LSA A\nhas sequence number smaller than 0x80000000 and LSA B has sequence\nnumber larger than 0x80000000, ospf6_lsa_compare() returns that B is\nmore recent than A, although RFC says that sequence numbers should be\ncompared as signed numbers (0x8000001 smallest and 0x7FFFFFFF largest).\n\nIn ospfd, the function ospf_lsa_more_recent() has it right.\n\nThe problem appears when Quagga is used together with OSPFv3 in\ndevelopment version of BIRD daemon ( http://bird.network.cz/ ),\nwhich creates LSAs with maximum sequence number (0x7FFFFFFF)\nas a part of flushing/premature aging LSA from OSPF area.\n\nBecause both daemons has different idea of which LSA instance\nis more recent, it would lead to LSA storm.\n"
    },
    {
      "commit": "aabbb1ae358a3fd9af011cddc1a67dfa0b3df2d2",
      "tree": "04ce8d205c0242f93037873f92e8a6f8dc24927a",
      "parents": [
        "d1c21cabdbeeb4d12049f39579c602686eb94927"
      ],
      "author": {
        "name": "Tom Henderson",
        "email": "tomh@tomh.org",
        "time": "Fri Aug 28 15:10:00 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 28 15:10:00 2009 +0100"
      },
      "message": "ospf6d: bug #529, fix endianness problem in earlier commit \n\n* ospf6_lsa.c: (ospf6_lsa_age_current) arithmetical compares make no sense\n  in non-host order..\n\n"
    },
    {
      "commit": "9b4ef258a9d9c5f1052afe0e19ebaef9f6740fa2",
      "tree": "7deb3abfbddadc9c15300c1a6702549e918db5dc",
      "parents": [
        "41b2373cece77f0cc9a06fba076c99a7be653593"
      ],
      "author": {
        "name": "Tom Henderson",
        "email": "tomh@tomh.org",
        "time": "Thu Jul 16 17:20:37 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jul 16 17:20:37 2009 +0100"
      },
      "message": "[ospf6d] Fix regression in monotonic time patch - LSA max-aging broke\n\n* ospf6_lsa.c: (ospf6_lsa_premature_aging) set age to MAX_AGE - don\u0027t\n  rely on 0 magically meaning same.\n  (ospf6_lsa_age_current) handle MAXAGE.\n"
    },
    {
      "commit": "86f72dcba35f055b5344deeb5f057c2f1d9a291f",
      "tree": "b128af27119cf27a709423814709a5a0bde98bae",
      "parents": [
        "f7e0db80693aea7f5fd3d8d4f00e97347c8d0ba5"
      ],
      "author": {
        "name": "Takashi Sogabe",
        "email": "sogabe@iij.ad.jp",
        "time": "Mon Jun 22 13:07:02 2009 +0900"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jun 22 12:21:22 2009 +0100"
      },
      "message": "Convert ospf6d over to quagga_gettime() wrappers.\n"
    },
    {
      "commit": "393deb9bd663361e6b110d579a8b1d4c22667068",
      "tree": "e93ebf2f57bf92ff7a9cd045764b3cdbb99a07e5",
      "parents": [
        "3453a7122c1d585ad789ed0f63deb90cc5e89fae"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Aug 18 14:13:29 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:07:49 2009 +0100"
      },
      "message": "[cleanup] Convert XMALLOC/memset to XCALLOC\n\nSimple conversion of XMALLOC/memset to XCALLOC\n"
    },
    {
      "commit": "6ac29a51075def99217a4ab1015635db3b3e83ed",
      "tree": "1152b55eb3a2099c67a0ba8e62d7e41f07e00135",
      "parents": [
        "1423c809cc4ddc2e013ba6264c49a11e5719c6f2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 15 13:45:30 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:58 2008 +0100"
      },
      "message": "[trivia] finish off static\u0027ification of ospf6d and ripngd\n\n2008-08-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* {ospf6d,ripngd}/*: Finish job of marking functions as static, or\n\t  exporting declarations for them, to quell warning noise with\n\t  Quagga\u0027s GCC default high-level of warning flags. Thus allowing\n\t  remaining, more useful warnings to be more easily seen.\n"
    },
    {
      "commit": "e733f949448e1cf9fa27e8b618c56a0e4badc1af",
      "tree": "7835ff729868c1421a4f3b59258008731e4ab30a",
      "parents": [
        "0dc0b7080227df8aca6cc2f7961c3c55cb73c509"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jun 07 13:11:58 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jun 07 13:11:58 2007 +0000"
      },
      "message": "[ospf6d] Fix silly bug: muse use strcmp to compare strings\n\n2007-06-07 Pavol Rusnak \u003cprusnak@suse.cz\u003e\n\n\t* ospf6_lsa.c: (no_debug_ospf6_lsa_hex_cmd) Fix bug: must use strcmp\n\t  to compare strings.\n"
    },
    {
      "commit": "c32d28b765e936acb8695f73a119d73cacff2610",
      "tree": "9fe15aab5dce014eb71fc97b1659a3a958ad927d",
      "parents": [
        "4056a544eb0b7ea513bca0d70808e671c3f2c25b"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Feb 27 15:24:36 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Feb 27 15:24:36 2007 +0000"
      },
      "message": "[ospf6d] Fix string comparison bug in ospf6_lsa_handler_name.\n\n2007-02-27  Pavol Rusnak \u003cprusnak@suse.cz\u003e\n\n\t* ospf6_lsa.c: (ospf6_lsa_handler_name) Fix bug: must use strcmp\n\t  to compare strings.\n"
    },
    {
      "commit": "55468c86040081320f557b696e509b76ddfd6c83",
      "tree": "3ee726f155f8776d4a220997681d14c0b09addd0",
      "parents": [
        "909a215508fd42473fcbe4f5292a59404e5473af"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 20:19:01 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 20:19:01 2005 +0000"
      },
      "message": "2005-03-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) update all c files to match the lib/vector.h rename of\n\t  (struct vector).active to max, and vector_max macro to\n\t  vector_active.\n\t* lib/vector.h: Rename to (struct vector).max to slightly less\n\t  confusing active, for the number of active slots, distinct from\n\t  allocated or active-and-not-empty. Rename vector_max to\n\t  vector_active for same reason.\n"
    },
    {
      "commit": "c6487d61a9b7766f69718edbc484a6ad989bdef4",
      "tree": "2a896a8ebdd6e41edcd1b5917ce9dddefbb335fe",
      "parents": [
        "529d65b3db6a2a79cbdf9ca3a1aa915ce5776286"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Dec 24 06:00:11 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Dec 24 06:00:11 2004 +0000"
      },
      "message": "*.c: Change level of debug messages to LOG_DEBUG.\n"
    },
    {
      "commit": "2680aa2b2b8e87a8af50906dec8ee5a942f8266e",
      "tree": "a8a9acd321152ea80587da2cfa79bfcdd64207b3",
      "parents": [
        "c065230a4c617a1cdf8813dd25384bcc9591f61a"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Nov 25 20:54:46 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Nov 25 20:54:46 2004 +0000"
      },
      "message": "Merge svn revisions 1208, 1222 and 1228 from Zebra cvs.\n"
    },
    {
      "commit": "6099b3b56956322567323c11fd698b2328c6826b",
      "tree": "fa537bd0eaa9f7d824f39445eabc928db59050ca",
      "parents": [
        "ae5e24d8678f1e3a60dde58d3382c5ba73d6bb27"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Nov 20 02:06:59 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Nov 20 02:06:59 2004 +0000"
      },
      "message": "2004-11-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* global: Replace strerror with safe_strerror.  And vtysh/vtysh.c\n\t  needs to include \"log.h\" to pick up the declaration.\n"
    },
    {
      "commit": "0c083ee9d870bf02a36563ae1807f3894ac24219",
      "tree": "04315c9103131381b9ca5e1d576e27a1f22d0da1",
      "parents": [
        "9035efaa924c69f4f4fcb1049c7dc4f43b9da980"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 10 12:54:58 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 10 12:54:58 2004 +0000"
      },
      "message": "2004-10-10 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf6_route.c: Add const qualifier to various char arrays of\n          constants. signed/unsigned fixes.\n          (ospf6_linkstate_table_show) argv is const\n        * ospf6_snmp.c: listnode typedef is dead.\n          (ospf6_snmp_init) Take struct thread_master arg, needed for\n          smux_init.\n        * ospf6_snmp.h: update ospf6_snmp_init declaration.\n        * ospf6d.c: (ospf6_init) add const qualifier to sargv, pass master\n          to ospf_snmp6_init.\n\t* ospf6_asbr.c: const char update.\n\t* ospf6_interface.c: ditto, plus signed/unsigned fixes.\n\t  (ipv6_ospf6_cost) Check whether cost fits in u_int32_t and use\n          strtoul.\n\t* ospf6_intra.c: const char update. Parenthesise expression.\n\t* ospf6_lsa.c: signed/unsigned and const char updates.\n\t* ospf6_proto.c: ditto.\n\t* ospf6_message.c: ditto.\n\t* ospf6_lsdb.c: signed/unsigned update.\n\t* ospf6_main.c: const char update.\n\t* ospf6_neighbor.c: ditto.\n\t* ospf6_spf.c: ditto.\n\t* ospf6_top.c: ditto.\n"
    },
    {
      "commit": "03d52f8d6ccb4bcb17ab8d098468a8e112c910a4",
      "tree": "7bc2e2b3738923597bbab593029152b5bceff8e1",
      "parents": [
        "aa0b9f912dc1057261fa02fbf5d458f222900af6"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 29 00:26:19 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 29 00:26:19 2004 +0000"
      },
      "message": "Merge svn revision 1048 from Zebra cvs. Also add missing sokopt.h include\nto ospf6_network.h.\n"
    },
    {
      "commit": "1e05838a4db178f25eef560d774cf63d7af6d3c4",
      "tree": "f87bdb34ec1337e390b885d5344f1a40c7dbb383",
      "parents": [
        "863076db0f6ef0f9090abdfd9e2388db0bf02770"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 01 21:36:14 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 01 21:36:14 2004 +0000"
      },
      "message": "Merge svn revision 975 from Zebra repository.\n"
    },
    {
      "commit": "ccb59b11047c71430eb55ed58eda94865bab20c8",
      "tree": "c135d58534331ff4fd04223f512d317dbd4c8ed8",
      "parents": [
        "3e0b3a56217dab13b26e7f7fd634e7450dde55e2"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Aug 25 09:10:37 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Aug 25 09:10:37 2004 +0000"
      },
      "message": "SVN revisions 935-940 merge from Zebra CVS.\n"
    },
    {
      "commit": "3b68735fc38871bdcc9fc19f38fab244f86e710b",
      "tree": "3a98be6997b0fc0e0bd211a877ab477cb7e3d328",
      "parents": [
        "0de1cde6e602e7496628967aeb219cd28d4869a9"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Aug 19 06:56:53 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Aug 19 06:56:53 2004 +0000"
      },
      "message": "Merge svn revisions 924 and 925 from Zebra CVS. Also remove useless\nospf6_lsdb prototype declaration from ospf6_lsa.h. Report sent to Yasuhiro\nOhara as well.\n"
    },
    {
      "commit": "6452df092bf6b694ea62a0423ac242f10ab997f9",
      "tree": "087490eb5e58209ca207f28b626c4a4a84ad4c9c",
      "parents": [
        "f841e02e16869481f4ac4cdfd2e8c941df815720"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Aug 15 05:52:07 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Aug 15 05:52:07 2004 +0000"
      },
      "message": "SVN revisions 916-920 from Zebra. ABR support is almost done.\n"
    },
    {
      "commit": "049207c31d9b5da023c6c2e3689b771010098f94",
      "tree": "08dd51fe72c455f869b83372e4a6aa1346389426",
      "parents": [
        "4f4795e83fb4ddcc0d19322478e9cc422a60c7c4"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Aug 04 20:02:13 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Aug 04 20:02:13 2004 +0000"
      },
      "message": "SVN revision 907 from Zebra cvs repository.\n"
    },
    {
      "commit": "3b4cd3a9e89a5aace04a6a756bd0d23b7108fd83",
      "tree": "a15fe3959155a6ca5bd5a2f8e967f9fd39736975",
      "parents": [
        "4845437528f395c75c1945dd80b140b7162e4667"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue May 18 19:28:32 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue May 18 19:28:32 2004 +0000"
      },
      "message": "Update to latest (really :) ospf6d from Zebra repository and some tiny\nfixes.\n"
    },
    {
      "commit": "508e53e2eef3eefba4c1aa771529027fd4486ea8",
      "tree": "0e25e1b344a7b8e2c4551cfcb74d5a011dd0865d",
      "parents": [
        "6708fa3c3e6aef369be13f3915698f407107cae2"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue May 18 18:57:06 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue May 18 18:57:06 2004 +0000"
      },
      "message": "Ospf6d merge from Zebra repository with added privs stuff and merged\nzclient changes.\n"
    },
    {
      "commit": "5e4fa1646cafe9e6f8dd78501bea0d2fe1eafdb4",
      "tree": "6f2aa13346f91f0924ada9cb9696589264a90552",
      "parents": [
        "253e9336982599957514ad87610e8cd58822fc7a"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Mar 16 14:38:36 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Mar 16 14:38:36 2004 +0000"
      },
      "message": "2004-03-16 David Young \u003cdyoung@pobox.com\u003e\n\n\t* (many) reference \u003clib/version.h\u003e rather than \"version.h\",\n\tbecause version.h is a generated file and not present in the\n\tsource tree when using objdir builds.\n\n(committed by gdt)\nworks fine with normal builds; didn\u0027t try objdir\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"
    }
  ]
}
