)]}'
{
  "log": [
    {
      "commit": "109ac96f0296fd66d5a1d37def44db3cef7ca0fb",
      "tree": "aa6e12891391dd9d0a890b2a89c39222ad6409e6",
      "parents": [
        "518cde8d6ce0434b02bd5d7cf7e9627d57af6952"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 01:17:07 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 01:17:07 2005 +0000"
      },
      "message": "2005-02-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.c: (stream_new) fix dumb mistake.\n"
    },
    {
      "commit": "53270116df3f54b1f9411f0832567e9effa87593",
      "tree": "08fab8ea890f84694a0f9fcaaf55a13fbf698ef3",
      "parents": [
        "d7e2a8188f6e9eaccb5e1c1bd7b9d5af79429c0c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:07:22 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:07:22 2005 +0000"
      },
      "message": "2005-02-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* stream.c: (stream_read_try) Use new ERRNO_IO_RETRY macro.\n"
    },
    {
      "commit": "d7e2a8188f6e9eaccb5e1c1bd7b9d5af79429c0c",
      "tree": "6abb03907d0eeaa5f343e3927ef6d9e619e6f079",
      "parents": [
        "038163fa87d5b41503c721bb097faea6b25661c9"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:02:49 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:02:49 2005 +0000"
      },
      "message": "2005-02-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* network.h: Define a new ERRNO_IO_RETRY macro to test whether an I/O\n\t  operation should be retried.  This eliminates the need to duplicate\n\t  the same logic testing for EAGAIN or EINTR in multiple places.\n"
    },
    {
      "commit": "262feb1ad0838bb585955b6ada5acbe106dbc9bf",
      "tree": "392f66d5d71bcfdd87e5db32e89325ed9ef06c44",
      "parents": [
        "42218e71256cb86b5078c99c931030c7b0ce9bab"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 20:35:47 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 20:35:47 2005 +0000"
      },
      "message": "2005-02-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* stream.h: Declare new function stream_read_try suitable for use\n\t  with non-blocking file descriptors.  Indicate that stream_read\n\t  and stream_read_unblock are deprecated.\n\t* stream.c: (stream_read_try) New function for use with non-blocking\n\t  I/O.\n\t  (stream_recvmsg) Should return -1 if the stream is too small to\n\t  contain the data.\n"
    },
    {
      "commit": "42218e71256cb86b5078c99c931030c7b0ce9bab",
      "tree": "32331f692e292f258b295727d2f2467617fe80ba",
      "parents": [
        "a269d613fe0536a01eb86367a545e337e51d1309"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 16:25:39 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 16:25:39 2005 +0000"
      },
      "message": "2005-02-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* network.c: (set_nonblocking) Should check return code from\n\t  fcntl(F_GETFL).\n"
    },
    {
      "commit": "a269d613fe0536a01eb86367a545e337e51d1309",
      "tree": "21e648eaac2a1569af79dcbc75a962481b6cbc75",
      "parents": [
        "6ea7cdc593f7637e26da54192ef67245185994f3"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 00:45:37 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 00:45:37 2005 +0000"
      },
      "message": "2005-02-15 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* network.h: Declare new function set_nonblocking.  Indicate that\n\t  readn and writen are deprecated.\n\t* network.c: (set_nonblocking) New function to make a file descriptor\n\t  non-blocking, since it seems silly to have fcntl calls sprinkled\n\t  throughout the code.\n"
    },
    {
      "commit": "1dd13d41d09487c3d595b13a087b2ec87b7f4ce8",
      "tree": "981310e2b5a5a30b955f4dd2eca094b01a1b93e1",
      "parents": [
        "bfdc44af118e235e6979be42d4e4f2c1353f7bf0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:49:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:49:09 2005 +0000"
      },
      "message": "- oops, date was wrong in actual ChangeLog\n"
    },
    {
      "commit": "050c013ac35337d86b03f140fb17d2e8e33a8baa",
      "tree": "7241e3972e2116f67b762a37305c31ee7d8d9671",
      "parents": [
        "f2e6c429375adf0d3c5deaa409734d5d41ac15ce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:47:47 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:47:47 2005 +0000"
      },
      "message": "2005-02-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.h: Unsigned long updated to size_t\n\t* stream.c: ditto\n\t* stream.h: Add stream_copy, stream_dup, stream_recvmsg.\n\t  Add comment describing struct stream abstraction, and various\n\t  other comments.\n\t  Deprecate several unsafe/ambigious macros.\n\t  Add STREAM_WRITEABLE and STREAM_READABLE.\n\t  Add (stream_getl_from) for symmetry.\n\t  Update stream_forward_{endp,getp} to use size_t offset.\n\t  Make stream data a 0 length array, rather than a seperate malloc.\n\t* stream.c: Add consistency checks. Update to follow stream.h\n\t  changes.\n\t  (stream_new) Alloc stream+data in one go.\n\t  (stream_copy) new function, copy a stream.\n\t  (stream_dup) new function, dup a stream.\n\t  (stream_recvmsg) new function, recvmsg data into a stream.\n\t  (stream_empty) no need to check getp \u003d\u003d 0.\n"
    },
    {
      "commit": "f2e6c429375adf0d3c5deaa409734d5d41ac15ce",
      "tree": "73c056492bff8eb06eb7350909d0b2fa8baba772",
      "parents": [
        "082253f5d08577e2c7b61ed2302be88295b459eb"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 12 14:35:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 12 14:35:49 2005 +0000"
      },
      "message": "2005-02-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.h: Unsigned long updated to size_t\n\t* stream.c: ditto\n"
    },
    {
      "commit": "9985f83ce7102f64b15f744b60320f8d14a8a5ff",
      "tree": "344629bdc2b4a7d53b8d7ca1705c9be2ca282d18",
      "parents": [
        "083ee9d9cdbf72a452b9af96e62d0625ea712cd9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Feb 09 15:51:56 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Feb 09 15:51:56 2005 +0000"
      },
      "message": "2005-02-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) Update code to match stream.h changes.\n\t  stream_get_putp effectively replaced with stream_get_endp.\n\t  stream_forward renamed to stream_forward_getp.\n\t  stream_forward_endp introduced to replace some previous\n\t  setting/manual twiddling of putp by daemons.\n\t* lib/stream.h: Remove putp. Update reference to putp with endp.\n\t  Add stream_forward_endp, which daemons were doing manually.\n\t  Rename stream_forward to stream_forward_getp.\n\t  lib/stream.c: Remove/update references to putp.\n\t  introduce stream_forward_endp.\n"
    },
    {
      "commit": "548e6f7d58a08e28132936431bba75428412857f",
      "tree": "4d168f4ea30a0fedc496ec158ac6fb58b2cd14cd",
      "parents": [
        "ba6454ec1fd1ca7266b10eba07d016becb22db74"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:57:25 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:57:25 2005 +0000"
      },
      "message": "2005-02-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra.h: Change macro definitions SET_FLAG and UNSET_FLAG\n\t  to use compound assignment operators (aesthetic change).\n"
    },
    {
      "commit": "c4c7d0c48b1219d7ed9ed1377cea1be239c45d5d",
      "tree": "2dda4470cf7a5b0a5277edc06484f0065ef7bcc1",
      "parents": [
        "c70257d0afa4df7c838dc7c8f5948baca5f12657"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 03 19:22:05 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 03 19:22:05 2005 +0000"
      },
      "message": "2005-02-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.c: (zlog_signal,zlog_backtrace_sigsafe) Eliminate use of fileno()\n\t  since it is not async-signal-safe.\n\t  (_zlog_assert_failed) Rewrite crashlog logic more compactly.\n\t  (zlog_set_file,zlog_reset_file,zlog_rotate) Update logfile_fd\n\t  for use in signal handler.\n"
    },
    {
      "commit": "1e2213541bbda26c49667b699a333d87bcc0f2e6",
      "tree": "23ed10aeadeb22a4f3e40c794a829604cc25cb7e",
      "parents": [
        "847947f20b152f0b64057a7115e118b44d238b5c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 03 16:42:40 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 03 16:42:40 2005 +0000"
      },
      "message": "2005-02-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.c: (syslog_sigsafe) Reduce scope of syslog_fd: it is accessed\n\t  inside this function only.\n\t  (open_crashlog) New function to open /var/tmp/quagga.\u003cdaemon\u003e.crashlog\n\t  with flags O_WRONLY|O_CREAT|O_EXCL to save some crash info.\n\t  (zlog_signal,_zlog_assert_failed) Increase logging priority from\n\t  LOG_ERR to LOG_CRIT.  If no file logging is configured, try to use\n\t  open_crashlog to create a crash logfile.\n\t  (zlog_backtrace_sigsafe) If a crashlog file descriptor is open,\n\t  dump a backtrace to that file.\n"
    },
    {
      "commit": "847947f20b152f0b64057a7115e118b44d238b5c",
      "tree": "68f726878177a594e258ce5312b7937951d3b421",
      "parents": [
        "dd4c593fb88b7c6cf5f27aa8a8286644743ed58a"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 02 18:38:48 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 02 18:38:48 2005 +0000"
      },
      "message": "2005-02-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_read) Fix bug: must check for state ISM_Down,\n\t  not for event ISM_InterfaceDown.  And improve the message by\n\t  adding the interface flags.\n\t* if.h: Declare if_flag_dump.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "6a52d0d155fc8b892e30cdb5e3fbe4c2779bd4cd",
      "tree": "d4bfab8286e497e30c5ebfed099c317a9397c623",
      "parents": [
        "656b4eeec1fb30402ad2001976c05c6f44fafb34"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Jan 30 18:49:28 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Jan 30 18:49:28 2005 +0000"
      },
      "message": "2005-01-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* daemon.c: (daemon) Replace perror with zlog_err.\n\t* vty.c: (vty_serv_un) Replace perror with zlog_err.\n\t* ripd.c: (rip_create_socket) Replace perror with zlog_err.\n\t* ioctl.c: (if_ioctl,if_ioctl_ipv6,if_get_flags) Replace perror with\n\t  zlog_err.\n\t* ioctl_solaris.c: (if_ioctl,if_ioctl_ipv6) Replace perror with\n\t  zlog_err.\n"
    },
    {
      "commit": "3b8b1855038afde448993e5a56955e9b7a4d99c2",
      "tree": "5378ad7cc9d2fdb42558044833036e347ca1277e",
      "parents": [
        "4460e7a4cf3dadcd9f06e4b519ba7be2cc936c0a"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Jan 29 18:19:13 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Jan 29 18:19:13 2005 +0000"
      },
      "message": "2005-01-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* buffer.h: Fix comment on buffer_getstr to reflect that it now\n\t  uses XMALLOC.\n\t* buffer.c: (buffer_getstr) Use XMALLOC(MTYPE_TMP) instead of malloc.\n\t* filter.c: (access_list_remark,ipv6_access_list_remark) Use\n\t  argv_concat instead of buffer_getstr.\n\t* if.c: (interface_desc) Use argv_concat instead of buffer_getstr.\n\t* plist.c: (ip_prefix_list_description,ipv6_prefix_list_description)\n\t  Use argv_concat instead of buffer_getstr.\n\t* bgp_filter.c: (ip_as_path,no_ip_as_path) Use argv_concat instead\n\t  of buffer_getstr.\n\t* bgp_route.c: (bgp_show_regexp) Fix memory leak: need to free string\n\t  returned by buffer_getstr.\n\t  (bgp_show_community) Must use XFREE instead of free on string\n\t  returned by buffer_getstr.\n\t* bgp_routemap.c: (set_community) Must use XFREE instead of free\n\t  on string returned by buffer_getstr.\n\t* bgp_vty.c: (neighbor_description) Use argv_concat instead of\n\t  buffer_getstr.\n"
    },
    {
      "commit": "afb8b6055c5e54be762e220cf9b7b65a22266733",
      "tree": "8434d1316d56805368e2ce2dc13a095fdb3a8c91",
      "parents": [
        "f6834d4c4031276361465dd19ef1918e239566c8"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Jan 28 20:41:07 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Jan 28 20:41:07 2005 +0000"
      },
      "message": "2005-01-28 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* lib/buffer.h: Document behavior of buffer_getstr function.\n\t* lib/buffer.c: (buffer_getstr) Fix bug: must handle case where\n\t  the string extends beyond the head struct buffer_data.\n"
    },
    {
      "commit": "f6834d4c4031276361465dd19ef1918e239566c8",
      "tree": "67e9eb194ce4cef74654a888c0e165febc0010d2",
      "parents": [
        "8bfb0cba005b37c7b125fe2a34f1819e85d9f59c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Jan 28 20:28:35 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Jan 28 20:28:35 2005 +0000"
      },
      "message": "2005-01-28 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* lib/command.h: Document behavior of argv_concat function.\n\t* lib/command.c: (argv_concat) Calculate total string length first so\n\t  we can call malloc just once (instead of realloc\u0027ing to add each\n\t  string element).\n\t  (do_echo,config_logmsg) Allow for possible NULL return value from\n\t  argv_concat.\n"
    },
    {
      "commit": "13bfca7a1059a73a836f4813170f296a82266211",
      "tree": "b22e29cb43472038769502685209badf3302e7dd",
      "parents": [
        "90b4214727b4e109a87bc99f9dfb4686e0c0a8b2"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Jan 23 21:42:25 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Jan 23 21:42:25 2005 +0000"
      },
      "message": "        * lib/command.[ch]: Make node_parent() function nonstatic. vtyh.c will\n          use it as well.\n        * vtysh/vtysh.c: Implement walkup in node tree for vtysh as it already\n          works in vty.\n"
    },
    {
      "commit": "31364274ddd1da6b77dd99e1d5d164b5c643732b",
      "tree": "4f0ae083583fb605508ef981e96fb230d7110c41",
      "parents": [
        "92365889d1f856f323af452bad76f54c15ccdf45"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jan 18 22:18:59 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jan 18 22:18:59 2005 +0000"
      },
      "message": "2005-01-18 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.h: Test for SA_SIGINFO to see whether zlog_signal takes final\n\t  two args (siginfo and program_counter).\n\t* log.c: (hex_append) Include this function only if SA_SIGINFO or\n\t  HAVE_GLIBC_BACKTRACE is defined.\n\t  (zlog_signal) Final two args (siginfo and program_counter) now\n\t  depend on whether SA_SIGINFO is defined on this platform.\n\t* sigevent.c: (program_counter) Do not include this function if\n\t  SA_SIGINFO is not defined on this platform.\n\t  (exit_handler,core_handler) Test for SA_SIGINFO to decide whether\n\t  2nd \u0026 3rd arguments are present and to decide how to invoke\n\t  zlog_signal.\n\t  (trap_default_signals) Test for SA_SIGINFO and invoke sigaction\n\t  appropriately.\n"
    },
    {
      "commit": "239c26fdeae4dbccb43da359f9ea034041440831",
      "tree": "aefdb215d2e9ad88afe04d105c07cb9d8550bf96",
      "parents": [
        "f127165de02a66934082f23810fab37d7efbce8b"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Jan 17 15:22:28 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Jan 17 15:22:28 2005 +0000"
      },
      "message": "2005-01-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.h: Change prototype for zlog_backtrace_sigsafe to take additional\n\t  program_counter argument.\n\t* log.c: (zlog_backtrace_sigsafe) Add additional program_counter\n\t  argument.  If it is non-NULL, use backtrace_symbols_fd to resolve\n\t  the address.\n\t  (zlog_signal) Call zlog_backtrace_sigsafe with additional\n\t  program_counter argument.\n\n\t[pullup candidate]\n"
    },
    {
      "commit": "87d683b071dc7abfb30b666960ec480e64e19ce4",
      "tree": "ec56b3ce34f6871c4b3687681df2b97aa38da57a",
      "parents": [
        "b854038bd03e6c54b46d35bf4e40d0f39e30dfde"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Jan 16 23:31:54 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Jan 16 23:31:54 2005 +0000"
      },
      "message": "\t* command.[ch], vty.c: cmd_execute_command() function must not attempt\n\t  to walk up in the node tree if called from vtysh. Different daemons\n\t  might have commands with same syntax in different nodes (for example\n\t  \"router-id x.x.x.x\" commands in zebra/ospfd/ospf6d daemons).\n\n\t* vtysh.c: Reflect changes in lib. cmd_execute_command() should know\n\t  now that it\u0027s called from vtysh and must not attempt to walk up in\n\t  the node tree.\n\n\t[pullup candidate]\n"
    },
    {
      "commit": "cb585b65d1a513fd62449cc031e273245a8fd6c0",
      "tree": "076602b4fae8d47e3b82c353898de5260ac91007",
      "parents": [
        "f867d32c4a0d6a18c5f7c042b9dd5798dce93e10"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Jan 14 17:09:38 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Jan 14 17:09:38 2005 +0000"
      },
      "message": "2005-01-14 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* command.c (print_version): Do not bother even to examine host.name,\n\t  since it is always NULL when this function is called from main.\n"
    },
    {
      "commit": "f867d32c4a0d6a18c5f7c042b9dd5798dce93e10",
      "tree": "03ae33b1e867d97d74afbe80b8a840bfbdfb5868",
      "parents": [
        "24e3287986f17b87e9e424f05c83ec4876ec9b24"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Fri Jan 14 15:47:33 2005 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Fri Jan 14 15:47:33 2005 +0000"
      },
      "message": "2005-01-14  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n        * command.c (print_version): Don\u0027t print host.name if it is NULL.\n        Fixes segfault on Solaris reported by Goetz von Escher \u003cgoetz@open.ch\u003e\n\n(pullup candidate)\n"
    },
    {
      "commit": "40abf2392ba9f14935dab556f43e674cb5c47cf3",
      "tree": "3c5ff5794940f408b411c5d0204e27dac1014378",
      "parents": [
        "6cf9df088e10baefe04139897f8745a42ea0c772"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Jan 12 17:27:27 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Jan 12 17:27:27 2005 +0000"
      },
      "message": "2005-01-12 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* configure.ac: Test for header file \u003cucontext.h\u003e (for use in\n\t  signal processing).\n\t* sigevent.c: (trap_default_signals) Use the SA_SIGINFO flag to\n\t  pass additional siginfo_t and ucontext_t arguments to core_handler\n\t  and exit_handler.\n\t  (core_handler,exit_handler) Now invoked with 3 arguments (using\n\t  SA_SIGINFO).  Pass additional info to zlog_signal.\n\t  (program_counter) New function to find program counter in ucontext_t,\n\t  needs to be enhanced to support more platforms (currently works only\n\t  on Linux/x86).\n\t* log.h: Change the zlog_signal prototype to add new arguments\n\t  siginfo_t * and program_counter.\n\t* log.c: (zlog_signal) Add new arguments siginfo and program_counter.\n\t  Include si_addr and program counter (if non-NULL) in message.\n\t  And remove #ifdef HAVE_GLIBC_BACKTRACE around hex_append, since\n\t  that is now used to render the si_addr and PC pointers.\n"
    },
    {
      "commit": "e22f5516b3e1431b7716632b76e257b84e7e0ff4",
      "tree": "16ee1046948d1b8099c476a2450bdd605eca03e5",
      "parents": [
        "afc1e2ddf29fffe996f44d0f8eca99522e75d0ba"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Jan 12 16:18:17 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Jan 12 16:18:17 2005 +0000"
      },
      "message": "2005-01-12 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra.h: If not C99 and no va_copy macro available, fall back to\n\t  memcpy (solves a build problem on FreeBSD 4.x).\n"
    },
    {
      "commit": "b99760ab51abf8c4c9a1f89dab0c1630a6768ff7",
      "tree": "daaf8cabb567c5ff1a01368fa1382d8257b56854",
      "parents": [
        "73a7dea305b146febb8e57176295689d6a900f1d"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jan 04 16:24:43 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jan 04 16:24:43 2005 +0000"
      },
      "message": "2005-01-04 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* configure.ac: Added test for broken CMSG_FIRSTHDR macro\n\t  (relevant for Solaris 8 and unpatched Solaris 9, don\u0027t know\n\t  whether other platforms are affected).\n\t* zebra.h: Define ZCMSG_FIRSTHDR appropriately based on whether\n\t  config.h indicates HAVE_BROKEN_CMSG_FIRSTHDR (as determined\n\t  by the configure test program).\n\t* sockopt.c: (getsockopt_cmsg_data) Use ZCMSG_FIRSTHDR instead\n\t  of CMSG_FIRSTHDR.\n\t* rtadv.c: (rtadv_recv_packet,rtadv_send_packet) Use ZCMSG_FIRSTHDR\n\t  instead of CMSG_FIRSTHDR.\n\t* ripd.c: (rip_recvmsg) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR.\n\t* ripngd.c: (ripng_recv_packet) Use ZCMSG_FIRSTHDR instead of\n\t  CMSG_FIRSTHDR.\n"
    },
    {
      "commit": "cba8a60639aa83659ce551e91266dcee8408fc23",
      "tree": "4b1b9a943481b46d07889350f5842e9af726d38e",
      "parents": [
        "cee66491371403453dc1c2a2424683976d22e640"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Jan 02 18:51:01 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Jan 02 18:51:01 2005 +0000"
      },
      "message": "Reverting some int -\u003e unsigned int fixes in command.c for now. Fixes crash\ndescribed in [quagga-dev 2292].\n"
    },
    {
      "commit": "d44debedf53b85c989b72fe7c6924ffc1e7e625b",
      "tree": "4c527145158b49674cffb714fb571fd7d9a92b24",
      "parents": [
        "4660687a38034d60296fbc9e82aae772011c407f"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Dec 29 20:06:23 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Dec 29 20:06:23 2004 +0000"
      },
      "message": "2004-12-29  Greg Troxel  \u003cgdt@poblano.ir.bbn.com\u003e\n\n\t* sockopt.c (getsockopt_ipv4_ifindex): Document calling\n\tconvention.  Beef up comments.  Handle the case where the cmsghdr\n\thas a zero controllen, or more specifically when the wanted option\n\tis not present.  This is needed for Solaris 8, and in general for\n\tany platform for which configure finds a method and it can fail.\n\tMark some changes with XXX to be cleaned up post 0.98.\n"
    },
    {
      "commit": "1d69fdf645d8434e8e1488f8bf0c73613df09da9",
      "tree": "c3612df88e349556c1570d7d2ce0b37ce590ea5d",
      "parents": [
        "3cade26fea2febf99780288d31d0bfe7e1b16ef1"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Dec 29 18:53:30 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Dec 29 18:53:30 2004 +0000"
      },
      "message": "2004-12-29  Greg Troxel  \u003cgdt@poblano.ir.bbn.com\u003e\n\n\t* sockopt.c (getsockopt_ipv4_ifindex): Return 0 when passed a NULL\n\t  cmsghdr pointer.\n\nI believe this will avoid ospfd crashing on Solaris 8, which seems to\ndefine IP_RECVIF but not actually implement it.\n"
    },
    {
      "commit": "1d75c8c3b28db50bc53771d5fac37b809d37b614",
      "tree": "530ea967460e0f9978572b85e15666617a4b3f45",
      "parents": [
        "af04bd7c102c3fc1a9c2e98337b0ab1fa824d080"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 28 21:43:17 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 28 21:43:17 2004 +0000"
      },
      "message": "2004-12-28 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sockopt.c: (setsockopt_ipv4_ifindex) Improve error message.\n\t  When neither IP_PKTINFO nor IP_RECVIF is defined, make return value\n\t  deterministic (-1).\n"
    },
    {
      "commit": "af04bd7c102c3fc1a9c2e98337b0ab1fa824d080",
      "tree": "f0a71ed52fa703ed6d1bccc84faa90aeb0943a62",
      "parents": [
        "c6487d61a9b7766f69718edbc484a6ad989bdef4"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 28 17:00:12 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 28 17:00:12 2004 +0000"
      },
      "message": "2004-12-28 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* thread.c: (funcname_thread_add_timer_msec) Reduce overflow risk.\n"
    },
    {
      "commit": "0e43a2bcc0b044ec8e92108811c1341076938af9",
      "tree": "b57ec33d9184ddbd0bfcd5d41344300440428c69",
      "parents": [
        "4ba9b9247222a6031a8060ddd39bfb19d90624e8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Dec 22 00:15:34 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Dec 22 00:15:34 2004 +0000"
      },
      "message": "2004-12-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.c: Dont allocate streams with 0 sized data buffers\n"
    },
    {
      "commit": "4ba9b9247222a6031a8060ddd39bfb19d90624e8",
      "tree": "4a738bb9239bd171135e61e81d17df833c07fd66",
      "parents": [
        "b8adec1f98b155c6bf5e54067c8e31ae1de3c133"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Dec 21 22:34:58 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Dec 21 22:34:58 2004 +0000"
      },
      "message": "2004-12-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* if.h: Add more \u0027non-generic\u0027 IFF_ flags.\n\t* if.c: IFF_NOXMIT/IFF_VIRTUAL interfaces are \u0027loopback like\u0027\n"
    },
    {
      "commit": "2885f72d546a9d4673e4b9a607f8e30ab2e88cc9",
      "tree": "47029b9cfbc3a3da505e7d43395b1a19714f0d74",
      "parents": [
        "202d08cab9ef110dcbf6202cd0223d8877c7f0b6"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 17 23:16:33 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 17 23:16:33 2004 +0000"
      },
      "message": "2004-12-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* command.c: (do_echo) Added new \"echo\" command, useful for\n\t  watchdog pinging to make sure the daemon is responsive.\n"
    },
    {
      "commit": "202d08cab9ef110dcbf6202cd0223d8877c7f0b6",
      "tree": "50fabfbb3e4567c9f4fd91d08c3ec72529158545",
      "parents": [
        "fa40f65874ca21bb9cca59ab5ddc8dbaf046f3c8"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 17 20:50:00 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 17 20:50:00 2004 +0000"
      },
      "message": "2004-12-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* pid_output.c: (pid_output_lock) Eliminate static function, and just\n\t  use the #ifdef to decide which version of the function to include.\n\t  This eliminates a compilation problem with gcc4.  And fix the\n\t  non-fcntl version so that it actually compiles.  Exit with\n\t  status 1 instead of -1 on error.\n"
    },
    {
      "commit": "81fc57ca0d743a6abe577c4f0b316bfb570e45be",
      "tree": "846f58014c25a74449c1ea19e075f6f0a23cc723",
      "parents": [
        "bc18d616ad7d1d580e1e04c28eab2cd9afb67fad"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 15 17:41:14 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 15 17:41:14 2004 +0000"
      },
      "message": "2004-12-15 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sigevent.c: (trap_default_signals) Ignore SIGPIPE instead of exiting.\n"
    },
    {
      "commit": "3378d2099440cb3a14dc7531a3221d4140e186e2",
      "tree": "098f20625c9a7cd329c68865502da0d1a23ccd79",
      "parents": [
        "c3324c63b5f6b39c5f63329a679628b80b63e1bc"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 10 22:43:17 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 10 22:43:17 2004 +0000"
      },
      "message": "2004-12-10 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.c: (zlog_signal,_zlog_assert_failed) Change logging level back to\n\t  LOG_ERR instead of LOG_EMERG.\n"
    },
    {
      "commit": "c3324c63b5f6b39c5f63329a679628b80b63e1bc",
      "tree": "ee3350541aab91dc957007c31d95b3b11cfd31f6",
      "parents": [
        "3fb9de74bbd3de3a264c20b1b486f9853f908c79"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Dec 09 17:26:31 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Dec 09 17:26:31 2004 +0000"
      },
      "message": "2004-12-09 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.c: (hex_append) No need to include this function if\n\t  HAVE_GLIBC_BACKTRACE is not defined.\n"
    },
    {
      "commit": "b9e7028fb2f626e1d345c6d52ace0567a410647f",
      "tree": "5a17a8485604b8f860ccabb43f1f6bbab82069d1",
      "parents": [
        "b6178002270192fe3ab2403dafac12e5babe11e6"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 08 17:14:45 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 08 17:14:45 2004 +0000"
      },
      "message": "2004-12-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* prefix.c: (prefix_copy) Error message before abort should\n\t  have severity LOG_ERR, not LOG_INFO.\n\t* memory.c: (mtype_log) Log level should be LOG_DEBUG, not LOG_INFO.\n"
    },
    {
      "commit": "8ddca7040da413cd283a4beba4634744f4e61ac8",
      "tree": "b0ff51f03f511a6c882c59272dff5134bf6b360f",
      "parents": [
        "82146b88915ca614ee1c28659478d6e310d84110"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 18:53:52 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 18:53:52 2004 +0000"
      },
      "message": "2004-12-07 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* {smux.c,zclient.c}: Change level of debug messages to LOG_DEBUG.\n"
    },
    {
      "commit": "82146b88915ca614ee1c28659478d6e310d84110",
      "tree": "f0dc71770433f2bb458f38595790a0b2b34ff9ec",
      "parents": [
        "274a4a4447b13f89f8237156a887d05a24a73cc6"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 17:15:55 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 17:15:55 2004 +0000"
      },
      "message": "2004-12-07 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* command.c: (config_write_host) Note that \"log trap\" is deprecated\n\t  when writing out the config.\n"
    },
    {
      "commit": "274a4a4447b13f89f8237156a887d05a24a73cc6",
      "tree": "d5c2c6ee94bb77ef4346bcc07834808a75210bfd",
      "parents": [
        "5e76477456ce8bc4a1eeaccb5c5e1d3d99ab1300"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 15:39:31 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 15:39:31 2004 +0000"
      },
      "message": "2004-12-07 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* bgp_main.c: (main) The 2nd argument to openzlog has been removed.\n\t* isis_main.c: (main) The 2nd argument to openzlog has been removed.\n\t* ospf6_main.c: (main) The 2nd argument to openzlog has been removed.\n\t  Note that stdout logging will no longer be enabled by default when\n\t  not running as a daemon.\n\t* ospf_main.c: (main) The 2nd argument to openzlog has been removed.\n\t* rip_main.c: (main) The 2nd argument to openzlog has been removed.\n\t* ripng_main.c: (main) The 2nd argument to openzlog has been removed.\n\t* main.c: (main) The 2nd argument to openzlog has been removed.\n\t  So stdout logging will no longer be enabled by default.\n\t* irdp_main.c: (irdp_finish) Reduce severity of shutdown message\n\t  from LOG_WARNING to LOG_INFO.\n\t* vtysh.c: Make several functions static instead of global.\n\t  Added several commands to support destination-specific logging levels.\n\t  (vtysh_completion) This function is unused, so comment it out.\n\t* basic.texi: Document new logging features.  Separate basic config\n\t  commands from basic VTY commands.\n\t* log.h: Replace struct zlog flags and maskpri fields with maxlvl\n\t  array to support individual logging levels for each destination.\n\t  Remove the 2nd argument to openzlog since the default logging config\n\t  should be standardized inside the library.  Replaced the\n\t  zlog_set_flag and zlog_reset_flag functions with zlog_set_level.\n\t  And zlog_set_file now requires an additional log_level argument.\n\t  Declare zlog_proto_names for use inside command.c in the\n\t  \"show logging\" command.  Added defines useful for command\n\t  construction.\n\t* log.c: (vzlog) Decide where to send the message based on the\n\t  individual logging levels configured for each destination.\n\t  Remove support for ZLOG_STDERR since it was never actually used.\n\t  Support record-priority for terminal monitors.\n\t  (zlog_signal,zlog_backtrace_sigsafe) Support destination-specific\n\t  logging levels.  Remove stderr support (was never used).  Added\n\t  support for terminal monitor logging.\n\t  (_zlog_assert_failed) Increase message severity to LOG_EMERG.\n\t  (openzlog) Remove 2nd argument since default config should be\n\t  standardized in library.  By default, terminal monitoring\n\t  is set to debug, and all other logging is disabled.\n\t  (zlog_set_flag,zlog_reset_flag) Removed.\n\t  (zlog_set_level) New function to replace zlog_set_flag and\n\t  zlog_reset_flag.  Supports destination-specific logging levels.\n\t  (zlog_set_file,zlog_reset_file) Support file-specific logging level.\n\t  (zlog_rotate) Log an error message if fopen fails, and support\n\t  new file-specific logging level.\n\t* command.h: Change DEFUN_CMD_FUNC_DECL and DEFUN_CMD_FUNC_TEXT so that\n\t  command functions will be static instead of global.  Remove\n\t  declarations for config_exit and config_help.  Define new macros\n\t  DEFUNSH_ATTR, DEFUNSH_HIDDEN, and DEFUNSH_DEPRECATED so we can\n\t  have deprecated commands in vtysh.  Similarly, for completeness,\n\t  define macros ALIAS_SH, ALIAS_SH_HIDDEN, and ALIAS_SH_DEPRECATED.\n\t  Also, fix bug in ALIAS_ATTR macro (didn\u0027t matter because it\n\t  was never used).\n\t* command.c: Make many functions static instead of global.\n\t  (facility_name,facility_match,level_match) New functions\n\t  to support enhanced destination-specific logging levels.\n\t  (config_write_host) Support new destination-specific logging levels.\n\t  (config_logmsg) Added new \"logmsg\" command to help test logging\n\t  system.\n\t  (show_logging) Added \"show logging\" command to show the current\n\t  configuration of the logging system.\n\t  (config_log_stdout_level) Support explicit stdout logging level.\n\t  (no_config_log_stdout) Now takes optional LEVEL arg.\n\t  (config_log_monitor,config_log_monitor_level,no_config_log_monitor)\n\t  New commands creating new \"log monitor\" commands to set terminal\n\t  monitoring log level.\n\t  (config_log_file_level) Support explicit file logging level.\n\t  (config_log_syslog_level) Support explicit syslog logging level.\n\t  (config_log_facility,no_config_log_facility) Implement new\n\t  \"log facility\" command.\n\t  (cmd_init) Add hooks for new commands: \"show logging\", \"logmsg\",\n\t  \"log stdout \u003clevel\u003e\", \"log monitor\", \"log monitor \u003clevel\u003e\",\n\t  \"no log monitor\", \"log file \u003cfilename\u003e \u003clevel\u003e\",\n\t  \"no log file \u003cfilename\u003e \u003clevel\u003e\", \"log syslog \u003clevel\u003e\",\n\t  \"log facility\", and \"no log facility\".\n\t* vty.h: Added a \"level\" argument to vty_log so it can support\n\t  \"log record-priority\".  Declare new function vty_log_fixed for\n\t  use in signal handlers.\n\t* vty.c: (vty_log,vty_log_out) Added a \"level\" argument to support\n\t  \"log record-priority\" for vty terminal monitors.\n\t  (vty_down_level) Use config_exit_cmd.func instead of calling\n\t  config_exit directly (since command functions will now be static\n\t  instead of global).\n\t  (vty_log_fixed) New function to send terminal monitor messages\n\t  from inside a signal handler.\n"
    },
    {
      "commit": "5e76477456ce8bc4a1eeaccb5c5e1d3d99ab1300",
      "tree": "6a05e47a55e4afce73b653e00f9abfd34f860511",
      "parents": [
        "2cac10935b6e2aabeb480d6769be01d9eec7101f"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 03 19:03:33 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 03 19:03:33 2004 +0000"
      },
      "message": "2004-12-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* HACKING: Indicate that header files should be consulted for\n\t  documentation, particularly logging levels in lib/log.h.\n\t* log.h: Document appropriate use of syslog logging priorities\n\t  inside quagga.\n"
    },
    {
      "commit": "56f2069a03a1be9bfd7605e43aa0d899b0d5ed60",
      "tree": "f039affbe88bb557260802a2913915cc8ee73f5c",
      "parents": [
        "1210fa6674e36a6acbd44e571e681842c5838501"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 03 17:40:31 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 03 17:40:31 2004 +0000"
      },
      "message": "2004-12-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* command.h: Remove fields log_stdout and log_syslog from struct host,\n\t  since they are just trying to duplicate information in the\n\t  zlog_default structure.  Note that this fixes a bug since those\n\t  fields were not registering any logging that was established\n\t  in the initial call to openzlog (this affects only the zebra and\n\t  ospf6d daemons).  It is probably a bug to turn on any logging by\n\t  default in the call to openzlog.\n\t* command.c: (config_write_host) Get logging info from zlog_default\n\t  instead of now-removed fields host.log_stdout and host.log_syslog.\n\t  (config_log_stdout,no_config_log_stdout) Do not set now-removed field\n\t  host.log_stdout, since this info is recorded in zlog_default.\n\t  (config_log_file) Use XSTRDUP (instead of strdup) to set host.logfile.\n\t  (config_log_syslog,config_log_syslog_facility,no_config_log_syslog)\n\t  Do not set now-removed field host.log_syslog, since this info is\n\t  recorded in zlog_default.\n"
    },
    {
      "commit": "887c44a4f3d8219dc5b1c52b5dcde1f31d52b73d",
      "tree": "5c0ef5fe1d3948c56e6abf2ffd3c9811e92f0f2e",
      "parents": [
        "bec595ada58ebfa98ad49220f29ab28b58549094"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 03 16:36:46 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 03 16:36:46 2004 +0000"
      },
      "message": "2004-12-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* bgp_main.c: (sigint) Use zlog_notice for termination message.\n\t  (main) Use zlog_notice for startup announcement.\n\t* isis_main.c: (sigint,sigterm) Use zlog_notice for termination message.\n\t  (terminate) This function should be static, not global.\n\t  (main) Use zlog_notice for startup announcement, and remove\n\t  ifdef ZEBRA_VERSION.\n\t* version.h.in: Remove declaration for pid_output_lock, this function\n\t  is now static, not global.\n\t* pid_output.c: (pid_output_lock) This function should be static, not\n\t  global.  And remove \"old umask\" error message, since it was really\n\t  an unimportant debug message, not an error.\n\t  (pid_output) Need to declare static function pid_output_lock.\n\t* ospf6_main.c: (sigint,sigterm) Use zlog_notice for termination\n\t  message.\n\t  (main) Remove commented-out call to pid_output_lock (which should\n\t  never be called other than from inside pid_output).  And use\n\t  zlog_notice to print the startup message, which now includes\n\t  the vty port.\n\t* ospf_main.c: (sigint) Use zlog_notice for termination message.\n\t  (main) Issue a startup announcement using zlog_notice.\n\t* rip_main.c: (sigint) Use zlog_notice for termination message.\n\t  (main) Add a startup announcement using zlog_notice.\n\t* ripng_main.c: (sighup) Remove spurious terminating message.\n\t  (sigint) Use zlog_notice for termination message.\n\t  (main) Issue a startup announcement using zlog_notice.\n\t* main.c: (sigint) Use zlog_notice for termination message.\n\t  (main) Add a startup announcement using zlog_notice.\n"
    },
    {
      "commit": "7d149b8e48ef72021aefddf44f400bccaf391870",
      "tree": "67a7aeda5a2d98aabcafabe9e936a5711076ad41",
      "parents": [
        "2557aed16aa98f90d70a14ad4546742c79af7668"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Nov 28 23:00:01 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Nov 28 23:00:01 2004 +0000"
      },
      "message": "2004-11-28 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.h: Remove several unused fields from struct zlog.  Add comments\n\t  for other fields, and add one new field syslog_options that is\n\t  used in the new syslog_sigsafe implementation.\n\t* log.c: (syslog_sigsafe) New function to send syslog messages in\n\t  an async-signal safe way that can be used inside a signal handler.\n\t  (syslog_connect) New function to connect to syslog daemon inside a\n\t  signal handler.  This function supports only systems where /dev/log\n\t  is a unix datagram socket (e.g. not Solaris).\n\t  (zlog_signal) Call syslog_sigsafe if syslog logging is enabled.\n\t  (zlog_backtrace_sigsafe) Call syslog_sigsafe if syslog logging is\n\t  enabled.\n\t  (openzlog) Save syslog_options for use in syslog_sigsafe.\n\t  (num_append) Fix bug: handle 0 properly.\n\t  (hex_append) New function to print a u_long in hex format.\n"
    },
    {
      "commit": "2557aed16aa98f90d70a14ad4546742c79af7668",
      "tree": "d3d6d892c9ff06653333a5bca1627da078b63930",
      "parents": [
        "48d6c69b345096425644b7796a7bc6b36bf0e974"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Nov 28 21:16:20 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Nov 28 21:16:20 2004 +0000"
      },
      "message": "DEFUN_DEPRECATED passes attribute to DEFUN as well.\n"
    },
    {
      "commit": "48d6c69b345096425644b7796a7bc6b36bf0e974",
      "tree": "ad132074b26d440c8db8e3558361b144c187595e",
      "parents": [
        "5b85facc638d219a7281b75bec8a08dcf79a46ce"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 26 20:52:59 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 26 20:52:59 2004 +0000"
      },
      "message": "2004-11-26 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.c, log.h, memory.c: Change function name from zlog_backtrace_safe\n\t  to the more self-explanatory zlog_backtrace_sigsafe.\n"
    },
    {
      "commit": "5b85facc638d219a7281b75bec8a08dcf79a46ce",
      "tree": "3f12c2b86c5ea322c72511304af81596bb89cdae",
      "parents": [
        "063ee52af64472474af2fa4b3cb2ba9ced746b9f"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 26 19:36:42 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 26 19:36:42 2004 +0000"
      },
      "message": "2004-11-26 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* debug.[ch]: Remove unused files.\n\t* Makefile.am: Remove references to debug.c and debug.h\n\t* ospf_main.c: Remove #include \"debug.h\" (was not being used, and\n\t  lib/debug.h has now been deleted).\n"
    },
    {
      "commit": "063ee52af64472474af2fa4b3cb2ba9ced746b9f",
      "tree": "d9d0f9dac723159cefd21d350195fabe286032e5",
      "parents": [
        "d1c51d7c27a1c5f5c838ef5f09e98e33527bfddc"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 26 18:11:14 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 26 18:11:14 2004 +0000"
      },
      "message": "2004-11-26 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.c: (zlog_backtrace) New function to log a backtrace.\n\t  (zlog_backtrace_safe) Log a backtrace in an async-signal-safe way.\n\t  Unfortunately, this function does not support syslog logging yet.\n\t  (zlog_signal) Move backtrace code into separate function\n\t  zlog_backtrace_safe.\n\t  (_zlog_assert_failed) Call zlog_backtrace before aborting.\n\t* log.h: Declare new functions zlog_backtrace and zlog_backtrace_safe.\n\t* memory.c: (zerror) Call zlog_backtrace before aborting.\n"
    },
    {
      "commit": "d1c51d7c27a1c5f5c838ef5f09e98e33527bfddc",
      "tree": "445bf17ab157f7f5d0ed52cc1873cc15d5737256",
      "parents": [
        "546e20d6754a0a4c6bc48d642b5bfb4a3db6d7c3"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 26 14:14:30 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 26 14:14:30 2004 +0000"
      },
      "message": "2004-11-26 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* Makefile.am: Need to add zassert.h to pkginclude_HEADERS.\n"
    },
    {
      "commit": "4cf0d0df23f7a35a3c1570c94ba08fa96d47bfc1",
      "tree": "9894529e896b82cf957cb60c03be04f4fe9d91ea",
      "parents": [
        "e5879ca1d8ea26870dbf74f330f5e6f5a9c93bfa"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Nov 25 17:14:34 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Nov 25 17:14:34 2004 +0000"
      },
      "message": "2004-11-25 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra.h: If not C99 and there\u0027s no va_copy macro and there is\n\t  a __va_copy macro, define va_copy as __va_copy.\n"
    },
    {
      "commit": "e5879ca1d8ea26870dbf74f330f5e6f5a9c93bfa",
      "tree": "890045008a54c7b046395417f7ece40c9426ef3f",
      "parents": [
        "ad4d974d06ba3344e2e0df3277f7e0c42f018a4e"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Nov 25 16:07:53 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Nov 25 16:07:53 2004 +0000"
      },
      "message": "2004-11-25 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* pid_output.c: (pid_output_lock) Fix 2 bugs: when locking, should\n\t  set l_whence to SEEK_SET, not SEEK_END.  And after writing new\n\t  pid to file, must ftruncate to eliminate any extraneous bytes left\n\t  over from the last time a pid was written.\n"
    },
    {
      "commit": "cee3df1e4b1b8103bf81e5281a46aab7881f93df",
      "tree": "40d7cc8c22da9634739256a9d577b140b41730b8",
      "parents": [
        "b9e0ee31864c94c729fb6b6f6b2ccbc79dbcd474"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Nov 24 17:14:49 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Nov 24 17:14:49 2004 +0000"
      },
      "message": "2004-11-24 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zassert.h: New header file to declare a quagga-specific assert macro.\n\t* log.c: (_zlog_assert_failed) New function called when assert fails\n\t  to log the error and abort.\n\t* zebra.h: Include \"zassert.h\" instead of \u003cassert.h\u003e.\n\t* regex.c: Include \"zassert.h\" instead of \u003cassert.h\u003e.\n\t* dict.c: Include \"zassert.h\" instead of \u003cassert.h\u003e.\n"
    },
    {
      "commit": "59a06a915da9129a4e756c2b4d42449aa71a0ee4",
      "tree": "44090f696cbec97cab5e5b090b22c7431a5d6490",
      "parents": [
        "d246bd965898f0ba6781f2b2048af9a5eba079d3"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Nov 23 18:19:14 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Nov 23 18:19:14 2004 +0000"
      },
      "message": "2004-11-23 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sigevent.c: (signal_init) Set up some default signal handlers\n\t  so that processes will issue an error message before terminating\n\t  or dumping core.\n\t  (trap_default_signals) New function to set up signal handlers\n\t  for various signals that may kill the process.\n\t  (exit_handler) Call zlog_signal, then _exit.\n\t  (core_handler) Call zlog_signal, then abort.\n\t* log.h: Declare new function zlog_signal.\n\t* log.c: (zlog_signal) New function to log information about\n\t  a received signal before the process dies.  Try to log a\n\t  backtrace also.\n\t  (quagga_signal_handler,signal_set) Should be static.\n"
    },
    {
      "commit": "d246bd965898f0ba6781f2b2048af9a5eba079d3",
      "tree": "80ed32d986e3845d041cc2bc08bcc2b03a8ec75d",
      "parents": [
        "8686fc746cad9fda26812c88df5faaff0f418650"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Nov 23 17:35:08 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Nov 23 17:35:08 2004 +0000"
      },
      "message": "2004-11-23 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.c: (vzlog) Take a single va_list argument and use va_copy\n\t  as necessary for multiple traversals.\n\t  (zlog) Pass only one va_list to vzlog.\n\t  (zlog_*,plog_*) Use a macro for boilerplate code; pass only one\n\t  va_list to vzlog.\n\t  (zlog_set_file) Remove unused 2nd argument (flags).\n\t  (zlog_save_cwd,zlog_get_cwd,zlog_free_cwd) Remove unused functions.\n\t* log.h: Remove ZLOG_*_INDEX defines (no longer used).\n\t  Remove unused 2nd argument from zlog_set_file prototype.\n\t  Fix prototype for zlog_rotate.\n\t* command.c: (config_log_file) Remove unused 2nd arg to zlog_set_file.\n\t* vty.c: (vty_out) Fix stdarg usage to perform multiple traversals\n\t  properly.\n\t  (vty_log) Must use va_copy for multiple traversals of va_list arg.\n"
    },
    {
      "commit": "ca35976927190883368ef3bd32bbf9f174575bd6",
      "tree": "aa3b9fa981719c48f0418abb06355e88ee39dbcb",
      "parents": [
        "ff29bb31505b485e8ffa561e21d075d28ac7d5e7"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 19 23:40:16 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 19 23:40:16 2004 +0000"
      },
      "message": "2004-11-19 David Young \u003cdyoung@pobox.com\u003e\n\n\t* log.c: (safe_strerror) New function: safe wrapper for strerror.\n"
    },
    {
      "commit": "ff29bb31505b485e8ffa561e21d075d28ac7d5e7",
      "tree": "20fa0d8bea625c82f5e347b3fadecc93a1112ef0",
      "parents": [
        "48577196af0cd83272cb885ac018d19e30058653"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 19 18:29:22 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 19 18:29:22 2004 +0000"
      },
      "message": "2004-11-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sockopt.c: (setsockopt_so_recvbuf) Stop error message from being\n\t  printed every time.\n"
    },
    {
      "commit": "f858e49beba6a9b79b41ad26d29b431c12fdf2f8",
      "tree": "bd0868a0ee2ba2025fa215d357f45d6b7d8bc8de",
      "parents": [
        "56d1d2027bc6746e1a051067b24a792595292909"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Nov 16 14:25:30 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Nov 16 14:25:30 2004 +0000"
      },
      "message": "2004-11-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* memory.h: Fix prototype for memory_init().\n\t* memory.c: Declare many functions and data structures static instead\n\t  of global.  Fix prototype for memory_init().\n"
    },
    {
      "commit": "69e1325faf47762fd08917b8f20a20abb59d41e6",
      "tree": "60d6df8c1d754c84fa3108a5f19bbf91cb084ab1",
      "parents": [
        "fbb6709986ee29b57a8a6103c592de80647ead00"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Mon Nov 15 18:51:15 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Mon Nov 15 18:51:15 2004 +0000"
      },
      "message": "Rationalize CMSG_SPACE usage:\n\n  in lib/zebra.h, ensure that RFC3542-required CMSG_SPACE and CMSG_LEN\n  are defined.  Warn if alignment assumptions are made, since they are\n  i386-centric.\n\n  in lib/sockopt.h, declare that sockopt sizes are without\n  CMSG_SPACE-required padding - just simple sizeof.\n\n  in ospfd/ospf_packet.c, simply use CMSG_SPACE\n\nThis should remove all instances of CMSG_ALIGN from the source code.\nThis is a nonstandard, though rational, construct; quagga should use\nonly those defines in RFC3542.\n"
    },
    {
      "commit": "7fa25ff6aa2b6f235cdf0e6784b36cf6d516cfd4",
      "tree": "97eabaeaee5d83819991d9c8e26f47a61442dce3",
      "parents": [
        "8bed780be262f0dfecffdbb1fa10bc7484c987f1"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Nov 15 16:12:32 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Nov 15 16:12:32 2004 +0000"
      },
      "message": "2004-11-15 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* memory.c: (zerror) Use zlog_err instead of fprintf to stderr.\n\t  Instead of exiting, log currenty memory usage and then abort.\n\t  (log_memstats) New function to log memory statistics, called by\n\t  zerror.\n\t  (show_memory_all) Loop over new mlists array instead of calling\n\t  show_memory_vty separately for each memory_list.\n"
    },
    {
      "commit": "b86718ea99cce28f4376af89a6c49b9ca6d77b7c",
      "tree": "23ffcae4a451da3ab6d03ed02f25978f07431970",
      "parents": [
        "e050db2678b9ff002cd8b06da3db4d35bf2e1837"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 08 17:34:07 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 08 17:34:07 2004 +0000"
      },
      "message": "Oops, wrong date on changelog entries..\n"
    },
    {
      "commit": "2265d20c1a568c7633d086ccf0233761ff942a2c",
      "tree": "f8b74d86a5b5e386ffec2e41f2025064aac423e4",
      "parents": [
        "3e6064f8384e5477593b8af0442931ca5930918b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 08 15:43:21 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 08 15:43:21 2004 +0000"
      },
      "message": "2004-11-07 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* buffer.c: Add missing include of log.h.\n\t  (buffer_flush_available) written is compared against\n\t  mostly against unsigned types, only for the writev do we need\n          signed compare, so declare it as size_t and cast it to ssize_t\n          just for the error compare when we\u0027ve called writev.\n\t* buffer.h: Add comment that buffer data sizes really should be\n          size_t.\n"
    },
    {
      "commit": "b35e5b4efc3c359e7b4f89e4423eaccabd51067b",
      "tree": "c3f73089863c4c087c40b26cc2f92b4f20b44f94",
      "parents": [
        "0df63b52bd6e94b765a2156dac3e26ac5f14dd68"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 07 22:27:27 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 07 22:27:27 2004 +0000"
      },
      "message": "2004-11-07 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* lib/version.h.in: add autoconf configure_input output var\n"
    },
    {
      "commit": "5a64665039dc98c341fd8d50458ec2a72c5ebbf5",
      "tree": "e89689f085b7b8eed09a0558e2a80dadb4826033",
      "parents": [
        "f3ae74cdf0768d0bd35f26f728f72439f2d8bd6f"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 05 01:25:55 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 05 01:25:55 2004 +0000"
      },
      "message": "2004-11-04 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* vty.h: Remove fields in struct vty that were related to VTY_CONTINUE\n\t  capabilities (that were used only in bgpd/bgp_route.c and are now\n\t  removed).  Also remove some other fields that were not being\n\t  used at all.\n\t* vty.c: (vty_execute) Do not test for obsolete status values VTY_START\n\t  and VTY_CONTINUE.\n\t  (vty_read) Remove calls to vty-\u003eoutput_func since that was part\n\t  of the VTY_CONTINUE infrastructure that has been removed.\n\t  (vty_flush) Remove code to support VTY_START and VTY_CONTINUE.\n\t  (vty_close) Remove code to cancel vty-\u003et_output thread, since that\n\t  thread was never actually used.\n\t* bgp_route.c: Remove all code related to VTY_CONTINUE; this feature\n\t  is deprecated because the output did not represent a single point\n\t  in time.  All output needs to be generated inline and buffered\n\t  by the library code.\n\t  (route_vty_out,route_vty_out_tag,damp_route_vty_out,\n\t   flap_route_vty_out) Remove code to count number of lines of output,\n\t   since this was only useful for VTY_CONTINUE behavior.\n\t  (bgp_show_callback) Removed.\n\t  (bgp_show_table) Remove hooks for VTY_CONTINUE callback support.\n\t  As a result, there\u0027s a new output_arg argument to this function.\n\t  Make function static.\n\t  (bgp_show) Make function static and add a new output_arg argument.\n\t  Change all functions that call bgp_show or bgp_show_table to\n\t  pass the new output_arg argument (that used to be passed inside\n\t  vty-\u003eoutput_arg).\n\t* bgp_mplsvpn.c: Remove declarations of functions defined in\n\t  bgp_route.c; these declarations belong in bgp_route.h.\n\t* bgp_route.h: Declare 3 global functions used in both bgp_route.c\n\t  and in bgp_mplsvpn.c.\n"
    },
    {
      "commit": "49ff6d9d7a9ef9419dd7aab58ac9f7806e3e1040",
      "tree": "bb9e1d36b5bef56d2e47c69b6bab1ef54cf9696e",
      "parents": [
        "62d8e96a06e664c929a164bfb66b515d1c6877a8"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Nov 04 19:26:16 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Nov 04 19:26:16 2004 +0000"
      },
      "message": "2004-11-04 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* vty.c: Vtysh connections to daemons should use buffering.\n\t  (vty_out) Remove exception for vty_shell_serv, just use buffer_write.\n\t  (vty_new) Increase output buffer size to 4096 rounded up to a\n\t  multiple of pagesize.\n\t  (vtysh_read) After command has been executed and all output buffered,\n\t  call buffer_flush_available and schedule further writes if the\n\t  buffers are not yet empty.\n\t  (vtysh_write) New function to flush output to vtysh when the socket\n\t  is writeable.\n\t  (vty_event) Added new VTYSH_WRITE event for flushing buffers to vtysh\n\t  clients.  Also, should save read thread in vty-\u003et_read so the\n\t  thread can be cancelled in vty_close.\n\t* buffer.h: In struct buffer_data, remove unused \"parent\" field.\n\t  Convert \"unsigned char *data\" to \"unsigned char data[0]\" to save\n\t  a malloc.  Declare new function buffer_flush_available that works\n\t  with non-blocking sockets.\n\t* buffer.c: (buffer_data_new) Use a single malloc now that data is\n\t  a variable-size array at end of structure.\n\t  (buffer_data_free) Just a single free now that data is part of the\n\t  structure.\n\t  (buffer_write) Simplify the logic to make behavior more transparent.\n\t  (buffer_flush) Decrease b-\u003elength as data is written out.\n\t  (buffer_flush_vty_all) Decrease b-\u003elength as buffers are freed.\n\t  (buffer_flush_vty) Decrease b-\u003elength as data is written out.\n\t  (buffer_flush_available) New function to flush non-blocking sockets.\n"
    },
    {
      "commit": "e064d6d9c3c3319c62fe4fac3e4e5f7a1941a98c",
      "tree": "838df17a38028d8f4afe496f0a2335a0f6945c21",
      "parents": [
        "a2b1ecd29f8bd4b01d5287ff862e156b2ffc30b3"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 01 08:59:21 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 01 08:59:21 2004 +0000"
      },
      "message": "2004-11-01 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sockopt.c: (setsockopt_pktinfo) remove, its unused.\n"
    },
    {
      "commit": "039b95776979c74f7d02719800f9d742338e815b",
      "tree": "f833c1f87818c79b17cec0c3c87b2e4763675c90",
      "parents": [
        "70e149e0492c369a64933d63c212d4e15cd5194e"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 16:43:17 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 16:43:17 2004 +0000"
      },
      "message": "2004-10-31 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* thread.c: Use XCALLOC and sizeof the type, not the pointer.\n"
    },
    {
      "commit": "70e149e0492c369a64933d63c212d4e15cd5194e",
      "tree": "52531e4a0fdd6b0d09a2d527c4df09ac0eee6410",
      "parents": [
        "9d11a19e6918d96d1466a5040bdf4228ec08d552"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 16:29:50 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 16:29:50 2004 +0000"
      },
      "message": "2004-10-31 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* smux.c: fix int to size_t compile warnings\n"
    },
    {
      "commit": "9d11a19e6918d96d1466a5040bdf4228ec08d552",
      "tree": "18797b7c8496931b03d61e33c9ce00522deb88ae",
      "parents": [
        "66cbbcebc86bb3747073f133bdabf0102cb1229c"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 16:19:24 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 16:19:24 2004 +0000"
      },
      "message": "2004-10-31 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* memory.h: Add MTYPE_THREAD_FUNCNAME and MTYPE_THREAD_STATS\n\t* thread.c: Update stats and funcname alloc/free to use previous\n\t  specific memory type defines\n"
    },
    {
      "commit": "66cbbcebc86bb3747073f133bdabf0102cb1229c",
      "tree": "c35d5437dadb8e7d1c1eabd92c4fff7d2c1ad491",
      "parents": [
        "37ccfa3defa0a3cfb89ac16488ac762246416d23"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 16:15:33 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 16:15:33 2004 +0000"
      },
      "message": "2004-10-31 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* keychain.c: Convert some more strtoul users to VTY_GET_INTEGER.\n"
    },
    {
      "commit": "75e15fe4430bf6f9c5bd65b851d771e88bbd2096",
      "tree": "85c8d0038e8fc51702b9e78a6c51b18303022c35",
      "parents": [
        "dccfb1902c5ed8126a304b9ca12830a378933d1f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 02:13:09 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 02:13:09 2004 +0000"
      },
      "message": "2004-10-31 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* vty.c: As per Andrew\u0027s suggestions..\n\t  (vty_serv_un) remove flags.\n\t  (vtysh_accept) close socket if we cant set NONBLOCK. Add flags.\n"
    },
    {
      "commit": "dccfb1902c5ed8126a304b9ca12830a378933d1f",
      "tree": "69028a740d83992fa6e5092066d3c92672bcd0ff",
      "parents": [
        "28f79728b6ec46f545fc9978a9238e6d58c7a5d2"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 29 08:29:36 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 29 08:29:36 2004 +0000"
      },
      "message": "2004-10-29 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* vty.c: Move setting of sock to O_NONBLOCK from vty_serv_un\n\t  to vtysh_accept, where sock is the actual fd we wanted to set to\n          O_NONBLOCK, ie the /connected/ vtysh unix socket.\n"
    },
    {
      "commit": "508ec9102057c86769e5c0dd280037025102a9c0",
      "tree": "20524add351bf9f532e7c1812c242e565b5dc0b1",
      "parents": [
        "6b637e9602316d98983fa103dfdbef4bbf723ffb"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Oct 23 14:26:49 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Oct 23 14:26:49 2004 +0000"
      },
      "message": "Yet another breakage introduced in May with zserv cleanup.\n"
    },
    {
      "commit": "af0d97eb4826376f6d0a2f053b416d111b4af6f8",
      "tree": "47e823dfd86176a66c3ec6a246739d40fa3bb1e7",
      "parents": [
        "4ccb2c46c51c382f1a1d34f1f6814725c7d972e5"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 23:24:43 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 23:24:43 2004 +0000"
      },
      "message": "2004-10-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* zebra.h: reserve ZEBRA_ROUTE_HSLS\n"
    },
    {
      "commit": "4ccb2c46c51c382f1a1d34f1f6814725c7d972e5",
      "tree": "05deadb30fb8c54d567da3c75761342be2e228dd",
      "parents": [
        "06f953f7abd1ac10e059fc756878ac135bb76c58"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 22:52:33 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 22:52:33 2004 +0000"
      },
      "message": "- credit rix for fixing openbsd\n"
    },
    {
      "commit": "4927cf0bf0828f2c4a9bda30f3c890d1835c7370",
      "tree": "09ec812c627aeeb00a5aba1c58b0fe675d7a4fb8",
      "parents": [
        "406d67165262a3f9443f395c7c85d8c3519309ef"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 16:55:10 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 16:55:10 2004 +0000"
      },
      "message": "2004-10-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sockopt.h: Fix elif that should be an else.\n"
    },
    {
      "commit": "406d67165262a3f9443f395c7c85d8c3519309ef",
      "tree": "198c7eb16a8d70d677a23e20082a20b4a269dc69",
      "parents": [
        "ac1912327ea078f1336d54fdb1177592f94a7980"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 12:27:44 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 12:27:44 2004 +0000"
      },
      "message": "2004-10-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* command.h: Cleanup the defines a bit, add helper defines and\n\t  collapse all defines to use those. Add an attribute field to\n\t  cmd_element to support, eg hidden or deprecated commands, add\n          defun defines for such. All that\u0027s left to do is add logic\n          to command.c to check these attributes... ;)\n"
    },
    {
      "commit": "23b9c61e5bb60d557b07dc1d7c4d7614f63dc009",
      "tree": "5780bf6f095f8eb65b8e698fa6193df88cdc66fd",
      "parents": [
        "7d9c6e511597ee76d42bede782c9ddb9e1f83389"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 11:51:57 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 11:51:57 2004 +0000"
      },
      "message": "2004-10-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * sockopt.c: (setsockopt_pktinfo) unexported\n\t* sockopt.h: Cleanup SOCKOPT_CMSG defines a bit. Add a throwaway\n          define for SOPT_SIZE_CMSG_IFINDEX_IPV4 for systems which have\n          neither IP_RECVIF nor IP_PKTINFO (eg openbsd).\n"
    },
    {
      "commit": "7d9c6e511597ee76d42bede782c9ddb9e1f83389",
      "tree": "2c23062b129595c15e48153a2508500e93b2829e",
      "parents": [
        "c49ad8f1b0775c1b35ea9bf75f44f3eca105d786"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 10:54:39 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 10:54:39 2004 +0000"
      },
      "message": "2004-10-13 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sockopt.c: (getsockopt_ipv4_ifindex) no ifindex should be 0, not\n          -1.\n"
    },
    {
      "commit": "6590f2c3dc10acaa04cea3206fd00445e0a6145c",
      "tree": "6ca50941520649a19f7488a45a4ca2f9b7f84ef1",
      "parents": [
        "3fb9cd6ef456959b6eff939d5c316f6785c2dda4"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 19 20:40:08 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 19 20:40:08 2004 +0000"
      },
      "message": "Small copyright string and hostname related cleanup.\n"
    },
    {
      "commit": "3fb9cd6ef456959b6eff939d5c316f6785c2dda4",
      "tree": "e350cb3ef7b20b8bbccfb1aa9309152311e845bd",
      "parents": [
        "5ae35f45f1292dce3a01f241accafeb2e59b10cc"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 19 19:44:43 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 19 19:44:43 2004 +0000"
      },
      "message": "OK. Here it is - PtP patch from Andrew J. Schorr. No problems with ospfd,\nripd might need some more testing though.\n"
    },
    {
      "commit": "c75105ab6e6eeac0b013eab186c97641984f68cc",
      "tree": "ea221df06e957de7e83f379c9b45f578762736e7",
      "parents": [
        "d68614db1dc36a6814fee33f584417b1441a83e4"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Oct 13 10:33:26 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Oct 13 10:33:26 2004 +0000"
      },
      "message": "Make initializing smux connection configurable - \"smux peer OID\" command\ninitializes connection, and \"no smux peer\" command terminates it. Fixes\nbugzilla #47 and #112.\n"
    },
    {
      "commit": "ddd85ed1af88068939cee36a43125ff8ad50cf79",
      "tree": "d47785fc08f730fb92afa98800ce492148fb32dd",
      "parents": [
        "42d498658d85e36a7e5910955e7425b1fa2afa69"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Oct 13 08:18:07 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Oct 13 08:18:07 2004 +0000"
      },
      "message": "Fix critical bugzilla #113. Make CMD_ERR_NOTHING_TODO nonfatal.\n"
    },
    {
      "commit": "42d498658d85e36a7e5910955e7425b1fa2afa69",
      "tree": "4745462eb34a84e32ef5d3e1586a3cb5a983626e",
      "parents": [
        "fd79ac918b8feaacebe9719adaac97dffb69137a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 13 05:22:18 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 13 05:22:18 2004 +0000"
      },
      "message": "2004-10-13 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (global) more const\u0027ification.\n\t* sockunion.c: (sockunion_su2str) buffer should be sized\n          SU_ADDRSTRLEN.\n          (sockunion_log) do not return stack variables, strdup buf before\n          return.\n        * vty.h: Fix up the VTY_GET_INTEGER macros. Testing caller supplied\n          values against ULONG_MAX is daft, when caller probably has passed\n          a type that can not hold ULONG_MAX. use a temporary long instead.\n          Add VTY_GET_LONG, make VTY_GET_INTEGER_RANGE use it, make\n\t  VTY_GET_INTEGER a define for VTY_GET_INTEGER_RANGE.\n"
    },
    {
      "commit": "a149411b85bbe74cde47d82193026b9401b29de0",
      "tree": "87e720d2fad17c0af227e3eda4db321718a7bacb",
      "parents": [
        "8552e37427c8c6f3b3f5e02e55e2a34b28604af6"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Oct 11 12:53:17 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Oct 11 12:53:17 2004 +0000"
      },
      "message": "Some more const string fixes.\n"
    },
    {
      "commit": "c9eca01b298b83a849a608477f5f5b978a58167e",
      "tree": "afd25d986e49e57c73a4d555d4c083ab66d454fa",
      "parents": [
        "6c83567192ada1a66822c3f35580ce6a85f51ac9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 11:28:44 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 11:28:44 2004 +0000"
      },
      "message": "2004-10-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* if.h: mtu\u0027s should be unsigned.\n\t* routemap.{c,h}: const char updates\n\t* smux.{c,h}: ditto\n"
    },
    {
      "commit": "9076fbd333cbd39b0fae7848de533dfe376af7fe",
      "tree": "de174ccba2e91b65ab50fa505c8daad9a719955e",
      "parents": [
        "0c083ee9d870bf02a36563ae1807f3894ac24219"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 09:40:58 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 09:40:58 2004 +0000"
      },
      "message": "2004-10-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* thread.c: (funcname_thread_add_timer)\n\t  (funcname_thread_add_timer_msec) Fix mistakes from last change.\n\t  Pointed out by Liu Xin in [quagga-dev 1609].\n"
    },
    {
      "commit": "9035efaa924c69f4f4fcb1049c7dc4f43b9da980",
      "tree": "f81d25b0e069ad8fb5f2843172a4e60fa0d6cbdf",
      "parents": [
        "ddd119fd3d94e95dd44aa9fb3bc3fca4f26078a0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 10 11:56:56 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 10 11:56:56 2004 +0000"
      },
      "message": "2004-10-10 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* version.h.in: (pid_output*) add const qualifier.\n\t* command.h: Change DEFUN func to take const char *[] rather\n          than char **, to begin process of fixing compile warnings in lib/.\n          Nearly all other changes in this commit follow from this change.\n        * buffer.{c,h}: (buffer_write) pointer-arithmetic is gccism, take\n          const void * and cast an automatic const char *p to it.\n          (buffer_putstr) add const\n        * command.c: (zencrypt) const qualifier\n          (cmd_execute_command_real) ditto\n          (cmd_execute_command_strict) ditto\n          (config_log_file) ditto.\n          Fix leak of getcwd() returned string.\n        * memory.{c,h}: Add MTYPE_DISTRIBUTE_IFNAME for struct dist ifname.\n        * distribute.{c,h}: Update with const qualifier.\n          (distribute_free) use MTYPE_DISTRIBUTE_IFNAME\n          (distribute_lookup) Cast to char *, note that it\u0027s ok.\n          (distribute_hash_alloc) use MTYPE_DISTRIBUTE_IFNAME.\n          (distribute_get)  Cast to char *, note that it\u0027s ok.\n        * filter.c: Update with const qualifier.\n        * if.{c,h}: ditto.\n        * if_rmap.{c,h}: ditto.\n          (if_rmap_lookup) Cast to char *, note that it\u0027s ok.\n          (if_rmap_get) ditto.\n        * log.{c,h}: Update with const qualifier.\n        * plist.{c,h}: ditto.\n        * routemap.{c,h}: ditto.\n        * smux.{c,h}: ditto. Fix some signed/unsigned comparisons.\n        * sockopt.c: (getsockopt_cmsg_data) add return for error case.\n        * vty.c: Update with const qualifier.\n"
    },
    {
      "commit": "47ca295314a180eaebcb10184a425395313f9d94",
      "tree": "5501ae904c2cafba971fc1356815c4746406b461",
      "parents": [
        "ef1bbf5ca41401ee4135a67e1a4d4465ff09b524"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 10 08:03:18 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 10 08:03:18 2004 +0000"
      },
      "message": "2004-10-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* version.h.in: (pid_output*) add const qualifier.\n"
    },
    {
      "commit": "27a43a81004b620e571f71aa1ea4db182c607862",
      "tree": "59b57a73d0cd7f14c2bd0fd6d1844ac3de9023c0",
      "parents": [
        "1b1214273edec92affb7260b62eefed233f54d37"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Oct 08 06:29:12 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Oct 08 06:29:12 2004 +0000"
      },
      "message": "More const strings.\n"
    },
    {
      "commit": "5973ee73f0931d666a733afad8b198ca3b050592",
      "tree": "4dff3039b3d0ffeedb17deab5f81c1d33524f9b0",
      "parents": [
        "da29c6b0699623116406183d21e0ff923084d072"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 08 01:36:54 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 08 01:36:54 2004 +0000"
      },
      "message": "2004-10-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* version.h.in: print_version declaration is here, not in autoconf\n\t  generated version.h.\n"
    },
    {
      "commit": "ea8e9d972e8775f3e1c4e03fbacb18a42e8c4177",
      "tree": "0762c5ca1ae795080fb5ec9bc6cb54bffcc02748",
      "parents": [
        "e561a8eb365a77beb0dd1c4ac406f9de21543a74"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Oct 07 21:32:14 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Oct 07 21:32:14 2004 +0000"
      },
      "message": "Even more const strings and fix to bugfix.\n"
    },
    {
      "commit": "6ad96ea16ee54578391bb4ca88d047ac9d3654fc",
      "tree": "7a09427aaafcc48fe644ed4c2e6804005732b88f",
      "parents": [
        "015253c3f14cacad85a761fae0259ad32f083d4a"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Oct 07 19:33:46 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Oct 07 19:33:46 2004 +0000"
      },
      "message": "Make more strings const.\n"
    },
    {
      "commit": "8c328f1106cf0498333c2d8a96940e7b4581e316",
      "tree": "9bf24cca6a68a9dd5d4dda586484e497d0c19ca6",
      "parents": [
        "98c91ac6ac085713c00af00a6ac41779be6b50b3"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 05 21:01:23 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 05 21:01:23 2004 +0000"
      },
      "message": "Number of warnings is down to 3 again in lib directory. A lot of const\u0027s\nadded to strings and a lot of int -\u003e unsigned int changes.\n"
    },
    {
      "commit": "98c91ac6ac085713c00af00a6ac41779be6b50b3",
      "tree": "75e4301f069bd9b5bed6c579164a3fe5288b2886",
      "parents": [
        "7216466aecd59e675a4f66d6e329e748f32ad690"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 05 14:57:50 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 05 14:57:50 2004 +0000"
      },
      "message": "2004-10-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* thread.c: (funcname_thread_add_timer_timeval) new function, add\n          timer at specified timeval.\n\t  (funcname_thread_add_timer) use funcname_thread_add_timer_timeval.\n\t  (funcname_thread_add_timer_msec) ditto\n"
    },
    {
      "commit": "96e27c9928b5078526f2a7564700dbdafe2c8d42",
      "tree": "5697279fc355244f385da4fbf6e313feb215f06a",
      "parents": [
        "7347a2ad7c05a86fcd9b7593a9d58b93ad50ef6a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 05 14:33:43 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 05 14:33:43 2004 +0000"
      },
      "message": "2004-10-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sockopt.{c,h}: add sockopt_iphdrincl_swab_{htosys,systoh},\n          functions to change byte order between system IP_HDRINCL order\n          and host order.\n"
    },
    {
      "commit": "b04c699ecfb4704a67f4583e4ea929a6a3e49856",
      "tree": "9149adb41b7bc1acca6c882ab413f68b19b2a64d",
      "parents": [
        "97c52f4e397848fb18c689dfe161d0b8f7803722"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Oct 04 19:10:31 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Oct 04 19:10:31 2004 +0000"
      },
      "message": "First small part of lib cleanup. Mainly \"constification\" of arguments and\nadding FIXME\u0027s.\n"
    },
    {
      "commit": "e7168df4eff0d377621c45deb32cfcfa72e0dd83",
      "tree": "86c4017761ffd8cfdbc16223915a9f537844c4f2",
      "parents": [
        "eef1fe11b89c5ec3c035ff6e4a9acfbc5780b539"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Oct 03 20:11:32 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Oct 03 20:11:32 2004 +0000"
      },
      "message": "Big vtysh cleanup. See changelogs for details.\n"
    }
  ],
  "next": "18a6dce6f83dd20caf1f36c8e840868ff0bf6dbd"
}
