)]}'
{
  "log": [
    {
      "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": "30d205909c5a81cc306b161c16abff0fd7f566a7",
      "tree": "6f7532a4336cf601bbeab07d2669639a05409dfd",
      "parents": [
        "d023aec49f70156d2ed894a8fba65bcfa221ff02"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Jul 28 11:58:51 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jul 28 11:58:51 2009 +0100"
      },
      "message": "[global] interface flags format warnings\n\n*/*: ifp-\u003eflags is 64 bit unsigned which can not be handled by %l on 32\n     bit architectures - requires %ll and the appropriate cast.\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": "6ac29a51075def99217a4ab1015635db3b3e83ed",
      "tree": "1152b55eb3a2099c67a0ba8e62d7e41f07e00135",
      "parents": [
        "1423c809cc4ddc2e013ba6264c49a11e5719c6f2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 15 13:45:30 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:58 2008 +0100"
      },
      "message": "[trivia] finish off static\u0027ification of ospf6d and ripngd\n\n2008-08-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* {ospf6d,ripngd}/*: Finish job of marking functions as static, or\n\t  exporting declarations for them, to quell warning noise with\n\t  Quagga\u0027s GCC default high-level of warning flags. Thus allowing\n\t  remaining, more useful warnings to be more easily seen.\n"
    },
    {
      "commit": "995b96515b7075fec77ab51dfe8be7788abd838d",
      "tree": "9b1c6f590868955c37fe7e9c9ad64cad441f1404",
      "parents": [
        "f371b1fb2bd0c615d44653d56a26df8f7245481d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 11 13:20:47 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 11 13:20:47 2006 +0000"
      },
      "message": "[ripngd] CID #72, remove unneeded NULL check\n\n2006-05-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ripng_interface.c: (ripng_interface_address_add) Remove\n\t  unneeded NULL check, Coverity CID #72.\n"
    },
    {
      "commit": "3a2ce6a14e3e302c3fdca2ff99143cfd06b145e6",
      "tree": "f27ec1418be4c3e9a123e67ef22ca090bca28906",
      "parents": [
        "528bed4a9a997216ba95e3ae445efa79436cc551"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 01:30:51 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 01:30:51 2005 +0000"
      },
      "message": "\t* prefix.[hc]: Pass argument to the inet6_ntoa by value making it more\n\t  inet_ntoa alike.\n\t* ripngd.[hc], ripng_interface.c, ripng_peer.c: inet6_ntoa() takes\n\t  argument now by value.\n"
    },
    {
      "commit": "1eb8ef2584833f18fb674e127d59cb5a7f771482",
      "tree": "f5b09d4781de9a9b08839fefb6530e64d2d2ec31",
      "parents": [
        "5920990fecba7e2430af3cfaa8bcbaed40d0ba1a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "message": "2005-04-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global): Fix up list loops to match changes in lib/linklist,\n\t  and some basic auditing of usage.\n\t* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES\n\t* HACKING: Add notes about deprecating interfaces and commands.\n\t* lib/linklist.h: Add usage comments.\n\t  Rename getdata macro to listgetdata.\n\t  Rename nextnode to listnextnode and fix its odd behaviour to be\n\t  less dangerous.\n\t  Make listgetdata macro assert node is not null, NULL list entries\n          should be bug condition.\n          ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use\n          with for loop, Suggested by Jim Carlson of Sun.\n          Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the\n          \"safety\" of previous macro.\n\t  LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to\n\t  distinguish from the similarly named functions, and reflect their\n\t  effect better.\n\t  Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section\n\t  with the old defines which were modified above,\n\t  for backwards compatibility - guarded to prevent Quagga using it..\n\t* lib/linklist.c: fix up for linklist.h changes.\n\t* ospf6d/ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single\n\t  scan of the area list, rather than scanning all areas first for\n\t  INTER_ROUTER and then again for INTER_NETWORK. According to\n\t  16.2, the scan should be area specific anyway, and further\n\t  ospf6d does not seem to implement 16.3 anyway.\n"
    },
    {
      "commit": "5920990fecba7e2430af3cfaa8bcbaed40d0ba1a",
      "tree": "d91dd49e4ed2c03cd0c007660232716f11172a56",
      "parents": [
        "6a52470660000bb6ddba971dc5c40b3422ab49bc"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Apr 05 14:36:49 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Apr 05 14:36:49 2005 +0000"
      },
      "message": "\t* lib/prefix.[hc]: inet6_ntoa utility function copied from\n\t  ripngd/ripngd.c (inet6_ntop).\n\t* ripngd.[hc]: Remove inet6_ntop() and any usage of it. inet6_ntoa()\n\t  from lib is used now.\n\t* ripng_interface.c: inet6_ntop() -\u003e inet6_ntoa().\n\t* ripng_peer.c: inet6_ntop() -\u003e inet6_ntoa().\n"
    },
    {
      "commit": "d2fc88962a9a494ecb34167871bb9e7273a25d33",
      "tree": "304a1c1a744972bc10b1f677a134907c404b361d",
      "parents": [
        "386e61502d391adb985ac1487825349ec85e6a8c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:38:43 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:38:43 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\tFix problems when netlink interfaces are renamed (same ifindex used\n\tfor a new interface).  Start cleaning up some problems with the way\n\tinterface names are handled.\n\t* interface.c: (if_new_intern_ifindex) Remove obsolete function.\n\t  (if_delete_update) After distributing the interface deletion message,\n\t  set ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t  (if_dump_vty) Detect pseudo interface by checking if ifp-\u003eifindex is\n\t  IFINDEX_INTERNAL.\n\t  (zebra_interface) Check return code from interface_cmd.func.\n\t  Do not set internal ifindex values to if_new_intern_ifindex(),\n\t  since we now use IFINDEX_INTERNAL for all pseudo interfaces.\n\t* kernel_socket.c: (ifm_read) Fix code and comments to reflect that\n\t  all internal interfaces now have ifp-\u003eifindex set to IFINDEX_INTERNAL.\n        * rt_netlink.c: (set_ifindex) New function used to update ifp-\u003eifindex.\n\t  Detects interface rename events by checking if that ifindex is already\n\t  being used.  If it is, delete the old interface before assigning\n\t  the ifindex to the new interface.\n\t  (netlink_interface, netlink_link_change) Call set_ifindex to update\n\t  the ifindex.\n\t* if.h: Remove define for IFINDEX_INTERNBASE and add define\n\t  IFINDEX_INTERNAL 0, since all internal (i.e. non-kernel) pseudo-\n\t  interfaces should have ifindex set to 0.\n\t  (if_new) Remove function.\n\t  (if_delete_retain) New function to delete an interface without\n\t  removing from iflist and freeing the structure.\n\t  (ifname2ifindex) New function.\n\t* if.c: (if_new) Remove function (absorb into if_create).\n\t  (if_create) Replace function if_new with call to calloc.\n\t  Set ifp-\u003eifindex to IFINDEX_INTERNAL.  Fix off-by-one error\n\t  in assert to check length of interface name.  Add error message\n\t  if interface with this name already exists.\n\t  (if_delete_retain) New function to delete an interface without\n\t  removing from iflist and freeing the structure.\n\t  (if_delete) Implement with help of if_delete_retain.\n\t  (ifindex2ifname) Reimplement using if_lookup_by_index.\n\t  (ifname2ifindex) New function to complement ifindex2ifname.\n\t  (interface) The interface command should check the name length\n\t  and fail with a warning message if it is too long.\n\t  (no_interface) Fix spelling in warning message.\n\t  (if_nametoindex) Reimplement using if_lookup_by_name.\n\t  (if_indextoname, ifaddr_ipv4_lookup) Reimplement using\n\t  if_lookup_by_index.\n\t* bgp_zebra.c: (bgp_interface_delete) After deleting, set ifp-\u003eifindex\n\t  to IFINDEX_INTERNAL.\n\t* isis_zebra.c: (isis_zebra_if_del) Call if_delete_retain instead\n\t  of if_delete, since it is generally not safe to remove interface\n\t  structures.  After deleting, set ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t  (zebra_interface_if_lookup) Tighten up code.\n\t* ospf6_zebra.c: (ospf6_zebra_if_del) Previously, this whole function\n\t  was commented out.  But this is not safe: we should at least update\n\t  the ifindex when the interface is deleted.  So the new version\n\t  updates the interface status and sets ifp-\u003eifindex to\n\t  IFINDEX_INTERNAL.\n\t  (ospf6_zebra_route_update) Use if_indextoname properly.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) Show ifindex and interface\n\t  flags to help with debugging.\n\t* ospf_zebra.c: (ospf_interface_delete) After deleting, set ifp-\u003eifindex\n\t  to IFINDEX_INTERNAL.\n\t  (zebra_interface_if_lookup) Make function static.  Tighten up code.\n\t* rip_interface.c: (rip_interface_delete) After deleting, set\n\t  ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t* ripng_interface.c: (ripng_interface_delete) After deleting, set\n\t  ifp-\u003eifindex to IFINDEX_INTERNAL.\n"
    },
    {
      "commit": "55468c86040081320f557b696e509b76ddfd6c83",
      "tree": "3ee726f155f8776d4a220997681d14c0b09addd0",
      "parents": [
        "909a215508fd42473fcbe4f5292a59404e5473af"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 20:19:01 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 20:19:01 2005 +0000"
      },
      "message": "2005-03-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) update all c files to match the lib/vector.h rename of\n\t  (struct vector).active to max, and vector_max macro to\n\t  vector_active.\n\t* lib/vector.h: Rename to (struct vector).max to slightly less\n\t  confusing active, for the number of active slots, distinct from\n\t  allocated or active-and-not-empty. Rename vector_max to\n\t  vector_active for same reason.\n"
    },
    {
      "commit": "656b4eeec1fb30402ad2001976c05c6f44fafb34",
      "tree": "6455936be51648bd711d9caf25af49acdc35e604",
      "parents": [
        "798534576c2525476141628ac14ecc83fd775a5a"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Jan 30 18:08:12 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Jan 30 18:08:12 2005 +0000"
      },
      "message": "2005-01-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ripng_interface.c: (ripng_multicast_join) Save errno before calling\n\t  ripngd_privs.change.\n"
    },
    {
      "commit": "2e23ab2e41c299bd8d070183bb1c31628ab582f9",
      "tree": "a75ae3080585b2832deb209cb5d97dc5f27becaa",
      "parents": [
        "5d6c37798317cece827dca7f4b539fa0387b5eb9"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 08 19:46:50 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 08 19:46:50 2004 +0000"
      },
      "message": "2004-12-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* *.c: Change level of debug messages to LOG_DEBUG.\n"
    },
    {
      "commit": "6099b3b56956322567323c11fd698b2328c6826b",
      "tree": "fa537bd0eaa9f7d824f39445eabc928db59050ca",
      "parents": [
        "ae5e24d8678f1e3a60dde58d3382c5ba73d6bb27"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Nov 20 02:06:59 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Nov 20 02:06:59 2004 +0000"
      },
      "message": "2004-11-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* global: Replace strerror with safe_strerror.  And vtysh/vtysh.c\n\t  needs to include \"log.h\" to pick up the declaration.\n"
    },
    {
      "commit": "98b718a9d2aa7a3324c553944e26914fe090b87a",
      "tree": "13a7002a3265a2debfa411a2a2c544dbde972f0a",
      "parents": [
        "a149411b85bbe74cde47d82193026b9401b29de0"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Oct 11 12:57:57 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Oct 11 12:57:57 2004 +0000"
      },
      "message": "Sync with changes in lib. Make more strings const.\n"
    },
    {
      "commit": "7a1d583c02253c53605f310d1afcc9f1c8e15b7b",
      "tree": "38652398c60620d195bb6b74f97ad4770af559e5",
      "parents": [
        "27a43a81004b620e571f71aa1ea4db182c607862"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Oct 08 06:32:23 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Oct 08 06:32:23 2004 +0000"
      },
      "message": "Only warning left is the known lvalue problem in ripng_nexthop.c.\n"
    },
    {
      "commit": "52dc7ee65f8d887b0730abc0a5d44d27fc6ecafd",
      "tree": "a557339540c56dd3953c29a50ca0e48c1911efc8",
      "parents": [
        "44983cf8a9c587dfbcad294b9dfe4dccbb68ba98"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "message": "Remove usage of evil list and listnode typedefs.\n"
    },
    {
      "commit": "1203e1c07c444df615605168c72852389e20340c",
      "tree": "2b00b78fe71fc2840837c0ffdb1c308192ceedf4",
      "parents": [
        "b219dea8d67b58db58755f94ea7cb44aa9774f0d"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Jul 23 21:34:27 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Jul 23 21:34:27 2004 +0000"
      },
      "message": "Use ifp-\u003emtu6 in ospf6d and ripngd.\n"
    },
    {
      "commit": "4d4653afe362d6ea549c6e21b27afe01fb8b8aac",
      "tree": "933f0445306c6a6c5904485e4991bc208de6e407",
      "parents": [
        "79683de8c645ca46395280049f240cfbe71f9e35"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Jul 01 19:26:33 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Jul 01 19:26:33 2004 +0000"
      },
      "message": "2004-07-01  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n        * ripng_interface.c (ripng_multicast_join): Use privs to do join,\n        to work around bug on gif(4) on NetBSD 1.6.2.\n"
    },
    {
      "commit": "0a5893596774554f039222c481d235de0f35d99e",
      "tree": "065ba74422d21193637d6e3f8b52c0eaa09a13bf",
      "parents": [
        "225282994d74f767058886475d80fee95d450eae"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat May 08 11:48:26 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat May 08 11:48:26 2004 +0000"
      },
      "message": "2004-05-08 Paul Jakma \u003cpaul@dishone.st\u003e\n\n       * bgp_zebra.c: (bgp_interface_address_add) sync to zclient changes\n         (bgp_interface_address_delete) ditto.\n         (bgp_zebra_announce) ditto.\n         (bgp_zebra_withdraw) ditto.\n       * isis_zebra.c: Sync with zclient changes.\n       * zclient.c (zapi_ipv4_route) Follow Sowmini\u0027s lead and describe\n         message format.\n       * ospf6_zebra.c: Sync to zclient changes\n       * ospf_zebra.c: Sync with lib/zclient changes\n       * rip_zebra.c: sync with zclient changes.\n       * rip_interface.c: ditto.\n       * ripng_{interface,zebra}.c: sync with zclient changes\n\n\n2004-05-08 Sowmini Varadhan \u003csowmini.varadhan@sun.com\u003e\n\n       * zclient.c: (zapi_ipv4_add) collapsed into zapi_ipv4_route\n         (zapi_ipv4_delete) ditto.\n         (zapi_ipv4_route) add/delete a route by way of cmd arg.\n         (zapi_ipv6_add) collapsed into zapi_ipv6_route.\n         (zapi_ipv6_delete) ditto.\n         (zapi_ipv6_route) add/delete a route by way of cmd arg.\n         (zebra_interface_address_delete_read) collapsed into\n         zebra_interface_address_read.\n         (zebra_interface_address_delete_read) ditto.\n         (zebra_interface_address_read) read address add/delete messages\n         by way of type argument. Describe command message format.\n         (zebra_interface_add_read) Unconditionally read new ifmtu6 field.\n         Describe command message format.\n         (zebra_interface_state_read) Unconditionally read new ifmtu6 field.\n         (zclient_redistribute_set) Collapsed into zclient_redistribute\n         (zclient_redistribute_unset) ditto\n         (zclient_redistribute) set/unset redistribution.\n         (zclient_redistribute_default_set) Collapsed into\n         zclient_redistribute_default.\n         (zclient_redistribute_default_unset) ditto.\n         (zclient_redistribute_default) Redistribute default set/unset.\n       * zclient.h: delete zapi_ipv{4,6}_add, zapi_ipv{4,6}_delete. Add\n         zapi_ipv{4,6}_route. delete zclient_redistribute_set/unset. Add\n         zclient_redistribute. Ditto for\n         zclient_redistribute_default_{set/unset}.\n"
    },
    {
      "commit": "ddf1c26ca3cfd31ed11a40909bdadc6b823f0697",
      "tree": "e536e458dc628c11a50a756020a2c99d2d6e2533",
      "parents": [
        "efc1e725778b55917962092ee9d0f735c9ef54dc"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Sun Jan 04 01:02:55 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Sun Jan 04 01:02:55 2004 +0000"
      },
      "message": "Really ripngd should either leave groups on down interfaces, or keep\ntrack of on which interfaces joins have occurred.  This is complicated\nby the possible lack of a clear behavior spec on whether interfaces\nkeep their joined group lists across a down/up/down transition.  (On\nNetBSD, they do.)\n\n2004-01-03  Greg Troxel  \u003cgdt@ahi.ir.bbn.com\u003e\n\n        * ripng_interface.c (ripng_multicast_join): If IPV6_JOIN_GROUP\n        returns EADDRINUSE, consider the join successful.  This happens\n        when an interface goes down and comes back because\n        ripng_multicast_leave does not invoke the LEAVE_GROUP operation if\n        the interface is down.  Solves problem of ripng stopping working\n        on an interface which goes down and then comes back up (on NetBSD).\n"
    },
    {
      "commit": "a94434b69197e074569d7579126074e9cb7212a5",
      "tree": "b63c34ee20e8e6b57796ee591d4569407140047d",
      "parents": [
        "dd55f9eb73347cb2bb7f8dc0f8108b21a733c9b4"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun May 25 17:10:12 2003 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun May 25 17:10:12 2003 +0000"
      },
      "message": "Ripngd part of 6Wind patch.\n"
    },
    {
      "commit": "32d2463ca26529ad4700af6d5748f927e1305694",
      "tree": "9f8dc5d94e1fb11a86585864e45401f552ecf2dd",
      "parents": [
        "7515cffe5e11fdfbc437c02b7af8b0f7b4d36fce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 09:25:20 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 09:25:20 2003 +0000"
      },
      "message": "From: Hasso Tepper \u003chasso@estpak.ee\u003e\n\nAdd the \u0027no interface\u0027 command to all the daemons and vtysh. now it\u0027s\npossible to delete interface from routeing daemons as well only if it\ndoesn\u0027t exist in os.\n\nhttp://hasso.linux.ee/zebra/ht-no_interface_fix.patch\n"
    },
    {
      "commit": "7515cffe5e11fdfbc437c02b7af8b0f7b4d36fce",
      "tree": "9acbaf0a01080920f25cf1107465a7f79ee7e2f8",
      "parents": [
        "1921e6f8965701040fe1b4f27619b2d7f3fec254"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 09:21:46 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 09:21:46 2003 +0000"
      },
      "message": "Undo Hasso last patch, about to apply a slightly updated patch.\n"
    },
    {
      "commit": "68f43848fa0f8ac16c768bafb8891495dcf232ae",
      "tree": "8121fe0ee7c19001dd3c37c798e8368681a59493",
      "parents": [
        "8d6b00e4f34dfb6f627b49713bf80b0745b50abc"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 06:58:44 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 06:58:44 2003 +0000"
      },
      "message": "From: Hasso Tepper \u003chasso@estpak.ee\u003e\n\nhttp://hasso.linux.ee/zebra/ht-no_interface-23052003.patch\n\nAdd the \u0027no interface\u0027 command to all the daemons and vtysh.\n"
    },
    {
      "commit": "718e3744195351130f4ce7dbe0613f4b3e23df93",
      "tree": "bac2ad39971cd43f31241ef123bd4e470f695ac9",
      "parents": [],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "message": "Initial revision\n"
    }
  ]
}
