)]}'
{
  "log": [
    {
      "commit": "5c98c5a7b1d3d71ff40b477b246b859cd22ddeed",
      "tree": "957b31b1c50f75a08f157630803e1f26c27222c7",
      "parents": [
        "0ddff5764f736c0a6d0d07b28bf98970624f263b"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Aug 05 18:52:52 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Aug 05 18:52:52 2011 +0400"
      },
      "message": "bgpd: touch nexthop handling code\n\nbgp_nexthop_lookup_ipv6(): declare variables where they are actually\nused, drop no-op initialization (the field is already 0)\nbgp_nexthop_lookup(): ditto\nbgp_nexthop_check_ebgp(): rename to bgp_nexthop_onlink()\nbgp_nexthop_cache_changed(): rename to bgp_nexthop_cache_different()\n"
    },
    {
      "commit": "0ddff5764f736c0a6d0d07b28bf98970624f263b",
      "tree": "b8bf91a9d3de885cf8da7f2fdafe356ff3e56c54",
      "parents": [
        "aad356a49d6b00590b21751ea560c54f321c73c9"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Aug 05 10:26:30 2010 -0700"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Aug 03 16:56:42 2011 +0400"
      },
      "message": "bgpd: use XCALLOC to allocate bgpd damp array\n\n* bgpd: (bgp_damp_parameter_set) The BGP reuse_index is not initialized\n  properly.  This would cause sporadic crash when disabling dampening.  Use\n  XCALLOC correctly and the right size array is initialized and no memset is\n  needed.\n"
    },
    {
      "commit": "aad356a49d6b00590b21751ea560c54f321c73c9",
      "tree": "a39044ea48fadba476a8b55b96b03799ed161b30",
      "parents": [
        "1740f9e5906a7cb264e7741dd57a91654cb05dd0"
      ],
      "author": {
        "name": "Christian Hammers",
        "email": "ch@debian.org",
        "time": "Wed Mar 23 13:07:55 2011 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Aug 03 13:09:51 2011 +0400"
      },
      "message": "lib: fix more format warnings (#637)\n\nThe following patch was also neccessary to compile.\n\n* command.c: (config_logmsg_cmd) use \"%s\" format spec\n* if.c: (connected_log) ditto\n"
    },
    {
      "commit": "1740f9e5906a7cb264e7741dd57a91654cb05dd0",
      "tree": "6759049120c66d8d17c433a3a88dae0378b39bc9",
      "parents": [
        "c69f91be67896e7e68adb7da4b5b9c5f6013f1a2"
      ],
      "author": {
        "name": "Alexandre Chappuis",
        "email": "alc@open.ch",
        "time": "Tue Aug 02 17:37:39 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Aug 02 17:37:39 2011 +0400"
      },
      "message": "ospfd: remove useless RFC1583 check\n\n* ospf_route.c: Function ospf_asbr_route_cmp is called uniquely from\n  ospf_route_cmp() when the flag OSPF_RFC1583_COMPATIBLE is not set.\n  Therefore, the check that the flag is set doesn\u0027t make sense at all\n  and it can consequently be removed without doing any harm.\n\nSigned-off-by: Alexandre Chappuis \u003calc@open.ch\u003e\nSigned-off-by: Roman Hoog Antink \u003crha@open.ch\u003e\n"
    },
    {
      "commit": "c69f91be67896e7e68adb7da4b5b9c5f6013f1a2",
      "tree": "00016eca2ba088f3472149381fdea6b3199750ce",
      "parents": [
        "cbfbf2f07bd90f48e268907a597652af6d2e019d"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 01 21:59:04 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 01 21:59:04 2011 +0400"
      },
      "message": "lib: remove unused variable\n\n* sockopt.c (getsockopt_ifindex): \"ifindex\" was never used\n"
    },
    {
      "commit": "cbfbf2f07bd90f48e268907a597652af6d2e019d",
      "tree": "c53d3caa5e038ec24cb7dd7dbcb91af2bc76f38d",
      "parents": [
        "0e8257d21e814c46aca485d58bcfa73e06354cad"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 01 16:52:03 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 01 16:52:03 2011 +0400"
      },
      "message": "delete CVS keywords\n"
    },
    {
      "commit": "0e8257d21e814c46aca485d58bcfa73e06354cad",
      "tree": "e0cd41c52d0963f0ca5da0438d63659325f36d49",
      "parents": [
        "cd3355b83202bc109045ba1e90b6725610aa256d"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Wed Nov 10 13:03:23 2010 -0800"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 01 15:40:05 2011 +0400"
      },
      "message": "ospf6d: Remove obsolete code\n\n* ospf6_area.c: (ospf6_area_delete) Get rid of unused code that refers\n    to a nonexistent function and structure member.\n"
    },
    {
      "commit": "cd3355b83202bc109045ba1e90b6725610aa256d",
      "tree": "66d0dc78f55508bbf7b5a6603e91ff8f03260ab9",
      "parents": [
        "f4ac0fee73100c6268365df31096a64443bfb93b"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Wed Nov 10 13:01:17 2010 -0800"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 01 15:39:26 2011 +0400"
      },
      "message": "lib: zlog should clean up its memory\n\n* log.c: (closezlog) Also free the dynamically allocated filename when\n    a log is closed.\n"
    },
    {
      "commit": "f4ac0fee73100c6268365df31096a64443bfb93b",
      "tree": "81388aa90d1394d67ee5ffe61daeab19b2c3407c",
      "parents": [
        "999a305c89b12b8d059f118bf01556b9a6fd62b3"
      ],
      "author": {
        "name": "Wataru Tanitsu",
        "email": "wataru@ate-mahoroba.jp",
        "time": "Fri Sep 10 09:47:56 2010 -0700"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 01 15:36:36 2011 +0400"
      },
      "message": "bgpd: Fix display of unsigned attributes\n\n* bgp_route.c: (route_vty_out*) The local prefix, metric and weight values\n  are all stored as uint32_t.  Change the format to %u so that large values\n  are not displayed as negative integers.\n"
    },
    {
      "commit": "999a305c89b12b8d059f118bf01556b9a6fd62b3",
      "tree": "f161a4f898c49a93148d6323c09e67c0a35b919c",
      "parents": [
        "e9e42170c63efcdb14b9389f481f2fa8fcb4092a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Dec 06 12:21:52 2010 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 01 15:29:51 2011 +0400"
      },
      "message": "ospfd: Lower level of some common messages from info to debug\n\n* ospf_{ism,network}.c: Certain oft-repeated but trivial messages should be\n  debug log level, not info, to avoid spamming \u0027terminal monitor\u0027\n"
    },
    {
      "commit": "e9e42170c63efcdb14b9389f481f2fa8fcb4092a",
      "tree": "200a24e16e20ecdf6e1b614d8d62436e52bcc6f5",
      "parents": [
        "a8b79422aadf5dc821af6699e468379002cc61f9"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 24 21:41:02 2010 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 01 15:28:24 2011 +0400"
      },
      "message": "lib: prefix.c nano-optimisation\n\n* lib/prefix.c: (prefix_match) nano-optimisation, let it return early\n  without copying pointers.\n"
    },
    {
      "commit": "a8b79422aadf5dc821af6699e468379002cc61f9",
      "tree": "0ee82fbd4e2b90686f2cf49b1bca59678e58eb18",
      "parents": [
        "fdc38db248a220dcb80ec0ba1f1981087213651d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Mar 23 10:30:30 2011 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jul 18 10:39:02 2011 +0400"
      },
      "message": "bgpd: Fix compile failure if IPv6 build was disabled.\n\n* bgp_route.c: ({no_,}ipv6_bgp_network_ttl_cmd) depends on ipv6_bgp_network\n  which is HAVE_IPV6, so these should be too.\n  (bgp_route_init) and the installs should be similarly ifdefed\n"
    },
    {
      "commit": "fdc38db248a220dcb80ec0ba1f1981087213651d",
      "tree": "8b75aacb6638bdef8c18a75de85904056194d8fd",
      "parents": [
        "4a1342a56c6fdb90d9af3109afa9442ff0b850d6"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jul 17 19:33:21 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jul 17 19:33:21 2011 +0400"
      },
      "message": "bgpd: rename SAFI 3 according to RFC4760\n\n- SAFI value 3 is reserved.  It was assigned by RFC 2858 for a use\n  that was never fully implemented, so it is deprecated by this\n  document.\n\n* zebra.h: rename macro\n* bgp_fsm.c: (bgp_graceful_restart_timer_expire,\n  bgp_graceful_stale_timer_expire, bgp_stop, bgp_establish): update\n* bgpd.c: (peer_nsf_stop): update\n* bgp_open.c: (bgp_capability_vty_out): SAFI 3 isn\u0027t a recognized case\n  any more\n"
    },
    {
      "commit": "4a1342a56c6fdb90d9af3109afa9442ff0b850d6",
      "tree": "4861a40d03a1eb9f2d6a715771f0307a71a88f3f",
      "parents": [
        "5112233b7929299b5200ef820d1567f5d7db50e6"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Jul 15 00:24:15 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Jul 15 00:24:15 2011 +0400"
      },
      "message": "configure: fix OpenPAM detection\n"
    },
    {
      "commit": "5112233b7929299b5200ef820d1567f5d7db50e6",
      "tree": "2da29dd6f8a4865eb161ed7be71826526f52d466",
      "parents": [
        "e81537d3be9f95d333d658329e5d69e6188b53c0"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jul 14 16:30:08 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jul 14 16:30:08 2011 +0400"
      },
      "message": "configure: fix FreeBSD header detection (BZ#408)\n\nThis change is based on Xavier Beaudouin\u0027s patch (which fixes detection\nof 3 config.h macros on FreeBSD without any impact to Linux build of\nQuagga) and FreeBSD port patch (which fixes 5 config.h macros, but\nbreaks the Linux build), it fixes 5 macros and works for both FreeBSD 8\nand Linux.\n"
    },
    {
      "commit": "e81537d3be9f95d333d658329e5d69e6188b53c0",
      "tree": "5f91b0f1d2a0dae1671c788c7d7804b16adcd4cd",
      "parents": [
        "87f011e5297ab9d3c599916800aab1198613071e"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jul 14 12:36:19 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jul 14 12:36:19 2011 +0400"
      },
      "message": "bgpd: more SAFI fixes\n\nTwo macros resolving to the same integer constant broke a case block and\na more thorough merge of BGP_SAFI_VPNV4 and BGP_SAFI_VPNV6 was\nperformed.\n\n* bgpd.h: MPLS-labeled VPN SAFI is AFI-independent, switch to single\n* macro\n* bgp_capability_test.c: update test data\n* bgp_mp_attr_test.c: idem\n* bgp_route.c: (bgp_maximum_prefix_overflow, bgp_table_stats_vty) update\n  macro and check conditions (where appropriate)\n* bgp_packet.c: (bgp_route_refresh_send, bgp_capability_send,\n  bgp_update_receive, bgp_route_refresh_receive): idem\n* bgp_open.c: (bgp_capability_vty_out, bgp_afi_safi_valid_indices,\n  bgp_open_capability_orf, bgp_open_capability): idem\n* bgp_attr.c: (bgp_mp_reach_parse, bgp_packet_attribute,\n  bgp_packet_withdraw): idem\n"
    },
    {
      "commit": "87f011e5297ab9d3c599916800aab1198613071e",
      "tree": "3d165036dd68dcf3eea1dd66f5d373fc15a86bf3",
      "parents": [
        "ea15b20a7cb8e41e61c48e36a554c576ed6f2f91"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Jul 13 16:53:13 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Jul 13 16:53:13 2011 +0400"
      },
      "message": "bgpd: fix SAFI for for MPLS labeled VPN-IPv6\n\n* bgpd.h: change value of BGP_SAFI_VPNV6 to 128 (RFC4659, BZ#659)\n* bgp_route.c: (bgp_table_stats_vty) fix length argument to strncmp()\n"
    },
    {
      "commit": "ea15b20a7cb8e41e61c48e36a554c576ed6f2f91",
      "tree": "311dd5818509e860ef1917c550859f5503bfc1d8",
      "parents": [
        "82a963a1b8d9066f5e3e24e98b65398d32a73876"
      ],
      "author": {
        "name": "heasley",
        "email": "heas@shrubbery.net",
        "time": "Tue Jul 12 20:09:18 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jul 12 20:09:18 2011 +0400"
      },
      "message": "bgpd: consistent log msg format (BZ#565)\n"
    },
    {
      "commit": "82a963a1b8d9066f5e3e24e98b65398d32a73876",
      "tree": "3f3af8b935607d7798b75da72abb709a534e6f5e",
      "parents": [
        "ab1be8a20de4db0d17e28483660627fd843845f1"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Tue Jul 12 17:53:33 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jul 12 17:53:33 2011 +0400"
      },
      "message": "ospf6d: check MTU with message header size in mind\n\n* ospf6_message.c: (ospf6_packet_max): new function, return maximum IPv6\n  payload on an interface; (ospf6_hello_send, ospf6_dbdesc_send,\n  ospf6_dbdesc_send_newone, ospf6_lsreq_send, ospf6_lsupdate_send_neighbor,\n  ospf6_lsupdate_send_interface, ospf6_lsack_send_neighbor,\n  ospf6_lsack_send_interface): compare message size with the maximum\n  payload instead of the MTU.\n"
    },
    {
      "commit": "ab1be8a20de4db0d17e28483660627fd843845f1",
      "tree": "fd1b0974f7e89411cd72a0ffaba13762c8b8b097",
      "parents": [
        "878715cc78de825894d83458b7c8bd68e3f347cc"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Fri Apr 22 19:27:54 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jul 12 17:41:38 2011 +0400"
      },
      "message": "ospf6d: copy \"mtu-ignore\" option from ospfd\n\n\"mtu-ignore\" is an option ospfd used to mimic from the vendor\u0027s\nimplementation, now ospf6d will also implement it.\n\n* ospf6_interface.h: extend ospf6_interface structure by one flag\n* ospf6_interface.c: (ipv6_ospf6_mtu_ignore, no_ipv6_ospf6_mtu_ignore):\n  new declarations; (ospf6_interface_create): show initial value for\n  consistency; (ospf6_interface_show): print flag status\n* ospf6_message.c: (ospf6_dbdesc_recv): consider interface-specific flag\n  when checking MTU\n"
    },
    {
      "commit": "878715cc78de825894d83458b7c8bd68e3f347cc",
      "tree": "07fb283b71bb51149f447124d8468aa41ef05263",
      "parents": [
        "e70e575a8cb1edcab2eedade04bb4ac31938bddf"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jul 12 17:14:13 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jul 12 17:14:13 2011 +0400"
      },
      "message": "version RE-0.99.17.1\n"
    },
    {
      "commit": "e70e575a8cb1edcab2eedade04bb4ac31938bddf",
      "tree": "5a72f6c9d4f7a50ea2b40229b8b04adece6f67b0",
      "parents": [
        "fc09716b81e67f2d06dc92ff7bcb1efdf18c4eec"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jul 05 00:41:59 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jul 05 00:41:59 2011 +0400"
      },
      "message": "bgpd: Remove AS Path limit/TTL functionality\n\n* draft-ietf-idr-as-pathlimit doesn\u0027t seem to have gone anywhere, and its\n  author does not think it will make progress in IDR. Remove all support\n  introduced for it, but leave stubs for the commands to avoid breaking\n  any configurations.\n\n  Basically reverts cecab5e9725792e60a5e4b473e238a14cd85815d.\n(cherry picked from commit c8f3fe3063cb9ff193b13011cfbda3e605395340)\n\nConflicts:\n\n\tbgpd/bgp_attr.c (caused by c8e7b895, resolved)\n"
    },
    {
      "commit": "fc09716b81e67f2d06dc92ff7bcb1efdf18c4eec",
      "tree": "0685e19912029d28e8a0731091419e836423f24c",
      "parents": [
        "f668053f1453d64296db6807101450ad749ba730"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Dec 05 17:17:26 2010 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jul 04 21:02:00 2011 +0400"
      },
      "message": "bgpd/security: CVE-2010-1674 Fix crash due to extended-community parser error\n\n* bgp_attr.c: (bgp_attr_ext_communities) Certain extended-community attrs\n  can leave attr-\u003eflag indicating ext-community is present, even though no\n  extended-community object has been attached to the attr structure.  Thus a\n  null-pointer dereference can occur later.\n  (bgp_attr_community) No bug fixed here, but tidy up flow so it has same\n  form as previous.\n\n  Problem and fix thanks to anonymous reporter.\n(cherry picked from commit 0c46638122f10019a12ae9668aec91691cf2e017)\n"
    },
    {
      "commit": "f668053f1453d64296db6807101450ad749ba730",
      "tree": "22b173fa8c6525c9ec947ab75784173d760952b0",
      "parents": [
        "49efb768502ddb1bb78d609c25b3818c6a519a2a"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Mar 18 20:20:53 2011 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jul 04 21:02:00 2011 +0400"
      },
      "message": "doc: fix \"ipv6 address\" interface command syntax (#608)\n(cherry picked from commit e6844aa5d23cf56dd1f31afc96e8145ab188953f)\n"
    },
    {
      "commit": "49efb768502ddb1bb78d609c25b3818c6a519a2a",
      "tree": "10c01d97fd76b037fc8f8d321eb70d62ff6e29b5",
      "parents": [
        "16ac59798e0bafc5083ae4b3be2c3edd89a62e5f"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Feb 24 13:52:14 2011 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jul 04 21:02:00 2011 +0400"
      },
      "message": "ripd: resolve debug statements issue (bug 442)\n\n...A nasty bug, if you forgot to disable debugging, stored the config\nand reboot your machine - if you really depend on ripd, then the machine\nwill not fully come back on the network, because ripd fails.\n(cherry picked from commit 0fa0335316ce14a79ea4bbb0c40e1322c9941dd3)\n"
    },
    {
      "commit": "16ac59798e0bafc5083ae4b3be2c3edd89a62e5f",
      "tree": "9a0288714317c886de2588d2c3a03b10b1cca8a1",
      "parents": [
        "bbccf41f8e5fb83831da81a339a578a3d5fc5f4a"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Mon Jan 17 10:58:52 2011 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jul 04 21:02:00 2011 +0400"
      },
      "message": "bgpd: VTY string fixes for debug commands\n\n* bgpd/bgp_debug.c: fix VTY strings for BGP debug commands to match\n  correct syntax\n(cherry picked from commit 6e22b9017e1ae2ce61c383b1b2b63973207704ac)\n"
    },
    {
      "commit": "bbccf41f8e5fb83831da81a339a578a3d5fc5f4a",
      "tree": "01495f12e5a9fa0cff3b1ddecb24bccb4975de35",
      "parents": [
        "a1239bc50d26ce963352f8ddaa6c1382e437d286"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Fri Jan 14 18:27:05 2011 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jul 04 21:02:00 2011 +0400"
      },
      "message": "bgpd: fix handling of \"Unsupported Capability\"\n\n* bgp_packet.c: (bgp_notify_receive) justify the difference between\nBGP_NOTIFY_OPEN_UNSUP_PARAM and BGP_NOTIFY_OPEN_UNSUP_CAPBL cases, as\nit is explained in RFC5492, page 3, paragraph 1.\n\n\"Unsupported Capability\" error does not mean, that the peer doesn\u0027t\nsupport capabilities advertisement -- quite the opposite (if the peer\nwould not support capabilities advertisement, the code would be\n\"Unsupported Optional Parameter\"). Thus there is no reason to mark\nthe peer as one non-supporting capabilities advertisement.\n\nExample: suppose the peer is in fact IPv6-only, but we didn\u0027t configure\nanything address-family specific for it. Then, the peer would refuse\nthe session with \"Unsupported Capability\" code. If we internally set\nthe peer as non-supporting capabilities advertisement after that, we\nwill not be able to establish the session with it ever, even with a\nfixed configuration -- IPv6-only BGP session cannot be established\nwithout capabilities.\n\nIn practice an edge case would be seen as the same IPv6 peer working\nwith its \"neighbor\" block read from bgpd.conf, but not working, when\nslowly input in \"conf t\" mode.\n(cherry picked from commit c7aa8abd8788c3607ad0131f02e892cf92221e40)\n"
    },
    {
      "commit": "a1239bc50d26ce963352f8ddaa6c1382e437d286",
      "tree": "436c9c428ad21fe1718ad083c790c1bf7d077f52",
      "parents": [
        "dfc1d5caacfe0346499f2eceff18d56af0b85e2f"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Thu Jan 13 18:25:40 2011 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jul 04 21:02:00 2011 +0400"
      },
      "message": "ospf6d: fix crash in SPF calculation\n\n* ospf6_spf.c: Don\u0027t replace a node with another node with a lower\n  number of hops, instead get them from the queue in the correct\n  order. (Actually, the replacement crashed the ospf6d daemon\n  rather than worked.)\n(cherry picked from commit 403138e189c24f6867824c4eeb668d11564e1ca0)\n"
    },
    {
      "commit": "dfc1d5caacfe0346499f2eceff18d56af0b85e2f",
      "tree": "a259da6db36b4174f35a638a9db10b2508d2b62c",
      "parents": [
        "5195e17f8b49dc720252526a21afd7840240137b"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 08 18:51:37 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jul 04 21:02:00 2011 +0400"
      },
      "message": "bgpd: fix community-list error message spelling\n\n* bgp_vty.c: (community_list_perror, show_ip_community_list_arg,\n  show_ip_extcommunity_list_arg) fix spelling\n(cherry picked from commit b729294c8c5c6f2af8ddf6cfbea2374b6faabe9d)\n"
    },
    {
      "commit": "5195e17f8b49dc720252526a21afd7840240137b",
      "tree": "e0ab06a35a8ddeede025ecef495f947f350cd7e7",
      "parents": [
        "a8e474a598ed01591fd3814eee5f5b6a909e4f59"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Nov 03 07:37:23 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Nov 03 07:37:23 2010 -0400"
      },
      "message": "infrastructure: Express preference for published git repos\n\n* HACKING: Express notion that a published git repository is\n  preferred.  Fold request for commit message into patch section.\n  Express desire for comments in code explaining correctness of\n  post-commit state, and for commit message to explain correctness of\n  the change.\n"
    },
    {
      "commit": "a8e474a598ed01591fd3814eee5f5b6a909e4f59",
      "tree": "455265c8bac769412e6da67c24bc5e1d49e6ba1a",
      "parents": [
        "d7a9779742748f0658be22664349669438e69af1"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Nov 03 07:22:00 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Nov 03 07:22:00 2010 -0400"
      },
      "message": "infrastructure: Whitespace cleanup.\n\nHACKING: Whitespace changes only.\n"
    },
    {
      "commit": "d7a9779742748f0658be22664349669438e69af1",
      "tree": "dbd2886e08dfd83312ed46028d8cb5d6f579d55f",
      "parents": [
        "f3bd05011ceb5173c2b01d2d51616fabe4860f57"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Nov 03 07:20:38 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Nov 03 07:20:38 2010 -0400"
      },
      "message": "infrastructure: Clarify commit message format.\n\nNote 54/72 line length rules, and that this is intended to play nice\nwith \"git log --oneline\".\n"
    },
    {
      "commit": "f3bd05011ceb5173c2b01d2d51616fabe4860f57",
      "tree": "bf5e205a6c162189ff3d3b9274b1bc80336068f0",
      "parents": [
        "213b6cd9fb24381563d6d44c7ddc4700abfae676"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Nov 03 07:16:32 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Nov 03 07:16:32 2010 -0400"
      },
      "message": "Adjust description of tomhenderson repo.\n\nTom\u0027s repo is now a clone of the official repo and has an mttr branch\noff of 0.99.17.\n"
    },
    {
      "commit": "213b6cd9fb24381563d6d44c7ddc4700abfae676",
      "tree": "9ea3fcf3e773144f136c47db3236ecdd5d9a5e12",
      "parents": [
        "08a7a91646a1ee317c402b421e3a7036a640bcf4"
      ],
      "author": {
        "name": "Vladimir L Ivanov",
        "email": "wawa@yandex-team.ru",
        "time": "Thu Oct 21 14:59:54 2010 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Oct 21 14:59:54 2010 +0400"
      },
      "message": "bgpd: fix printed value of last-update timestamp\n\n* bgp_route.c: (route_vty_out_detail) calculate time value\n    in a way, which works regardless of monotonic clock\n    being used or not\n"
    },
    {
      "commit": "08a7a91646a1ee317c402b421e3a7036a640bcf4",
      "tree": "59dc48ed11f69a61cd282783ffab25f30073f334",
      "parents": [
        "4c9641ba4df276080c670e03f65b1d442660a50f"
      ],
      "author": {
        "name": "Dmitry Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Mon Oct 18 19:05:39 2010 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Oct 18 19:05:39 2010 +0400"
      },
      "message": "zclient: fix router-id calculation for IPv6 (#595)\n\nIf router-id is not specified in ospf6d.conf, ospf6d will get it from\nthe zebra daemon. But ospf6d originates Link LSAs before the router-id\nis returned by zebra, thus this router\u0027s Link LSAs will be flooded\nwith AdvRouter set to 0.\n\n* zclient.c: zclient_start(): send ZEBRA_INTERFACE_ADD message after\n  ZEBRA_ROUTER_ID_ADD, not before\n"
    },
    {
      "commit": "4c9641ba4df276080c670e03f65b1d442660a50f",
      "tree": "15085df8068d8a3864224937eaa407c0484ff57f",
      "parents": [
        "11d3fe9b9a327b3218a76b2b9001ace50c08de8c"
      ],
      "author": {
        "name": "Michael Lambert",
        "email": "lambert@psc.edu",
        "time": "Thu Jul 22 13:20:55 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Oct 06 12:33:05 2010 -0400"
      },
      "message": "bgpd, lib: adopt afi_t and safi_t in several places\n\n* bgpd/bgp_attr.c, bgpd/bgp_open.h, bgpd/bgp_route.c, lib/prefix.c,\n  lib/prefix.h: Various integer types were being used where, if we\n  had strict type checking, afi_t and safi_t would be required.\n\nSigned-off-by: G.Balaji \u003cbalajig81@gmail.com\u003e\n(cherry picked from commit c8af35ffa2dc79ff7d7ff00b1b61f1f50a100ab6)\n"
    },
    {
      "commit": "11d3fe9b9a327b3218a76b2b9001ace50c08de8c",
      "tree": "68c91285e54eab9459c649c5809001f5f47d5b1e",
      "parents": [
        "b830c89a4532819a78c251c559566767b89ee5ac"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Fri Sep 24 09:22:37 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Fri Sep 24 09:22:37 2010 -0400"
      },
      "message": "Add MTR repository.\n"
    },
    {
      "commit": "b830c89a4532819a78c251c559566767b89ee5ac",
      "tree": "ee399053b3d043cdbb8d14f18da6472fe77649f2",
      "parents": [
        "b16793870794919ecc34138bdc51703cc3f409ca"
      ],
      "author": {
        "name": "Nico Golde",
        "email": "nion@debian.org",
        "time": "Sun Aug 01 15:24:35 2010 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Fri Sep 17 13:36:44 2010 -0400"
      },
      "message": "lib/vty.c: add missing format string when printing out motd message\n\nSigned-off-by: G.Balaji \u003cbalajig81@gmail.com\u003e\n"
    },
    {
      "commit": "b16793870794919ecc34138bdc51703cc3f409ca",
      "tree": "e1faa3f7cb5705fa2f9c954f88681e365b3fb680",
      "parents": [
        "cbc64b07c40f35c4ae5f2c0cfbf92ac5b375bc83"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Fri Sep 17 12:19:13 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Fri Sep 17 12:19:13 2010 -0400"
      },
      "message": "Document rules for zalloc and friends.\n\nlib/memory.c:z{a,c,re}alloc, zfree, zdup: add requires/effects\ncomments.\n"
    },
    {
      "commit": "cbc64b07c40f35c4ae5f2c0cfbf92ac5b375bc83",
      "tree": "237a78d6cf25cb105acfde9ad0a1bc81f4e00b82",
      "parents": [
        "d3ddb22e902bc4dc175ed6974515f6e14d9be931"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Fri Sep 17 11:02:45 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Fri Sep 17 11:02:45 2010 -0400"
      },
      "message": "Add pointer to Balaji G. git.\n\nBalaji has been accumulating patches from the mailing list and\npre-screening them and spiffing up commit messages.\n"
    },
    {
      "commit": "d3ddb22e902bc4dc175ed6974515f6e14d9be931",
      "tree": "e0f0fa91e7814c4814dbbd60352cc073496d71f7",
      "parents": [
        "cf8a831bcb53b60a7b5c4b26dda7646ebc7506d8"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Fri Sep 17 10:47:49 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Fri Sep 17 10:47:49 2010 -0400"
      },
      "message": "Set from even if binfo-\u003eextra is NULL.\n\nbgpd/bgp_packet.c:bgp_update_packet(): When extracting the peer, don\u0027t\n  fail to extract it because \"binfo-\u003eextra\" is NULL.  While one should\n  certainly avoid dereferencing binfo-\u003eextra, that\u0027s not a good reason\n  not to use binfo-\u003epeer.\n\nFixes https://bugzilla.quagga.net/show_bug.cgi?id\u003d497.\nPatch by Eric Sobocinksi.\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": "a6be12128c29b0dc5b8a6d6923510fc7f677b775",
      "tree": "0dafeb74cfba1b7c6bd871db7e041185625668b3",
      "parents": [
        "cddb8112b80fa9867156c637d63e6e79eeac67bb"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Aug 19 13:36:43 2010 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Aug 19 13:36:43 2010 +0400"
      },
      "message": "release: 0.99.17\n\n* configure.ac: bump up version number\n"
    },
    {
      "commit": "cddb8112b80fa9867156c637d63e6e79eeac67bb",
      "tree": "c8d8b4cb9d0ba1c2a7681c6da580874cf5a2b48e",
      "parents": [
        "d64379e8f3c0636df53ed08d5b2f1946cfedd0e3"
      ],
      "author": {
        "name": "Chris Hall",
        "email": "chris.hall@highwayman.com",
        "time": "Mon Aug 09 22:31:37 2010 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Aug 09 22:31:37 2010 +0400"
      },
      "message": "bgpd: fix handling of AS path data\n\n* bgpd/bgp_aspath.c\n  * assegments_parse(): add handling of AS4_PATH input, update bounds\n    checks, add check for AS segment type\n  * aspath_parse(): add handling of AS4_PATH input, expect\n    assegments_parse() to do length checking\n  * aspath_empty(): update for the new function prototype\n* bgpd/bgp_aspath.h: ditto\n* tests/aspath_test.c: ditto\n* bgpd/bgp_attr.c\n  * bgp_attr_aspath(): add handling of AS4_PATH input, update flags\n    checks, change returned type\n  * bgp_attr_as4_path(): discard, superseded by bgp_attr_aspath()\n  * bgp_attr_parse(): update respectively\n"
    },
    {
      "commit": "d64379e8f3c0636df53ed08d5b2f1946cfedd0e3",
      "tree": "c34d8f271fe3be61cdfd23327ef73f2ede966924",
      "parents": [
        "e26873fd8f0c4306eff65de94a45b4114fc81b98"
      ],
      "author": {
        "name": "Chris Hall",
        "email": "chris.hall@highwayman.com",
        "time": "Fri May 14 16:38:39 2010 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri May 14 16:38:39 2010 +0400"
      },
      "message": "bgpd: tighten bounds checking in RR ORF msg reader\n\n* bgp_packet.c: (bgp_route_refresh_receive) add validation of\n  \"Length\" (RFC5292) field value, check input stream bounds\n  each time bytes are pulled from it\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": "cfe117498c8348bfcd8f5f95169a6621e437458a",
      "tree": "d64e80635f79e0b16206a480258fd8958733bbc4",
      "parents": [
        "1b5eee9864185205bca498e62bcff8291e125a2c"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed May 05 07:51:26 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed May 05 07:51:26 2010 -0400"
      },
      "message": "Update for git and emphasize asking for good reports.\n"
    },
    {
      "commit": "1b5eee9864185205bca498e62bcff8291e125a2c",
      "tree": "f4c6ff954c7a3a0afe3f4af4fefb3108e580208c",
      "parents": [
        "745bf05f58ff203f5e3878574016fb3b9ad5b450"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Sep 16 02:20:00 2009 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Apr 28 20:57:44 2010 -0400"
      },
      "message": "build: ignore mkinstalldirs and texinfo.tex\n\nthese are autogenerated by autoreconf, drop them from git.\n"
    },
    {
      "commit": "745bf05f58ff203f5e3878574016fb3b9ad5b450",
      "tree": "0c1019a61726211f4ade8f7ff21c579c95e7063a",
      "parents": [
        "2470e99e828c098d2d03f8d693853cbe69e3fb6f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue Feb 02 21:49:35 2010 +0100"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Apr 28 20:15:44 2010 -0400"
      },
      "message": "isisd: change ISIS_METHOD to use C preprocessor\n\nthis fixes warnings from vtysh extract.pl by making sure the isis method\nfiles always \u0027work\u0027. (previously, extract.pl would grab unselected isis\nmethod sources and then complain about missing headers)\n"
    },
    {
      "commit": "2470e99e828c098d2d03f8d693853cbe69e3fb6f",
      "tree": "19e1526814455301a244af928fe2c3d553ec3100",
      "parents": [
        "85c4968bb1432ddc7c059893fdee2c976bbee937"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Tue Jan 05 02:45:39 2010 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Apr 28 19:30:17 2010 -0400"
      },
      "message": "ospf6d: Fix crash when \u0027[no] ipv6 ospf6 advertise prefix-list\u0027 is in startup-config\n\n* ospf6_interface.c: When \u0027[no] ipv6 ospf6 advertise prefix-list\u0027\n  appears in the startup configuration for ospf6d, a crash occurs,\n  because ospf6d attempts to schedule LSAs when the \u0027oi-\u003earea\u0027\n  structure has not yet been initialized.\n\n  Now, when the command above is issued (either in the startup\n  configuration or at runtime), ospf6d will only schedule LSAs if\n  the \u0027oi-\u003earea\u0027 structure has been initalized. A similar test is\n  already used when handling the commands \u0027ipv6 ospf6 priority\u0027\n  and \u0027ipv6 ospf6 cost\u0027.\n"
    },
    {
      "commit": "85c4968bb1432ddc7c059893fdee2c976bbee937",
      "tree": "26f1f89a3ea9b91a32d7a1c5a86821dbf89f9d50",
      "parents": [
        "46154fe3675df5417a712285b66fd12bd1b4fc6d"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Tue Apr 20 12:44:21 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Tue Apr 20 12:44:21 2010 -0400"
      },
      "message": "build/extra: Enhance README.NetBSD make/gmake decision.\n"
    },
    {
      "commit": "46154fe3675df5417a712285b66fd12bd1b4fc6d",
      "tree": "f661aa3353d2130100746ce9819b596c27895bc4",
      "parents": [
        "45acaa0a4cbb4b61c1e4cfcc8f8a534f4fdccfe5"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "joakim.tjernlund@transmode.se",
        "time": "Wed Apr 14 16:01:25 2010 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Sun Apr 18 14:56:41 2010 -0400"
      },
      "message": "ospfd: Only refresh external default route once.\n\n* ospf_zebra.c: (ospf_distribute_list_update_timer) forces a\n  refresh of default route each time it finds a default prefix.\n  This is suboptimal, just record that it needs to be done and\n  do it once.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n"
    },
    {
      "commit": "45acaa0a4cbb4b61c1e4cfcc8f8a534f4fdccfe5",
      "tree": "03c27c042be415bcec1d1f0922acf0dd424378b6",
      "parents": [
        "274d3f090df91fc5f8d4f26a2823634efa4af461"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Apr 14 11:05:28 2010 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Sun Apr 18 14:53:28 2010 -0400"
      },
      "message": "ospfd: Make sure ospf_distribute_list_update_timer() eventually runs.\n\n* ospf_zebra.c: (ospf_distribute_list_update_timer)\n   If there are updates to the distribute list every 5 second or less,\n   ospf_distribute_list_update_timer() will never run as the timer gets\n   rearmed for each update. This fixes it by never rearming an active\n   distribute list timer.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n"
    },
    {
      "commit": "274d3f090df91fc5f8d4f26a2823634efa4af461",
      "tree": "bcdbc9bc1eea38e2441d0c53152325e41940b122",
      "parents": [
        "515b9424d4106ff5ccef4f18030a3ca69d38a178"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Apr 14 11:05:27 2010 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Sun Apr 18 14:35:36 2010 -0400"
      },
      "message": "ospfd: Make sure all external routes are updated.\n\nRoman Hoog Antink \u003crha@open.ch\u003e\treports:\n\nWhen adding a connected route (using vtysh, without restart) to the\nredistribution access list of ospfd, while static routes already exist,\nthe update timer ospf_distribute_list_update_timer() is being run for\nstatic routes only. That way, the connected route never appears in the\nOSPF database, until quagga is completely restarted.\n\nThe update timer for connected routes is cancelled in\nospfd/ospfd_zebra.c:ospf_distribute_list_update():976, were a new timer\nis scheduled for static routes, caused by the loop in ospf_filter_update().\n\n * ospf_zebra.c: (ospf_distribute_list_update_timer) make it\n   refresh all external routes. This fixes the problem\n   reported by Roman.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n"
    },
    {
      "commit": "515b9424d4106ff5ccef4f18030a3ca69d38a178",
      "tree": "1ff255748efe47c80caa5e764266916713c09cf9",
      "parents": [
        "43a48cf379193327603fc023530d6c185012f941"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Sun Apr 18 12:50:21 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Sun Apr 18 12:50:21 2010 -0400"
      },
      "message": "git: add pointers to out-of-tree work\n\n* (HACKING.pending): List known places where work on quagga that is\n  not (yet) integrated into the main tree can be found.\n"
    },
    {
      "commit": "43a48cf379193327603fc023530d6c185012f941",
      "tree": "da1a34173dee97b00fc5485dd121190b29a95d6a",
      "parents": [
        "2b09e2117e676986a5574a52a1a6823727361388"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Apr 14 15:24:52 2010 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Apr 14 15:24:52 2010 -0400"
      },
      "message": "git: add (generated) m4 files to .gitignore\n"
    },
    {
      "commit": "2b09e2117e676986a5574a52a1a6823727361388",
      "tree": "e57fcf544fb8ef510576d516f35dafdd800b9633",
      "parents": [
        "b65c639a2ef9e07d93c8f9433c97b2270a65a6a0"
      ],
      "author": {
        "name": "Ivan Moskalyov",
        "email": "ether0@mail.ru",
        "time": "Thu Mar 11 17:14:35 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Mar 11 17:14:35 2010 +0300"
      },
      "message": "doc: fixed spelling in bgpd.texi\n"
    },
    {
      "commit": "b65c639a2ef9e07d93c8f9433c97b2270a65a6a0",
      "tree": "4ece5effcac2f883dae228391edec53210f52e28",
      "parents": [
        "438589e31fe38943247f3011388b819346e473fe"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Mar 10 14:03:54 2010 -0500"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Mar 10 14:03:54 2010 -0500"
      },
      "message": "build: Add QuaggaId to README.NetBSD\n"
    },
    {
      "commit": "438589e31fe38943247f3011388b819346e473fe",
      "tree": "1b8ac0f7b60ffc2eacca91625bb4242a0bbbfced",
      "parents": [
        "dca6c883ea6219460efbe3dadde4b8b9cb12c845"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Mar 09 13:53:20 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Mar 09 13:53:20 2010 +0300"
      },
      "message": "release: 0.99.16\n\n* configure.ac: bump up version number\n"
    },
    {
      "commit": "dca6c883ea6219460efbe3dadde4b8b9cb12c845",
      "tree": "71352e214bd59277a50a43779bb2cbafbace6cc3",
      "parents": [
        "3f3dc2bd5f8cbde24cb581ed0aed0e372bfd556c"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Jan 27 12:38:16 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Jan 27 12:38:16 2010 +0300"
      },
      "message": "lib: undo the last PIE commit\n\nStephen:\nA recent change breaks build Quagga on Debian Lenny with amd64 (but not\ni386). Not sure whether this is cause by ld, gcc, or libtool; but\nwhatever it just won\u0027t work for a large number of users.\n\nMathias:\nI would guess it\u0027s a problem of libtool because it adds \"-fPIC -DPIC\" to\nthe compiler flags but doesn\u0027t remove -fPIE. That wouldn\u0027t be a problem\nif the compiler would ignore the -fPIE in favor to the latter -fPIC, but\nobviously it does not. [...] Those objects were actually compiled with\n-fPIC but also -fPIE which seems to confuse gcc.\n"
    },
    {
      "commit": "3f3dc2bd5f8cbde24cb581ed0aed0e372bfd556c",
      "tree": "7754c556419e6315fed189a4d7a88f33a3558852",
      "parents": [
        "65957886bfd0dd9d95360d8b015781fc82cc09be"
      ],
      "author": {
        "name": "Mathias Krause",
        "email": "Mathias.Krause@secunet.com",
        "time": "Wed Jan 20 17:39:13 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Jan 20 17:39:13 2010 +0300"
      },
      "message": "lib: fix PIE build flags\n\nBecause the final executables are built as position independent\nexecutables (PIE) -- when configure has detected compiler supported for\nPIE -- the objects in the library archive must be built in that way,\ntoo. Otherwise the runtime linker has to do unneccesary relocation for\neach start of the program. Even worse, the programs won\u0027t even be able\nto start on a (hardened) kernel that doesn\u0027t allow those relocations to\nhappen by preventing making the .text segment writable (PaX\u0027s MPROTECT\nfeature comes to mind). The attached patch fixes this issue by adding\nthe appropriate flags to the Makefile.am.\n"
    },
    {
      "commit": "65957886bfd0dd9d95360d8b015781fc82cc09be",
      "tree": "71352e214bd59277a50a43779bb2cbafbace6cc3",
      "parents": [
        "2cd754de60210748e61069fed2c9d4086d24c21e"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Jan 15 16:22:10 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Jan 15 16:22:10 2010 +0300"
      },
      "message": "bgp: use monotonic clock for time of day\n\nBGP uses time() to get system time of day; but that value\nfluctuates with time adjustments from NTP. This can cause premature\nflapping of peer sessions and other failures.\n\nUse the system monotonic clock supported by Quagga thread library\nto avoid issue.\n\nSee: http://bugzilla.vyatta.com/show_bug.cgi?id\u003d4467\n\n* bgpd/bgp_fsm.c\n  * bgp_uptime_reset(): dismiss function\n* bgpd/bgpd.c\n  * bgp_clock(): new function\n* bgpd/bgp_damp.c\n  * bgp_reuse_timer(): employ bgp_clock() instead of time(NULL)\n  * bgp_damp_withdraw(): idem\n  * bgp_damp_update(): idem\n  * bgp_damp_scan(): idem\n  * bgp_damp_info_vty(): idem\n  * bgp_damp_reuse_time_vty(): idem\n* bgpd/bgp_fsm.c\n  * bgp_routeadv_timer(): idem\n  * bgp_stop(): idem\n  * bgp_establish(): idem\n* bgpd/bgp_packet.c\n  * bgp_update_receive(): idem\n* bgpd/bgp_route.c\n  * bgp_update_rsclient(): idem\n  * bgp_update_main(): idem\n  * bgp_static_update_rsclient(): idem\n  * bgp_static_update_main(): idem\n  * bgp_static_update_vpnv4(): idem\n  * bgp_aggregate_route(): idem\n  * bgp_aggregate_add(): idem\n  * bgp_redistribute_add(): idem\n* bgpd/bgp_snmp.c\n  * bgpPeerTable(): idem\n  * bgpTrapEstablished(): idem\n  * bgpTrapBackwardTransition(): idem\n* bgpd/bgpd.c\n  * peer_create(): idem\n  * peer_uptime(): idem\n  * bgp_master_init(): idem\n"
    },
    {
      "commit": "2cd754de60210748e61069fed2c9d4086d24c21e",
      "tree": "1f9ef18fb413e0d786623eb857eea894a9900ff9",
      "parents": [
        "efbbcaf1aea686d118019514dcde92b13c92b0fc"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Thu Jan 14 16:26:12 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 14 16:26:12 2010 +0300"
      },
      "message": "ospfd: Fix debug messages that were masked by DISCARD_LSA\n\n* ospf_packet.c: (ospf_ls_upd) DISCARD_LSA continues, and so should be\nafter debug messages, not before them.\n"
    },
    {
      "commit": "efbbcaf1aea686d118019514dcde92b13c92b0fc",
      "tree": "97965a22204c265ac061f40ea9e461e88c3cd2ea",
      "parents": [
        "0917f7e7c5920b70295c44bd8aad537bc3ee8581"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Thu Jan 14 16:19:40 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 14 16:19:40 2010 +0300"
      },
      "message": "ospfd: remove unneeded memset from a very hot function\n\n* ospf_lsdb.c: (lsdb_prefix_set) memset is unneeded, as all fields are\ninitialised explicitly, and this function can be in the top-3 of a\nprofile when there are a lot of LSAs.\n"
    },
    {
      "commit": "0917f7e7c5920b70295c44bd8aad537bc3ee8581",
      "tree": "d55fa58af8937c2373d532223cf9a7c35df95c64",
      "parents": [
        "b6516829595ed4fc47af955de8bda9ef5be14ffd"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Wed Jan 13 20:10:56 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Jan 13 20:10:56 2010 +0300"
      },
      "message": "lib: fix memory logging\n\n* lib/memory.h\n  * mtype_zcalloc(): correct function prototype\n  * XFREE(): make both definitions consistent in setting\n    the pointer to NULL after freeing the memory\n\nThese changes will only have an effect if MEMORY_LOG is defined\n(it is not by default).\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": "2d362d1099f346202cb628665ff4ae563b2594f5",
      "tree": "5e8101d4ace5f4ef4e51c1cdc277c0f9652728d0",
      "parents": [
        "da88ea82acd70adf3bab641b2300ee24319da422"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Dec 21 12:54:58 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 21 13:03:51 2009 +0300"
      },
      "message": "lib: make some structures constant\n\n* isisd/isis_pdu.c\n  * maskbit: this pre-initialized array is not modified\n* lib/prefix.c\n  * maskbit: idem\n* lib/command.c\n  * facility_map: idem\n  * itoa64: idem\n  * default_motd: make local var static\n  * facility_name(): update local var accordingly\n  * facility_match(): idem\n"
    },
    {
      "commit": "da88ea82acd70adf3bab641b2300ee24319da422",
      "tree": "81151de47e55067c4b7d9cd718c0e6c8ab07aa50",
      "parents": [
        "2c2397059d4d4177ed4636c08aa476a138425dc8"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 17 13:14:28 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 17 13:14:28 2009 +0300"
      },
      "message": "bgpd: code cleanup\n\n* bgpd/bgp_aspath.c\n  * ashash: only used in one file, make static\n  * aspath_count_numas(): dead code, sayonara\n* bgpd/bgpd.c\n  * peer_nsf_stop(): only used in one file, make static\n* bgpd/bgp_packet.h\n  * bgp_capability_receive(): add missing prototype for a\n    global function\n"
    },
    {
      "commit": "2c2397059d4d4177ed4636c08aa476a138425dc8",
      "tree": "c32e11332baa9b1ff9efed4f8b363f9118bdc964",
      "parents": [
        "e580216e1ba2db506d1942e382852d07973a5fad"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 10 19:16:05 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 10 19:16:05 2009 +0300"
      },
      "message": "ripd: fix compiler warnings\n\n* ripd/rip_interface.c\n  * rip_request_neighbor(): comment out, unused\n  * rip_request_neighbor_all(): idem\n  * rip_interface_up(): Cast flags otherwise compiler complains\n    about %lld not matching uint64_t on 64 bit x86. Print in hex\n    since flags are bit field.\n  * rip_interface_add(): idem\n  * rip_interface_delete(): idem\n* ripd/rip_zebra.c\n  * rip_redistribute_set(): comment out, unused\n* ripd/ripd.h\n  * rip_redistribute_check(): move prototype here so compiler\n    can check function against prototype\n* ripd/ripd.c\n  * rip_update_default_metric(): comment out, unused\n"
    },
    {
      "commit": "e580216e1ba2db506d1942e382852d07973a5fad",
      "tree": "1932075db93d8989bcbd7b76c0603a00f5bb4647",
      "parents": [
        "813f6a0064e76fdc8d509ddfbd4d3870d7027850"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 10 16:18:41 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 10 16:18:41 2009 +0300"
      },
      "message": "ospf6d: remove dead code\n\n* ospf6d/ospf6_interface.c\n  * loopind(): sayonara\n* ospf6d/ospf6_top.c\n  * ospf6_delete(): comment out, it might be useful if real shutdown is\n    added\n"
    },
    {
      "commit": "813f6a0064e76fdc8d509ddfbd4d3870d7027850",
      "tree": "eed75fc5da5c0a4dd5dcd20bc8c7c2523b6fd32d",
      "parents": [
        "5eb9d11bf6bbe99ce47f929a14ac03351f21fe27"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 10 16:13:09 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 10 16:13:09 2009 +0300"
      },
      "message": "ospf6d: fix warnings from recent prefix bit commit\n\n* lib/prefix.h\n  * prefix6_bit(): add IPv6 wrapper for prefix_bit()\n* ospf6d/ospf6_lsdb.c\n  * ospf6_lsdb_type_router_head(): employ prefix6_bit()\n  * ospf6_lsdb_type_head(): idem\n"
    },
    {
      "commit": "5eb9d11bf6bbe99ce47f929a14ac03351f21fe27",
      "tree": "79e72d2cace42a33b7c742c10319808b7837a36b",
      "parents": [
        "ab0f61552622084a13ede59adefc4c54b5513d7b"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 10 15:52:33 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 10 15:52:33 2009 +0300"
      },
      "message": "ripngd: compiler warnings cleanup\n\n* ripngd/ripng_interface.c\n  * ripng_check_max_mtu(): unused, sayonara\n  * ripng_interface_down(): cast flag arguments to logging function\n  * ripng_interface_add(): idem\n  * ripng_interface_delete(): idem\n* ripngd/ripngd.c\n  * ripng_recv_packet(): avoid aliasing warning dereferencing pointer\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": "9e4ca89c3678431560a8259c75f8b5874d83d351",
      "tree": "178ca0de4c6fe5ecba90b51c5fb29c3e0b720cdb",
      "parents": [
        "cc2dd9280c4456586080d1cf4537d26c02fa9a36"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 10 11:57:05 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 10 11:57:05 2009 +0300"
      },
      "message": "bgpd: compile warnings cleanup\n\n* bgpd/bgp_fsm.c\n  * bgp_clearing_completed(): only used in one file, can be static\n* bgpd/bgp_packet.c\n  * afi2str(): sayonara\n  * safi2str(): sayonara\n* bgpd/bgp_route.c\n  * bgp_distance_reset(): sayonara\n* bgpd/bgp_zebra.c\n  * bgp_ifindex_by_nexthop(): sayonara\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": "1352ef32d70dcc102074814de63b5d08e591dd2d",
      "tree": "a0a4a40bf9a7726914f76cfa3a108529c7cc59df",
      "parents": [
        "3949a60c350fea947d2701e2fe709b174ae7af16"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Dec 09 14:43:17 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 09 14:43:17 2009 +0300"
      },
      "message": "lib: move check_bit into prefix common code\n\nMake one version of check prefix bit, and put it inline\nwith proper prototype. This gets rid of some macro\u0027s and also some\nassert() that can never happen on a non-broken compiler.\n\n* bgpd/bgp_table.c\n  * CHECK_BIT(): sayonara\n  * check_bit(): sayonara\n  * SET_LINK(): sayonara\n  * set_link(): make use of prefix_bit() instead of check_bit()\n  * bgp_node_match(): idem\n  * bgp_node_lookup(): idem\n  * bgp_node_get(): idem\n* lib/prefix.h\n  * prefix_bit(): new inline version of check_bit()\n* lib/table.c\n  * CHECK_BIT(): sayonara\n  * check_bit(): sayonara\n  * SET_LINK(): sayonara\n  * set_link(): make use of prefix_bit() instead of check_bit()\n  * route_node_match(): idem\n  * route_node_lookup(): idem\n  * route_node_get(): idem\n* ospf6d/ospf6_lsdb.c\n  * CHECK_BIT(): sayonara\n  * ospf6_lsdb_lookup_next(): make use of prefix_bit() instead of\n    CHECK_BIT()\n  * ospf6_lsdb_type_router_head(): idem\n  * ospf6_lsdb_type_head(): idem\n* ospf6d/ospf6_route.c\n  * CHECK_BIT(): sayonara\n  * ospf6_route_match_head() make use of prefix_bit() instead of\n  * CHECK_BIT()\n"
    },
    {
      "commit": "3949a60c350fea947d2701e2fe709b174ae7af16",
      "tree": "f9df272afc80a1835c4d5ab10ac7460e8499566b",
      "parents": [
        "b0b709ab6656ba07f12fe0d256912dcabba19017"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Dec 09 14:13:27 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 09 14:13:27 2009 +0300"
      },
      "message": "lib: fix warning on little endian\n\n* md5.c\n  * md5_calc(): If building on little endian then X\n    will be \u0027const uint32_t\u0027 which causes compiler\n    warning in code that never gets used. Just move\n    the endif to make sure code is not checked.\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": "38cc00cd823fe945c7748de18c3e8932d98dd8f8",
      "tree": "51f79a6ff37f8858b569f55f27480c4b47eb2aac",
      "parents": [
        "0d6388abc7a5da2a20a4854c400c8e176127e480"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Dec 08 12:00:50 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 08 12:00:50 2009 +0300"
      },
      "message": "lib: make match functions take const args\n\n* table.c: general type safety and compiler help:\n  * maskbit[]: become const\n  * route_node_match(): take const args\n  * route_node_match_ipv4(): idem\n  * route_node_match_ipv6(): idem\n  * check_bit(): idem, plus adjust local vars typing\n"
    },
    {
      "commit": "0d6388abc7a5da2a20a4854c400c8e176127e480",
      "tree": "effe14c7fc1e958b6082685026a1c3ad92b2451a",
      "parents": [
        "78e6cd98dd88393d0863388caf37dae45435db7a"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 07 19:19:13 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 07 19:19:13 2009 +0300"
      },
      "message": "lib: remove unused function: route_dump_node()\n"
    },
    {
      "commit": "78e6cd98dd88393d0863388caf37dae45435db7a",
      "tree": "3c1e57265ea8f54055eb67b3ceb147da90920e0d",
      "parents": [
        "64bf3ab7291cc5c39c5add0dc1a7de447914248b"
      ],
      "author": {
        "name": "heasley",
        "email": "heas@shrubbery.net",
        "time": "Mon Dec 07 16:41:14 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 07 16:41:14 2009 +0300"
      },
      "message": "lib: log source of vty connections (bug #566)\n\nheasley: I\u0027ve used this for a while to track usage.\n"
    },
    {
      "commit": "64bf3ab7291cc5c39c5add0dc1a7de447914248b",
      "tree": "d5ae874814083d89815e6c521b42d0f3eaaec69c",
      "parents": [
        "2eb445e1c22e36d07e2dbfd302ff438c4190b9fe"
      ],
      "author": {
        "name": "Ondrej Zajicek",
        "email": "santiago@crfreenet.org",
        "time": "Mon Dec 07 12:33:20 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 07 12:33:20 2009 +0300"
      },
      "message": "ospf6d: review LSA sequence number comparison\n\nIt seems that there is a bug in ospf6d in ospf6_lsa_compare(): If LSA A\nhas sequence number smaller than 0x80000000 and LSA B has sequence\nnumber larger than 0x80000000, ospf6_lsa_compare() returns that B is\nmore recent than A, although RFC says that sequence numbers should be\ncompared as signed numbers (0x8000001 smallest and 0x7FFFFFFF largest).\n\nIn ospfd, the function ospf_lsa_more_recent() has it right.\n\nThe problem appears when Quagga is used together with OSPFv3 in\ndevelopment version of BIRD daemon ( http://bird.network.cz/ ),\nwhich creates LSAs with maximum sequence number (0x7FFFFFFF)\nas a part of flushing/premature aging LSA from OSPF area.\n\nBecause both daemons has different idea of which LSA instance\nis more recent, it would lead to LSA storm.\n"
    },
    {
      "commit": "2eb445e1c22e36d07e2dbfd302ff438c4190b9fe",
      "tree": "82372e9d6fc630758fcf265cbdfdf3b826699cbd",
      "parents": [
        "e6f148e6e06a37a65afb322eca6a3298b8ade8d2"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Dec 04 17:32:54 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Dec 04 17:32:54 2009 +0300"
      },
      "message": "bgpd: work around warning in assegments_parse()\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": "4a4bba04c7398069a6d43fa8ccf0d15bad5faaa2",
      "tree": "1d216265f03b2f7eadb7d5b158f1edc960833c1b",
      "parents": [
        "a0f63a4c7d7a6404fd43d139809202a693ae42e9"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Thu Dec 03 21:24:36 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 21:24:36 2009 +0300"
      },
      "message": "isisd: fix --enable-isis-topology for 64-bit Linux\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": "362573e5642b29ffeef5000351adc2d6ed6dfca3",
      "tree": "2b1c84f9498563959f43b54335ab8a07c4e7e6c2",
      "parents": [
        "cdb9950482e1180b4a2b6ba05d171bdf2649c84c"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Thu Dec 03 20:44:35 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 20:44:35 2009 +0300"
      },
      "message": "isisd: fix BPF ioctl() calls, treat \"true\" and \"false\" as reserved\n\nAvoid a potential conflict with the C99 defines \u0027true\u0027 and \u0027false\u0027\nfound in \u003cstdbool.h\u003e by choosing better variable names.\n\nAlso fix the calls to these ioctls, as described in \u003cnet/bpf.h\u003e\nin FreeBSD, NetBSD, and OpenBSD:\n\n* BIOCGBLEN, BIOCIMMEDIATE, BIOCSSEESENT (the parameter should be\nof type \u0027u_int\u0027)\n\n* BIOCPROMISC (there should be no parameters)\n"
    },
    {
      "commit": "cdb9950482e1180b4a2b6ba05d171bdf2649c84c",
      "tree": "cc1e1e04f6adadf006428272c5f23ef4abbefa64",
      "parents": [
        "8b6a15b2821e687177cef3ff057e1c4ec76df888"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Thu Dec 03 20:22:47 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 20:22:47 2009 +0300"
      },
      "message": "configure: fix spelling\n"
    },
    {
      "commit": "8b6a15b2821e687177cef3ff057e1c4ec76df888",
      "tree": "cd271d0dcf5233226ded94dfbd96b687428b196a",
      "parents": [
        "3408afe2acf34729730a7dc1efdd587c561b6f59"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 03 19:25:04 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 19:25:04 2009 +0300"
      },
      "message": "ospfd: VTY strings cleanup\n\nSeveral bits of text can be local or are unused.\n"
    },
    {
      "commit": "3408afe2acf34729730a7dc1efdd587c561b6f59",
      "tree": "65ac57e811f0d5f6ce6fce6d4c78c6cd1bc33e79",
      "parents": [
        "917e29954e652518326dbbdb90325a978ef69535"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 03 19:18:26 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 19:18:26 2009 +0300"
      },
      "message": "ospfd: comment out unused function\n"
    },
    {
      "commit": "917e29954e652518326dbbdb90325a978ef69535",
      "tree": "e3fe0929ed348060db1023ba500a9b33b58de275",
      "parents": [
        "a50c107e3fbdaaea78a12a868a3865fd25136ad2"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 03 19:07:00 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 19:07:00 2009 +0300"
      },
      "message": "ospfd: make local functions static\n\nThis code is only used one place and can be made local.\nGcc is smart enough to inline local functions if it wants to.\n\nThe function also  has a big chunk of compatiablity code that\nis no longer used; since quagga is now in a version control system\nthe source does not need to be used as a historical reference.\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": "16c1c4872b29bb22c0ff77bd1ef1018c63ca25fa",
      "tree": "06813f6d1b703649757f3eedf829e7afddfe5c42",
      "parents": [
        "9964fcfc2282c8f3468b3b7355c5dea3089f0f14"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Tue Dec 01 21:12:38 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 01 21:12:38 2009 +0300"
      },
      "message": "ospf6d: fix LSA locking in ospf6_new_ls_id()\n\n* ospf6_lsdb.c: (ospf6_new_ls_id) Unlock the current LSA when breaking\nout of the ospf6_lsdb_*_head() / ospf6_lsdb_*_next() loop early. No\nexplicit unlocking is needed when all LSAs are looped through\nbecause ospf6_lsdb_*_next() manages everything in that case.\n"
    },
    {
      "commit": "9964fcfc2282c8f3468b3b7355c5dea3089f0f14",
      "tree": "872e983e1e05b9544b5689408df1041046082d37",
      "parents": [
        "827341b797f602f4cd7932a777f819b530521b05"
      ],
      "author": {
        "name": "Dmitry Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Thu Nov 05 16:50:36 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Thu Nov 05 16:50:36 2009 +0300"
      },
      "message": "configure: fix HAVE_CLOCK_MONOTONIC spelling\n"
    },
    {
      "commit": "827341b797f602f4cd7932a777f819b530521b05",
      "tree": "e1eb4c1f91c11f56cdc7daa41fc2082b64a522bf",
      "parents": [
        "50adf7832004191cdaf5a908bd9a9c0b2373e993"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Mon Sep 28 19:34:59 2009 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Mon Sep 28 19:34:59 2009 +0400"
      },
      "message": "[ospfd] enable more OSPF cost command aliases\n\nThe following syntax forms were not historically supported\nby Quagga, although IOS accepted them w/o a problem:\n\nno ip ospf cost \u003c1-65535\u003e\nno ospf cost \u003c1-65535\u003e\nno ip ospf cost \u003c1-65535\u003e A.B.C.D\nno ospf cost \u003c1-65535\u003e A.B.C.D\n\nFrom now on Quagga also supports these variants.\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"
    }
  ],
  "next": "3849ce4e25281d11537ebd0db5e2fa2a7c356b33"
}
