)]}'
{
  "log": [
    {
      "commit": "14d2bbaa3f4aa53152472694c29f336808e47313",
      "tree": "e39bdddef4ea53207dd8fb61e1fd6b54d8c7721d",
      "parents": [
        "51d4ef832c1e58150325630e25c442866e5a6cf5",
        "e96b312150d8e376c1ef463793d1929eca3618d5"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Wed Apr 11 23:51:08 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Wed Apr 11 23:51:08 2012 -0700"
      },
      "message": "Merge quagga mainline into the google ISIS code.\n\nThe steps were:\n\n  $ git checkout google-is-is\n  $ git merge quagga\n  $ git checkout google-is-is -- isisd\n\n  # Resolve conflicts in the following:\n  lib/md5.h\n  zebra/rt_netlink.c\n  zebra/zebra_rib.c\n  zebra/zserv.c\n\nNote that the content in the isisd directory is left unchanged in the\nmerge. As a result, changes made to isisd as part of the following\ncommits on the quagga mainline are dropped.\n\n  # 8ced4e82 is the merge base, e96b3121 is the current quagga master\n  $ git log --oneline --reverse 8ced4e82..e96b3121 -- isisd\n  5574999 isisd: fix crash on \"no router isis\" (BZ#536)\n  8998075 isisd: raise hello rate for DIS (BZ#539)\n  306ca83 isisd: include hash.h, not hash.c\n  b82cdeb delete CVS keywords\n  2f65867 isisd: indent longopts array\n  b511468 quagga: option \"-z\" (\"--socket \u003cpath\u003e\") added\n  05e54ee build: delete .cvsignore files\n  b4e45f6 fix zebra protocol after MP-BGP changes\n  7fd6cd8 isisd: fix circuit state machine\n  907fd95 isisd: send proper LSP after DIS election\n  d034aa0 isisd: fix wrong next-hops from SPF\n  c25eaff isisd: unexpected kernel routing table (BZ#544)\n  e6b03b7 isisd: implement MD5 circuit authentication\n"
    },
    {
      "commit": "51d4ef832c1e58150325630e25c442866e5a6cf5",
      "tree": "df155c4193531a37f651d4151866f18224f8ca4b",
      "parents": [
        "2dd04c5dc8b5a09cce1c251361fa58f26398fd9f"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 17:13:39 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sun Apr 08 01:19:41 2012 -0700"
      },
      "message": "zebra: include hardware addr in if up/down messages\n\nChange interface up/down notification messages to also include the\nhardware address of the interface. The format of these messages is now\nidentical to the interface add message -- move the serialization code\nto common functions.\n\n  * lib/zclient.c: Modify zebra_interface_if_set_value() to also parse\n    the hardware address. Invoke it from zebra_interface_add_read()\n    and and zebra_interface_state_read().\n\n  * zebra/zserv.c: Add zserv_encode_interface(). Invoke it from\n    zserv_interface_add(), zserv_interface_delete() and\n    zserv_interface_update().\n"
    },
    {
      "commit": "2dd04c5dc8b5a09cce1c251361fa58f26398fd9f",
      "tree": "a738ee1b46f7d346e05285677b6c4df9ba689b6d",
      "parents": [
        "af56d404cd56d94ad3b2ec3f159650eb72baef0a"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 10:37:03 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sun Apr 08 01:18:41 2012 -0700"
      },
      "message": "lib: Tweak to if_delete_retain()\n\n  * lib/if.c: Change if_delete_retain() to delete all connected\n    addresses, but to not free the list that holds them. Free the list\n    just before the interface structure itself is freed, in\n    if_delete().\n"
    },
    {
      "commit": "af56d404cd56d94ad3b2ec3f159650eb72baef0a",
      "tree": "2d923b385dd21a5f0ced95d2430b4c998af18f94",
      "parents": [
        "fc328ac9d3d49b871c1139f36deb702a254c0d4f"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 18:47:51 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sun Apr 08 00:28:50 2012 -0700"
      },
      "message": "zebra: clean up client routes when client goes away\n\n  * zebra/zebra_rib.c: Add code to clean up routes added by a client\n    (as identfied by \u0027rib type\u0027).\n\n  * zebra/zserv.[ch]: Maintain the type of the routes added by a\n    client on the \u0027zserv\u0027 structure -- assume that a given client uses\n    a single route type for now.\n\n    Clean up routes from a client when the client goes away (in\n    zebra_client_close()).\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": "fc328ac9d3d49b871c1139f36deb702a254c0d4f",
      "tree": "a7189a1286862a347834792e93a7b00df3c0cfac",
      "parents": [
        "e38e0df01ad305ad48ecf816b52fa99fd3f2a4e1"
      ],
      "author": {
        "name": "Subbaiah Venkata",
        "email": "svenkata@google.com",
        "time": "Tue Mar 27 16:35:22 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 23:52:40 2012 -0700"
      },
      "message": "zebra: add more logs/asserts to rib work queue code\n\n  * zebra/zebra_rib.c: (rib_queue_add, rib_queue_init) Add some more\n    logs and asserts.\n\nFrom: Subbaiah Venkata \u003csvenkata@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "e38e0df01ad305ad48ecf816b52fa99fd3f2a4e1",
      "tree": "ad565c3d656c0d5b74a1a3a80f1774bef938b1b4",
      "parents": [
        "3f045a08812525505e165deea99a79447b44506b"
      ],
      "author": {
        "name": "Subbaiah Venkata",
        "email": "svenkata@google.com",
        "time": "Tue Mar 27 23:48:05 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:54:37 2012 -0700"
      },
      "message": "isisd: couple of bug fixes\n"
    },
    {
      "commit": "3f045a08812525505e165deea99a79447b44506b",
      "tree": "a5c944b0584e0e5a14908a2ac9476637e7c1d7e6",
      "parents": [
        "6902c69aa30a73ecd70ef8941518b541ca02b878"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Sat Mar 24 08:35:20 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:54:37 2012 -0700"
      },
      "message": "isisd: add Google\u0027s changes to IS-IS\n"
    },
    {
      "commit": "6902c69aa30a73ecd70ef8941518b541ca02b878",
      "tree": "b38ad5eeb55cb2657f5372fab62cac3d34580ea1",
      "parents": [
        "26e2ae362baf207d82e4c1ac76bc1c2b2df6ccaa"
      ],
      "author": {
        "name": "Subbaiah Venkata",
        "email": "svenkata@google.com",
        "time": "Tue Mar 27 19:21:29 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:54:24 2012 -0700"
      },
      "message": "zebra: tweak deletion of routes without nexthop addr\n\n  * zebra/zserv.c\n\n    - zread_ipv4_delete(): Pass a null \u0027gate\u0027 parameter to\n      rib_delete_ipv4() if the route being deleted does not specify a\n      next hop IP address. We were previously passing a pointer to a\n      cleared out IP address.\n\n    - zread_ipv4_add(): Fix indentation.\n\nFrom: Subbaiah Venkata \u003csvenkata@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "26e2ae362baf207d82e4c1ac76bc1c2b2df6ccaa",
      "tree": "e0d060875b5eab622244977e58b2445d55d6d240",
      "parents": [
        "d531050b7bf0f93d4d29a7a2f7b745641778b483"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Thu Mar 22 01:09:21 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:54:02 2012 -0700"
      },
      "message": "zebra: read multipath routes and hw addr from netlink\n\n  * zebra/rt_netlink.c:\n\n    - Pick up the hardware address of an interface when we receive a\n      netlink link change message. Extract code for parsing the\n      link-layer hardware address into a new function so we can reuse\n      it.\n\n    - netlink_routing_table(): Update to handle multipath routes.\n\n    - netlink_route_change(): Update to handle multipath routes. Fix\n      problem where the metric was not being read out.\n\n  * zebra/zebra_rib.[ch]: Extern nexthop_ipv4_ifindex_add() -- it is\n    now called from the netlink code.\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": "d531050b7bf0f93d4d29a7a2f7b745641778b483",
      "tree": "82e45741fa3883f6e25a38f2abef4eea107fd54f",
      "parents": [
        "bed930fd70742af5ae138e0a5ee629dda296ea36"
      ],
      "author": {
        "name": "Subbaiah Venkata",
        "email": "svenkata@google.com",
        "time": "Sat Mar 24 13:10:19 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:53:40 2012 -0700"
      },
      "message": "lib: add stream_set_endp()\n\n  * lib/stream.[ch]:\n\n    - Add stream_set_endp(). This can be used to trim data (for\n      example, padding) at the end of a stream.\n\n    - Fix swapped \u0027getp\u0027 and \u0027endp\u0027 parameters in STREAM_WARN_OFFSETS.\n\nFrom: Subbaiah Venkata \u003csvenkata@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "bed930fd70742af5ae138e0a5ee629dda296ea36",
      "tree": "38d107117db56d60ce8d136507cc1d79ac2e22dc",
      "parents": [
        "54dd61227352dd1dd4db4fe76dbf7d2e92522e74"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 10:22:19 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:53:22 2012 -0700"
      },
      "message": "lib: add support for keyed-hashing with MD5\n\n  * lib/md5.[ch] Add implementation of HMAC-MD5 from RFC 2104.\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": "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": "e96b312150d8e376c1ef463793d1929eca3618d5",
      "tree": "33bdbba11475be746d7ebf684fd1441b9db4b929",
      "parents": [
        "a3537862f3c00b60fc52a67c1cc447c2a65f97bd"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Apr 04 00:14:36 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Apr 04 00:25:51 2012 +0200"
      },
      "message": "lib: pretty ip_masklen and masklen2ip\n\nnonwithstanding any desire for optimisation, these versions are shorter\nand more concise.  reading the comments, they might even be easier to\nunderstand.\n\nI\u0027ve tested them on i686 and x86_64, and checked that correct assembler\ncode is emitted for ARM, MIPS and PowerPC.\n\nIPv6 is left as an exercise for another day, none of the ideas I had led\nto a \"yes, this is the one to go with\" solution.\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "a3537862f3c00b60fc52a67c1cc447c2a65f97bd",
      "tree": "97bcf4e43ff70dcf74de412e37944fd3ac5d6aae",
      "parents": [
        "fa5831e85ae9ba7008fb4b4e2d4c7561ae5cb697"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Mar 23 22:48:05 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Apr 04 00:25:31 2012 +0200"
      },
      "message": "Revert \"lib: optimize ip_masklen()\" (BZ#720)\n\nThis reverts commit d171bf58ef12ace43d48565e6870722dece1e6ed.\n\nThere are multiple reasons for this revert, including bug #720, but also\nquite simply the unreadability of having 2000 lines of an autogenerated\ntable in the middle of a source file.\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\nReported-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fa5831e85ae9ba7008fb4b4e2d4c7561ae5cb697",
      "tree": "5653d8127ad212e6d251fb078afef50fc262353b",
      "parents": [
        "fa61e16ddebe10a71d98bcd2eba0f630071ea4a7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 27 11:54:04 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 27 11:54:04 2012 +0100"
      },
      "message": "bgpd: bgp_attr_flags_diagnose shouldn\u0027t assert\n\n* bgpd/bgp_attr.c: (bgp_attr_flags_diagnose) debug code for error-handling\n  paths probably shouldn\u0027t assert, instead it should just log that there\n  was no problem.\n"
    },
    {
      "commit": "fa61e16ddebe10a71d98bcd2eba0f630071ea4a7",
      "tree": "bc301257fdb4dbac4aedf1e17ffa3e6c00a77612",
      "parents": [
        "683f2b86d89fa356d3d1f7a54b0c269baa38b836"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 21:31:47 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 27 11:48:38 2012 +0100"
      },
      "message": "bgpd: attr_parse call to attr_malformed should deal with PROCEED error case\n\n* bgpd/bgp_attr.c: (bgp_attr_parse) the invalid flag check call to\n  bgp_attr_malformed is pretty useless if it doesn\u0027t actually allow\n  for the PROCEED non-error case.\n"
    },
    {
      "commit": "683f2b86d89fa356d3d1f7a54b0c269baa38b836",
      "tree": "0788f6ea3f9079d3c1d775c49cd4cd881e44d204",
      "parents": [
        "bd471fea4ec965c71d6c2201745995092fbc36f6"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Mar 23 14:58:45 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 27 11:48:35 2012 +0100"
      },
      "message": "bgpd: Fix silly mistake in bgp_attr_flag_invalid\n\n* bgp_attr.c: (bgp_attr_flag_invalid) flags is meant to be masked\n  off with the mask variable...\n"
    },
    {
      "commit": "bd471fea4ec965c71d6c2201745995092fbc36f6",
      "tree": "1d07d21b35101724d98107d47f4cd214800b4489",
      "parents": [
        "81c3e5006e5d29e305cbc0ab482617d7e570e8c0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Mar 15 11:30:00 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 21:33:51 2012 +0100"
      },
      "message": "bgpd: malformed attribute error that can still proceed should fixup getp\n\n* bgp_attr.c: (bgp_attr_malformed) When a malformed attribute error can be\n  ignored, and BGP message processing may still proceed, the stream getp\n  should be adjusted to the end of the attribute - the caller may not have\n  consumed all the attribute. Problem noted by Martin Winter in bug 678.\n\n  Also, rename the \u0027startp\u0027 local to \u0027notify_datap\u0027, for clarity.\n"
    },
    {
      "commit": "81c3e5006e5d29e305cbc0ab482617d7e570e8c0",
      "tree": "7408dfdeff638ce16273cd7c8c4d9c35a99cfe87",
      "parents": [
        "fe67e668881b8b8d71b1570575c913cd287fafcf",
        "6881f2698279f3c47a55e8969860eeac59e8c3d7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:10:22 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:10:22 2012 +0100"
      },
      "message": "Merge branch \u0027babeld-merge\u0027 into master-copy\n"
    },
    {
      "commit": "6881f2698279f3c47a55e8969860eeac59e8c3d7",
      "tree": "7408dfdeff638ce16273cd7c8c4d9c35a99cfe87",
      "parents": [
        "cbde15513ba47f6e7f6d02fcafcfb12cd5b1df77"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 15:43:34 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: remove \"parasitic\" mode.\n\nThis is the functionality described in Appendix C of RFC 6126.  Its\nmain purpose is to avoid keeping a full source table, which makes it\npossible to implement a subset of Babel in just a few hundred lines of\ncode.  However, in Quagga the code for maintaining the source table is\nalready there, and a parasitic implementation can be simulated using\nfiltering -- so it makes little sense to keep the functionality.\n"
    },
    {
      "commit": "cbde15513ba47f6e7f6d02fcafcfb12cd5b1df77",
      "tree": "97c9fbd49c65207ca878237d7668ba51cb472f9d",
      "parents": [
        "5ca7986d546a1b65a4917aec0f1b594f950f7c27"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 14 15:12:03 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: 3 more timing statements in config text\n\nThis commit makes the following lines visible in running-config text,\nwhen respective intervals are configured to non-default values:\n\n* babel hello-interval\n* babel update-interval\n* babel resend-delay\n"
    },
    {
      "commit": "5ca7986d546a1b65a4917aec0f1b594f950f7c27",
      "tree": "db1870605c572a7a15493a6c5a1fd7d5d2e71ece",
      "parents": [
        "b63b4484c6d2c9d304d4ddd0756a4847c6dc5359"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 11:22:29 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: consolidate zebra interface into fewer functions.\n"
    },
    {
      "commit": "b63b4484c6d2c9d304d4ddd0756a4847c6dc5359",
      "tree": "e81471e9fd7e912ab16d3c2de9b3dbea5aa971e7",
      "parents": [
        "260948cdd6030b332137dfa0580d5a9ba651b145"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 11:17:32 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: fix typo in kernel_route_add_v6.\n"
    },
    {
      "commit": "260948cdd6030b332137dfa0580d5a9ba651b145",
      "tree": "873a640ce0a3befae45dbc4d4625ab97acbdb271",
      "parents": [
        "46b92c043f1a83d8343a4a0345a7b69bac3cdf20"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 09:09:32 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: set interface flags eagerly, not at interface up.\n"
    },
    {
      "commit": "46b92c043f1a83d8343a4a0345a7b69bac3cdf20",
      "tree": "11cfaf25b7654c09c6c0d30f4992b0715bf9ecd7",
      "parents": [
        "4d176dc07ccdcdefcd0e40043233a8c4f136f5c1"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 08:53:51 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: more helpful sample conf file.\n"
    },
    {
      "commit": "4d176dc07ccdcdefcd0e40043233a8c4f136f5c1",
      "tree": "feea17526352c6fca5f61dd398279007ff6a2881",
      "parents": [
        "36329c02c36703cc2158c1c99b86045fed26d4ae"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 08:52:19 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: fix documentation.\n"
    },
    {
      "commit": "36329c02c36703cc2158c1c99b86045fed26d4ae",
      "tree": "64cebc900d5b528f5a85645f681a38b59e5ad669",
      "parents": [
        "cb4b13d945a4b44282e59fa2be9ceda752420a13"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 08:49:57 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: remove remains of standalone babeld\u0027s configuration code.\n\nStandalone babeld has a configuration interface that is not used in\nQuagga.  This removes a few bits of this code that survived the\nport to Quagga.\n"
    },
    {
      "commit": "cb4b13d945a4b44282e59fa2be9ceda752420a13",
      "tree": "6ff7d9cdbe147dc57cd651b21e70bce5735b971e",
      "parents": [
        "a14ef5eeccc8c76c41830475bbe3c31c9e14faa5"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Feb 13 22:13:37 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: drive interface_config_write() forward\n"
    },
    {
      "commit": "a14ef5eeccc8c76c41830475bbe3c31c9e14faa5",
      "tree": "7099b5d4614c05491a1a5a1cef512f64c3f2512c",
      "parents": [
        "ce590ecd85b3cf32c5429f09e12d92248cc01ef2"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Feb 11 21:06:16 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: justify \"running-config\" meaning in CLI\n\nThe primary focus of this commit is to make \"show running-config\"\ncommand display more current configuration, including some of the bits\npreviously seen in the output of \"show babel running-config\". Besides\nthat, the following commands were renamed for consistency with the\nsyntax of other components:\n\n\"debug *\" to \"debug babel *\" (and moved to top level)\n\"show babel running-config\" to \"show babel parameters\"\n\n* babel_interface.c\n  * show_babel_running_config(): rename to show_babel_parameters(),\n    update syntax pattern, don\u0027t call show_babeld_configuration()\n  * babel_if_init(): update respectively\n  * babel_enable_if_config_write(): new VTY helper for static\n    babel_enable_if\n* babel_interface.h: add extern declaration\n* babel_main.c: unset all debug options by default\n  * show_babel_main_configuration(): remove debug options decoder\n* babel_zebra.c\n  * babel_debug(): rename to debug_babel(), update syntax pattern\n  * no_babel_debug(): rename to no_debug_babel(), update syntax pattern\n  * babelz_zebra_init(): update respectively\n  * debug_babel_config_write() new VTY helper for static debug_type\n* babel_zebra.h: add extern declaration\n* babeld.c\n  * babel_config_write(): add the code to output \"debug babel *\",\n    \"router babel\", \"redistribute *\" and \"network *\" statements\n  * show_babeld_configuration(): dismiss\n* babeld.h: remove extern declaration\n* babeld.texi: update for renamed commands\n* babeld.conf.sample: idem, add debug statements block\n"
    },
    {
      "commit": "ce590ecd85b3cf32c5429f09e12d92248cc01ef2",
      "tree": "b9815ffc6af493f467d0ec820b4f27a6bf78acdd",
      "parents": [
        "8a46e12f5f0b02d58b1d7bc6c0d140aeec6c80c2"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 17:48:05 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "Remove dead variable reboot_time.\n\nThanks to Denis Ovsienko.\n"
    },
    {
      "commit": "8a46e12f5f0b02d58b1d7bc6c0d140aeec6c80c2",
      "tree": "a0c7538f2b1378d34ee148b534918207160589b6",
      "parents": [
        "68c65a5d3a6a8cb8133b5e9311fc5dc21de88e9c"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sat Feb 11 15:09:33 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "doc: fix typo.\n"
    },
    {
      "commit": "68c65a5d3a6a8cb8133b5e9311fc5dc21de88e9c",
      "tree": "94c9e7ae2896736dc1c1c227189e8930a2f92c22",
      "parents": [
        "173982334c978fdf2e7030d32a2cdc99587fb434"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 14:28:17 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "doc: update babeld documentation.\n"
    },
    {
      "commit": "173982334c978fdf2e7030d32a2cdc99587fb434",
      "tree": "85090c53119c78ddcbaf73368c1779edd0d83996",
      "parents": [
        "9c298c7119c1dba6c589b8f4c358debd8e694b72"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 14:27:16 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "doc: fix Makefile dependencies for babeld.\n"
    },
    {
      "commit": "9c298c7119c1dba6c589b8f4c358debd8e694b72",
      "tree": "d8ae18bd5aec994e02aabed536446a24051cefbc",
      "parents": [
        "c428edba5fb151844d28fbb41fce1df466a74e42"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 14:06:24 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: display update-interval and resend-delay in show commands\"\n"
    },
    {
      "commit": "c428edba5fb151844d28fbb41fce1df466a74e42",
      "tree": "739698e02d1d1e1108015980a6e3fba7a0e64404",
      "parents": [
        "b58871ee4d54989c16a60a839a592c9c4ab19cc3"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 14:02:10 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: vty commands (hello-interval, update-interval, resend-delay).\n"
    },
    {
      "commit": "b58871ee4d54989c16a60a839a592c9c4ab19cc3",
      "tree": "0416cf9ff1b2125463a760aff247c52beac329bc",
      "parents": [
        "52d54422bdc0b70356d84a38a0ce15ba5dea03e0"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 13:34:30 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: remove port and group setting commands.\n\nThey didn\u0027t work anyway, since they\u0027re called too late.\n"
    },
    {
      "commit": "52d54422bdc0b70356d84a38a0ce15ba5dea03e0",
      "tree": "175c986de70da9ccb9e88ec137a2577713653d42",
      "parents": [
        "359be3d0e4db5c931b1ad0dabbac2dea77394de1"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 13:08:00 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "Resynchronise with babeld-1.3.1.\n"
    },
    {
      "commit": "359be3d0e4db5c931b1ad0dabbac2dea77394de1",
      "tree": "4df570e46604bb29f178a94656abcbfbd9154edd",
      "parents": [
        "3c442e8802c260a0ce9787b5f432a7a2a093be25"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Feb 11 15:25:01 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: dismiss babel_redistribute_unset()\n\nThe function was effectively duplicating existing\nzclient_redistribute(). This makes no_babel_redistribute_type()\nconsistent with babel_redistribute_type()\n"
    },
    {
      "commit": "3c442e8802c260a0ce9787b5f432a7a2a093be25",
      "tree": "4fdbf9843386175a380a46e2b75dc0f23aeceb4d",
      "parents": [
        "9c58fbd7d7658055c2b3074489c6d338448d88e9"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Feb 08 23:30:46 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: fix wire{d,less} commands name.\n"
    },
    {
      "commit": "9c58fbd7d7658055c2b3074489c6d338448d88e9",
      "tree": "a085d8bc6ca9e5f5bc4ed9c186f89a207c59e3f8",
      "parents": [
        "93079db65cbb678d7fb67f7dd871e24c12b86f09"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Feb 09 21:51:17 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "ripd: add babel for redistribution.\n"
    },
    {
      "commit": "93079db65cbb678d7fb67f7dd871e24c12b86f09",
      "tree": "e781a6d0f4c8b60b0df9d78f9b36125f5f027805",
      "parents": [
        "d70ab9dcd8f054ebd5f60a29dbbd9b39f9fe7566"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Feb 09 20:58:07 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "ripngd: Replace redistribution strings with route_types.h defines.\n"
    },
    {
      "commit": "d70ab9dcd8f054ebd5f60a29dbbd9b39f9fe7566",
      "tree": "2901221e2a01c5079f2dba182f09570e8d7c0f6c",
      "parents": [
        "31e2a19fd2b4aca34b1d2f5e2eb8c9a44b9ea6c9"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 17:23:09 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: Add support for blackhole routes.\n\nBabel makes use of blackhole routes to prevent routing loops between\noverlapping prefixes shortly after a route is retracted (see RFC 6126\nsections 2.8 and 3.5.5).  This patch adds support for installing such\nblackhole routes.\n"
    },
    {
      "commit": "31e2a19fd2b4aca34b1d2f5e2eb8c9a44b9ea6c9",
      "tree": "a45b53df9a0a9d9acda77462d0993ca836df3936",
      "parents": [
        "578ce371d12422ce444f31ae4e51b21675c74b55"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 14:06:11 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: refactor filtering stubs.\n\nFactorise the common parts of the in/out filtering functions.  This also\nfixes a bug with filtered out routes, which in babeld are signalled by\na filter returing INFINITY, not -1.\n"
    },
    {
      "commit": "578ce371d12422ce444f31ae4e51b21675c74b55",
      "tree": "fc3412d8da413c531257fbc9517b5eb93bea1b96",
      "parents": [
        "82509bfde09b15ac8856a374aac6d5d62b91f54a"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 13:42:28 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "zebra: Display uptime of Babel routes in show ip[v6] route.\n"
    },
    {
      "commit": "82509bfde09b15ac8856a374aac6d5d62b91f54a",
      "tree": "c9e45fb9cba3fd9b64357537e8fe342bb9fe38ad",
      "parents": [
        "b6475ecb14abab936919894050f9ca47415d0f48"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 13:35:27 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Use quagga_gettime.\n"
    },
    {
      "commit": "b6475ecb14abab936919894050f9ca47415d0f48",
      "tree": "2db873dd6edb2e68ef2c0e37d44acf0ea9068521",
      "parents": [
        "53b21956f650df86a76b7a7047cfa85114c99dcc"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 12:29:10 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Don\u0027t use an ifindex when installing IPv4 routes.\n\nStand-alone babeld installs routes using both a next-hop gateway\nand an interface index.  Unfortunately, this doesn\u0027t work for IPv4\nunder Quagga.\n\nWe now ignore the ifindex when installing IPv4 routes, which makes\nBabel work for IPv4 in prefix-based networks.  Of course this breaks\nIPv4 mesh networks, unless you play some tricks with your interfaces\u0027\nnetmasks.\n"
    },
    {
      "commit": "53b21956f650df86a76b7a7047cfa85114c99dcc",
      "tree": "7a07aba2dcd54b609443974c09ec6f6f5698756a",
      "parents": [
        "73c74d4ee8bd0bc3fae899679e852df9c61f0ed3"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Tue Jan 31 17:09:55 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: remove some unused functions\u0027 arguments.\n"
    },
    {
      "commit": "73c74d4ee8bd0bc3fae899679e852df9c61f0ed3",
      "tree": "98d49f532b6ca046400be60d67eb80972bd5469d",
      "parents": [
        "f92a55ff0ef8e1186ad52369ace299bc91fdb791"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Feb 08 00:32:59 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "doc: fix typo in babeld.\n"
    },
    {
      "commit": "f92a55ff0ef8e1186ad52369ace299bc91fdb791",
      "tree": "36b5068221797590a1c0e65e83a946fdccf9a885",
      "parents": [
        "ec0c848047954158b4316d45586079cbb774a7fe"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 16:33:17 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "doc: Document babeld.\n"
    },
    {
      "commit": "ec0c848047954158b4316d45586079cbb774a7fe",
      "tree": "cd95fef71d389c06513575ec39592851aebda984",
      "parents": [
        "38846de1fd7fa9005933564de28360fb9bdf02bb"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 05:44:41 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Indentation fix.\n"
    },
    {
      "commit": "38846de1fd7fa9005933564de28360fb9bdf02bb",
      "tree": "ec52e9591640b5edbb3b868d487191ec9e324199",
      "parents": [
        "e19ed8c4516621be74b9a28c887185fc66b67430"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 05:43:36 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Error handling and tweaks for babeld commands.\n"
    },
    {
      "commit": "e19ed8c4516621be74b9a28c887185fc66b67430",
      "tree": "2af3257496f6dc568649ee1596d3a265cc8cfd26",
      "parents": [
        "feb6c53eacf630bf18d29e1994f65e567dbdd985"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 05:36:06 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Fix typo in hello interval command.\n"
    },
    {
      "commit": "feb6c53eacf630bf18d29e1994f65e567dbdd985",
      "tree": "4401c28048c69cdbced6be4ab1cd3bbd496b50af",
      "parents": [
        "831aeb9a87d9071829758caf11130aee5578f9c2"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 04:58:49 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "vtysh: Vtysh support for babeld.\n"
    },
    {
      "commit": "831aeb9a87d9071829758caf11130aee5578f9c2",
      "tree": "1d0f7da3a51a47d25e5430c69dbd086ea9c22248",
      "parents": [
        "8c4e57a57562c9329b1de4c29ee921ab98182c6b"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 04:56:47 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Replace the babeld.conf.sample file by one that actually works.\n"
    },
    {
      "commit": "8c4e57a57562c9329b1de4c29ee921ab98182c6b",
      "tree": "54253839ace41b14e363b6c5ede863c34e91e2e6",
      "parents": [
        "69394543597a0fd8c161c5c8a0d25c8b1cfa8a93"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sat Jan 28 00:29:51 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: fix interface bug, simplify code.\n\nPerhaps could it be able to free already free memory (so free(NULL)),\nin function interface_reset().  On other hand, it initiated untracked\ninterfaces, raising (at least) inappropriate messages. Finally, I\nremove the BABEL_IF_IS_ENABLE flag, witch was not really usefull.\nNote the test if_up isn\u0027t weaker, because (...IS_UP \u003d\u003e ...IS_ENABLE).\n"
    },
    {
      "commit": "69394543597a0fd8c161c5c8a0d25c8b1cfa8a93",
      "tree": "9e13b75ac01d607d4006db15fd14db811b9310e0",
      "parents": [
        "210f6f66287c40f247c1a4ff983aae85b9e42e2c"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sat Jan 28 10:35:12 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: state-file was loaded too early. Initial seqno too.\n"
    },
    {
      "commit": "210f6f66287c40f247c1a4ff983aae85b9e42e2c",
      "tree": "37b63e1cffca96ba3f069f777b89f5f18284a523",
      "parents": [
        "a0edef1b74bc9785b2aa1ed292a2777b6a75d40e"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sat Jan 28 00:07:14 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: fix eui64 features.\n\nWe are interested by eui64 with at least 6 octets.\n"
    },
    {
      "commit": "a0edef1b74bc9785b2aa1ed292a2777b6a75d40e",
      "tree": "e8be8ce19865379388f57d7131c463de2d960dab",
      "parents": [
        "05c943ac43087750ebc81b916b7dccfe4ae074ff"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Fri Jan 27 22:54:11 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: \"return CMD_SUCCESS\" was missing for command \u0027no debug\u0027.\n"
    },
    {
      "commit": "05c943ac43087750ebc81b916b7dccfe4ae074ff",
      "tree": "479fdbb7567e4c01656f9cbf5d19d712e73d2ae4",
      "parents": [
        "c35fafdf887aa32c5be6ad738d3a3b0140cea6e8"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Jan 26 22:15:34 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Replace redistribution strings with route_types.h defines.\n"
    },
    {
      "commit": "c35fafdf887aa32c5be6ad738d3a3b0140cea6e8",
      "tree": "4aa21a41dcd82247e467e5b955a6f7813bfd7ba7",
      "parents": [
        "16e51b246be6b18641327685f44bd4f5f6649367"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Mon Jan 23 23:46:32 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: babelz merge.\n\nBabelz is the last version of the stand-alone babel daemon. In\nparticular, it use multiple channels to diminuate\ninterferences. Please refer to this one for more details.\n"
    },
    {
      "commit": "16e51b246be6b18641327685f44bd4f5f6649367",
      "tree": "2ad92205d59a36e1d5c822a369fe92381dd43e5c",
      "parents": [
        "0b42c70840e16b048f62a38652123eb2cb900b65"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Mon Jan 23 00:22:14 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: remove unused variable.\n"
    },
    {
      "commit": "0b42c70840e16b048f62a38652123eb2cb900b65",
      "tree": "d0aec2e81624a7b0c43a0319515d257439f57e59",
      "parents": [
        "a19a3bf94740aebff6fdfc76f3d4b17c0013fae4"
      ],
      "author": {
        "name": "Ang Way Chuang",
        "email": "wcang79@gmail.com",
        "time": "Fri Jan 27 20:52:27 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "vtysh: fix regexp for install_element() in babeld\n"
    },
    {
      "commit": "a19a3bf94740aebff6fdfc76f3d4b17c0013fae4",
      "tree": "057e963785a71025500fe3b1e052c348c86c5d67",
      "parents": [
        "ec8d8d5ba648302cf9405f1346e3760d9b9d061c"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Jan 21 23:16:00 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: add MP-specific zclient API fix\n\nAdd proper initialization of SAFI field, which is present in the\nrevisions of zapi_ipv4 and zapi_ipv6 structures specific to\nMP-BGP patchset. Without this change no Babel routes could make\ninto zebra RIB.\n"
    },
    {
      "commit": "ec8d8d5ba648302cf9405f1346e3760d9b9d061c",
      "tree": "ec5a3e3677000458e17e941deccf9c0308ae759a",
      "parents": [
        "6dfeb3f6cfaf89ce0e11421b48feb2965a43ffd6"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Fri Jan 20 15:32:16 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: change the modify route system.\n\nZebra doesn\u0027t set errno to EEXIST if we add a route who was already in\nthe kernel, so we always returned after just doing \"add; delete\". This\npatch fix the problem by doing \"delete; add\" always.\n"
    },
    {
      "commit": "6dfeb3f6cfaf89ce0e11421b48feb2965a43ffd6",
      "tree": "73b35ad02beef3db3e1b69a15c1c82e72c1bd287",
      "parents": [
        "f1305cbfbed050ed4f389fa282bef49917ffd638"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Fri Jan 20 17:53:57 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: fix bug due to v4mapped addresses.\n"
    },
    {
      "commit": "f1305cbfbed050ed4f389fa282bef49917ffd638",
      "tree": "5b2b264b5d4be7619b90f28225d157ed28232d27",
      "parents": [
        "b5d43c939476b49106b1ab80b61609aba43c915d"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Fri Jan 20 00:19:35 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: add command (config) to set debug flags.\n"
    },
    {
      "commit": "b5d43c939476b49106b1ab80b61609aba43c915d",
      "tree": "6f5cf39088c98a114b0ccadc3a65f3dd848a222c",
      "parents": [
        "2236df03898f82e627f865e11157a5e08dd2e4ba"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Jan 19 22:38:56 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: remove useless variable, make local another.\n"
    },
    {
      "commit": "2236df03898f82e627f865e11157a5e08dd2e4ba",
      "tree": "f27b4f7ce340761e4ce8181ac33cc85ccc5bc9c4",
      "parents": [
        "3f031ed536cf96d44015cf49d1f734d15d194f0a"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Jan 19 22:37:38 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "memory: install babel memory informations.\n"
    },
    {
      "commit": "3f031ed536cf96d44015cf49d1f734d15d194f0a",
      "tree": "b119fce3d2a11f580e355cec08eab50d6b30c181",
      "parents": [
        "72db20bf8f6af1fd70ae42f287360cad835f042b"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 23:03:00 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: fix commands informations messages.\n"
    },
    {
      "commit": "72db20bf8f6af1fd70ae42f287360cad835f042b",
      "tree": "6bc7d807f5ef0bbba7f89059504a7f71cada1f46",
      "parents": [
        "3cb4134bcfb2b9f7aa885a39cc0efc3b18125490"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 22:06:10 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: place the babel-state file in the quagga vars directory.\n"
    },
    {
      "commit": "3cb4134bcfb2b9f7aa885a39cc0efc3b18125490",
      "tree": "c6a6e0177bafc14ad6b240f725a07bb64653a830",
      "parents": [
        "d3351d1ebf99591cf436035bb148e4ae0b351ffc"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 20:20:59 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: use zlog_debug instead of do_debugf, for debugf.\n"
    },
    {
      "commit": "d3351d1ebf99591cf436035bb148e4ae0b351ffc",
      "tree": "f0e5286ec77fe2bab401343df6ce32e79a7b963b",
      "parents": [
        "1f39f466e439f217dcbae741ddc23a5340a05ec9"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Jan 19 22:36:56 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: add command: \"show_babel_running_config\".\n"
    },
    {
      "commit": "1f39f466e439f217dcbae741ddc23a5340a05ec9",
      "tree": "bfe2fe898eacf5b4363d63bde9387efb3bb11125",
      "parents": [
        "297a55ba1ce58b281b825400abeca6c32b99db52"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 20:01:31 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: add command: \"show_babel_database\".\n"
    },
    {
      "commit": "297a55ba1ce58b281b825400abeca6c32b99db52",
      "tree": "cdeeb45d82ed83f6db0bf3920ea7be14f55f94fa",
      "parents": [
        "0ee8a1f1d61ce55642d9164625ab36700fe2c3a9"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 16:39:29 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: add command: \"show_babel_neighbour\".\n"
    },
    {
      "commit": "0ee8a1f1d61ce55642d9164625ab36700fe2c3a9",
      "tree": "1bb2592f6386b38bb6254cd7d6267a2cde056275",
      "parents": [
        "4eedea551290906fc76f3a0c908ae759e78bb68a"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 00:52:06 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: avoid segfault (bug 706).\n"
    },
    {
      "commit": "4eedea551290906fc76f3a0c908ae759e78bb68a",
      "tree": "dcc0782b8ffe445f3a75839b99eabc50194442ef",
      "parents": [
        "d4e46e681434e768b870679b998eb1ac7635fdfc"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Tue Jan 17 22:46:21 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: change fprintf(stderr) in term of zlog_err.\n"
    },
    {
      "commit": "d4e46e681434e768b870679b998eb1ac7635fdfc",
      "tree": "9c37d25a9f90c1546e325811678b861b25a14c8e",
      "parents": [
        "8f3607f84eb5d21d4732a51b39775b7edf8796c2"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 17 19:25:03 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: implement \"show babel interface\" command\n\n* babel_interface.c\n  * show_babel_interface_sub(): new function to process one ifp\n  * show_babel_interface(): new function, VTY wrapper\n  * babel_if_init(): update respectively\n"
    },
    {
      "commit": "8f3607f84eb5d21d4732a51b39775b7edf8796c2",
      "tree": "3acdc79efb673d2797ac12abf28308815213f9fe",
      "parents": [
        "446d73b7ae544df3af68b4e85ddcd06c2d3589bf"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 17 17:04:00 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: add handling of \"-z\" cmdline arg\n"
    },
    {
      "commit": "446d73b7ae544df3af68b4e85ddcd06c2d3589bf",
      "tree": "9e09fbc19f68c90e7ab6c3ee43e1efbf7cf3214f",
      "parents": [
        "f8a246d6df0556fb897e1785d1c2ea81caf8956d"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 17 17:00:20 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: bring babel_usage() into focus\n"
    },
    {
      "commit": "f8a246d6df0556fb897e1785d1c2ea81caf8956d",
      "tree": "e78438d35439685d7427dd5bfbc404f5c32f4b5c",
      "parents": [
        "87c271c69330cfcea7955503eba3ed15a15cb634"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Jan 11 18:18:56 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "lib: update proto_redistnum() for Babel\n"
    },
    {
      "commit": "87c271c69330cfcea7955503eba3ed15a15cb634",
      "tree": "b336a3004fcdc45dea7ff336889984ca8f94e320",
      "parents": [
        "528eab1fd04434e0befe9a98191b11602e3cb2ff"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 10 15:58:04 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: address remaining -Wcast-qual warnings\n\n* net.c\n  * babel_send(): arguments are not treated as \"const\", justify\n    declaration\n* babel_main.c: declare constant pointers as such\n"
    },
    {
      "commit": "528eab1fd04434e0befe9a98191b11602e3cb2ff",
      "tree": "2d7db816953bda15297d9d500c3c878185f22ca3",
      "parents": [
        "c7c53fa88ccdbc2d48cf7327c9e4f33cdc517a8a"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sun Jan 08 17:07:10 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: fix bug concerning pidfile.\n"
    },
    {
      "commit": "c7c53fa88ccdbc2d48cf7327c9e4f33cdc517a8a",
      "tree": "9bd7e691165412840555be6d10a7a37b69b00bc0",
      "parents": [
        "3dbda0ceebe369a1071600fe7d8d8ecf45f1027c"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sun Jan 08 16:43:08 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: address some other compilation warnings.\n"
    },
    {
      "commit": "3dbda0ceebe369a1071600fe7d8d8ecf45f1027c",
      "tree": "1df830052d1a516bc4ec6b213b36b16d28c9868d",
      "parents": [
        "ef4de4d36c2dc10a68d41e518057d04b262ec867"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 08 16:52:36 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: address some compilation warnings\n\nIncluding system headers is not necessary with zebra.h included and\nsometimes results in \"__ASSERT_FUNCTION redefined\" compilation warning.\n\n* babeld.c\n  * babel_distribute_update_interface(): make static\n* babel_interface.c\n  * interface_config_write(): unused \u0027babel_ifp\u0027\n  * don\u0027t include system headers\n* message.c\n  * send_request(): unused \u0027babel_ifp\u0027\n  * send_multihop_request(): idem\n  * don\u0027t include system headers\n* route.c: don\u0027t include system headers\n* xroute.c: idem\n* source.h: newline at EOF\n* message.h: idem\n"
    },
    {
      "commit": "ef4de4d36c2dc10a68d41e518057d04b262ec867",
      "tree": "fb194c240926977a85d3f313f65b3ab038fb8d1a",
      "parents": [
        "089082b5d51c41a4498edb6a3f495ade0d517e73"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 08 15:29:19 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: address FreeBSD \"struct route\" issue\n\nFreeBSD system headers have their own \"struct route\", which made it\nimpossible to compile babeld. Switching babeld to \"struct babel_route\".\n"
    },
    {
      "commit": "089082b5d51c41a4498edb6a3f495ade0d517e73",
      "tree": "af876f1c7fcbd3077ffcce8c76e031c226b654cf",
      "parents": [
        "5734509c0545ebd95a5b8e3f22a911c1a39ffa1b"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Fri Jan 06 23:09:23 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: clean kernel_zebra (old functions, fields...).\n"
    },
    {
      "commit": "5734509c0545ebd95a5b8e3f22a911c1a39ffa1b",
      "tree": "2f35ad50d793080db1f858c2de2228cfd2946dfd",
      "parents": [
        "fe67e668881b8b8d71b1570575c913cd287fafcf"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Dec 25 17:52:09 2011 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:51 2012 +0100"
      },
      "message": "babeld: Initial import, for Babel routing protocol.\n\n* Initial import of the Babel routing protocol, ported to Quagga.\n* LICENCE: Update the original LICENCE file to include all known potentially\n  applicable copyright claims.  Ask that any future contributors to babeld/\n  grant MIT/X11 licence to their work.\n* *.{c,h}: Add GPL headers, in according with the SFLC guidance on\n  dealing with potentially mixed GPL/other licensed work, at:\n\n  https://www.softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html\n"
    },
    {
      "commit": "fe67e668881b8b8d71b1570575c913cd287fafcf",
      "tree": "ce48b0028e879d4e6f938bb9dd583ed9f679fa96",
      "parents": [
        "aee567450eaf32877d00f47c4cc5d05c5fb85a51"
      ],
      "author": {
        "name": "Renato Westphal",
        "email": "renatowestphal@gmail.com",
        "time": "Fri Mar 23 16:27:40 2012 -0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Mar 23 20:51:28 2012 +0100"
      },
      "message": "lib: fix endianness bug in prefix.c\n\nWhile defining two \"maskbytes\" arrays for the respective endiannesses,\nthe code was unconditionally using one that only worked on little endian\nsystems.\n\nUse preprocessor macros to avoid the somewhat expensive\nhtonl/ntohl macros.\n\nFrom: Renato Westphal \u003crenatowestphal@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\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": "a20a4060c8b90e3d88ce97d439eee1a38260d7c5",
      "tree": "bf164684241b37dfd5717bfe5b56d4acf69fce3a",
      "parents": [
        "fa482834ea1a30eff056dbf0f36a6f3262460a08"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Mar 08 16:42:31 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Mar 08 16:42:31 2012 +0000"
      },
      "message": "doc: Fix an apparently no longer legal @itemize @asis\n\n* basic.texi: @asis isn\u0027t legal with @itemize apparently, should be @w\n  according to docs, but @w{} seems to be needed. Fixes doc build error.\n"
    },
    {
      "commit": "fa482834ea1a30eff056dbf0f36a6f3262460a08",
      "tree": "cdabf37152e29e05724d54e4ed6bb783b0d9472e",
      "parents": [
        "096259d0623ad1a30c5da139af180909b322c91f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Mar 08 13:51:21 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Mar 08 16:14:13 2012 +0000"
      },
      "message": "HACKING.tex: Change to a LaTeX version of HACKING\n\n* configure.ac: Check for latexmk and pdflatex\n* Makefile.am: Add a conditional target to build HACKING.pdf, as a convenience\n* HACKING.tex: A slightly more structured HACKING, is readable on its own.\n* HACKING: removed\n"
    }
  ],
  "next": "096259d0623ad1a30c5da139af180909b322c91f"
}
