)]}'
{
  "log": [
    {
      "commit": "128293286a8be01b99ed60db53e19ce6e2669558",
      "tree": "59bf4be72bc1905a404c572d0446390f1587c67b",
      "parents": [
        "c63b83fe8d1addecc949258479b8d54180c4da60"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Tue Apr 10 16:57:25 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:28 2012 +0200"
      },
      "message": "lib, zebra: extend use of sockunion2ip macro\n\n  * lib/sockunion.c,\n  * zebra/zebra_rib.c: replace -\u003esin.sin_addr.s_addr with sockunion2ip\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n[reworded commit message]\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "ddc943dec3c017583f81cce388c7d453293156c7",
      "tree": "a36d2bca91b1f3a7545a135b3bafccc40d0ca47b",
      "parents": [
        "8794e8d229dc9fe29ea31424883433d4880ef408"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Fri Apr 13 13:46:07 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:21 2012 +0200"
      },
      "message": "bgpd, zebra: Fix format for some metric outputs\n\nMetrics are unsigned values.\n\n  * bgpd/bgp_{debug,route,vty}.c,\n  * zebra/zebra_vty.c: replace %d with %u for metrics \u0026 distances\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n[reworded commit message]\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "9665856e3718e42068e7d897f5e2468e77fb8c17",
      "tree": "264cd6e05ee23bcf46d1ce42c38ffa228b5035f1",
      "parents": [
        "fa4094ac49b4cc23589f5c5b7e608c4b4ee6ca04"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Apr 20 17:23:39 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Apr 20 17:29:31 2012 +0200"
      },
      "message": "Revert \"zebra: clean up client routes when client goes away\"\n\nThis reverts commit af56d404cd56d94ad3b2ec3f159650eb72baef0a,\nwhich was accidentally duplicating functionality from commit\n2ea1ab1 \"zebra: ZEBRA_HELLO and mopping up routes (BZ#448)\"\n\nConflicts:\n\n\tzebra/zebra_rib.c\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "3cadc0cdebb8f8262b1c1fbb8bfcbcdc3baa3733",
      "tree": "3cc40be888ef151298db7c14d7ed0c66d54b5744",
      "parents": [
        "d75318cc8de91d94649106f4ea3122d0d21ac9eb"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Sun Apr 01 12:16:31 2012 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:36:52 2012 +0200"
      },
      "message": "zebra: use larger buffer (4096) for netlink messages\n\nIncrease the maximum number of nexthops per route by using a larger\nbuffer for netlink messages.\n\n  * zebra/rt_netlink.c: Use a buffer of 4096 bytes to parse/build\n    netlink messages. Add a hash define for this number\n    (NL_PKT_BUF_SIZE). Most places in the code were previously using a\n    buffer of 1024 bytes.\n"
    },
    {
      "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": "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": "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": "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": "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": "4afa50b393ff1fb34dd577888a05b81dfdced5af",
      "tree": "e9bb7272c91a79276f2da1450b1cee14bc80b188",
      "parents": [
        "6eb0c5ab1d43bcf9edd4fefd19031f2b96ded728"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 24 12:39:58 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:43:00 2012 +0400"
      },
      "message": "zebra: justify rtadv VTY commands with arguments\n\nipv6 nd ra-interval\nipv6 nd ra-lifetime\nipv6 nd reachable-time\nipv6 nd home-agent-preference\nipv6 nd home-agent-lifetime\nipv6 nd router-preference\n\nCalls to atoi() and atol() are replaced with VTY_GET_INTEGER_RANGE()\nmacro, command patterns are clarified and aliases of some commands\nare added for consistency. Other changes are listed below.\n\n* zebra/rtadv.c\n  * ipv6_nd_ra_interval_msec(): resolve -Wsign-compare\n  * ipv6_nd_ra_interval(): idem\n  * rtadv_init(): update to list new aliases\n* doc/ipv6.texi: update to match current implementation\n"
    },
    {
      "commit": "6eb0c5ab1d43bcf9edd4fefd19031f2b96ded728",
      "tree": "734d264279d8a44022aaa8661f9c94cca6cb8a74",
      "parents": [
        "aca43b656623f38dfa6ea835dacbdfec51d03a67"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 24 11:02:03 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:57 2012 +0400"
      },
      "message": "zebra: freshen RFC references in rtadv\n\nRFC2461 was replaced by RFC4861\nRFC3775 was replaced by RFC6275\ndraft-ietf-mip6-mipext-advapi-03 was replaced by RFC4584\n"
    },
    {
      "commit": "aca43b656623f38dfa6ea835dacbdfec51d03a67",
      "tree": "0d53b9b2340000e169cffdf1ca39983607b193d4",
      "parents": [
        "6bb1273e83c29b3aeff9584bc8f6272e773294ad"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 08 18:27:12 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:54 2012 +0400"
      },
      "message": "zebra: use prefix_ipv6 in rtadv_prefix\n\nrtadv_prefix.prefix was casted to \"struct prefix_ipv6\" and had the same\nsize, make it exactly this type to make the code a bit cleaner.\n"
    },
    {
      "commit": "6bb1273e83c29b3aeff9584bc8f6272e773294ad",
      "tree": "a40cc3cb8853c2a3188ef8aabe47a3486dac30cb",
      "parents": [
        "d660f698427277ce695a5b756f3143c8304274ea"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 08 17:46:34 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:51 2012 +0400"
      },
      "message": "zebra: clear host bits of ND RA prefix option\n\nRFC4861 4.6.2. Prefix Information\n\nPrefix         An IP address or a prefix of an IP address.  The\n               Prefix Length field contains the number of valid\n               leading bits in the prefix.  The bits in the prefix\n               after the prefix length are reserved and MUST be\n               initialized to zero by the sender and ignored by\n               the receiver.\n\n* rtadv.c\n  * ipv6_nd_prefix(): add missing call to apply_mask_ipv6()\n  * no_ipv6_nd_prefix(): idem\n"
    },
    {
      "commit": "d660f698427277ce695a5b756f3143c8304274ea",
      "tree": "f26d5f72724cae8ee9844f30ba8e0aaf7b7c3006",
      "parents": [
        "6134b875f39986564aced5e2d7329fcd852f17f4"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Dec 30 21:55:49 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:48 2012 +0400"
      },
      "message": "zebra: justify some IPv6 ND RA timers wrt RFC\n\nThere was a regression introduced with the previous commit:\n\"ipv6 nd home-agent-lifetime 1800000\" appeared by default in every\ninterface section of running-config, although this  command is\ninvalid in this context. Troubleshooting and bugfixing of the issue\ntracked out several bugs in router advertisement procedures, some of\nwhich are fixed in this commit.\n\n* zebra/interface.c\n  * if_zebra_new_hook(): update to treat -1 as \"uninitialized\"\n  * nd_dump_vty(): idem\n* zebra/rtadv.c\n  * rtadv_send_packet(): update processing of \"router lifetime\" field,\n    \"home agent\" option and \"home agent lifetime\" field to conform to\n    RFC6275 better\n  * ipv6_nd_ra_interval_msec(): update MaxRtrAdvInterval range check,\n    make sure it never exceeds (initialized) AdvDefaultLifetime\n  * ipv6_nd_ra_interval(): idem\n  * ipv6_nd_ra_lifetime(): update AdvDefaultLifetime range check, make\n    sure it never falls below MaxRtrAdvInterval\n  * ipv6_nd_homeagent_lifetime(): update HomeAgentLifetime range check\n  * no_ipv6_nd_ra_lifetime(): update to treat -1 as \"uninitialized\"\n  * no_ipv6_nd_homeagent_lifetime(): idem\n  * rtadv_config_write(): idem\n"
    },
    {
      "commit": "6134b875f39986564aced5e2d7329fcd852f17f4",
      "tree": "19eb8d2df066047bc25162587f2ce9e1950c20ed",
      "parents": [
        "b4e45f67057be22133b6bec88cdf285d5c8214db"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 27 18:49:15 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:44 2012 +0400"
      },
      "message": "zebra: fix output of IPv6 ND RA options\n\nThe following options could be configured for an interface, but were\nnever visible in the config text:\n\nipv6 nd adv-interval-option\nipv6 nd home-agent-preference\nipv6 nd home-agent-lifetime\nipv6 nd home-agent-config-flag\n"
    },
    {
      "commit": "6eac79a6fed4842e00607c00c445213b51bba377",
      "tree": "51b63c6028d7a98236cbd31880f770c9d3787bfc",
      "parents": [
        "cb32fd690a957819865219a847e3c21a53a0f419"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 05 13:43:18 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:31:34 2012 +0400"
      },
      "message": "zebra: fix recent MP-BGP commits for FreeBSD\n"
    },
    {
      "commit": "cb32fd690a957819865219a847e3c21a53a0f419",
      "tree": "d152fe1feadaaa3b14472c097770bb71a2e75730",
      "parents": [
        "73bfe0bd9adb8e4dfcee7239e56a425c6d58f4e9"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Sun Nov 27 20:09:40 2011 +0530"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:31:14 2012 +0400"
      },
      "message": "zebra: Removal of the following warning messages\n       warning: too many arguments for format [-Wformat-extra-args]\n"
    },
    {
      "commit": "f768f367bcd1f37a53c563495176a5a134caf234",
      "tree": "57a0fff4f2a0e832623aa0d6d4d3bd2a3c951d98",
      "parents": [
        "c7ec179a95c1ed4fcd3d3be3f981c8c20dce534a"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Sat Nov 26 22:10:39 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:30:57 2012 +0400"
      },
      "message": "zebra: IPv6 MP-BGP Routes addition and deletion\n\nThis patch contains the following:\n1. Addition of IPv6 SAFI_MULTICAST BGP routes into the RTM\u0027s RIB.\n2. Deletion of IPv6 SAFI_MULTICAST BGP routes from the RTM\u0027s RIB.\n"
    },
    {
      "commit": "cddf391bf6839e9f093cef15508669c1f3f92122",
      "tree": "38dfaa5a7b98776ba67bb8a812beec8724810839",
      "parents": [
        "5a616c08ce089e25dc0e8da920727af4d11279bf"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Sat Nov 26 21:59:32 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:30:42 2012 +0400"
      },
      "message": "zebra: IPv4 MP-BGP Routes addition and deletion\n\nThis patch contains the following:\n1. Addition of IPv4 SAFI_MULTICAST BGP routes into the RTM\u0027s RIB.\n2. Deletion of IPv4 SAFI_MULTICAST BGP routes from the RTM\u0027s RIB.\n"
    },
    {
      "commit": "6ae93c058725991df5a9ae35cefec368919b5fea",
      "tree": "b3f3024fe3241cbfbe0a39f42860c917bcb0ad50",
      "parents": [
        "fc98d16ea77372f4ab4231e8904f8467e8d1ef71"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 27 10:45:36 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Jan 20 17:44:02 2012 +0400"
      },
      "message": "zebra: include MTU option in RA on request (BZ#665)\n\nThis implements a new \"ipv6 nd mtu \u003c1-65535\u003e\" interface-level command.\n\n* doc/ipv6.texi: add description\n* zebra/rtadv.c\n  * rtadv_send_packet(): send option type 5, when configured\n  * ipv6_nd_mtu(): new VTY helper\n  * no_ipv6_nd_mtu(): ditto\n  * rtadv_config_write(): add new option\n  * rtadv_init(): list new helpers\n"
    },
    {
      "commit": "f63f06da2e7be6b17c72dd6110aae179f42f3700",
      "tree": "a36b625a9ea06d0720a240276ed1b8af33193ed7",
      "parents": [
        "651e70d7f419ee7af75113f80e688c0100e9cff5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Apr 08 12:44:43 2011 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jan 06 16:18:18 2012 +0000"
      },
      "message": "general: remove inline qualifiers and move in-header functions to objects\n\n* (general) Move functions in headers into files, to be compiled into\n  shared object files. Remove inline qualifier from functions. Let the\n  compiler do the work.\n"
    },
    {
      "commit": "fb5174a27e4122edf849c524861dfcd92d8b19f5",
      "tree": "1e2b4b43c033f072c27fd1de3ea94dc3ae8124ca",
      "parents": [
        "4f1735fd6ac5d0881bafa9bd421e00645b6c60fd"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 27 10:18:47 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 19:14:08 2012 +0400"
      },
      "message": "zebra: fix IPv6 RA wrt interface removal (BZ#480)\n"
    },
    {
      "commit": "4f1735fd6ac5d0881bafa9bd421e00645b6c60fd",
      "tree": "ec6039710bef675594c4ce50aa488bfb64e4157b",
      "parents": [
        "cba1fab2d7e22921a03b8b886772daec8b5977c4"
      ],
      "author": {
        "name": "Matthias Ferdinand",
        "email": "mf@14v.de",
        "time": "Mon Dec 26 16:35:30 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 19:13:58 2012 +0400"
      },
      "message": "zebra: fix ifindex test condition (BZ#487)\n\nWhen the same ip address is used on several interfaces,\nand one of them gets deleted (or equivalent: set to down and\nthen address removed), rib_delete_ipv[46] will also remove\nthe connected route from other interfaces.\n\nrib_delete_ipv[46] is called twice when an interface is\ndeleted:\n    - for the \"ifdown\" event\n    - for the address removal\n(note: this may be specific to the netlink interface of linux)\nThe second call does not find the connected route to that same\nifindex anymore, but deletes similar connected routes to any\nother ifindex instead.\n\nReason: the ifindex check is on the same level as the check\nfor ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. If everything\nmatches except for the ifindex, the \"else\" part (intended for\ndifferent route types) is executed, thus removing the route\nfrom the wrong interface.\n\nfix: move ifindex check inside the \"then\" part of the check\nfor ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. Now connected\nroutes to other ifindexes will not spill over to the \"else\"\npart for different route types anymore.\n"
    },
    {
      "commit": "2ea1ab1c30c765cd4703794fcfaf044454fb533c",
      "tree": "650e97a5a9e8cc1fb8666ff6ce87647df3e0e604",
      "parents": [
        "2654e43ca2eaa8d93268c9ec85ac2dd968e5fb94"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Sun Dec 11 18:48:47 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 18:37:24 2012 +0400"
      },
      "message": "zebra: ZEBRA_HELLO and mopping up routes (BZ#448)\n\nZEBRA_HELLO message is used by routing daemons to inform zebra\nwhat type of routes daemon will be announcing to zebra. Also\nzebra uses route_type_oaths array to track which daemon announces\nwhich protocol. Zebra mops up routes if daemon didn\u0027t for some\nreason.\n"
    },
    {
      "commit": "9206f9ecd5526778bf449bbb12f056d681d3b040",
      "tree": "cd11853fe47a30bb2a28838f6ad8f8d49300b4fa",
      "parents": [
        "b48cebbba0dc01ad7d1fbd7cbcc39a11e1ae972d"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Sun Dec 18 19:43:40 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Dec 18 20:21:21 2011 +0400"
      },
      "message": "fix set never used warnings\n\n(This patch was modified to leave calls to stream_getl() in place, they\nare necessary for the stream\u0027s internal pointer to advance to the\ncorrect position. -- Denis)\n\nSigned-off-by: Denis Ovsienko \u003cinfrastation@yandex.ru\u003e\n\nFix gcc warnings about varables that are set but never used.\n\n* bgpd/bgp_attr.c\n  * cluster_unintern(): ret\n  * transit_unintern(): ret\n  * bgp_attr_default_intern(): attre\n  * bgp_mp_reach_parse(): rd_high, rd_low\n* bgpd/bgp_route.c\n  * bgp_announce_check_rsclient(): bgp\n* bgpd/bgp_zebra.c\n  * zebra_read_ipv4(): ifindex\n  * zebra_read_ipv6(): ifindex\n* bgpd/bgpd.c\n  * bgp_config_write_peer(): filter\n* lib/distribute.c\n  * distribute_list_all(): dist\n  * distribute_list(): dist\n  * distribute_list_prefix_all(): dist\n  * distribute_list_prefix(): dist\n* lib/if_rmap.c\n  * if_rmap(): if_rmap\n* lib/vty.c\n  * vty_accept(): vty\n* lib/zclient.c\n  * zclient_read(): ret\n* zebra/irdp_interface.c\n  * if_group(): zi\n* zebra/rt_netlink.c\n  * kernel_read(): ret, sock\n"
    },
    {
      "commit": "e0ca5fde7be5b5ce90dae78c2477e8245aecb8e9",
      "tree": "0e0b32ddbed4a84a3b2de9dd7217165cb81f52fa",
      "parents": [
        "ebf08631cad8a420fc6bfb7c45af5496dc11023e"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Sep 16 01:52:42 2009 +0200"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:13:17 2011 +0400"
      },
      "message": "lib: put route_types.txt to real use\n\nthis replaces most occurences of routing protocol lists by preprocessor\ndefines from route_types.h. the latter is autogenerated from\nroute_types.txt by a perl script (previously awk). adding a routing\nprotocol now is mostly a matter of changing route_types.txt and log.c.\n\nConflicts:\n\n\tlib/route_types.awk\n"
    },
    {
      "commit": "ebf08631cad8a420fc6bfb7c45af5496dc11023e",
      "tree": "d3435af62b269b198b73a4e167a6daea19e9573e",
      "parents": [
        "7052f22880f439a6ee691dd9436e1bda932f7b3b"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Thu Aug 27 00:27:40 2009 +0200"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:12:55 2011 +0400"
      },
      "message": "zebra: fix redistribution of new protocols\n\nredistribute is currently limited to \"known\" protocols. there is no\nreason for this limitation, so, remove it.\n"
    },
    {
      "commit": "7052f22880f439a6ee691dd9436e1bda932f7b3b",
      "tree": "d9e6713dd7c559039816e1c20347676e7d6c9cd1",
      "parents": [
        "ca9f342c2c35523b7bb34631b4f75cad1232355b"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Thu Aug 27 00:28:28 2009 +0200"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:12:49 2011 +0400"
      },
      "message": "rib: default distance value for new protocols (v2)\n\nadding protocols and forgetting to update zebra_rib.c currently causes\na beyond end of array access for the default distance value. fix by\nmaking 150 the default distance for unknown routing protocols.\n\n150 is higher than all other IGPs but lower than iBGP (200)\n"
    },
    {
      "commit": "a34eb3689ca0bb88e2ae7b95b01eb8887048ce15",
      "tree": "7f4c565c45f719c11529bbd8d5baf64537c0718d",
      "parents": [
        "85a2ebf2a14d8d7b40fd25b1217f953dbf69f065"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Wed Nov 25 20:36:06 2009 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:05:24 2011 +0400"
      },
      "message": "zebra: set the interface link-layer socket address\n\n* kernel_socket.c: (ifm_read) The reorganization from commit\n  6fe70d1b35c189cb1e488b2c26551ba7baac6148 removed setting the\n  interface link-layer socket address structure on routing socket\n  platforms.  This restores saving the link-layer information because\n  it might be used elsewhere: rtm_write() when no gateway is given,\n  if_dump_vty() and rtadv_send_packet().\n"
    },
    {
      "commit": "85a2ebf2a14d8d7b40fd25b1217f953dbf69f065",
      "tree": "4392945f66f4d66e4f056885449f5dbeff658399",
      "parents": [
        "05e54ee3df973194f2a00e3ea0b1da7bebc71fd6"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 05 19:36:06 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:27:10 2011 +0400"
      },
      "message": "zebra: spelling\n"
    },
    {
      "commit": "05e54ee3df973194f2a00e3ea0b1da7bebc71fd6",
      "tree": "c07e2bbad0c55fe03eb2975b98f121de6ae55707",
      "parents": [
        "ad8d4802a3078de694539fa9bae12322fc82042f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Dec 03 17:45:17 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:27:01 2011 +0400"
      },
      "message": "build: delete .cvsignore files\n"
    },
    {
      "commit": "b51146856e660bcec723f535c17dc1c38b2f6efc",
      "tree": "8f501c98b3714e1d5ed381bd4d82fece4106aa8c",
      "parents": [
        "2f658673fa477b58ed38caf94c156c95948de382"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Fri Nov 25 18:51:48 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:26:28 2011 +0400"
      },
      "message": "quagga: option \"-z\" (\"--socket \u003cpath\u003e\") added\n\nAll daemons modified to support custom path to zserv\nsocket.\n\nlib: generalize a zclient connection\n\nzclient_socket_connect added. zclient_socket and\nzclient_socket_un were hidden under static expression.\n\"zclient_serv_path_set\" modified.\n"
    },
    {
      "commit": "d7a083844db63b3dda412c755ce69bf13f41961f",
      "tree": "1b3601cff5e6375f95d65b95f28afc0719fd6621",
      "parents": [
        "04d5e24d7425a52f13abcb6d2a30aa6246d837e7"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Dec 07 00:09:56 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 07 01:24:09 2011 +0400"
      },
      "message": "zebra: fix warnings in forward proc\n\nCheck result of fgets(), and don\u0027t set variable that is\nnever used.\n"
    },
    {
      "commit": "7dbeea9d4f43fda84971d0bcffb6da88228dab53",
      "tree": "b54b34743454a755fb719a98c4a1b1023170bf00",
      "parents": [
        "87362ceb5d493f12e8c937b533190a1996d2df22"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Aug 28 22:29:52 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:42:14 2011 +0400"
      },
      "message": "zebra: add missing includes\n"
    },
    {
      "commit": "83d1614952faf100a0a1bacaa0a1b3f70a013c9f",
      "tree": "3b1ffb4fbd385e6f5ee2277ed24015ce2305f5db",
      "parents": [
        "3c9cfcdebf680c1d2c0e6b69cb4e11885a049e05"
      ],
      "author": {
        "name": "Dmitry Popov",
        "email": "dp@highloadlab.com",
        "time": "Sun Sep 11 13:48:25 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 20:46:25 2011 +0400"
      },
      "message": "zebra: fix loss of metric for Linux routes\n\n* rt_netlink.c\n  * netlink_route_change(): fetch metric information like\n    netlink_routing_table() does and pass it further\n"
    },
    {
      "commit": "8dd1a8daae0b15065d54c46f82d44d21aa7a2320",
      "tree": "b14e8ed07f1a6ee97de84262bb85cd0a50f9c250",
      "parents": [
        "fdbc8e77c88f751924299d0bc752371d5cc31116"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Apr 11 16:33:20 2011 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Apr 13 15:13:33 2011 +0100"
      },
      "message": "zebra: trivial warning fix\n\n* zebra_routemap.c: (route_set_src) get rid of the dummy family variable.\n"
    },
    {
      "commit": "cf8a831bcb53b60a7b5c4b26dda7646ebc7506d8",
      "tree": "1d15bcbd5556cd56416b01342a1cb1afd8d89b71",
      "parents": [
        "a6be12128c29b0dc5b8a6d6923510fc7f677b775"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Aug 18 15:56:46 2010 -0700"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Thu Aug 19 13:44:05 2010 -0400"
      },
      "message": "Zebra zserv: bogus conditional\n\nThis looks like a bug in original code from misunderstanding\nof C rules of evaluation.\n"
    },
    {
      "commit": "e26873fd8f0c4306eff65de94a45b4114fc81b98",
      "tree": "9775a683303e801df8555d5a74dbd714182857f6",
      "parents": [
        "cfe117498c8348bfcd8f5f95169a6621e437458a"
      ],
      "author": {
        "name": "Roman Hoog Antink",
        "email": "rha@open.ch",
        "time": "Wed May 05 16:00:50 2010 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed May 05 12:03:33 2010 -0400"
      },
      "message": "zebra: fix infinite loop when deleting an interface\n\nWhen deleting a VLAN interface after flushing its\naddresses, zebra uses 100% CPU time and freezes.\n\n * interface.c: The while loop in line 407 that\n   should clean up connected routes never hits one\n   of the 2 lines \"last \u003d node;\" and thus loops\n   forever.\n\nSigned-off-by: Roman Hoog Antink \u003crha@open.ch\u003e\n"
    },
    {
      "commit": "b6516829595ed4fc47af955de8bda9ef5be14ffd",
      "tree": "842806138758343d41598fded61943de51c4c363",
      "parents": [
        "2d362d1099f346202cb628665ff4ae563b2594f5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Dec 21 18:50:43 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 21 18:50:43 2009 +0300"
      },
      "message": "zebra: change router-id selection algo\n\nThe router-id table looks like is supposed to be sorted in current\nquagga code, but the nodes are not added with the sorting\nfunction.\n\nThe sorting function is host byte order dependent.\nThe values need to converted before comparison.\n\nFixing this causes Zebra to choose the largest IP address\nas router-id, rather than the last address. This probably will\nsurprise some users. The other option would be to just remove the\ncomparison function and keep the existing LIFO behavior.\n\nLastly, simple subtraction works well for comparing.\n\n* zebra/router-id.c\n  * router_id_add_address(): employ listnode_add_sort()\n  * router_id_cmp(): employ ntohl(), then compare integers\n"
    },
    {
      "commit": "ab0f61552622084a13ede59adefc4c54b5513d7b",
      "tree": "d85ca70e55f064fd3a24072cf0f9a5fbbcdd5181",
      "parents": [
        "9e4ca89c3678431560a8259c75f8b5874d83d351"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 10 14:22:44 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 10 14:22:44 2009 +0300"
      },
      "message": "zebra: deal with irdp compile warnings\n\n* zebra/irdp.h\n  * irdp_send_thread(): move prototype to common header file\n  * irdp_advert_off(): idem\n  * process_solicit(): idem\n  * irdp_read_raw(): idem\n  * send_packet(): idem\n* zebra/irdp_interface.c\n  * inet_2a(): move function to where it is used\n  * in_cksum(): lib/checksum.h already provides prototype\n  * irdp_send_thread(): prototype moved away\n  * inet_2a(): idem\n  * irdp_advert_off(): idem\n  * b1, b2, b3, b4: get rid of global buffers for inet_2a()\n  * if_group(): add local buffer for inet_2a()\n  * if_add_group(): idem\n  * if_drop_group(): idem\n  * irdp_config_write(): idem\n  * Adv_new(): make static\n* zebra/irdp_main.c\n  * irdp_read_raw(): prototype moved away\n  * send_packet(): idem\n  * in_cksum(): lib/checksum.h already provides prototype\n  * inet_2a(): function moved to irdp_interface.c\n* zebra/irdp_packet.c\n  * b1, b2, b3, b4: get rid of global buffers for inet_2a()\n  * in_cksum(): lib/checksum.h already provides prototype\n  * process_solicit(): prototype moved away\n  * irdp_read_raw(): fix uninitialized variable\n"
    },
    {
      "commit": "cc2dd9280c4456586080d1cf4537d26c02fa9a36",
      "tree": "a7573e32187b87015f2a8efc6cbd9b8b7ef7057c",
      "parents": [
        "1352ef32d70dcc102074814de63b5d08e591dd2d"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Dec 09 17:54:49 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 09 17:54:49 2009 +0300"
      },
      "message": "zebra: cleanup RIB meta queue code\n\n* zebra/zebra_rib.c\n  * rib_queue_add(): indent comments and simplify debug code\n  * rib_queue_init(): remove unneeded assert() calls and\n    extra return statements\n"
    },
    {
      "commit": "b0b709ab6656ba07f12fe0d256912dcabba19017",
      "tree": "2633ce43d4256af90e9a85d2f866b911418b7cf8",
      "parents": [
        "0342b76cfbfde2b6f45c4614e674d53987b1e9fa"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Dec 08 13:26:14 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 08 13:26:14 2009 +0300"
      },
      "message": "zebra: fix more warnings in rtadv\n\n* zebra/rtadv.c\n  * rtadv_free(): remove unused function\n  * rtadv_recv_packet(): break up cast/dereference to avoid\n    compiler type pun warning\n  * rtadv_read(): initialize ifindex, because compiler can\u0027t\n    figure out that it is okay\n"
    },
    {
      "commit": "0342b76cfbfde2b6f45c4614e674d53987b1e9fa",
      "tree": "f126f00d400a7cac5dcbf0a0c948b855b03d5781",
      "parents": [
        "d02c56cdf0c2e01a986417ed973dd7a2a5368ac1",
        "ffac19c58ee636274cd3972b584e37cd9a3331de"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 08 13:15:12 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 08 13:15:12 2009 +0300"
      },
      "message": "Merge branch \u0027master\u0027 of ssh://code.quagga.net/var/lib/git/quagga\n"
    },
    {
      "commit": "d02c56cdf0c2e01a986417ed973dd7a2a5368ac1",
      "tree": "59e92e74fefdddd8fd01b0fff98749922652b061",
      "parents": [
        "0d6388abc7a5da2a20a4854c400c8e176127e480"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Dec 08 13:14:27 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 08 13:14:27 2009 +0300"
      },
      "message": "zebra: fix more compiler warnings\n\n* zebra/zebra_rib.c\n  * nexthop_active_update(): make local int vars unsigned\n  * nexthop_active_check(): return unsigned for consistency\n  * rib_dump(): cast time in printf format\n  * vrf_free(): remove unused function\n  * vrf_lookup_by_name(): idem\n  * rib_if_up(): idem\n  * rib_if_down(): idem\n"
    },
    {
      "commit": "ffac19c58ee636274cd3972b584e37cd9a3331de",
      "tree": "ab21740846d246fd817dae578f5e4d83731e4cd6",
      "parents": [
        "38cc00cd823fe945c7748de18c3e8932d98dd8f8"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Dec 08 12:27:02 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 08 12:27:02 2009 +0300"
      },
      "message": "zebra: remove unused function to fix warning\n\n* zebra/interface.c\n  * if_supported_family(): sayonara\n"
    },
    {
      "commit": "e6f148e6e06a37a65afb322eca6a3298b8ade8d2",
      "tree": "5d3869cd936e5f9af5ee281518316037790513ef",
      "parents": [
        "4a4bba04c7398069a6d43fa8ccf0d15bad5faaa2"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Thu Dec 03 21:43:11 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 21:46:00 2009 +0300"
      },
      "message": "zebra: handle RTF_CLONING removal from FreeBSD 8.0\n\nThe RTF_CLONING flag has been removed in FreeBSD 8.0 with arp-v2 (see\nhttp://svn.freebsd.org/viewvc/base/stable/8/UPDATING?view\u003dmarkup),\nsince it no longer has any meaning. This patch checks if RTF_CLONING\nexists before using it.\n"
    },
    {
      "commit": "a0f63a4c7d7a6404fd43d139809202a693ae42e9",
      "tree": "1af7685743107d08861f089de25df0196b10e441",
      "parents": [
        "362573e5642b29ffeef5000351adc2d6ed6dfca3"
      ],
      "author": {
        "name": "heasley",
        "email": "heas@shrubbery.net",
        "time": "Thu Dec 03 21:14:16 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 21:14:16 2009 +0300"
      },
      "message": "zebra: fix argument reference in strncpy() call for BSD\n"
    },
    {
      "commit": "a50c107e3fbdaaea78a12a868a3865fd25136ad2",
      "tree": "cdc78feecf243768780ef784608f68386d41fef0",
      "parents": [
        "80b2a9418f0ee70318c677778d63f860f0f397c3"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Thu Dec 03 15:34:39 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 15:34:39 2009 +0300"
      },
      "message": "zebra: fix RIB debug message for IPv6\n\nApply changes from commit f304cb48f0d7d0ff8f36e7aca8293141a9fa9e60\nto rib_queue_add.\n\nAlso includes spelling fixes.\n"
    },
    {
      "commit": "80b2a9418f0ee70318c677778d63f860f0f397c3",
      "tree": "d8d6c3190b68a51e1058459709416b1b8c0c93dd",
      "parents": [
        "16c1c4872b29bb22c0ff77bd1ef1018c63ca25fa"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Thu Dec 03 14:53:15 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 14:53:15 2009 +0300"
      },
      "message": "zebra: make declaration const in rtm_flag_dump()\n\n* kernel_socket.c: (rtm_flag_dump) Use a const message pointer to be\nin sync with commit ce0db9cb11c0bc2e7f89a7d042e50afa495556b4.\n"
    },
    {
      "commit": "50adf7832004191cdaf5a908bd9a9c0b2373e993",
      "tree": "726d32636baa6c718e3fdab5a48ffae870c7b048",
      "parents": [
        "3849ce4e25281d11537ebd0db5e2fa2a7c356b33"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Mon Aug 31 10:42:06 2009 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Sep 01 19:03:01 2009 +0100"
      },
      "message": "zebra: Fix router advertisements for non-Ethernet link layer addresses\n\n* rtadv.c: round up when calculating the link-layer address option length;\n  add padding to the option if needed to end on an octet boundary\n"
    },
    {
      "commit": "fab7f89dcfe77cf06806e7f8a33314d3b4857a69",
      "tree": "8679d4cf30957577bc48425bbf7a99994cf93ce8",
      "parents": [
        "302d53f791031c15590f59944313381dfb4200c6"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Aug 06 12:12:12 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 28 14:51:37 2009 +0100"
      },
      "message": "zebra: Add an example config file for testzebra\n\n* testrib.conf: Example config file for testzebra\n"
    },
    {
      "commit": "302d53f791031c15590f59944313381dfb4200c6",
      "tree": "dbadd21327e5445860193e1511863f2fa11b6185",
      "parents": [
        "3e4ee9591aa2d84f01ae478afd273ac55add0a1c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Aug 06 11:48:48 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 28 14:51:27 2009 +0100"
      },
      "message": "zebra: test_main.c should be a bit more helpful about its usage\n\n* test_main.c: If required arguments are missing, say that.\n"
    },
    {
      "commit": "065de90380c88d9fcc116627f714bed9984c2723",
      "tree": "79061a2699e0dc3e87c218b3b57c2f0577d5a69a",
      "parents": [
        "5bd5881838c22e075c3d0c245a8952a55e9dca38"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Aug 07 11:13:49 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Aug 13 10:21:13 2009 +0100"
      },
      "message": "all: check return value from daemon() call\n\n* */*main.c: (main) Current versions of Gcc warn if the return value for\n  daemon() is not checked.  So add a simple test and exit on failure.\n\n"
    },
    {
      "commit": "cb9e0ceec988a059dd2269ebc54722c01afb7cca",
      "tree": "c558e706ffca27dd4568f729a48b6f8c83a64c9a",
      "parents": [
        "9afabaf048af74a370dfc71411b6963641f713b2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Apr 20 00:31:57 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jul 28 16:24:19 2009 +0100"
      },
      "message": "[zebra] Fix crash in test_zebra\n\n* kernel_null.c: we\u0027re pretending to add an address, so\n  set IFC_REAL. If this isn\u0027t done, calling into the \u0027got address\n  from kernel\u0027 half of zebra will implicitly-withdraw the ifc, which\n  could cause a crash in test_zebra.c.\n"
    },
    {
      "commit": "97be79f9d38b07214d5ad9b437e1a852c594a985",
      "tree": "dbc8513b7f58c4f603ea1eed87efe9dbf4d7897e",
      "parents": [
        "5b40b1b57e1fad1caf579e032adf4e111128e486"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Fri Jul 24 20:45:31 2009 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Fri Jul 24 20:45:31 2009 +0400"
      },
      "message": "[zebra] do not touch socket before pidfile locking\n\nMove zserv socket creation code into zebra_zserv_socket_init() and\ncall it only after pidfile lock has been acquired exclusively. This\nkeeps subsequent zebra daemons from deleting the working socket of\nan already running process (bug #403).\n"
    },
    {
      "commit": "67b9467f6cad5097a3e4c6e49348be4d6c17a5bb",
      "tree": "a4c14d2d2ad51f367c3e2a511942e8945bc22a16",
      "parents": [
        "228da42898c4f7bd72d9c1ee4135108e8d40d860"
      ],
      "author": {
        "name": "Chris Caputo",
        "email": "ccaputo@alt.net",
        "time": "Sat Jul 18 04:02:26 2009 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jul 21 10:13:11 2009 +0100"
      },
      "message": "[zebra] Silence noisy process_subq\n\nzebra_rib.c: process_subq(): #ifdef out debug code.\n"
    },
    {
      "commit": "c3a5606302777cdd33d4025fc30bed723fc84d79",
      "tree": "afa5d20dd20d6a05f99107655ce68d8788f847cc",
      "parents": [
        "3f4ab7f9e9ffaee7c448744f45d6e5e2176cce89"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Jun 24 19:15:36 2009 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jun 24 22:43:58 2009 +0100"
      },
      "message": "zebra: Static route does not reach kernel.\n\nA static route like below: ip route 172.16.1.0/30 192.168.101.162 11\ndoes not move properly to a new interface when the\ninterface used goes down. Zebra reports that it have\nmoved but kernel isn\u0027t informed so the route is lost.\n\n* zebra_rib.c: (nexthop_active_update) if ifindex has changed, then the\n  route should be considered to have changed.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n"
    },
    {
      "commit": "d13c3b4fcf802f904ef47ad82fdc9763fc704fdf",
      "tree": "b95426a542d8b931b731d8138b296c22ec9ac05e",
      "parents": [
        "ba803bd51cdf3decfc740b3d7287fe51228f78fb"
      ],
      "author": {
        "name": "Mathieu Goessens",
        "email": "gebura@poolp.org",
        "time": "Tue Jun 23 15:59:45 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 23 15:59:45 2009 +0100"
      },
      "message": "[zebra] linux policy routing support with ipv6\n\nQuagga support linux policy routing (ip route ... table $X) with zebra.conf\ntable $X option.  It works fine on ipv4.  On ipv6 the parameter is ignored\n(table 0 is used).\n\n* zebra/...: Pass appropriate table arg to rib_{add,delete}_ipv6\n"
    },
    {
      "commit": "b60668d092f1778395b6c10b406059b8cbf235b8",
      "tree": "7869d81a4a8d440f8cb41ddb0e66c8279e2b9636",
      "parents": [
        "5bc52c76c2816a3be9a033c3e5bf4fea1908e3cd"
      ],
      "author": {
        "name": "Chris Caputo",
        "email": "ccaputo@alt.net",
        "time": "Sun May 03 04:40:57 2009 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 23 14:15:57 2009 +0100"
      },
      "message": "RFC 4191 Default Router Preference support for router advertisements\n\nAdds \"ipv6 nd router-preference (high|medium|low)\" and\n\"no ipv6 nd router-preference\" interface commands.\n\nFiles modified:\n\n   doc/ipv6.texi\n   zebra/interface.c\n   zebra/interface.h\n   zebra/rtadv.c\n   zebra/rtadv.h\n\nSigned-off-by: Chris Caputo \u003cccaputo@alt.net\u003e\n"
    },
    {
      "commit": "ec5e42b3c50e3a8e95963161319fa1a56466b2ae",
      "tree": "4eba2580aca51f386ce2f879f32f8616279a1ba3",
      "parents": [
        "e84999d93afd0f727f7325431c055cc26c988c68"
      ],
      "author": {
        "name": "Jeremy Jackson",
        "email": "jerj@coplanar.net",
        "time": "Wed Jan 21 20:51:57 2009 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 19 15:03:31 2009 +0100"
      },
      "message": "[cleanup] convert bzero() deprecated by POSIX to memset()\n\nautoscan 2.62 complains about bzero(), so a good fix\nnowadays is to just replace it.\n"
    },
    {
      "commit": "c77cffdd69bf08ed54e390a3485cbd5024836a9a",
      "tree": "42225904923a4b3457edd13a0eb84f0ea8581441",
      "parents": [
        "c546afaed229106c2fcb54b57906414b9503dcc9"
      ],
      "author": {
        "name": "Jeremy Jackson",
        "email": "jerj@coplanar.net",
        "time": "Sun Dec 28 12:57:42 2008 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 22:11:41 2009 +0100"
      },
      "message": "[daemons/cleanup] Remove disabled log_mode argument support.\n\n* */*main.c: Seems that the actual code was removed previously, but the\n  argument processing code remained.\n"
    },
    {
      "commit": "ce0db9cb11c0bc2e7f89a7d042e50afa495556b4",
      "tree": "37fc83c27a0c8b2d2d0018c97d2625aebdc66c51",
      "parents": [
        "7ba82f70ddf9abf99277b25cd54503a8517a0c15"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Fri May 15 10:47:04 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:30 2009 +0100"
      },
      "message": "[zebra/cleanup] make message table read only\n"
    },
    {
      "commit": "9607d98cb04e5dff34cb2f6fb6434455c6841ab8",
      "tree": "4ff992b16ddb0902237cb3a189cd29808813a631",
      "parents": [
        "90d2ab0f9426d670552b929364f8fb7de122efe5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Wed Apr 29 21:55:48 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:28 2009 +0100"
      },
      "message": "[zebra] Remove unused structure element\n"
    },
    {
      "commit": "90d2ab0f9426d670552b929364f8fb7de122efe5",
      "tree": "58478aa687b6484d9d3ab08a13c82388ca37acbc",
      "parents": [
        "81cce0185e23b6ecd2ab98ab34182901226bcf9e"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Wed Apr 29 21:54:59 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:27 2009 +0100"
      },
      "message": "[zebra] Force rib_update when connected route deleted\n"
    },
    {
      "commit": "81cce0185e23b6ecd2ab98ab34182901226bcf9e",
      "tree": "24a8fa282d80b9dab623bb26fbbec731c0c8b34a",
      "parents": [
        "82f5ee1ead0aa83f83f918abfc3f5071741a56e5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Tue Apr 28 14:28:00 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:27 2009 +0100"
      },
      "message": "[cleanup] Use correct buffer size for inet_ntop()\n\nDon\u0027t need big buffer 1024 to hold IPV4 (INET_ADDRSTRLEN)\nor IPv6 (INET6_ADDRSTRLEN) message.\n"
    },
    {
      "commit": "fd21325b2eb252644bc70918ace4f9c6c00c45ef",
      "tree": "b77e6fc133289e025fdc08217ac9c05a573bc077",
      "parents": [
        "4308abba5cab18c1d30b962567b06b02a1a15361"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sat Jul 05 16:32:37 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:26 2009 +0100"
      },
      "message": "[zebra] Only announce connected routes if link is detected\n\nNeed to check both IFF_UP and IFF_RUNNING if link-detect is enabled,\nbefore announcing routes.\n"
    },
    {
      "commit": "4308abba5cab18c1d30b962567b06b02a1a15361",
      "tree": "000095719fdc1a66599af3160f9af4e97c2a935f",
      "parents": [
        "6c684653f08fadf738ca52a3fbe512e3d1698ceb"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Dec 01 14:19:38 2008 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:25 2009 +0100"
      },
      "message": "[zebra] MTU is unsigned\n\nThe MTU data in the netlink message is always unsigned 32 bits.\nDon\u0027t use integer.\n"
    },
    {
      "commit": "6c684653f08fadf738ca52a3fbe512e3d1698ceb",
      "tree": "f5f48e6647a3158ad8b42785031b0bf986ed5fe5",
      "parents": [
        "5110a0c6222be91d3b2a786692949dd94fb0c9ac"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Thu Sep 18 16:51:06 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:25 2009 +0100"
      },
      "message": "[zebra] remove incorrect debug message\n"
    },
    {
      "commit": "5110a0c6222be91d3b2a786692949dd94fb0c9ac",
      "tree": "e7cd59e893c1f9be7f91f546bb84540b8f85857a",
      "parents": [
        "c84154977d822ceee9df66be535c56cb5f0fce10"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Aug 11 16:22:15 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:25 2009 +0100"
      },
      "message": "[zebra] Cleanup meta-queue code\n\nDo some cleanup work on recently added meta-queue code:\n  * use table rather than switch\n  * indent with quagga standard indentation\n  * since meta_queue_new is only used at initialization\n    allocation failure should be fatal.\n"
    },
    {
      "commit": "c84154977d822ceee9df66be535c56cb5f0fce10",
      "tree": "460e5d46b94200f8febcca5029a882a8f752a29e",
      "parents": [
        "61691c91c15445445b0ac246ee12e559a4cacdb5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Wed May 28 10:47:30 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:25 2009 +0100"
      },
      "message": "[zebra] netlink interface minor cleanup\n\nAdd more prototypes and make some functions static\n"
    },
    {
      "commit": "61691c91c15445445b0ac246ee12e559a4cacdb5",
      "tree": "427a21e559966e635e5c2437a642c281b4983ab4",
      "parents": [
        "914131f80da7b9696d26b42ed92b2d93d4d8b3ab"
      ],
      "author": {
        "name": "Stig Thormodsrud",
        "email": "stig@io.vyatta.com",
        "time": "Tue Nov 04 15:45:07 2008 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:25 2009 +0100"
      },
      "message": "[zebra] Fix vyatta bug 2814: Add \"show ip route summary\" command.\n"
    },
    {
      "commit": "7fc626de5f618133ad2a478d13defa3a110b89ea",
      "tree": "432ff0e4672eabc2ec6b0dcffc22dcc0aee532c8",
      "parents": [
        "66e5cd87194ae6fdd51061a91b4698bc0a652f6b"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Dec 01 11:10:34 2008 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:10:29 2009 +0100"
      },
      "message": "[cleanup] Make command nodes static\n\nThe cmd_nodes used to configure vty, can mostly be static so\n(basic data hiding 101).\n"
    },
    {
      "commit": "66e5cd87194ae6fdd51061a91b4698bc0a652f6b",
      "tree": "659d31f9a7dfb8d9ad9a51f37ff0853054a45399",
      "parents": [
        "cedd7f2fa6823bca9ddcfb062f97ed83b11a80dd"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Feb 09 10:14:16 2009 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:09:03 2009 +0100"
      },
      "message": "[cleanup] functions taking no args should be declared with void args\n\nUse Ansi-C prototypes rather than old K\u0026R method of declaring\nfunction without arguments\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": "0be8dfb2a95f41f100982085595b7c7505127018",
      "tree": "add7218b0c518ac0cd276c74fe700b5ed1f26762",
      "parents": [
        "42176e6b01c9ca2b2725952684b2d7792468e861"
      ],
      "author": {
        "name": "Chris Caputo",
        "email": "ccaputo@alt.net",
        "time": "Tue Jun 02 18:40:07 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 02 18:45:10 2009 +0100"
      },
      "message": "[snmp] Compiler warning fixes for when \"--enable-snmp\" is configured.\n\nCompiled on 32-bit and 64-bit linux gcc 4.1.2 platforms.\nNo run-time testing on 32-bit and limited run-time testing on 64-bit.\n"
    },
    {
      "commit": "5d7bdd0ed9595f515bdfaa8af76fcfd41be7a6a6",
      "tree": "c54c1c217a1742549ea1f1067419574aa1366d35",
      "parents": [
        "d6bb5aa52793979616f0bfc5f38a0eb2e5f1c7e4",
        "35f891404a6d2f0d034ca0fb724904db72baf552",
        "fb62a3cef5960885119f9e87c833520ddf2a9b49"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Sep 01 20:19:14 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Sep 01 20:19:14 2008 +0100"
      },
      "message": "Merge commit \u0027remotes/jocke/ospf_neighbour\u0027; commit \u0027remotes/jocke/snmp_crosscompile\u0027\n"
    },
    {
      "commit": "19a937224469055beb7dfce73ba452e3a33c89ed",
      "tree": "a16e32aa133ac796c051c0fdddb58d08022feeb2",
      "parents": [
        "6556d8a04079eb54d1805df3bef3e66ff1267d02"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Aug 26 14:49:40 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Aug 26 15:05:54 2008 +0100"
      },
      "message": "test\n"
    },
    {
      "commit": "fb62a3cef5960885119f9e87c833520ddf2a9b49",
      "tree": "cf6c5cde38c91ad555021f44793b92fd34de8198",
      "parents": [
        "b38309a4ee831a440ef78f8a27db584f2f8e8276"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Tue May 13 20:03:32 2008 +0200"
      },
      "committer": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Aug 25 09:48:30 2008 +0200"
      },
      "message": "Make --enable-snmp cross compile and make libcrypto optional with --without-crypto\n\nAutoconfig work by me, the rest was done by\n\"Kirill K. Smirnov\" \u003clich@math.spbu.ru\u003e\n"
    },
    {
      "commit": "5515de330cf6c5449c0a56862072750b07d23fd7",
      "tree": "4651f48d94ba97117d84fdaa2210563676adc8df",
      "parents": [
        "d68cbf9261869e532dfdd14dbb4122b3f3feb0d4"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Mar 21 12:41:22 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 20:02:08 2008 +0100"
      },
      "message": "[administrivia] Update gitignore files\n\n- Add more stuff, archive libraries, etc..\n"
    },
    {
      "commit": "d68cbf9261869e532dfdd14dbb4122b3f3feb0d4",
      "tree": "5cc873e6a38a3db9ad5fb4dfe579624ff7693c13",
      "parents": [
        "3998bfd76620a676fbd77f19c5c6ea80a4cc88d2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sat Oct 21 18:35:27 2006 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 20:00:46 2008 +0100"
      },
      "message": "[administrivia] Git should ignore backup files and .loT files\n"
    },
    {
      "commit": "3998bfd76620a676fbd77f19c5c6ea80a4cc88d2",
      "tree": "66bf93340e55bb06b25544ef04afec3749269391",
      "parents": [
        "e5248434c0d287668be956a2bd52399d67b16c39"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Aug 19 14:13:43 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:57:22 2008 +0100"
      },
      "message": "[trivia] Remove ChangeLog files, as this data is now maintained in SCM\n"
    },
    {
      "commit": "e5248434c0d287668be956a2bd52399d67b16c39",
      "tree": "6942a3563d2f9014d85f0cee1502a4d4f614cdfa",
      "parents": [
        "f3019aff2421d9c3d16498f22cd245e3f8948d4c"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 18:08:24 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:26 2008 +0100"
      },
      "message": "[zebra] trivial: fix spelling mistake\n"
    },
    {
      "commit": "ef9b113e2d4c0d49bd7d61458fa9acc113658d2c",
      "tree": "f2f57b5c771e7709be26daefa2861cd657764aeb",
      "parents": [
        "d145bc008a03889fff8949890cb8c532ee6aff74"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:44:47 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:26 2008 +0100"
      },
      "message": "[zebra] trivia: static qualifiers for metaq\n\n2008-08-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra_rib.c: (process_subq) mark static\n\t  (rib_meta_queue_add) ditto\n\t  (meta_queue_new) ditt\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "d145bc008a03889fff8949890cb8c532ee6aff74",
      "tree": "f8bb5b09a4ca2c3f8fa0e93ae6d8a8acd46d3889",
      "parents": [
        "16814f9698a3ee14b1412286c53711a562c348fc"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:41:37 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra] make some data local\n\n2008-06-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra_rib.c: static qualifier on local data\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "16814f9698a3ee14b1412286c53711a562c348fc",
      "tree": "9fb7ec8e786b648f0c74f0aeff5ff959dc663d18",
      "parents": [
        "4c699477d24e7104893130d072963df5cea17214"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:39:31 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra] ignore dead routes in RIB update\n\n2008-08-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra_rib.c: When doing a RIB update, routes in process of removal\n\t  should be ignored. This fixes bugs where a route is removed but a\n\t  recursive route is not changed.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "4c699477d24e7104893130d072963df5cea17214",
      "tree": "9e4336586dd07868f905c87a4a7479e2b8b0795f",
      "parents": [
        "898987e976e8f7a50a4549475ab4970a85895f31"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:01:44 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra:linux] netlink: no need to change privs for receive\n\n2008-06-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* rt_netlink.c: (netlink_parse_info) Linux doesn\u0027t check privledges\n\t  on receive, so avoid the overhead of lowering and raising the\n\t  priviledges on each received message\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "898987e976e8f7a50a4549475ab4970a85895f31",
      "tree": "7e0b44b20459f8aa30a1c7e12e463b6088fcff74",
      "parents": [
        "30afea3b584515ba19b38fcde6f562a550c1fcab"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 16:56:15 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra:linux] netlink: quiet harmless errors\n\n2008-06-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* rt_netlink.c: (netlink_parse_info) There can be harmless races\n\t  such as adding an existing route, or deleting an already deleted\n\t  route. Don\u0027t bother logging these unless debugging is turned on.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "30afea3b584515ba19b38fcde6f562a550c1fcab",
      "tree": "f39773af1c2c29518fbbc222f2dd4948be2484ef",
      "parents": [
        "cadfb2cd81528fc6f85af24dbf0ff3fd0ff63e6b"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sat Aug 16 18:25:47 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra:linux] netlink buffer size tweaking only needed on receive socket\n\n2008-08-16 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* rt_netlink.c: (netlink_recvbuf) consolidate recvbuf setting\n\t  (netlink_socket) no need to set receive buffer on netlink sockets\n\t  generally\n\t  (kernel_init) set recvbuffer on the listen socket\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "4cde931e2d5a83708cf55e63eae7b629e8e4296a",
      "tree": "09cdea4432cca881b390b9499914a9acb130d78b",
      "parents": [
        "3d265b4d9d748bf4c92aefebc2ca0c04fd607945"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sat Aug 16 17:51:27 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra:linux] clean up blocking setting of netlink sockets\n\n2008-08-16 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra/rt_netlink.c: This change removes the overhead of twiddling\n          the socket twice on every route change. The netlink support has\n          two sockets, one is used for request/response and should always\n          block. The other is used for asynchronous notification and should\n          always be non-blocking.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "3d265b4d9d748bf4c92aefebc2ca0c04fd607945",
      "tree": "45bdddf4ce6736d8f4dd9091ce20313eae894572",
      "parents": [
        "30a2231a4881f53deca61ef7a62b225a43dab4c5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sat Aug 16 17:30:39 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra:linux] Filter out unwanted netlink messages by PID\n\n2008-08-16 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra/rt_netlink.c: Update the netlink socket BPF to cancel out\n\t  unwanted ACKs on the listen socket by matching on the PID.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "30a2231a4881f53deca61ef7a62b225a43dab4c5",
      "tree": "f26dff922a4f85d302fa67bbd9a120108db41c44",
      "parents": [
        "f5612dd382d9c0f4089b08ec164c25a8082d9f89"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 15 14:05:22 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:59 2008 +0100"
      },
      "message": "[warnings] Fix various SOS warnings\n\n2008-08-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* */*: Fix various problems flagged by Sun Studio compiler.\n\t  - \u0027\u003cqualifier\u003e \u003cstorage\u003e\u0027 obsolescent in declarations\n\t  - empty statements (\u0027;\u0027 after ALIAS definitions)\n\t  - implicit declarations (e.g printstack in lib/log.c)\n\t  - \"\\%\" in printf string instead of \"%%\"\n\t  - loops that return on the first iteration (legitimately, but\n \t    compiler can\u0027t really know), e.g. bgp_routemap.c\n \t  - internal declarations which mask prototypes.\n"
    },
    {
      "commit": "1423c809cc4ddc2e013ba6264c49a11e5719c6f2",
      "tree": "db0389e7de020bbcb9fd78d45417b0842a6adb0b",
      "parents": [
        "89d9fa301e146193093ff876f96b3612dc390bbb"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Thu Aug 14 17:59:25 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:58 2008 +0100"
      },
      "message": "[lib] mes_lookup string lookup table argument should be marked const\n\n2008-08-14 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* lib/log.{c,h}: struct message argument should point to const\n\t* */*.c: adjust to suit,\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "6072b24eb776e6486f076b1762d3650e803954c2",
      "tree": "d6a305760bdd5b612be661ae53e32325990337aa",
      "parents": [
        "ffe11cfb0a808ae514193438616dfabc512b4cf6"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Thu Aug 14 16:52:26 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:58 2008 +0100"
      },
      "message": "[zebra] mark some rt_netlink functions static\n\n2008-08-14 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra/rt_netlink.c: local functions should be static.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "40da22166ff29753a65b7947ed5fa7261fee1d80",
      "tree": "97b71b8f4ad218b8d136ea93ec9dfd9537408e1b",
      "parents": [
        "7f794f2bb079c1a5bb0fdebb815921c168c00e90"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Aug 13 17:37:14 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:57 2008 +0100"
      },
      "message": "[zebra:netlink] Set proto/scope on all route update messages\n\n2008-08-13 Timo Teräs \u003ctimo.teras@iki.fi\u003e\n\n\t* zebra/rt_netlink.c: (netlink_route{,_multipath) Set protocol and\n\t  scope appropriately for both NEW and DELROUTE messages, to avoid\n\t  wiping out non-zebra routes on delete.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "46bc0e432e756fcb8fc4f703b47cd25b9fc7139c",
      "tree": "60100ca1e11c3c3600441d366b236f4a2de519ca",
      "parents": [
        "d664ae1182c29b74b409bc8594b7bd0575e91ce9"
      ],
      "author": {
        "name": "Paul P Komkoff Jr",
        "email": "i@stingr.net",
        "time": "Wed Aug 13 16:17:04 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:12 2008 +0100"
      },
      "message": "[build] Test for GNU-style PIE support in toolchain and enable\n\n2008-08-13 Paul P Komkoff Jr \u003ci@stingr.net\u003e\n\n\t* configure.ac: add a configure flag and autoconf macro, which will\n\t  determine if your toolchain supports PIE.\n\t* */Makefile.am: add corresponding CFLAGS and LDFLAGS into\n\t  appropriate places.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "3c5a0a4f8fe3811affff6d5e123379eedb083571",
      "tree": "79e285e0bd04c6ef0dfcde9cf0ce8fda8abecbe1",
      "parents": [
        "750e814693050bc97391eec618aad9db798ee5e8"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Feb 19 17:30:10 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:49:33 2008 +0100"
      },
      "message": "[administrivia] Add .gitignore files, based on .cvsignores.\n"
    },
    {
      "commit": "0b3f3d47b21ddf175bfdd549ba33fbcd34801244",
      "tree": "ec788e51c7dadeb5469313b6d3819690b468bbab",
      "parents": [
        "ce9c3cc5d96ea417727347923a42f10d56e631fd"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 01 18:24:58 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 01 18:24:58 2008 +0000"
      },
      "message": "[zebra] Make BSD link-state deal more gracefully with GIFMEDIA ioctl error\n\n2008-07-01 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ioctl.c: (if_get_flags) Deal more gracefully with failure\n\t  of the BSD link-state SIOCGIFMEDIA ioctl, as some interfaces\n\t  apparently don\u0027t implement it (e.g. tun).\n\t  Also, make BSD link-state checking be conditional on the\n\t  \u0027link-detect\u0027 interface configuration flag, as it should be.\n\t  Fixes bug #465.\n"
    }
  ],
  "next": "e96f92034dad1a70c92ad4ad863a5259c122cecb"
}
