)]}'
{
  "log": [
    {
      "commit": "354f3b66355f7b658d4cc5e8681c80326af13ee7",
      "tree": "f74cca8d76ab62803bfae09ed3dded1a95b16c14",
      "parents": [
        "e210cf9fd09c938b92dc1a993b254d8d5a8b312c"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Jun 18 16:55:20 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Jun 18 16:55:20 2005 +0000"
      },
      "message": "2005-06-18 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* memtypes.h: update autobuilt file to match memtypes.c changes\n"
    },
    {
      "commit": "e210cf9fd09c938b92dc1a993b254d8d5a8b312c",
      "tree": "635e23a3f56c05f3cc89bddb5b7030ef0b7d13bc",
      "parents": [
        "245a2b29a501bad850c5399ac1c1da2fddf0572a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 15 19:15:35 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 15 19:15:35 2005 +0000"
      },
      "message": "2005-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgpd.c: (bgp_terminate) workqueue\u0027s are lazy allocated and its\n\t  possible to terminate bgpd before workqueues were setup, causing\n\t  an abort/crash. Reported by Ashish Mehta of Sun.\n"
    },
    {
      "commit": "245a2b29a501bad850c5399ac1c1da2fddf0572a",
      "tree": "b183b49babf70601bfb0018aead875c73bffb7bb",
      "parents": [
        "9b78d0528ad6756b051d82faddfa2c3422403a2e"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 15 11:24:44 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 15 11:24:44 2005 +0000"
      },
      "message": "2005-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* README.txt: updated to match changed SMF manifest and\n\t  its changed service, instance and property group names.\n"
    },
    {
      "commit": "9b78d0528ad6756b051d82faddfa2c3422403a2e",
      "tree": "566594eea017950238265f3636860e3aaf2f68e5",
      "parents": [
        "62debbbe836d4c96402756ccfead01b09d903428"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 15 11:00:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 15 11:00:11 2005 +0000"
      },
      "message": "2005-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* quagga.xml.in: Pass the FMRI to the method, removing need for\n\t  daemon_name property and deducing the FMRI.\n\t  remove the empty config_file and pid_file definitions, they just\n\t  make things difficult in the method script, cause it then has to\n\t  deal with svcprop returning \"\" for defined empty properties.\n\t  Remove daemon_name everywhere.\n\t* quagga.init.in: Take the FMRI as an argument\n\t  Remove deducing the FMRI from the defunct daemon_name property.\n\t  Use svcprop -q to test for presence of a property first.\n\t  Default vty_port to 0 and vty_addr to 127.1 if equivalent\n\t  SMF properties are not set.\n\t  Deduce the pid_file, we can infer it from @quagga_statedir@ I\n\t  think, it\u0027s probably not useful to allow it to be configurable\n\t  as a property anyway.\n\t  /var/run/ is on tmpfs on Solaris, so we probably will need\n\t  to create @quagga_statedir@ first run after boot.\n\t  Use @sbindir@, not /usr/local/sbin.\n"
    },
    {
      "commit": "62debbbe836d4c96402756ccfead01b09d903428",
      "tree": "fefc2be88f05b7679f383e89bd93fdf6838bfa31",
      "parents": [
        "7461d4594aad716f24690c68c5f82bd865cf9c25"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 14 14:07:07 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 14 14:07:07 2005 +0000"
      },
      "message": "2005-06-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* kernel_socket.c: consolidate the IFAM{ADDR,MASK}GET and\n\t  RTM{ADDR,MASK}GET macros into generic rta_addrs macros,\n\t  RTA_{ADDR,ATTR}_GET.\n\t  (af_check) could use \u0027inline\u0027 attribute\n\t  (ifam_read_mesg) remove IFAM{ADDR,MASK}GET macro, change to\n\t  generic macro.\n\t  (rtm_read_mesg) similar\n"
    },
    {
      "commit": "7461d4594aad716f24690c68c5f82bd865cf9c25",
      "tree": "9a65d1ec29bf635122177b87caa86115d9028d78",
      "parents": [
        "1ada81981da3e6422a59d3052d32696fc93cdea1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jun 13 13:57:16 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jun 13 13:57:16 2005 +0000"
      },
      "message": "2005-06-13 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_spf.c: Try get more information on a SEGV under\n\t  ospf_spf_vertex_add_parent.\n\t  (ospf_vertex_free) NULL out the child and nexthop lists\n\t  (ospf_vertex_add_parent) nexthop and child can not be NULL\n\t  vertex_nexthop\u0027s parent-\u003echild list can not be NULL\n\t  (ospf_spf_next) w and cw are per-loop iteration variables, move\n\t  declarations into loop body.\n"
    },
    {
      "commit": "1ada81981da3e6422a59d3052d32696fc93cdea1",
      "tree": "d207d2b0d92a7386bb05647ab9810db699de6e5b",
      "parents": [
        "1ddd729e6f20b93a635caece8c34ee1b7021fe26"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Jun 12 11:28:18 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Jun 12 11:28:18 2005 +0000"
      },
      "message": "\t* rt_netlink.c: Remove unused netlink-addr socket declaration.\n\t* rt_netlink.c (netlink_parse_info): Fix debug messages - nlmsg_pid is\n\t  unsigned and one zlog call had swapped arguments.\n\t* rt_netlink.c (netlink_route_multipath): Fix compile with disabled\n\t  IPv6 support.\n\n\t[backport candidate] - with stuff commited to rt_netlink.c before to\n\tfix logging in netlink_route_multipath().\n"
    },
    {
      "commit": "1ddd729e6f20b93a635caece8c34ee1b7021fe26",
      "tree": "e9bbe394bf37b142a6febb4b3097074a371764a6",
      "parents": [
        "f69bd9da8b1f7e0f297d4ffb370552fc41af3c81"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Jun 07 19:54:04 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Jun 07 19:54:04 2005 +0000"
      },
      "message": "\t* ospf_apiserver.c: Fix obvious error in notifying clients about ISM\n\t  changes - oi-\u003eifp-\u003estatus doesn\u0027t give to us info about ISM,\n\t  oi-\u003estate does.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "f69bd9da8b1f7e0f297d4ffb370552fc41af3c81",
      "tree": "02352cf7c23e0f6feca56b39de18a11c66bea84b",
      "parents": [
        "a4e987e0b0b264bd3898f567cb7efec9b155d740"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jun 03 18:01:50 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jun 03 18:01:50 2005 +0000"
      },
      "message": "2005-06-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ripd.c: (rip_create_socket) Make it static.\n\t  Remove the getservbyname stuff, as RFC2453 3.9.2 says non-RIP\n\t  port messages should be discarded, quagga doesnt accept them,\n\t  no need to lookup port.\n\t  Take a \u0027to\u0027 argument, if socket should be bound to something else.\n\t  setsockopt_so_recvbuf might need privs, move it to the raised\n\t  privileges section.\n\t  dont forget to close the socket if bind fails.\n\t  (rip_send_packet) use strncpy, just in case (address is under\n\t  our control anyway, but still).\n\t  dont duplicate rip_create_socket - just use it.\n\t  (rip_create) rip_create_socket takes an argument now, modify.\n"
    },
    {
      "commit": "a4e987e0b0b264bd3898f567cb7efec9b155d740",
      "tree": "42ec82321bcabe0829090710206556155dd89db9",
      "parents": [
        "a6570ee42f9d3a597c33b73931da5294b43b71ba"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jun 03 17:46:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jun 03 17:46:49 2005 +0000"
      },
      "message": "2005-06-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ripd.c: (rip_create_socket) move it up so rip_send_packet\n\t  can use it too.\n"
    },
    {
      "commit": "a6570ee42f9d3a597c33b73931da5294b43b71ba",
      "tree": "45fa35ceec8e6ce3fa610c63edfa50ba9c11be91",
      "parents": [
        "7085641750bb5ec9b1a73085d9d94ddd9eca7922"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jun 02 16:33:53 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jun 02 16:33:53 2005 +0000"
      },
      "message": "2005-06-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* quagga.xml.in: Fix mistake in bgpd definition. Change dependency\n\t  on zebra to optional. Remove the duplicated stability statements.\n\t* quagga.init.in: svcprop should check PACKAGE_TARNAME, not _NAME.\n\t  no need to check for config file either, there\u0027s already a\n\t  dependency in the manifest.\n"
    },
    {
      "commit": "7085641750bb5ec9b1a73085d9d94ddd9eca7922",
      "tree": "a965825679588da6c8810c72be4faf11eeed1f78",
      "parents": [
        "7755a8c28388f7583c184fc1dcdd6225d75553bf"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jun 02 08:22:47 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jun 02 08:22:47 2005 +0000"
      },
      "message": "2005-06-01 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* NEWS: bgpd work queues and ripd auth-mode change\n"
    },
    {
      "commit": "7755a8c28388f7583c184fc1dcdd6225d75553bf",
      "tree": "522039e13af4a901525438e007130f3583f6a214",
      "parents": [
        "7e440869b51dde1da44f6ffc26643838a1e2b36d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jun 02 08:20:53 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jun 02 08:20:53 2005 +0000"
      },
      "message": "2005-06-01 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rip_interface.c: Fix authentication, no-auth impossible to specify\n\t  (rip_interface_new) default to RIP_NO_AUTH\n\t  (rip_interface_reset) ditto\n\t  (rip_interface_config_write) write out config for simple\n"
    },
    {
      "commit": "7e440869b51dde1da44f6ffc26643838a1e2b36d",
      "tree": "7d6f74f4b4be26f7bedc02faed6b410d16599a58",
      "parents": [
        "200df115ea0ba6f54151d60fe5e9a7f6948de7c3"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 01 11:20:51 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 01 11:20:51 2005 +0000"
      },
      "message": "2005-06-01  Akihiro Mizutani  \u003cmizutani@net-chef.net\u003e\n\n\t* ospf_ism.c (ospf_elect_bdr/ospf_elect_dr): Fix DR election bug.\n"
    },
    {
      "commit": "200df115ea0ba6f54151d60fe5e9a7f6948de7c3",
      "tree": "2aedc0af80d2e805cdf2cefd50432423d2871216",
      "parents": [
        "b31b813671d96ea9e96801508442a90f0ef503fa"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 01 11:17:05 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 01 11:17:05 2005 +0000"
      },
      "message": "2005-06-01 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgpd/(general) refcount struct peer and bgp_info, hence allowing us\n\t  add work_queues for bgp_process.\n\t* bgpd/bgp_route.h: (struct bgp_info) Add \u0027lock\u0027 field for refcount.\n\t  Add bgp_info_{lock,unlock} helper functions.\n\t  Add bgp_info_{add,delete} helpers, to remove need for\n\t  users managing locking/freeing of bgp_info and bgp_node\u0027s.\n\t* bgpd/bgp_table.h: (struct bgp_node) Add a flags field, and\n\t  BGP_NODE_PROCESS_SCHEDULED to merge redundant processing of\n\t  nodes.\n\t* bgpd/bgp_fsm.h: Make the ON/OFF/ADD/REMOVE macros lock and unlock\n\t  peer reference as appropriate.\n\t* bgpd/bgp_damp.c: Remove its internal prototypes for\n\t  bgp_info_delete/free. Just use bgp_info_delete.\n\t* bgpd/bgpd.h: (struct bgp_master) Add work_queue pointers.\n\t  (struct peer) Add reference count \u0027lock\u0027\n\t  (peer_lock,peer_unlock) New helpers to take/release reference\n\t  on struct peer.\n\t* bgpd/bgp_advertise.c: (general) Add peer and bgp_info refcounting\n\t  and balance how references are taken and released.\n\t  (bgp_advertise_free) release bgp_info reference, if appropriate\n\t  (bgp_adj_out_free) unlock peer\n\t  (bgp_advertise_clean) leave the adv references alone, or else\n\t  call bgp_advertise_free cant unlock them.\n\t  (bgp_adj_out_set) lock the peer on new adj\u0027s, leave the reference\n\t  alone otherwise. lock the new bgp_info reference.\n\t  (bgp_adj_in_set) lock the peer reference\n\t  (bgp_adj_in_remove) and unlock it here\n\t  (bgp_sync_delete) make hash_free on peer conditional, just in\n\t  case.\n\t* bgpd/bgp_fsm.c: (general) document that the timers depend on\n\t  bgp_event to release a peer reference.\n\t  (bgp_fsm_change_status) moved up the file, unchanged.\n\t  (bgp_stop) Decrement peer lock as many times as cancel_event\n\t  canceled - shouldnt be needed but just in case.\n\t  stream_fifo_clean of obuf made conditional, just in case.\n\t  (bgp_event) always unlock the peer, regardless of return value\n\t  of bgp_fsm_change_status.\n\t* bgpd/bgp_packet.c: (general) change several bgp_stop\u0027s to BGP_EVENT\u0027s.\n\t  (bgp_read) Add a mysterious extra peer_unlock for ACCEPT_PEERs\n\t  along with a comment on it.\n\t* bgpd/bgp_route.c: (general) Add refcounting of bgp_info, cleanup\n\t  some of the resource management around bgp_info. Refcount peer.\n\t  Add workqueues for bgp_process and clear_table.\n\t  (bgp_info_new) make static\n\t  (bgp_info_free) Ditto, and unlock the peer reference.\n\t  (bgp_info_lock,bgp_info_unlock) new exported functions\n\t  (bgp_info_add) Add a bgp_info to a bgp_node in correct fashion,\n\t  taking care of reference counts.\n\t  (bgp_info_delete) do the opposite of bgp_info_add.\n\t  (bgp_process_rsclient) Converted into a work_queue work function.\n\t  (bgp_process_main) ditto.\n\t  (bgp_processq_del) process work queue item deconstructor\n\t  (bgp_process_queue_init) process work queue init\n\t  (bgp_process) call init function if required, set up queue item\n\t  and add to queue, rather than calling process functions directly.\n\t  (bgp_rib_remove) let bgp_info_delete manage bgp_info refcounts\n\t  (bgp_rib_withdraw) ditto\n\t  (bgp_update_rsclient) let bgp_info_add manage refcounts\n\t  (bgp_update_main) ditto\n\t  (bgp_clear_route_node) clear_node_queue work function, does\n\t  per-node aspects of what bgp_clear_route_table did previously\n\t  (bgp_clear_node_queue_del) clear_node_queue item delete function\n\t  (bgp_clear_node_complete) clear_node_queue completion function,\n\t  it unplugs the process queues, which have to be blocked while\n\t  clear_node_queue is being processed to prevent a race.\n\t  (bgp_clear_node_queue_init) init function for clear_node_queue\n\t  work queues\n\t  (bgp_clear_route_table) Sets up items onto a workqueue now, rather\n\t  than clearing each node directly. Plugs both process queues to\n\t  avoid potential race.\n\t  (bgp_static_withdraw_rsclient) let bgp_info_{add,delete} manage\n\t  bgp_info refcounts.\n\t  (bgp_static_update_rsclient) ditto\n\t  (bgp_static_update_main) ditto\n\t  (bgp_static_update_vpnv4) ditto, remove unneeded cast.\n\t  (bgp_static_withdraw) see bgp_static_withdraw_rsclient\n\t  (bgp_static_withdraw_vpnv4) ditto\n\t  (bgp_aggregate_{route,add,delete}) ditto\n\t  (bgp_redistribute_{add,delete,withdraw}) ditto\n\t* bgpd/bgp_vty.c: (peer_rsclient_set_vty) lock rsclient list peer\n\t  reference\n\t  (peer_rsclient_unset_vty) ditto, but unlock same reference\n\t* bgpd/bgpd.c: (peer_free) handle frees of info to be kept for lifetime\n\t  of struct peer.\n\t  (peer_lock,peer_unlock) peer refcount helpers\n\t  (peer_new) add initial refcounts\n\t  (peer_create,peer_create_accept) lock peer as appropriate\n\t  (peer_delete) unlock as appropriate, move out some free\u0027s to\n\t  peer_free.\n\t  (peer_group_bind,peer_group_unbind) peer refcounting as\n\t  appropriate.\n\t  (bgp_create) check CALLOC return value.\n\t  (bgp_terminate) free workqueues too.\n\t* lib/memtypes.c: Add MTYPE_BGP_PROCESS_QUEUE and\n\t  MTYPE_BGP_CLEAR_NODE_QUEUE\n"
    },
    {
      "commit": "b31b813671d96ea9e96801508442a90f0ef503fa",
      "tree": "2e5e369667da72c91e9e3dacacefb1eca1d5a59c",
      "parents": [
        "cf333c7ac1ce752369ffe7ddd6edeb10f0d9c9f7"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue May 31 10:24:28 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue May 31 10:24:28 2005 +0000"
      },
      "message": "\t* ospf6d.c: No need for double \u0027;\u0027. Fixes parsing \"show ipv6 ospf6\n\t  database ...\" commands for vtysh by extract.pl. Remove duplicate\n\t  install_element calls.\n\n\tFixes bugzilla #194. [backport candidate]\n"
    },
    {
      "commit": "cf333c7ac1ce752369ffe7ddd6edeb10f0d9c9f7",
      "tree": "d87764320171b26332955f47bad6eb857e32c046",
      "parents": [
        "1dcb51729b4a8bd7ed21126c7e5e61bc096f8674"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue May 31 09:18:25 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue May 31 09:18:25 2005 +0000"
      },
      "message": "Ignore generated prototype.smf.\n"
    },
    {
      "commit": "1dcb51729b4a8bd7ed21126c7e5e61bc096f8674",
      "tree": "751f35fe2742a037d9f5b4651cd3a8c53a9453d1",
      "parents": [
        "0cb8a01c38284a5a3f4ee4b017b69cd5f3e39f9a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 31 08:38:50 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 31 08:38:50 2005 +0000"
      },
      "message": "2005-05-31 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zserv.c: (zsend_route_multipath) Fix bug if route is sent\n\t  with no NEXTHOP_FLAG_FIB nexthops. As ZAPI_MESSAGE_IFINDEX\n\t  and ZAPI_MESSAGE_NEXTHOP are always set, clients would try\n\t  read non-existent nexthop information and hit stream assert.\n\t  Zserv is still broken for multi-nexthop messages, but it always was.\n"
    },
    {
      "commit": "0cb8a01c38284a5a3f4ee4b017b69cd5f3e39f9a",
      "tree": "c3630492d44c8a9f45eed668e960d644f322f595",
      "parents": [
        "033e861222f07d68697aa883d9391a30c3e011c6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 29 11:27:24 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 29 11:27:24 2005 +0000"
      },
      "message": "2005-05-29 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ripd.c: (rip_output_process) fix error which crept in my\n\t  previous rip auth untanglement commit - it had become impossible\n\t  to not have authentication (even for v1).\n"
    },
    {
      "commit": "033e861222f07d68697aa883d9391a30c3e011c6",
      "tree": "e21f614e529e61e4de6ed8c3d64cae12ed20c9c2",
      "parents": [
        "70601e0691e178ca23f14fdc666a97efce26897f"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat May 28 04:50:54 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat May 28 04:50:54 2005 +0000"
      },
      "message": "Sync bgpd and ripd set_metric_addsub_cmd commands. Fixes bugzilla #192.\n[backport candidate]\n"
    },
    {
      "commit": "70601e0691e178ca23f14fdc666a97efce26897f",
      "tree": "02e822953d578b96c53a053b97573f6c009c6461",
      "parents": [
        "54a6ed38ac38777f5c2966f74a85cc12659efc87"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri May 27 03:26:57 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri May 27 03:26:57 2005 +0000"
      },
      "message": "\t* bgp_routemap.c: Stop leaking communities.\n\n\tFixes bugzilla #89. [backport candidate]\n"
    },
    {
      "commit": "54a6ed38ac38777f5c2966f74a85cc12659efc87",
      "tree": "d38112804dd53e9305514feb3d570a5214085745",
      "parents": [
        "500e418921b0a2141e182a346f8d32864516236d"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu May 26 22:12:33 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu May 26 22:12:33 2005 +0000"
      },
      "message": "\t* bgpd.c: Deleting bgp-\u003ersclient list needs fix similar to pree-groups\n\t  deleting fix. Avoid leaking bgp-\u003egroup, bgp-\u003epeer and bgp-\u003ersclient\n\t  lists.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "500e418921b0a2141e182a346f8d32864516236d",
      "tree": "e5a67868972b4807506c8fd1a721347f4bdb8c89",
      "parents": [
        "e7fe02fd717a4c62373f3c46a4439e28b43c7dab"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 26 17:11:13 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 26 17:11:13 2005 +0000"
      },
      "message": "2005-05-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_abr.c: (ospf_abr_update_aggregate) Fix comment, cost bug itself\n\t  had been fixed long ago by Sowmini.\n"
    },
    {
      "commit": "e7fe02fd717a4c62373f3c46a4439e28b43c7dab",
      "tree": "3ba9923c9cab86808a226f15f9a6c1481f9e433e",
      "parents": [
        "b6b7cff22df912938f6cfd755dcad8cf915be2d0"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu May 26 11:30:38 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu May 26 11:30:38 2005 +0000"
      },
      "message": "\t* isis_dr.c: Fix copy\u0026paste error in isis_dr_resign().\n\n\t[backport candidate]\n"
    },
    {
      "commit": "b6b7cff22df912938f6cfd755dcad8cf915be2d0",
      "tree": "26599303f4a7b7364d8d2750f3126b013d78b781",
      "parents": [
        "dc625e86063125f8ecaaa1502c3cf53f44d76eff"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu May 26 08:29:07 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu May 26 08:29:07 2005 +0000"
      },
      "message": "\t* bgpd.c: Don\u0027t crash while deleting list of peer-groups.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "dc625e86063125f8ecaaa1502c3cf53f44d76eff",
      "tree": "243a52620109d888335b26cf8fdf98052b62e801",
      "parents": [
        "cf96db1cef3e039f3a87c0bc36206b882e804949"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu May 26 06:26:40 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu May 26 06:26:40 2005 +0000"
      },
      "message": "\t* rip_routemap.c: In case of \u00270.0.0.0\u0027 used as \u0027nexthop\u0027, use sender\n\t  address as nexthop in routemap.\n\n\tFixes bugzilla #186. [backport candidate]\n"
    },
    {
      "commit": "cf96db1cef3e039f3a87c0bc36206b882e804949",
      "tree": "10c9cb9bae5772bdfb340ae263b59a3d4deb3ce4",
      "parents": [
        "b5f29603399070041289729e175fbec085e8e904"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed May 25 21:15:32 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed May 25 21:15:32 2005 +0000"
      },
      "message": "\t* rip_routemap.c: Make \"match interface\" routemap command match both -\n\t  in and out interfaces.\n\n\tFixes bugzilla #185. [backport candidate]\n"
    },
    {
      "commit": "b5f29603399070041289729e175fbec085e8e904",
      "tree": "320e22b39f6e0ff1f689f089898cb7b2ffc1cbf9",
      "parents": [
        "92c9f2229fea8fdef31a701d36d7df91f3e9905d"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed May 25 21:00:28 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed May 25 21:00:28 2005 +0000"
      },
      "message": "\t* bgpd.c: Fix obvious (routeserver patch) merge error. This makes \"no\n\t  neighbor x.x.x.x routemap [export|import] commands work again.\n\n\tFixes bugzilla #184. [backport candidate]\n"
    },
    {
      "commit": "92c9f2229fea8fdef31a701d36d7df91f3e9905d",
      "tree": "66c1c5df86c8d7bf1ef05e39505898eaf3919f98",
      "parents": [
        "8176c19f6104c6fa6bee88618b41719938fb42cc"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 25 12:21:13 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 25 12:21:13 2005 +0000"
      },
      "message": "2005-05-25 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* isisd.c: (show_isis_generated_topology) change to _RO version\n\t  of list macro. remove the extra listnode variable. one of the\n\t  macros had had incorrect number of arguments.\n"
    },
    {
      "commit": "8176c19f6104c6fa6bee88618b41719938fb42cc",
      "tree": "8344d38d4578eba51862a265c69cf04d1b6f63d8",
      "parents": [
        "00d252cb5ff21ecc537ab40385316b41622a95e2"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 24 09:33:52 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 24 09:33:52 2005 +0000"
      },
      "message": "2005-05-24 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* memtypes.h: update this auto-built file. (maybe we should just\n\t  remove it, is GNU awk a terrible dependency to have?)\n"
    },
    {
      "commit": "00d252cb5ff21ecc537ab40385316b41622a95e2",
      "tree": "c0132f4be53d8ae251ecb1dd8c39816f8734d08f",
      "parents": [
        "269d74fdc39a612da8f627bf97628c68d25a16ab"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 14:19:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 14:19:54 2005 +0000"
      },
      "message": "2005-05-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* bgp_fsm.h: Add extern qualifier to exported functions\n\t* bgp_nexthop.c: add static to nexthop specific globals\n\t* *.h: Add guard defines\n"
    },
    {
      "commit": "269d74fdc39a612da8f627bf97628c68d25a16ab",
      "tree": "8add14e852e83369123ee576a995b28f006800d4",
      "parents": [
        "a94feb380df46bdfc742257648c9825e8e7b17c0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 13:42:46 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 13:42:46 2005 +0000"
      },
      "message": "2005-05-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* workqueue.h: Add a WQ_QUEUE_BLOCKED item_status return code,\n\t  to allow a queue function to indicate the queue is not\n\t  ready/blocked - rather than any problem with the item at hand.\n\t  Add a notion of being able to \u0027plug\u0027 and \u0027unplug\u0027 a queue.\n\t  Add helpers to plug/unplug a queue.\n\t  Add a completion callback, to be called when a queue is emptied.\n\t* workqueue.c: (work_queue_new) remove useless list_free.\n\t  (work_queue_schedule) new internal helper function to schedule\n\t  queue, if appropriate.\n\t  (work_queue_add) use work_queue_schedule\n\t  (show_work_queues) Print \u0027P\u0027 if queue is plugged.\n\t  (work_queue_plug) new API function, plug a queue - ie prevent it\n\t  from \u0027drained\u0027 / processed / scheduled.\n\t  (work_queue_unplug) unplug a queue, allowing it to be drained\n\t  / scheduled / processed again.\n\t  (work_queue_run) Add support for WQ_QUEUE_BLOCKED.\n\t  Add comment for RETRY_NOW case.\n\t  Make hysteris more aggresive in ramping up granularity, improves\n\t  performance significantly.\n\t  Add support for calling completion callback when queue is emptied,\n\t  possibly useful for knowing when to unplug a queue.\n"
    },
    {
      "commit": "a94feb380df46bdfc742257648c9825e8e7b17c0",
      "tree": "1b79a4bb5dcab782036a57cb684ee7c392ef13b3",
      "parents": [
        "d4f0960cb23abc7528d7282fa08c68131eae5f93"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 13:17:29 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 13:17:29 2005 +0000"
      },
      "message": "2005-05-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* bgp_routemap.c: add semi-colons to VTY_GET_* to match vty.h change\n"
    },
    {
      "commit": "d4f0960cb23abc7528d7282fa08c68131eae5f93",
      "tree": "8a1bc8eac474c49ca76f27971c65f74fd5a74c89",
      "parents": [
        "d5c925396629ef93cb38c2a63c3ac63911a341a6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 12:43:34 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 12:43:34 2005 +0000"
      },
      "message": "2005-05-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* routemap.c: (rmap_onmatch_goto) fix crash if \u0027continue\u0027 command\n\t  is used, which does not supply an argv[0].\n\t  this is a backport candidate /iff/ the trailing ; is removed\n\t  from VTY_GET_INTEGER_RANGE\n\t* vty.h: fix the VTY_GET macros, do {..} while(0) so they have\n\t  correct function like syntax in usage.\n"
    },
    {
      "commit": "d5c925396629ef93cb38c2a63c3ac63911a341a6",
      "tree": "9bc19245fec73ec4e1f488775483f51b143e3b67",
      "parents": [
        "e387e6654fe75a5f043ea21b483e78bf0f3d4447"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 12:33:58 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 12:33:58 2005 +0000"
      },
      "message": "2005-05-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* memtypes.awk: use character classes, which work correctly in\n\t  all LC_COLLATE environments, unlike A-Z, which doesnt work in\n\t  eg estonian collate order. Reported by Hasso.\n"
    },
    {
      "commit": "e387e6654fe75a5f043ea21b483e78bf0f3d4447",
      "tree": "928bed31a8597bf7c52dcedc51e02a7f5b063e1d",
      "parents": [
        "e83e2080cecffa86267c07b46bbb5a9677b37996"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 19 02:13:28 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 19 02:13:28 2005 +0000"
      },
      "message": "2005-05-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* memtypes.c: (memory_list_bgp) add MTYPE_BGP_PEER_HOST\n"
    },
    {
      "commit": "e83e2080cecffa86267c07b46bbb5a9677b37996",
      "tree": "4523977a4fea76bdf2609ecb656a175aeaa4032f",
      "parents": [
        "22db9dec63766cdf6dcd3ecb4b48177fb0e48143"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 19 02:12:25 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 19 02:12:25 2005 +0000"
      },
      "message": "2005-05-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* bgp_network.c: (bgp_accept) use XSTRDUP\n\t* bgpd.c: (peer_delete) XFREE the correct memtype, not free.\n\t  (peer_create) use XSTRDUP\n\t* bgp_packet.c: (bgp_stream_dup) deleted, stream_dup should be used\n\t  (various) update -\u003e s/bgp_stream_dup/stream_dup\n"
    },
    {
      "commit": "22db9dec63766cdf6dcd3ecb4b48177fb0e48143",
      "tree": "3de4512bd147a2822c3af46aacc8822ea1083e78",
      "parents": [
        "2ba9a37add807b1fbd103424b1365fac8fb2b78f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 19 01:50:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 19 01:50:11 2005 +0000"
      },
      "message": "2005-05-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* bgp_fsm.c: (bgp_stop) use sockunion_free, not XFREE..\n\t* bgp_network.c: (bgp_getsockname) ditto\n\t* bgp_routemap.c: (route_match_peer) ditto, als use a ret value and\n\t  remove one sockunion_free.\n\t* bgpd.c: (peer_delete) ditto\n"
    },
    {
      "commit": "2ba9a37add807b1fbd103424b1365fac8fb2b78f",
      "tree": "5b9143db0816baf0a02db384c6dab0dcde5dda6d",
      "parents": [
        "dc81807a5b2b3dc8138d74e23ece71402a6c03b4"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 19 01:37:50 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 19 01:37:50 2005 +0000"
      },
      "message": "2005-05-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sockunion.c: (sockunion_getsockname) use MTYPE_SOCKUNION, not TMP\n\t  (sockunion_getpeername) ditto\n"
    },
    {
      "commit": "dc81807a5b2b3dc8138d74e23ece71402a6c03b4",
      "tree": "7f2850cf793ea8c5241b85b18e971bd763707f14",
      "parents": [
        "a3387a4488c35d322d3c78973c967b2be5967b6e"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 19 01:30:53 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 19 01:30:53 2005 +0000"
      },
      "message": "2005-05-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* thread.c: (thread_cancel_event) the number of pending events\n\t  cancelled is potentially useful information, dont throw it away,\n\t  pass it back to the caller.\n"
    },
    {
      "commit": "a3387a4488c35d322d3c78973c967b2be5967b6e",
      "tree": "678da23a64c1bb41c2c6c87b362f62f9db22de03",
      "parents": [
        "024a7f06979b467299a85e915b78af456a89e3a6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 18 23:29:57 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 18 23:29:57 2005 +0000"
      },
      "message": "2005-05-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_interface.c: (ospf_if_table_lookup) Fix a serious bug\n\t  a less serious one.\n\t  1: this function is supposed to lookup\n\t  entries in the oifs ospf_interface route_table and return either\n\t  an existing oi or NULL to indicate not found, its caller depends\n\t  on this, yet this function uses route_node_get which /always/\n\t  returns a route_node - one is created if none exists. Use\n\t  route_node_lookup instead. This should fix root cause of the\n\t  reports of the (ospf_add_to_if) assert being hit.\n\t  2: oi\u0027s are inserted into this table with prefixlength set to\n\t  /32 (indeed, it should be a hash table, not a route_table),\n\t  however prefixlength to lookup was not changed, if no valid entry\n\t  can be inserted other than /32, then nothng but /32 should be\n\t  looked up. This possibly only worked by fluke..\n\t  Fix confirmed by 2 reporters (one list, one IRC), definitely a\n\t  backport candidate once it has been incubated in HEAD for a while.\n\t  Thanks to Patrick Friedel and Ivan Warren for testing.\n"
    },
    {
      "commit": "024a7f06979b467299a85e915b78af456a89e3a6",
      "tree": "e9c28719f8812dd808699dd6108532d9526a476b",
      "parents": [
        "14c1f187acdca1278e035e30d4c036d6eacf9721"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 15 14:25:08 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 15 14:25:08 2005 +0000"
      },
      "message": "2005-05-15 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* getopt.h: It\u0027s not just __GNU_LIBRARY__ which defines\n\t  getopt, eg __EXTENSIONS__ does too on SunOS. It still seems\n\t  awfully fragile though.\n\t* getopt.c: include zebra.h after config.h, before including\n\t  getopt.h so that things at least are consistent..\n\t* getopt1.c: ditto\n"
    },
    {
      "commit": "14c1f187acdca1278e035e30d4c036d6eacf9721",
      "tree": "596fcb876e4395785399465e15ec2d922d0f37c8",
      "parents": [
        "65c1cafd3a23ee877d184f03b1c36f0bf5a9db01"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 13 20:11:53 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 13 20:11:53 2005 +0000"
      },
      "message": "- revert the commenting of touch doc/quagga.info, wont work because\n  defines.texi is autogenerated every configure time so it will always\n  be newer than quagga.info, and hence require quagga.info to be built. drat.\n"
    },
    {
      "commit": "65c1cafd3a23ee877d184f03b1c36f0bf5a9db01",
      "tree": "1427c6bc6ee903b1bfc125f72de5215ee8bfb49c",
      "parents": [
        "cbc6d742aeb8b31580fca1e7e959da4e06e3e468"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 13 07:26:07 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 13 07:26:07 2005 +0000"
      },
      "message": "2005-05-13 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* prototype.daemons.in: Move the Solaris 10 SMF specific stuff to\n\t  a seperate package.\n\t* depend.smf: dependencies for smf package\n\t* pkginfo.smf.tmpl.in: pkginfo for smf\n\t* prototype.smf.in: prototype for smf\n\t* Makefile.am: Add smf to pkg_names\n"
    },
    {
      "commit": "cbc6d742aeb8b31580fca1e7e959da4e06e3e468",
      "tree": "52680f64297d5e95d51dcf530c862556eb51d83d",
      "parents": [
        "0f3b199a01cab5e5ae9edf498ba58f726b25893a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 13 07:16:28 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 13 07:16:28 2005 +0000"
      },
      "message": "- Forgot to commit ChangeLog\n"
    },
    {
      "commit": "0f3b199a01cab5e5ae9edf498ba58f726b25893a",
      "tree": "54089eac1a34f777361e0664109c94e3add29798",
      "parents": [
        "e3ca81413a6c51a0ef09707bc9926d6edec4f71b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 13 07:15:35 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 13 07:15:35 2005 +0000"
      },
      "message": "2005-05-13 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* quagga.xml.in: Sigh, XML child elements are order-sensitive.\n\t* prototype.doc.in: info/dir doesnt get created always.. comment\n\t  out for now, likely needs to be done with an install method.\n"
    },
    {
      "commit": "e3ca81413a6c51a0ef09707bc9926d6edec4f71b",
      "tree": "6acabcead258cc8c1c91bda427442c760f09ac98",
      "parents": [
        "69310a679aef2b532f6851298b453eb7ca4d3534"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 13 07:09:50 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 13 07:09:50 2005 +0000"
      },
      "message": "2005-05-13 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: Comment out the touch doc/quagga.info hack. I\u0027m\n\t  hoping it\u0027s not needed anymore, cause it breaks out of tree builds\n\t  which i\u0027ve become fond of.. Plus I think we sorted out most of\n\t  the original problems (updated texinfo.tex, moved the version\n\t  info to an autogenerated by automake version.texi). Dist users\n\t  most definitely wont be affected.\n"
    },
    {
      "commit": "69310a679aef2b532f6851298b453eb7ca4d3534",
      "tree": "1c6a2f3520b0253ae7db42c776e69507c53192ef",
      "parents": [
        "d4e47287efd60f77b473f8d5677e4dac08c192b0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 11 18:09:59 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 11 18:09:59 2005 +0000"
      },
      "message": "2005-05-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Fix memory leaks in opaque AS-scope LSAs, reported and\n\t  with much debugging done by by scott collins \u003cscollins@agile.tv\u003e.\n\t  (possible backport candidate?)\n\t* ospf_lsa.c: (ospf_discard_from_db) dont call\n\t  ospf_ase_unregister_external_lsa for opaque-lsa\u0027s, opaques are\n\t  never registered with ase in the first place.\n\t* ospf_packet.c: (general) Disabuse opaque related code of its\n          tendency to try gather up things into temporary lists.\n          (ospf_ls_upd) remove the temporary lists opaque uses, call\n          opaque functions inline, just like all other types.\n          (ospf_ls_ack) ditto.\n          (ospf_recv_packet) fixup sign warning.\n        * ospf_opaque.c: (general) fix the unneeded use of lists, and\n          untwist some of the logic.\n          (ospf_opaque_self_originated_lsa_received) take a single LSA\n          as argument, not a list of them. Remove the list loop. Logic\n          otherwise unchanged.\n          (ospf_opaque_ls_ack_received) Mostly ditto. But untwist the logic,\n          move the actions up into the switch block, remove the goto\u0027s and\n          sanitise the logic near the end a bit.\n        * ospf_opaque.h: Adjust definitions of aforementioned functions\n          in ospf_opaque.c to match.\n"
    },
    {
      "commit": "d4e47287efd60f77b473f8d5677e4dac08c192b0",
      "tree": "06dfe25619e4cee9601a92b07b7a61625c0f6c4a",
      "parents": [
        "42c981994adcf7fb2e1c2bea170cc5f196d5a1d7"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed May 11 15:56:21 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed May 11 15:56:21 2005 +0000"
      },
      "message": "2005-05-11 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* rip_interface.c (rip_interface_add): Need to call\n\t  rip_passive_interface_apply (was already calling it in\n\t  rip_interface_up).\n\n\t[backport candidate]\n"
    },
    {
      "commit": "42c981994adcf7fb2e1c2bea170cc5f196d5a1d7",
      "tree": "ba2bae75f527d0a034cb42ee3177db9f47802fda",
      "parents": [
        "4dadc291e56195886fd047690ded9686f4e013fa"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat May 07 02:22:51 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat May 07 02:22:51 2005 +0000"
      },
      "message": "2005-05-07 Yar Tikhiy \u003cyar@comp.chem.msu.su\u003e\n\n\t* configure.ac: Check for OSes which support passing ifindex in\n\t  struct ip_mreq.\n\t* lib/sockopt.c: Add support for BSD style ifindex in ip_mreq.\n\t* ospfd/ospf_network.c: Log ifindex on multicast membership leave/join\n\t  events.\n"
    },
    {
      "commit": "4dadc291e56195886fd047690ded9686f4e013fa",
      "tree": "ea7c0690912d2b7d0c487f6855960e768fff1b6e",
      "parents": [
        "69e10adaf28d4e116c38db2648786557fe131828"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:37:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:37:42 2005 +0000"
      },
      "message": "2005-05-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * (general) extern and static qualifiers added.\n          unspecified arguments in definitions fixed, typically they should\n          be \u0027void\u0027.\n          function casts added for callbacks.\n          Guards added to headers which lacked them.\n          Proper headers included rather than relying on incomplete\n          definitions.\n          gcc noreturn function attribute where appropriate.\n        * ospf_opaque.c: remove the private definition of ospf_lsa\u0027s\n          ospf_lsa_refresh_delay.\n        * ospf_lsa.h: export ospf_lsa_refresh_delay\n        * ospf_packet.c: (ospf_make_md5_digest) make *auth_key const,\n          correct thing to do - removes need for the casts later.\n        * ospf_vty.c: Use vty.h\u0027s VTY_GET_INTEGER rather than ospf_vty\u0027s\n          home-brewed versions, shuts up several warnings.\n        * ospf_vty.h: remove VTY_GET_UINT32. VTY_GET_IPV4_ADDRESS and\n          VTY_GET_IPV4_PREFIX moved to lib/vty.h.\n        * ospf_zebra.c: (ospf_distribute_list_update_timer) hacky\n          overloading of the THREAD_ARG pointer should at least use\n          uintptr_t.\n"
    },
    {
      "commit": "69e10adaf28d4e116c38db2648786557fe131828",
      "tree": "4e00214ef16ba68f9d9b6a3fa8ff5c66a1a54d93",
      "parents": [
        "8cc4198f9fabe5f10f5a773de1503d82f33a01fb"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:27:33 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:27:33 2005 +0000"
      },
      "message": "2005-05-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zserv.h: Remove ZEBRA_PORT definition, its in lib/zebra.h now\n"
    },
    {
      "commit": "8cc4198f9fabe5f10f5a773de1503d82f33a01fb",
      "tree": "77045da709ff66629bd12029b9ee17700360909b",
      "parents": [
        "e7fe8c88c3d552400e1ae3ae9243319ab95d6f2d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:25:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:25:49 2005 +0000"
      },
      "message": "2005-05-06 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (general) extern and static\u0027ification of functions in code and\n\t  header.\n\t  Cleanup any definitions with unspecified arguments.\n\t  Add casts for callback assignments where the callback is defined,\n\t  typically, as passing void *, but the function being assigned has\n\t  some other pointer type defined as its argument, as gcc complains\n\t  about casts from void * to X* via function arguments.\n\t  Fix some old K\u0026R style function argument definitions.\n\t  Add noreturn gcc attribute to some functions, as appropriate.\n\t  Add unused gcc attribute to some functions (eg ones meant to help\n\t  while debugging)\n\t  Add guard defines to headers which were missing them.\n\t* command.c: (install_node) add const qualifier, still doesnt shut\n\t  up the warning though, because of the double pointer.\n\t  (cmp_node) ditto\n\t* keychain.c: (key_str2time) Add GET_LONG_RANGE() macro, derived\n\t  fromn vty.h ones to fix some of the (long) \u003c 0 warnings.\n\t* thread.c: (various) use thread_empty\n\t  (cpu_record_hash_key) should cast to uintptr_t, a stdint.h type\n\t* vty.h: Add VTY_GET_IPV4_ADDRESS and VTY_GET_IPV4_PREFIX so they\n\t  removed from ospfd/ospf_vty.h\n\t* zebra.h: Move definition of ZEBRA_PORT to here, to remove\n\t  dependence of lib on zebra/zserv.h\n"
    },
    {
      "commit": "e7fe8c88c3d552400e1ae3ae9243319ab95d6f2d",
      "tree": "57344fab75787ff46b96867fa2b739d5b1991aa7",
      "parents": [
        "15935e9ae1619288f0f78fcc0dac15c1c25d41c6"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri May 06 19:33:35 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri May 06 19:33:35 2005 +0000"
      },
      "message": "\t* sockunion.c: Fix warning message.\n"
    },
    {
      "commit": "15935e9ae1619288f0f78fcc0dac15c1c25d41c6",
      "tree": "5a12ca48a8d3619f634134744abb0cf6e5f9a589",
      "parents": [
        "0dab930314e215a627f848ffa824ed995eb2e13c"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 03 09:27:23 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 03 09:27:23 2005 +0000"
      },
      "message": "2005-05-03 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (general) More cleaning up of stream abuse, isisd should be\n\t  back to previous functionality. Replace various XMALLOC+memset\u0027s\n\t  with XCALLOC\n\t* isis_tlv.c: (tlv_add_padding) use stream_put to clear the stream\n\t  rather than forward endp, as isisd reuses streams.\n\t* isis_pdu.c: (process_lsp) cleanup direct reference to stream endp\n\t  (send_lsp) manual copy of a stream cleaned up to use stream_copy.\n\t* isis_network.c: (isis_recv_pdu_bcast) replace direct memcpy with\n\t  stream_write\n\t  (isis_recv_pdu_p2p) replace recvfrom directly into stream with\n\t  stream_recvfrom. Remove dangerous and now unneeded manual update\n\t  of endp.\n\t  (isis_recv_pdu_bcast / non-GNU_LINUX) Replace direct memcpy with\n\t  stream_write.\n\t  (isis_recv_pdu_p2p) replace read direct into stream with\n\t  stream_read_try, and hence remove the manual update of endp.\n\t* isis_lsp.c: (lsp_update_data) manual stream dup replaced with\n\t  stream_dup.\n\t  (lsppdu_realloc) mempcy into stream data replaced with stream_put.\n\t  (lsp_build_nonpseudo) remove mysterious stream_forward_endp\u0027s -\n\t  which were originally stream_set_putp - shouldn\u0027t be needed\n\t  now that all the manual fiddling of private stream data has been\n\t  corrected.\n\t  (build_topology_lsp_data) remove unneeded twiddling of endp,\n\t  appears to be due to lsppdu_realloc(), but it appears to sort of\n\t  do the right thing wrt streams.\n"
    },
    {
      "commit": "0dab930314e215a627f848ffa824ed995eb2e13c",
      "tree": "f84189f12990561a616c65be59d8cb6ebef94569",
      "parents": [
        "0c2029e9121d4c80380c174c2503b7deaf4e03ce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 03 09:07:56 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 03 09:07:56 2005 +0000"
      },
      "message": "2005-05-03 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* stream.h: Add comment about the special zero-ing ability of\n\t  stream_put.\n\t  (stream_recvmsg, stream_write) should return ssize_t and size_t\n\t  respectively. Should both be extern linkage.\n\t  (stream_recvfrom) Stream aware wrapper around recvfrom, in style\n\t  of stream_read_try.\n\t* stream.c: (stream_recvfrom) new function, wrapper around recvfrom.\n\t  (stream_recvmsg, stream_write) ssize_t and size_t return values\n"
    },
    {
      "commit": "0c2029e9121d4c80380c174c2503b7deaf4e03ce",
      "tree": "830eefd420401b8dec14ac8dc6b7b0a3ea01cd82",
      "parents": [
        "30d0383dcf03960d0b32b127475e749f0b87e748"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 29 03:20:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 29 03:20:54 2005 +0000"
      },
      "message": "2005-04-29 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* NEWS: Added some more 0.99 news.\n\t* configure.ac: bump to 0.99.1 (0.99.0 was never released except\n\t  via CVS snapshots)\n"
    },
    {
      "commit": "30d0383dcf03960d0b32b127475e749f0b87e748",
      "tree": "3618935be3a52c680338381d86d992211cc6d0fe",
      "parents": [
        "649e853f773208300dd4c07e5e56a1ddb5aa1d7b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 29 03:16:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 29 03:16:42 2005 +0000"
      },
      "message": "2005-04-29 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* defines.texi.in: Add PACKAGE_NAME, PACKAGE_STRING.\n\t* quagga.texi: Use PACKAGE_NAME, this is more to give me an excuse\n\t  to update quagga.texi so that the \u0027UPDATED\u0027 in version.texi will\n\t  be more recent, the Makefile seems to be dumb and not examine\n\t  the texi files from which quagga.texi is generated.\n\t* quagga.info: Fresh copy to match updates.\n"
    },
    {
      "commit": "649e853f773208300dd4c07e5e56a1ddb5aa1d7b",
      "tree": "2f901ffc788dbe588312f319ed7440e3aea90367",
      "parents": [
        "5e4008f7b8d478a74efec68589a7acfbb049d286"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 28 18:21:15 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 28 18:21:15 2005 +0000"
      },
      "message": "2005-04-28 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* quagga.info: updated\n\t* Makefile.am: automake seems to depend doc built stuff on srcdir\n\t  for some reason, or maybe its cause we have quagga.info,\n\t  quagga.texi in CVS - not sure. Anyway, the static rule for\n\t  quagga.pdf should depend on the srcdir quagga.texi in that case.\n"
    },
    {
      "commit": "5e4008f7b8d478a74efec68589a7acfbb049d286",
      "tree": "8bedbc9758e5285bac260db10dd0030959a7ec74",
      "parents": [
        "08e044f4eb21d8770c3a0d79c473ce1d807a9023"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 28 18:19:08 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 28 18:19:08 2005 +0000"
      },
      "message": "2005-04-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* NEWS: Added some 0.99 news\n"
    },
    {
      "commit": "08e044f4eb21d8770c3a0d79c473ce1d807a9023",
      "tree": "04719c5ef9496683198f4b16d19ee5e2705d4218",
      "parents": [
        "4d38fdb421ee04430ac2f4d4e8ef4a4e27c1020b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 28 17:45:37 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 28 17:45:37 2005 +0000"
      },
      "message": "2005-04-28 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* quagga.info: updated\n"
    },
    {
      "commit": "4d38fdb421ee04430ac2f4d4e8ef4a4e27c1020b",
      "tree": "a7bdb41cd18be9f612c54531efef5a5ccaab36f1",
      "parents": [
        "8b70d0b04f6bba2f30827d71084dd74fd00808b3"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 28 17:35:14 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 28 17:35:14 2005 +0000"
      },
      "message": "2005-04-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rib.h: (struct rib) Add lock field for refcounting.\n\t* zserv.h: (struct zebra_t) Add a ribq workqueue to the zebra\n\t  \u0027master\u0027 struct.\n\t* zserv.c: (zread_ipv4_add) XMALLOC then memset should be XCALLOC.\n\t* zebra_rib.c: Clean up refcounting of route_node, make struct rib\n\t  refcounted and convert rib_process to work-queue. In general,\n\t  rib\u0027s should be rib_addnode\u0027d and delnode\u0027d to route_nodes, and\n\t  these symmetrical functions will manage the locking of referenced\n\t  route_node and freeing of struct rib - rather than having users\n\t  manage each seperately - with much scope for bugs..\n\t  (newrib_free) removed and replaced with rib_lock\n\t  (rib_lock) new function, check state of lock and increment.\n\t  (rib_unlock) new function, check lock state and decrement. Free\n\t  struct rib if refcount hits 0, freeing struct nexthop\u0027s, as\n\t  newrib_free did.\n\t  (rib_addnode) Add RIB to route_node, locking both.\n\t  (rib_delnode) Delete RIB from route_node, unlocking each.\n\t  (rib_process) Converted to a work-queue work function.\n\t  Functional changes are minimal, just arguments, comments and\n\t  whitespace.\n\t  (rib_queue_add_qnode) Helper function to setup a ribq item.\n\t  (rib_queue_add) Helper function, same arguments as old\n\t  rib_process, to replace in callers of rib_process.\n\t  (rib_queue_qnode_del) ribq deconstructor.\n\t  (rib_queue_init) Create the ribq.\n\t  (rib_init) call rib_queue_init.\n\t  (remainder) Sanitise refcounting of route_node\u0027s. Convert to\n\t  rib_queue_add, rib_addnode and rib_delnode. Change XMALLOC/memset\n\t  to XCALLOC. Remove calls to nexthop_delete and nexthop_free.\n"
    },
    {
      "commit": "8b70d0b04f6bba2f30827d71084dd74fd00808b3",
      "tree": "245969be7b29246bcb5ca39fc6661f0aeea7dd75",
      "parents": [
        "3df537822f594ffefe4d5e121c0b2430c9c12806"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Apr 28 01:31:13 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Apr 28 01:31:13 2005 +0000"
      },
      "message": "2005-04-27 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\tAdd wall-clock timing statistics to \u0027show thread cpu\u0027 output.\n\t* thread.h: Define struct rusage_t to contain wall-clock time\n\t  and cpu time.  Change GETRUSAGE macro to collect both pieces\n\t  of data.  Make appropriate changes to struct cpu_thread_history\n\t  to track CPU time and real time.  Change proto for\n\t  thread_consumed_time to return real and cpu time elapsed.\n\t  And declare a new global variable \u0027struct timeval recent_time\u0027.\n\t* thread.c (struct timeval recent_time): New global timestamp variable.\n\t  (timeval_adjust): If timeout is negative, set to 0 (not 10\n\t  microseconds).  And remove upper bound of 1,000,000 seconds, since\n\t  this does not seem to make any sense (and it breaks\n\t  funcname_thread_add_timer_timeval).\n\t  (timeval_cmp): Should return long, not int.\n\t  (vty_out_cpu_thread_history): Show CPU time and real time.\n\t  (cpu_record_hash_print): Calculate totals for CPU and real time.\n\t  (cpu_record_print): Change \u0027show thread cpu\u0027 title to show CPU and\n\t  real time.\n\t  (thread_timer_remain_second): Put current time in global recent_time.\n\t  (funcname_thread_add_timer_timeval): Fix assert.  Replace 2-case\n\t  switch assignment with a ternary expression.  Use global recent_time\n\t  variable.  Fix use of timeval_adjust (previously, the value was not\n\t  actually being adjusted).\n\t  (thread_cancel): Add missing \"break\" statement in case\n\t  THREAD_BACKGROUND.\n\t  (thread_timer_wait): Use global recent_time value instead of calling\n\t  gettimeofday.  And there\u0027s no need to check for negative timeouts,\n\t  since timeval_subtract already sets these to zero.\n\t  (thread_timer_process): Timers are sorted, so bail out once we\n\t  encounter a timer that has not yet popped.  And remove some\n\t  extraneous asserts.\n\t  (thread_fetch): Do not process foreground timers before calling\n\t  select.  Instead, add them to the ready list just after the select.\n\t  Also, no need to maintain a count of the number of ready threads,\n\t  since we don\u0027t care how many there are, just whether there\u0027s\n\t  one at the head of the ready list (which is easily checked).\n\t  Stick current time in global variable recent_time to reduce\n\t  the number of calls to gettimeofday.  Tighten logic for\n\t  calculating the select timeout.\n\t  (thread_consumed_time): Now returns real time and puts the elapsed\n\t  cpu time in an additional argument.\n\t  (thread_should_yield): Use real (wall-clock) time to decide whether\n\t  to yield.\n\t  (thread_call): Maintain CPU and real time statistics.\n\t* vty.c (vty_command): For slow commands, show real and cpu time.\n"
    },
    {
      "commit": "3df537822f594ffefe4d5e121c0b2430c9c12806",
      "tree": "63f845e4b45f4010fa5f24384352fb1dade48152",
      "parents": [
        "a7bca0f5d27b9b8e6eb73890003a4f664d849188"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Apr 27 16:29:54 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Apr 27 16:29:54 2005 +0000"
      },
      "message": "2005-04-27 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* workqueue.c (show_work_queues): Remove unused gettimeofday call.\n"
    },
    {
      "commit": "a7bca0f5d27b9b8e6eb73890003a4f664d849188",
      "tree": "81f4c85245047c5f17aaf3b5e657148b218ca642",
      "parents": [
        "843696841b55343e45d6cfdad19035882a67b99f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 27 12:44:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 27 12:44:54 2005 +0000"
      },
      "message": "2005-04-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* memory.h: memtypes is built source, default includes points to\n\t  top_builddir, so we should refer to lib/memtypes.h\n"
    },
    {
      "commit": "843696841b55343e45d6cfdad19035882a67b99f",
      "tree": "62e6224fae2ea014023117b21b0980605b98472a",
      "parents": [
        "07334da01ca0a7b77cb11add3102b57077eb03eb"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 27 12:39:27 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 27 12:39:27 2005 +0000"
      },
      "message": "2005-04-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* workqueue.h: (struct work_queue_item) change retry_count to ran,\n\t  its a count of number item has been run.\n\t* workqueue.c: (show_work_queues) Fix formating of slightly\n\t  bugfix: fix SIGFPE if wq-\u003eruns is 0.\n\t  (work_queue_run) retry logic was slightly wrong.\n\t  cycles.best is 0 initialy, granularity is 1, so update best\n\t  if cycles \u003e\u003d granularity, not just \u003e.\n"
    },
    {
      "commit": "07334da01ca0a7b77cb11add3102b57077eb03eb",
      "tree": "f1c9c9cc0b4919588e0de7f08b54d81db56c7d67",
      "parents": [
        "2e7d9ebac1a2698d548fab85bf717b427378c3c1"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Apr 26 17:14:30 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Apr 26 17:14:30 2005 +0000"
      },
      "message": "2005-04-26 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* buffer.c (buffer_write): Comment out call to buffer_flush_available.\n\t  This should speed up buffering at the expense of a possible increase\n\t  in latency in flushing the data if inside a long-running thread.\n"
    },
    {
      "commit": "2e7d9ebac1a2698d548fab85bf717b427378c3c1",
      "tree": "578a812620b52e5079088edfcb26500d1bd51f8f",
      "parents": [
        "9edbc8fb8160c7e71c18ea517837decbd0f6bf9d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 26 02:35:03 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 26 02:35:03 2005 +0000"
      },
      "message": "2005-04-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* quagga.xml.in: New, better, single integrated manifest for all\n\t  the services, courtesy of alan.maguire@sun.com.\n\t* {{ospf,ospf6,rip,ripng,bgp}d,zebra}.xml.in: removed due to\n\t  previous\n\t* quagga.init.in: Use the package tarname for properties, use\n\t  the correct daemon name variable.\n\t* Makefile.am: Updated to match single manifest\n\t* prototype.daemons.in: ditto\n"
    },
    {
      "commit": "9edbc8fb8160c7e71c18ea517837decbd0f6bf9d",
      "tree": "999a574da9daeaa6528373f8f5480fdfd7174742",
      "parents": [
        "9f3f7a1145a42942b28bae6b68163d805bb91b56"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 26 02:23:44 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 26 02:23:44 2005 +0000"
      },
      "message": "- build isisd per default\n"
    },
    {
      "commit": "9f3f7a1145a42942b28bae6b68163d805bb91b56",
      "tree": "439b8f849496aebd1bd5fa72523790fa0bf49c0a",
      "parents": [
        "147aff0fa4c3c1f54270881851b6c2c23418b031"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 16:42:24 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 16:42:24 2005 +0000"
      },
      "message": "2004-05-25 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* main.c: new file, common \u0027main\u0027 portion which then calls\n\t  test_init.\n\t* heavy.c: remove common portions now in \u0027main.\n\t* heavy-wq.c: ditto\n\t* heavy-thread.c: ditto\n\t* heavy*.c: Set the slow_function iteration number lower, to 300, it\n\t  was several orders of magnitude too \u0027slow\u0027 to be useful. :)\n\t* Makefile.am: main is a source of the tests. heavy should link\n\t  to the math library.\n"
    },
    {
      "commit": "147aff0fa4c3c1f54270881851b6c2c23418b031",
      "tree": "b29a667bb7780ad9a8616df0eddb3a4b3868dd0e",
      "parents": [
        "354d119a6569b2c6335ae9309e4606e5cccedb6a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 16:29:10 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 16:29:10 2005 +0000"
      },
      "message": "- forgot to commit changelog, belongs to previous commit.\n"
    },
    {
      "commit": "354d119a6569b2c6335ae9309e4606e5cccedb6a",
      "tree": "e29bb213c52bb46b3454f845fa5892df306b82e2",
      "parents": [
        "b64d92a8a88e69f711976a3c12c17667ecaba4ee"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 16:26:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 16:26:42 2005 +0000"
      },
      "message": "2005-04-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* workqueue.{c,h}: Helper API for setting up and running queues via\n\t  background threads.\n\t* command.c: install the \u0027show workqueues\u0027 command\n\t* memtypes.c: Add work queue mtypes, and a rib-queue type for\n\t  a zebra rib work queue.\n\t* memtypes.h: Updated to match memtypes.c\n\t* Makefile.am: Add new workqueue files to build.\n"
    },
    {
      "commit": "b64d92a8a88e69f711976a3c12c17667ecaba4ee",
      "tree": "f601bf1e064e88a3e6fdaeeeeb3fc877fe5484b6",
      "parents": [
        "907873a076a62a51cd5f832b9853274e2ecd0eee"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 15:13:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 15:13:42 2005 +0000"
      },
      "message": "- make various defines conditional, so that they can be specified from\n  the rpmbuild commandline, eg rpmbuild --define \u0027keep_build 1\u0027\n"
    },
    {
      "commit": "907873a076a62a51cd5f832b9853274e2ecd0eee",
      "tree": "cf3ea7afe998d0da60a452c37a1b1b39f82edce5",
      "parents": [
        "c4d23bba6d522336755676a028a8f4355500ab67"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 14:53:46 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 14:53:46 2005 +0000"
      },
      "message": "2005-04-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* thread.c: Kill unused TIMER_NO_SORT bits\n"
    },
    {
      "commit": "c4d23bba6d522336755676a028a8f4355500ab67",
      "tree": "0d86b64de84a076a0395826a2383cbf4b7ce1f3a",
      "parents": [
        "2c1de2a8b89f3d3364ad716cfbba295097c7fc61"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 14:18:43 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 14:18:43 2005 +0000"
      },
      "message": "- arg, fix the missing slash. Beat myself with the diff of the last commit\n  to HACKING (which I added..)\n"
    },
    {
      "commit": "2c1de2a8b89f3d3364ad716cfbba295097c7fc61",
      "tree": "48b6dfef347eae56afdac7d0be14a9c547a2149b",
      "parents": [
        "ab59ae3519d986d4544ba1ca15d6c17b3f52f86b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 14:02:44 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 14:02:44 2005 +0000"
      },
      "message": "2005-04-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* memory.c: Make the string field much wider\n\t* memtypes.c: Correct the prefix list str/entry strings\n"
    },
    {
      "commit": "ab59ae3519d986d4544ba1ca15d6c17b3f52f86b",
      "tree": "d95735cfce66337328c6503410f7b0d1fa1ff676",
      "parents": [
        "74a2dd7b773e9f8db0f38c40b3e6e9b32d597a0a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 13:52:26 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 13:52:26 2005 +0000"
      },
      "message": "2005-04-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Makefile.am: Refer to source files via srcdir variable, fix\n\t  out-of-tree build breakage.\n"
    },
    {
      "commit": "74a2dd7b773e9f8db0f38c40b3e6e9b32d597a0a",
      "tree": "b2e81cbe7aafcb6b74db5b84cb0cda9df6a8c21e",
      "parents": [
        "fb9e46bbb1a639cf365d06a75007e708c278b6bd"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 00:37:03 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 25 00:37:03 2005 +0000"
      },
      "message": "2005-04-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* HACKING: Add some notes about build system changes, to\n\t  document common oversights (common for me anyway).\n\t  Seperate sections with two newlines, easier to read.\n"
    },
    {
      "commit": "fb9e46bbb1a639cf365d06a75007e708c278b6bd",
      "tree": "775879c0333b8785ebd436163d3db5d8e955a987",
      "parents": [
        "e1e53ed5d7aaa70e23abac6f7d21ef1646bad123"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 22 14:23:34 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 22 14:23:34 2005 +0000"
      },
      "message": "2005-04-22 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* thread.h: Fix type for struct thread_master add_type: should be\n\t  unsigned char.  Also, add some documentation of thread_add_background\n\t  args.  And remove extraneous declaration of\n\t  show_thread_work_queues_cmd.\n"
    },
    {
      "commit": "e1e53ed5d7aaa70e23abac6f7d21ef1646bad123",
      "tree": "5c2f5232cc8927179e6c0c76a0d392bda40a2228",
      "parents": [
        "a0e64a63846e75cd038ade65669b27eeaec41cf1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 13:44:17 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 13:44:17 2005 +0000"
      },
      "message": "2005-04-22 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* memory.h: Move include of memtypes.h to after the definition of\n\t  struct memory_list, gcc 4.0 doesn\u0027t like arrays of incomplete\n\t  types.\n"
    },
    {
      "commit": "a0e64a63846e75cd038ade65669b27eeaec41cf1",
      "tree": "ba8d55453a57b3179b388ea01cf88e0b37e1c426",
      "parents": [
        "151fe8a484ab84cf6437e6755f9725e2634bf702"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 22 13:14:49 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 22 13:14:49 2005 +0000"
      },
      "message": "2005-04-22 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* bgpd.8,isisd.8,ospf6d.8,ospfd.8,ripd.8,ripngd.8,zebra.8: Fix\n\t  spelling mistake: idenifier -\u003e identifier.\n"
    },
    {
      "commit": "151fe8a484ab84cf6437e6755f9725e2634bf702",
      "tree": "e00ae06388d4ad83d383907c680aaa81de8538c7",
      "parents": [
        "17fc128d6422d3c6045ff671973911c17db39276"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 22 12:56:37 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 22 12:56:37 2005 +0000"
      },
      "message": "2005-04-22 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* bgpd.8,isisd.8,ospf6d.8,ospfd.8,ripd.8,ripngd.8,zebra.8: Fix\n\t  spelling mistake: intrefaces -\u003e interfaces.\n"
    },
    {
      "commit": "17fc128d6422d3c6045ff671973911c17db39276",
      "tree": "9adb150b7215d04151c293d5177b96037468efd9",
      "parents": [
        "1d2c893b61211761a17bb2e51345a2eaed12cf1f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 00:57:03 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 00:57:03 2005 +0000"
      },
      "message": "- fix comment\n"
    },
    {
      "commit": "1d2c893b61211761a17bb2e51345a2eaed12cf1f",
      "tree": "e45d47b36df1293c4a0402646f3bb478c2154ec8",
      "parents": [
        "864c364df9eb7d119ce81db834eff6a726e2fa78"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 00:54:44 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 00:54:44 2005 +0000"
      },
      "message": "2004-05-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Makefile.am: Build heavythread\n"
    },
    {
      "commit": "864c364df9eb7d119ce81db834eff6a726e2fa78",
      "tree": "0e17cf1c611f406aec6af94ae90887104811fb6c",
      "parents": [
        "a48b4e6d074a4e61ce9e8bf78fdb8ea9c57c6e64"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 00:50:08 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 00:50:08 2005 +0000"
      },
      "message": "2004-05-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* heavy-thread.c: Andrew Schorr\u0027s adaptation of heavy.c to use a\n\t  background thread to avoid responsivity problems.\n"
    },
    {
      "commit": "a48b4e6d074a4e61ce9e8bf78fdb8ea9c57c6e64",
      "tree": "7967366e5c4c650d36fbaa1cf5f9d30584ff9846",
      "parents": [
        "cb0663c41a5c61c6261f6d5607526e56be0ed2d4"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 00:43:47 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 22 00:43:47 2005 +0000"
      },
      "message": "2005-04-22 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* thread.h: Add background thread type and thread_add_background\n\t  macro and accompanying funcname_... function.\n\t  export thread_should_yield, background threads can use it.\n\t  Lower thread yield time to 10ms, 100ms is noticeable lag and\n\t  a thread would only be /starting/ to finish sometime afterward.\n\t* thread.c: (general) Add background thread type and schedule\n\t  nearly all thread types through the ready list for fairness.\n\t  (timeval_adjust) static qualifier missing\n\t  (vty_out_cpu_thread_history) add support for printout of\n\t  background threads\n\t  (show_thread_cpu) ditto.\n\t  (thread_master_debug) add debug of background list\n\t  (thread_master_create) fixup long line\n\t  (thread_add_unuse) add asserts for required state.\n\t  (thread_master_free) free background thread list\n\t  (funcname_thread_add_timer_timeval) make generic, able to\n\t  support arbitrary timer-like thread types.\n\t  (funcname_thread_add_timer) pass thread type to .._add_timer_timeval\n\t  (funcname_thread_add_timer_msec) ditto\n\t  (funcname_thread_add_background) Add a background thread, with an\n\t  optional millisecond delay factor, using .._add_timer_timeval.\n\t  (thread_cancel) Add background thread type.\n\t  Move the thread_list_delete common to all cases to bottom of\n\t  function, after the switch statement..\n\t  (thread_cancel_event) indent\n\t  (thread_timer_wait) Static qualifier, and make it able to cope\n\t  with arbitrary timer-like thread lists, so its of use to\n\t  background threads too.\n\t  (thread_process_fd) static qualifier. Again, make it take a list\n\t  reference rather than thread_master. Fix indentation.\n\t  (thread_timer_process) Check for ready timer-like threads in the\n\t  given list and move them on to the ready list - code originally\n\t  embedded in thread_fetch.\n\t  (thread_fetch) Schedule all threads, other than events, through\n\t  the ready list, to ensure fairness. Timer readying code moved to\n\t  thread_timer_process so it can be reused for background threads.\n\t  Remove the unneeded quagga_sigevent_process, as pointed out by\n\t  John Lin \u003cjohn.ch.lin@gmail.com\u003e.\n\t  (thread_should_yield) make this available.\n"
    },
    {
      "commit": "cb0663c41a5c61c6261f6d5607526e56be0ed2d4",
      "tree": "8f99e78deb4c3dc92257deb33ab02b3d6c32cd46",
      "parents": [
        "f4d062f87298d8098436704eb15d079d2cfe7efd"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 21 17:23:48 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 21 17:23:48 2005 +0000"
      },
      "message": "- bah, commit changelog\n"
    },
    {
      "commit": "f4d062f87298d8098436704eb15d079d2cfe7efd",
      "tree": "c6babfbd9f6c260ac32958af193bcce398a10437",
      "parents": [
        "f3ff15541592bab1435775f7b79c1cd267bd57f3"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 21 16:58:44 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 21 16:58:44 2005 +0000"
      },
      "message": "2004-05-21 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* heavy.c: Add a timer thread to demonstrate thread interactivity,\n\t  Add a daemon_exit command to assist with debugging (eg for memory\n\t  tracers, etc..)\n"
    },
    {
      "commit": "f3ff15541592bab1435775f7b79c1cd267bd57f3",
      "tree": "991934bdf1dde78097b14d4fcd46b5a32af552f1",
      "parents": [
        "05f01076828a2678538c4c827f7855a61b443389"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 21 10:24:43 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 21 10:24:43 2005 +0000"
      },
      "message": "2005-04-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Makefile.am: pkginfo.%.tmpl is a generated file, srcdir prefix\n\t  is not appropriate.\n"
    },
    {
      "commit": "05f01076828a2678538c4c827f7855a61b443389",
      "tree": "3a1f12fe9d4a0def54169c2dd2a9d44c0a15cb0d",
      "parents": [
        "85d976a47925ac0307af71df16bb903b804b56f8"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Wed Apr 20 09:38:17 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Wed Apr 20 09:38:17 2005 +0000"
      },
      "message": "There is no RIPv3. It is a RIPng (by the way for your information, the version of RIPng is v1).\n"
    },
    {
      "commit": "85d976a47925ac0307af71df16bb903b804b56f8",
      "tree": "61c8fab7ea7befe704bd5d8177accc185b08ede5",
      "parents": [
        "43313d05bce956b65711516f7aadf99ee2fed192"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 20 09:08:27 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 20 09:08:27 2005 +0000"
      },
      "message": "2005-04-20 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Makefile.am: Add @INCLUDES@ and srcdir to allow out-of-tree\n\t  builds to work.\n"
    },
    {
      "commit": "43313d05bce956b65711516f7aadf99ee2fed192",
      "tree": "7a9e42a7600b1c4e87a0be7d206b9605847d1b2e",
      "parents": [
        "924b9229717b749e303f3fb161616bebf53b5cdc"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 19 21:28:36 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 19 21:28:36 2005 +0000"
      },
      "message": "2004-05-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* heavy.c: test programme to show how long-running functions\n\t  kill responsiveness. Demonstrating the most niggly problem\n\t  left in bgpd.\n"
    },
    {
      "commit": "924b9229717b749e303f3fb161616bebf53b5cdc",
      "tree": "4788cd7cdc18bfc1cd12916ba506c091e9d73fb8",
      "parents": [
        "dc830cbfac8dd9633e070550359a5d6f8dac8fe5"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 16 17:11:24 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 16 17:11:24 2005 +0000"
      },
      "message": "2005-04-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* configure.ac: Added AC_ARG_ENABLE(time-check).  By default,\n\t  warning messages will now be printed for threads or commands that take\n\t  longer than 5 seconds, but this configure argument can be used\n\t  to disable the checks or change the threshold.\n\t* thread.h (thread_consumed_time): Declare new function to calculate\n\t  elapsed microseconds.\n\t* thread.c (thread_consumed_time): Must be global not static so we\n\t  can call it from lib/vty.c:vty_command.\n\t  (thread_should_yield): Surround with `#if 0\u0027 to make clear that this\n\t  function is not currently being used anywhere.\n\t  (thread_call): If CONSUMED_TIME_CHECK is defined, print a CPU HOG\n\t  warning message if the thread takes more than CONSUMED_TIME_CHECK\n\t  microseconds.\n\t* vty.c (vty_command): If CONSUMED_TIME_CHECK is defined, print a CPU\n\t  HOG warning message if the command takes more than CONSUMED_TIME_CHECK\n\t  microseconds.\n"
    },
    {
      "commit": "dc830cbfac8dd9633e070550359a5d6f8dac8fe5",
      "tree": "9b412c3e737868b0ef3917b97c5b62165ca6cf13",
      "parents": [
        "03ecfb6789c25d65a35e050661fa7f23f1e4e66e"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 16 15:51:05 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 16 15:51:05 2005 +0000"
      },
      "message": "2005-04-16 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* memtypes.c: the comment about use of comments in the comments\n\t  headers was causing comment within comment warnings from compiler\n\t* memtypes.awk: Add extensive comments on the file format for\n\t  memtypes.c.\n\t  tighten the pattern for the MTYPE matching action (suggestion from\n\t  Andrew) and tighten which field we try the match on.\n"
    },
    {
      "commit": "03ecfb6789c25d65a35e050661fa7f23f1e4e66e",
      "tree": "dec5c72de6f997a92428ea58f4168327432ee865",
      "parents": [
        "d45f1f1c3f85952651f27a8a98861ea45fd03789"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 16 15:38:23 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 16 15:38:23 2005 +0000"
      },
      "message": "2005-04-16 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: check for gawk, needed to build memtypes.h\n"
    },
    {
      "commit": "d45f1f1c3f85952651f27a8a98861ea45fd03789",
      "tree": "a3685403e9f78331e63b3032553d638289fa3aad",
      "parents": [
        "f482ed4d13e73c27424a45e4c8cfaaa363a35d89"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 15 22:18:37 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 15 22:18:37 2005 +0000"
      },
      "message": "2005-04-15 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * Makefile.am: memtypes.awk is gawk dependent, use the GAWK automake\n\t  var.\n\t* memtypes.h: New file, auto-generated, checked in for convenience.\n"
    },
    {
      "commit": "f482ed4d13e73c27424a45e4c8cfaaa363a35d89",
      "tree": "8fb0396cda1dcfa0de5d18b824b354b7ad7f1d07",
      "parents": [
        "9e67dc2723e86956dade42f5846d5c05334af041"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 15 22:12:51 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 15 22:12:51 2005 +0000"
      },
      "message": "2005-04-15 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* topology/Makefile.am: random.c is a source of libtopology, so list\n\t  it.\n"
    },
    {
      "commit": "9e67dc2723e86956dade42f5846d5c05334af041",
      "tree": "7a30e01bc773a588112b3039ff150bfe42292b34",
      "parents": [
        "2fd2fd5d4c0e5a67f1b84abe18b54417237b20ab"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 15 12:10:17 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 15 12:10:17 2005 +0000"
      },
      "message": "2005-04-15 Zhipeng Gong \u003czpgong@cdc.3upsystems.com\u003e\n\n\t* ospf_abr.c: (ospf_abr_announce_network_to_area) dont forget\n\t  to approve LSAs for the case where metric has changed, lsa gets\n\t  flushed otherwise. (backport candidate).\n"
    },
    {
      "commit": "2fd2fd5d4c0e5a67f1b84abe18b54417237b20ab",
      "tree": "106e9f02a377c796ce41f3033beea2404c6e0e58",
      "parents": [
        "d98b74b504554d851d1281017724984069340cad"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 15 11:47:15 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 15 11:47:15 2005 +0000"
      },
      "message": "2005-04-15 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* memtypes.c: The new, unified location for memory type definitions.\n\t  The memtype enum and declarations for memory_lists are built from\n          this automatically and put into memtypes.h.\n        * memtypes.awk: New script to generate memtypes.h from memtypes.c\n        * memory.h: Finally, the enum can banished!\n        * memory.c: Finally, the seperate mtype memory_list definitions can\n          be banished!\n          (log_memstats) Increase width of fields\n          (show_memory_zebra_cmd) display zebra specific memory types.\n          Increase width of fields.\n        * Makefile.am: Add memtypes.{c,h}, add BUILT_SOURCES for memtypes.h\n          Add a rule to build memtypes.h using memtypes.awk.\n          Add memtypes.awk to EXTRA_DIST.\n"
    },
    {
      "commit": "d98b74b504554d851d1281017724984069340cad",
      "tree": "ba102c54fd3b41b50b219e80135e1f1e8df49e27",
      "parents": [
        "662a1f25bb6c142c0ff5ff571095356df49c0557"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 13 03:37:23 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 13 03:37:23 2005 +0000"
      },
      "message": "2005-04-13 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Makefile.am: {i,r}.manifest are (or will be) system provided files\n\t  and not in CVS, hence dont depend on them or distribute them.\n"
    }
  ],
  "next": "662a1f25bb6c142c0ff5ff571095356df49c0557"
}
