)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "662a1f25bb6c142c0ff5ff571095356df49c0557",
      "tree": "3fe999c2731936118ffa9b91f313bc7ff209d762",
      "parents": [
        "4dcadf7efd58e9d91a52c5f06c02cb40bbf21823"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 13 03:32:23 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 13 03:32:23 2005 +0000"
      },
      "message": "- add changelog\n"
    },
    {
      "commit": "4dcadf7efd58e9d91a52c5f06c02cb40bbf21823",
      "tree": "5968d1e9773c79cfe0db364ce91314087cb57f6e",
      "parents": [
        "5d6e26910b6790e7ea759893c16e9f0e380fcc1e"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 13 03:31:35 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 13 03:31:35 2005 +0000"
      },
      "message": "2004-05-13 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* test-buffer.c: Andrew\u0027s buffer tester\n\t* test-memory.c: basic memory tester\n\t* Makefile.am: Add new tests\n"
    },
    {
      "commit": "5d6e26910b6790e7ea759893c16e9f0e380fcc1e",
      "tree": "448de93ef1b876b3460c6a18f7402775da9f7e12",
      "parents": [
        "c75494ca286c23d065f6a1ea147016b934ef9646"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Apr 12 14:48:19 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Apr 12 14:48:19 2005 +0000"
      },
      "message": "\t* isis_adjacency.c: Fix typo introduced with listloop cleanup.\n"
    },
    {
      "commit": "c75494ca286c23d065f6a1ea147016b934ef9646",
      "tree": "91f0e9d9f6045a9002d502e099ff099a28e68cca",
      "parents": [
        "634f9ea20fce82c94407cb677b5487b65bde1973"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 11 20:22:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 11 20:22:09 2005 +0000"
      },
      "message": "2005-04-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* .cvsignore: Add built files\n"
    },
    {
      "commit": "634f9ea20fce82c94407cb677b5487b65bde1973",
      "tree": "32db82e4ae3b0f409d6d06a0fda401f9d5df5cc9",
      "parents": [
        "dfb9a545f8e3500e6a99518193872f526c1f56ba"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Apr 11 15:51:40 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Apr 11 15:51:40 2005 +0000"
      },
      "message": "2005-04-11 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\tImplement non-blocking zclient I/O with buffering.\n\t* zclient.h (struct zclient): Add two fields to support non-blocking\n\t  I/O: struct buffer *wb, and struct thread *t_write.\n\t  (zclient_free): Remove function.\n\t  (zebra_redistribute_send): Change 2nd arg from socket fd to\n\t  struct zclient * (needed to support non-blocking I/O and buffering).\n\t  (zclient_send_message): New function to send an arbitrary\n\t  message with non-blocking I/O.\n\t* zclient.c (zclient_new): Create write buffer.\n\t  (zclient_free): Remove unused function.\n\t  (zclient_stop): Must cancel new t_write thread.  Also, reset\n\t  all buffers: ibuf, obuf, and wb.\n\t  (zclient_failed): New helper function for typical error handling.\n\t  (zclient_flush_data): New thread to flush queued data.\n\t  (zclient_send_message): New function to send the message in\n\t  zclient-\u003eobuf to zebra using non-blocking I/O and buffering.\n\t  (zebra_message_send, zapi_ipv4_route, zapi_ipv6_route): Use\n\t  new zclient_send_message function instead of calling writen.\n\t  (zclient_start): Set socket non-blocking.  Also, change 2nd arg\n\t  to zebra_redistribute_send from zclient-\u003esock to zclient.\n\t  (zebra_redistribute_send): Change 2nd arg to struct zclient *.\n\t  Can now use zclient-\u003eobuf to assemble the message instead of\n\t  allocating a temporary stream.  And call zclient_send_message to\n\t  send the message instead of writen.\n\t  (zclient_read): Convert to support non-blocking I/O by using\n\t  stream_read_try instead of deprecated stream_read.\n\t  (zclient_redistribute): Change 2nd arg to zebra_redistribute_send\n\t  from zclient-\u003esock to zclient.\n\t* ospf6_zebra.c (ospf6_zebra_redistribute, ospf6_zebra_no_redistribute):\n\t  Change 2nd arg to zebra_redistribute_send from zclient-\u003esock\n\t  to zclient.\n\t* ospf_zebra.c (ospf_zebra_add): Call zclient_send_message instead\n\t  of writen.\n\t* rip_zebra.c (rip_redistribute_set, rip_redistribute_unset,\n\t  rip_redistribute_clean): Change 2nd arg to zebra_redistribute_send\n\t  from zclient-\u003esock to zclient.\n\t* ripng_zebra.c (ripng_redistribute_unset, ripng_redistribute_clean):\n\t  Change 2nd arg to zebra_redistribute_send from zclient-\u003esock\n\t  to zclient.\n\t* bgp_zebra.c (bgp_redistribute_set, bgp_redistribute_unset):\n\t  The 2nd arg to zebra_redistribute_send is now zclient instead of\n\t  zclient-\u003esock.\n\t* isis_zebra.h (isis_zebra_finish): Remove declaration of unused\n\t  function.\n\t* isis_zebra.c (isis_zebra_route_add_ipv4): Call zclient_send_message\n\t  to send the message to zebra instead of calling writen directly, since\n\t  zclient_send_message understands non-blocking I/O and will manage\n\t  the buffer queue appropriately.\n\t  (isis_zebra_finish): Remove unused function, particularly since\n\t  the zclient_free function has been removed.\n"
    },
    {
      "commit": "dfb9a545f8e3500e6a99518193872f526c1f56ba",
      "tree": "bb692f669509035dc8d3b50d9e6eb93c4a9d8c93",
      "parents": [
        "8d60e1a90397d7580654cb397f9dacf1d5623331"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Apr 11 14:55:55 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Apr 11 14:55:55 2005 +0000"
      },
      "message": "2005-04-11 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* configure.ac: Move AC_CANONICAL_* stuff before AM_INIT_AUTOMAKE to\n\t  eliminate warning message about AC_ARG_PROGRAM being called\n\t  before AC_CANONICAL_TARGET.\n"
    },
    {
      "commit": "8d60e1a90397d7580654cb397f9dacf1d5623331",
      "tree": "17f10fea3f07d66d7c023de174930878ed7861fe",
      "parents": [
        "26275b05d6da500176d433523f659e0f6425558b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 11 07:58:35 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 11 07:58:35 2005 +0000"
      },
      "message": "2005-04-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Makefile.am: README.txt to EXTRA_DIST\n\t* README.txt: new file, package creation, install, usage notes.\n"
    },
    {
      "commit": "26275b05d6da500176d433523f659e0f6425558b",
      "tree": "ba86e8701da0cc11bfd99ea7715d02fa76402f07",
      "parents": [
        "1b414a170015f47f1fd2f75be74b1444647ce25f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 11 07:10:47 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 11 07:10:47 2005 +0000"
      },
      "message": "2005-04-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: Call AC_CANONICAL_{BUILD,TARGET} macros. Target isnt\n\t  set otherwise, afaict. AC_SUBST enable_{user,group,vty_group} and\n\t  quagga_statedir - the Solaris package bits for one need this.\n\t  configure the solaris/ Makefile.\n\t* Makefile.am: solaris is a subdir - unconditional or else it wont\n\t  be included in non-solaris made dists.\n"
    },
    {
      "commit": "1b414a170015f47f1fd2f75be74b1444647ce25f",
      "tree": "d3d24e25604fd8fc776d975c409048db57b69efb",
      "parents": [
        "cf460ef9478de57fae490ff1bd8cb58ccbe40b40"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 11 07:05:21 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 11 07:05:21 2005 +0000"
      },
      "message": "2005-04-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (all) Initial check-in of files for building S10 packages\n\t* protototype.*.in: package prototype files for SysV packages\n\t* *.xml.in: SMF manifests for Quagga daemons\n\t* pkginfo.*.tmpl.in: daemon specific pkginfo, refererenced\n\t  by prototype files.\n\t* pkginfo.tmpl.in: Quagga common pkginfo bits\n\t* quagga.init.in: SMF method script\n\t* Makefile.am: Automake file for building packages\n\t* depend.*: Solaris 10 dependencies for packages, referenced by\n\t  prototype files.\n\t* .cvsignore: no idea what this is for...\n"
    },
    {
      "commit": "cf460ef9478de57fae490ff1bd8cb58ccbe40b40",
      "tree": "42695453236602efbfcb2203b3d2241a38a1a42b",
      "parents": [
        "c7959916ffe11daf57490da854b069f4fe529153"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Apr 10 16:54:26 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Apr 10 16:54:26 2005 +0000"
      },
      "message": "2005-04-10 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* if_ioctl_solaris.c: (if_lookup_linklocal) fix order of args\n\t  in ALL_LIST_ELEMENTS_RO macro.\n"
    },
    {
      "commit": "c7959916ffe11daf57490da854b069f4fe529153",
      "tree": "0ff05f9b508981da07a8886b72d22214a24c3cbe",
      "parents": [
        "1b73de8b1fefdb3b1ac3d483f2ac0492991c7a1e"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Apr 10 16:43:40 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Apr 10 16:43:40 2005 +0000"
      },
      "message": "2005-04-10 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* quagga.info: Update to match bgpd.texi addition\n"
    },
    {
      "commit": "1b73de8b1fefdb3b1ac3d483f2ac0492991c7a1e",
      "tree": "48ddedc4f16cb33884c8d75036b22e847797e841",
      "parents": [
        "a8f03df06c2740a730e80218c13c6a1afd050c4e"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Apr 10 16:31:51 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Apr 10 16:31:51 2005 +0000"
      },
      "message": "2005-04-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: Fix host string recognition for Solaris Nevada aka\n\t  solaris2.10.1, and hopefully future such strings.\n"
    },
    {
      "commit": "a8f03df06c2740a730e80218c13c6a1afd050c4e",
      "tree": "9b53a4db49df5d12ad9bf1b2bf1bfebb6ecb813d",
      "parents": [
        "57a1477bc7138649a51277cd52616eb05d438187"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Apr 10 15:58:10 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Apr 10 15:58:10 2005 +0000"
      },
      "message": "2005-04-10 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Makefile.am: topology should not be a conditional SUBDIR,\n\t  otherwise make dist breaks.\n\t* topology/Makefile.am: remove EXTRA_DIST of files which dont\n\t  exist in that directory, broke make dist.\n\t* isisd.c: (show_isis_generated_topology_cmd) convert LIST_LOOP\n\t* isis_lsp.c: (generate_topology_lsps) ditto\n\t  (build_topology_lsp_data) ditto\n"
    },
    {
      "commit": "57a1477bc7138649a51277cd52616eb05d438187",
      "tree": "e40385dcce50ab85c6e12e36d3b5d17cac4570d9",
      "parents": [
        "fa59980fc8a5d06f590d16288b82361ece9c5652"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Apr 10 15:01:56 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Apr 10 15:01:56 2005 +0000"
      },
      "message": "2005-04-10 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zserv.c (zebra_client_read): Fix bug: first read attempt should\n\t  read ZEBRA_HEADER_SIZE minus the number of bytes already read.\n\t  Improve efficiency by maintaining a calculation of the number\n\t  of bytes read instead of calling stream_get_endp multiple times.\n\t  If message length is too small, issue a warning message (not debug)\n\t  before closing the connection.  And also check that message length\n\t  is not too big.\n"
    },
    {
      "commit": "fa59980fc8a5d06f590d16288b82361ece9c5652",
      "tree": "39f751985a3728b371744022d9df82514f1d0cb5",
      "parents": [
        "206d8055fc67af4e5dc955f0fdd0bf52b58260ce"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 09 16:59:28 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 09 16:59:28 2005 +0000"
      },
      "message": "\t* rt_netlink.c: One tiny missing comma caused pointless debug messages\n\t  about IPv6 nexthops.\n"
    },
    {
      "commit": "206d8055fc67af4e5dc955f0fdd0bf52b58260ce",
      "tree": "bf616cb70b0426055226fa0551241df9f5dbfd4e",
      "parents": [
        "5bb4c1981a518315bf7f4fc81a85baf2061e32fa"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 09 16:38:51 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 09 16:38:51 2005 +0000"
      },
      "message": "\t* rt_netlink.c (netlink_parse_info): Fix warning. It\u0027s safe to cast\n\t  status to unsigned here, because we already checked that it isn\u0027t\n\t  negative or 0.\n\t* rt_netlink.c (netlink_interface_addr): Prefix length belongs to the\n\t  address, not to the interface.\n\t* rt_netlink.c (netlink_route_multipath): Fix debug. No useless info\n\t  is printed out now and IPv6 info is handeled.\n"
    },
    {
      "commit": "5bb4c1981a518315bf7f4fc81a85baf2061e32fa",
      "tree": "21c20e1b3dbd312049f92147792421c16f96677c",
      "parents": [
        "a8a80d532f3248567b6926b5dbd12509eadd6b43"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 09 13:27:50 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 09 13:27:50 2005 +0000"
      },
      "message": "\t* routemap.c: Show description in \"show route-map\" output.\n"
    },
    {
      "commit": "a8a80d532f3248567b6926b5dbd12509eadd6b43",
      "tree": "b3b42ef7f78c62fb0c1edddd7c0272950883c14c",
      "parents": [
        "67bf16c0f8179af05bcff04d19226866a8b7e806"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 09 13:07:47 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 09 13:07:47 2005 +0000"
      },
      "message": "\t* bgp_vty.c: Make \"exit-address-family\" work in IPv4 unicast address\n\t  family node.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "67bf16c0f8179af05bcff04d19226866a8b7e806",
      "tree": "4ff6db9b640602b6b99bd03b3405aeffcbf58850",
      "parents": [
        "926fe8f1fce88d0889e47a9f5c6d78c6bc11f3f6"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 08 19:02:04 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 08 19:02:04 2005 +0000"
      },
      "message": "2005-04-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sigevent.c: On GNU_LINUX, check whether __USE_GNU is already defined.\n"
    },
    {
      "commit": "926fe8f1fce88d0889e47a9f5c6d78c6bc11f3f6",
      "tree": "78e9dc040253454b518a1a7bab6468a2cbceeb89",
      "parents": [
        "d66a7b56634f88181dd2dd23706c30bf23366424"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 08 18:50:40 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 08 18:50:40 2005 +0000"
      },
      "message": "2005-04-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* vty.c: (vty_log_fixed) Use casts to (void *) to try to eliminate\n\t  compiler warnings when assigning a (const char *) value to\n\t  struct iovec iov_base.\n"
    },
    {
      "commit": "d66a7b56634f88181dd2dd23706c30bf23366424",
      "tree": "42569fbc2de9016ad91db7669565e7b737ca3c11",
      "parents": [
        "6811845b67999861388cf00d3ca0ee8471d29876"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 08 16:42:03 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Apr 08 16:42:03 2005 +0000"
      },
      "message": "2005-04-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra.h: If GNU_LINUX is defined, then define _GNU_SOURCE.  This\n\t  fixes a problem where we were not getting the declaration of strnlen\n\t  in \u003cstring.h\u003e.\n"
    },
    {
      "commit": "6811845b67999861388cf00d3ca0ee8471d29876",
      "tree": "1f7f08f171164b1a75b66a45093ccb44217dff12",
      "parents": [
        "4a8164e5b310094315e2c50d73aeea489766a48a"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 15:40:36 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 15:40:36 2005 +0000"
      },
      "message": "\t* bgpd.texi: Document new \"bgp bestpath as-path confed\" command.\n\t* bgp_aspath.[ch], bgp_route.c, bgp_vty.c, bgpd.[ch]: Allow to enable\n\t  the length of confederation path segments to be included during the\n\t  as-path length check in the best path decision.\n"
    },
    {
      "commit": "4a8164e5b310094315e2c50d73aeea489766a48a",
      "tree": "683c5f04667486d29fc72a094957773ded6aea3b",
      "parents": [
        "3a2ce6a14e3e302c3fdca2ff99143cfd06b145e6"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 14:20:18 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 14:20:18 2005 +0000"
      },
      "message": "\t* routemap.[ch]: Added \"description ...\" command.\n\t  Closes Bugzilla #167.\n"
    },
    {
      "commit": "3a2ce6a14e3e302c3fdca2ff99143cfd06b145e6",
      "tree": "f27ec1418be4c3e9a123e67ef22ca090bca28906",
      "parents": [
        "528bed4a9a997216ba95e3ae445efa79436cc551"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 01:30:51 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 01:30:51 2005 +0000"
      },
      "message": "\t* prefix.[hc]: Pass argument to the inet6_ntoa by value making it more\n\t  inet_ntoa alike.\n\t* ripngd.[hc], ripng_interface.c, ripng_peer.c: inet6_ntoa() takes\n\t  argument now by value.\n"
    },
    {
      "commit": "528bed4a9a997216ba95e3ae445efa79436cc551",
      "tree": "9fc01b13c038a322aad47364cda888f2ed098e20",
      "parents": [
        "b5d518fb32a796a0b376d79bdc5199c48d0a4052"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Apr 07 18:42:09 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Apr 07 18:42:09 2005 +0000"
      },
      "message": "\t* extract.pl.in: Ignore \"router zebra\".\n"
    },
    {
      "commit": "b5d518fb32a796a0b376d79bdc5199c48d0a4052",
      "tree": "5a89e9f489b22fe0d2188b60f82b4aeb23c89d43",
      "parents": [
        "1eb8ef2584833f18fb674e127d59cb5a7f771482"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Apr 07 17:07:39 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Apr 07 17:07:39 2005 +0000"
      },
      "message": "\t* Makefile.am: Remove rebuild4 target, it\u0027s not used any more by build\n\t  procedure. Define vtysh_cmd_FILES. Use EXTRA_DIST.\n"
    },
    {
      "commit": "1eb8ef2584833f18fb674e127d59cb5a7f771482",
      "tree": "f5b09d4781de9a9b08839fefb6530e64d2d2ec31",
      "parents": [
        "5920990fecba7e2430af3cfaa8bcbaed40d0ba1a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "message": "2005-04-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global): Fix up list loops to match changes in lib/linklist,\n\t  and some basic auditing of usage.\n\t* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES\n\t* HACKING: Add notes about deprecating interfaces and commands.\n\t* lib/linklist.h: Add usage comments.\n\t  Rename getdata macro to listgetdata.\n\t  Rename nextnode to listnextnode and fix its odd behaviour to be\n\t  less dangerous.\n\t  Make listgetdata macro assert node is not null, NULL list entries\n          should be bug condition.\n          ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use\n          with for loop, Suggested by Jim Carlson of Sun.\n          Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the\n          \"safety\" of previous macro.\n\t  LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to\n\t  distinguish from the similarly named functions, and reflect their\n\t  effect better.\n\t  Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section\n\t  with the old defines which were modified above,\n\t  for backwards compatibility - guarded to prevent Quagga using it..\n\t* lib/linklist.c: fix up for linklist.h changes.\n\t* ospf6d/ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single\n\t  scan of the area list, rather than scanning all areas first for\n\t  INTER_ROUTER and then again for INTER_NETWORK. According to\n\t  16.2, the scan should be area specific anyway, and further\n\t  ospf6d does not seem to implement 16.3 anyway.\n"
    },
    {
      "commit": "5920990fecba7e2430af3cfaa8bcbaed40d0ba1a",
      "tree": "d91dd49e4ed2c03cd0c007660232716f11172a56",
      "parents": [
        "6a52470660000bb6ddba971dc5c40b3422ab49bc"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Apr 05 14:36:49 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Apr 05 14:36:49 2005 +0000"
      },
      "message": "\t* lib/prefix.[hc]: inet6_ntoa utility function copied from\n\t  ripngd/ripngd.c (inet6_ntop).\n\t* ripngd.[hc]: Remove inet6_ntop() and any usage of it. inet6_ntoa()\n\t  from lib is used now.\n\t* ripng_interface.c: inet6_ntop() -\u003e inet6_ntoa().\n\t* ripng_peer.c: inet6_ntop() -\u003e inet6_ntoa().\n"
    },
    {
      "commit": "6a52470660000bb6ddba971dc5c40b3422ab49bc",
      "tree": "76d2b5766fbe5cd105c09f938d35a151725db8ca",
      "parents": [
        "208f0b7e73d8543b03297b74e3893e2c12735963"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 05 10:14:50 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 05 10:14:50 2005 +0000"
      },
      "message": "2005-04-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* HACKING: Expand on the importance of supplying good ChangeLog\u0027s in\n\t  the PATCH SUBMISSION section.\n"
    },
    {
      "commit": "208f0b7e73d8543b03297b74e3893e2c12735963",
      "tree": "3458afc779f299e28afdb2304a11e7804c848c95",
      "parents": [
        "d9905f016154f18cdf0dc1cc4602011dc8454830"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 05 10:10:06 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 05 10:10:06 2005 +0000"
      },
      "message": "2005-04-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* HACKING: remove the \u0027manually patch redhat/quagga.spec\u0027 bit\n\t  from RELEASE section. Let the rpm revision be CONFDATE, will work\n\t  fine.\n"
    },
    {
      "commit": "d9905f016154f18cdf0dc1cc4602011dc8454830",
      "tree": "834d6d8d48f0caea0f29cc69d4d330d617d24b9b",
      "parents": [
        "3d1dc85765816a92f06e0b11f52411dac0f8abae"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 05 08:04:18 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 05 08:04:18 2005 +0000"
      },
      "message": "2005-04-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Makefile.am: Get rid of built_sources. It causes them to be added\n\t  to dist, and the dist host can not generate the PDFs.\n"
    },
    {
      "commit": "3d1dc85765816a92f06e0b11f52411dac0f8abae",
      "tree": "d20333a4ddbc271e11998834a4fdbc0e3acd719d",
      "parents": [
        "5b0875287206a0ac1ebe1dca1f6235b8f3df1764"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 05 00:45:23 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Apr 05 00:45:23 2005 +0000"
      },
      "message": "2004-04-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* lib/vty.c: Improve logging of failures to open vty socket(s).\n\t  See bugid #163.\n\t* zebra/zserv.c: print more helpful errors when we fail to successfully\n\t  bind and listen on zserv socket. Closes bugzilla #163.\n"
    },
    {
      "commit": "5b0875287206a0ac1ebe1dca1f6235b8f3df1764",
      "tree": "858915835d6b97e8f2a23444713a56e605388027",
      "parents": [
        "d33e8d7bd348ac6a4ae023ce560b918b7d480fcb"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Apr 03 23:46:37 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Apr 03 23:46:37 2005 +0000"
      },
      "message": "\t* configure.ac: Fix AC_LANG_SOURCE usage. It needs double square\n\t  brackets around source. Single ones broke square brackets in the\n\t  code (arrays).\n"
    },
    {
      "commit": "d33e8d7bd348ac6a4ae023ce560b918b7d480fcb",
      "tree": "80ad5a81f2eaf8f7b6a4310952738fef71e11159",
      "parents": [
        "08dbfb691d8e03c7200138d55447fc29916e0362"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Apr 03 13:07:21 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Apr 03 13:07:21 2005 +0000"
      },
      "message": "\t* configure.ac: Use AC_RUN_IFELSE instead of obsolete AC_TRY_RUN macro\n\t  and define action for cross-compiling.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "08dbfb691d8e03c7200138d55447fc29916e0362",
      "tree": "54d8718c7bdb035197cebcedef7d3de4f0038d55",
      "parents": [
        "e4319de388b748ba66551f33fecdf7446e754b80"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Apr 03 03:40:52 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Apr 03 03:40:52 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if_ioctl.c: (interface_list_ioctl) Use if_get_by_name_len.\n\t* if_proc.c: (ifaddr_proc_ipv6) Increase size of ifname buffer to\n\t  avoid overflow.\n\t* kernel_socket.c: (ifan_read) Use if_get_by_name_len.\n\t* if.h: Fix comments to reflect that if_lookup_by_name and\n\t  if_get_by_name now require the argument strings to be NUL-terminated.\n\t* if.c: (if_lookup_by_name) Compare using strcmp.\n\t  (if_get_by_name) Pass strlen(ifname) as 2nd arg to if_create.\n"
    },
    {
      "commit": "e4319de388b748ba66551f33fecdf7446e754b80",
      "tree": "d6ae690186b58ed048ed0a11911c6f1e2d71cd16",
      "parents": [
        "21fefa9843f6e8fc2263e8d85cf0d072b4b6c242"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:23:55 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:23:55 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: (ospf_if_lookup_by_name) Remove declaration of a\n\t  function that does not exist.\n\t* ospf6_interface.[ch]: (ospf6_interface_lookup_by_name) Remove unused\n\t  function.\n"
    },
    {
      "commit": "21fefa9843f6e8fc2263e8d85cf0d072b4b6c242",
      "tree": "8e9116d9d3de3776bc3cf5e9c13d0b4b6086c68d",
      "parents": [
        "bd88bf499a02e3364b06ad269bd7009a0227f91b"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:16:41 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:16:41 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_zebra.c: (zebra_interface_if_lookup) Must use\n\t  if_lookup_by_name_len.\n"
    },
    {
      "commit": "bd88bf499a02e3364b06ad269bd7009a0227f91b",
      "tree": "1d6ab75ab800fb2329604ec721f7c95f50752eb4",
      "parents": [
        "018546e9656b141eeecdf59f627fcdc9b7381840"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:09:52 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:09:52 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* isis_zebra.c: (isis_zebra_if_del) Must use if_lookup_by_name_len.\n"
    },
    {
      "commit": "018546e9656b141eeecdf59f627fcdc9b7381840",
      "tree": "dda8f27fcde00ae6c7ab080224f97b9c9a29dabe",
      "parents": [
        "a349198fd3e4e5692cdc91223f8153cb53c086ce"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:05:56 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:05:56 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if.c: (if_nametoindex) The man page is rather vague, but it seems\n\t  like the argument to if_nametoindex has an implicit maximum length\n\t  of IFNAMSIZ characters.\n"
    },
    {
      "commit": "a349198fd3e4e5692cdc91223f8153cb53c086ce",
      "tree": "e5b366a8ab7ab9ed1c9670faf1f18eef26877ade",
      "parents": [
        "f695b01ff8e9aebc46bdf41f104ad4abbb0ef59e"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 22:50:38 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 22:50:38 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if.h: (if_lookup_by_name_len, if_get_by_name_len) New functions.\n\t* if.c: (if_lookup_by_name_len, if_get_by_name_len) New functions.\n\t  (if_get_by_name) Tighten up code.\n\t  (interface) Use new function if_get_by_name_len.\n\t* zclient.c: (zebra_interface_add_read) Use new if_get_by_name_len\n\t  function.\n\t  (zebra_interface_state_read) Use new if_lookup_by_name_len function.\n\t* kernel_socket.c: (ifm_read) Use new if_lookup_by_name_len function\n\t  to save a memcpy.\n\t* if_ioctl_solaris.c: (interface_list_ioctl) Fix subtle bug with new\n\t  if_get_by_name_len function.\n\t* ospf_interface.c: (ospf_vl_new) Use strnlen to fix call to if_create.\n"
    },
    {
      "commit": "f695b01ff8e9aebc46bdf41f104ad4abbb0ef59e",
      "tree": "1a36e624a6577780a49f6ae2c8e0534140d33943",
      "parents": [
        "a47d98f4b7d6e3c1f5298912672f7b4d55a203f0"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 02 19:03:39 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 02 19:03:39 2005 +0000"
      },
      "message": "\t* configure.ac: Add --enable-isis-topology to enable isisd topology\n\t  generator code.\n\t* isisd/Makefile.am: Variables to handle conditonal compiling of\n\t  topology generator code.\n\t* isisd/isis_lsp.c: lsppdu_realloc() is used by topology generator.\n\t* isisd/isisd.c: Rename show_isis_topology_cmd to not conflict the one\n\t  in the isis_spf.c.\n\t* isisd/isisd.h: Remove TOPOLOGY_GENERATE define, it will be defined in\n\t  toplevel config.h if topology generator is enabled.\n\t* isisd/topology/Makefile.am: Handle the libtoolized Quagga libraries.\n"
    },
    {
      "commit": "a47d98f4b7d6e3c1f5298912672f7b4d55a203f0",
      "tree": "51eaf44358a39c0e99e429ffaa85b8a41cc2f095",
      "parents": [
        "851adbd947692bab9985e08865330d75c56ff253"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 18:53:00 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 18:53:00 2005 +0000"
      },
      "message": "2005-04-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Makefile.am: Urg, dont use automake _SOURCES, _BUILT_SOURCES\n\t  for figures, automake doesnt know anything about them.\n"
    },
    {
      "commit": "851adbd947692bab9985e08865330d75c56ff253",
      "tree": "3295c305da371df1c12398b7e68a9677ddc38b55",
      "parents": [
        "d2fc88962a9a494ecb34167871bb9e7273a25d33"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:48:39 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:48:39 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* str.c: Replace strlcpy and strlcat with actual working versions\n\t  copied from rsync-2.6.2/lib/compat.c.\n"
    },
    {
      "commit": "d2fc88962a9a494ecb34167871bb9e7273a25d33",
      "tree": "304a1c1a744972bc10b1f677a134907c404b361d",
      "parents": [
        "386e61502d391adb985ac1487825349ec85e6a8c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:38:43 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:38:43 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\tFix problems when netlink interfaces are renamed (same ifindex used\n\tfor a new interface).  Start cleaning up some problems with the way\n\tinterface names are handled.\n\t* interface.c: (if_new_intern_ifindex) Remove obsolete function.\n\t  (if_delete_update) After distributing the interface deletion message,\n\t  set ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t  (if_dump_vty) Detect pseudo interface by checking if ifp-\u003eifindex is\n\t  IFINDEX_INTERNAL.\n\t  (zebra_interface) Check return code from interface_cmd.func.\n\t  Do not set internal ifindex values to if_new_intern_ifindex(),\n\t  since we now use IFINDEX_INTERNAL for all pseudo interfaces.\n\t* kernel_socket.c: (ifm_read) Fix code and comments to reflect that\n\t  all internal interfaces now have ifp-\u003eifindex set to IFINDEX_INTERNAL.\n        * rt_netlink.c: (set_ifindex) New function used to update ifp-\u003eifindex.\n\t  Detects interface rename events by checking if that ifindex is already\n\t  being used.  If it is, delete the old interface before assigning\n\t  the ifindex to the new interface.\n\t  (netlink_interface, netlink_link_change) Call set_ifindex to update\n\t  the ifindex.\n\t* if.h: Remove define for IFINDEX_INTERNBASE and add define\n\t  IFINDEX_INTERNAL 0, since all internal (i.e. non-kernel) pseudo-\n\t  interfaces should have ifindex set to 0.\n\t  (if_new) Remove function.\n\t  (if_delete_retain) New function to delete an interface without\n\t  removing from iflist and freeing the structure.\n\t  (ifname2ifindex) New function.\n\t* if.c: (if_new) Remove function (absorb into if_create).\n\t  (if_create) Replace function if_new with call to calloc.\n\t  Set ifp-\u003eifindex to IFINDEX_INTERNAL.  Fix off-by-one error\n\t  in assert to check length of interface name.  Add error message\n\t  if interface with this name already exists.\n\t  (if_delete_retain) New function to delete an interface without\n\t  removing from iflist and freeing the structure.\n\t  (if_delete) Implement with help of if_delete_retain.\n\t  (ifindex2ifname) Reimplement using if_lookup_by_index.\n\t  (ifname2ifindex) New function to complement ifindex2ifname.\n\t  (interface) The interface command should check the name length\n\t  and fail with a warning message if it is too long.\n\t  (no_interface) Fix spelling in warning message.\n\t  (if_nametoindex) Reimplement using if_lookup_by_name.\n\t  (if_indextoname, ifaddr_ipv4_lookup) Reimplement using\n\t  if_lookup_by_index.\n\t* bgp_zebra.c: (bgp_interface_delete) After deleting, set ifp-\u003eifindex\n\t  to IFINDEX_INTERNAL.\n\t* isis_zebra.c: (isis_zebra_if_del) Call if_delete_retain instead\n\t  of if_delete, since it is generally not safe to remove interface\n\t  structures.  After deleting, set ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t  (zebra_interface_if_lookup) Tighten up code.\n\t* ospf6_zebra.c: (ospf6_zebra_if_del) Previously, this whole function\n\t  was commented out.  But this is not safe: we should at least update\n\t  the ifindex when the interface is deleted.  So the new version\n\t  updates the interface status and sets ifp-\u003eifindex to\n\t  IFINDEX_INTERNAL.\n\t  (ospf6_zebra_route_update) Use if_indextoname properly.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) Show ifindex and interface\n\t  flags to help with debugging.\n\t* ospf_zebra.c: (ospf_interface_delete) After deleting, set ifp-\u003eifindex\n\t  to IFINDEX_INTERNAL.\n\t  (zebra_interface_if_lookup) Make function static.  Tighten up code.\n\t* rip_interface.c: (rip_interface_delete) After deleting, set\n\t  ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t* ripng_interface.c: (ripng_interface_delete) After deleting, set\n\t  ifp-\u003eifindex to IFINDEX_INTERNAL.\n"
    },
    {
      "commit": "386e61502d391adb985ac1487825349ec85e6a8c",
      "tree": "b33f187e2408cc8ff5d70c12db1ef1af91aeb54a",
      "parents": [
        "3849db25b0bda7cd67b0ef7918737aba6b0b5b41"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 17:24:43 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 17:24:43 2005 +0000"
      },
      "message": "2005-04-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* .cvsignore: ignore eps files, built from sources\n"
    },
    {
      "commit": "3849db25b0bda7cd67b0ef7918737aba6b0b5b41",
      "tree": "eb24136bcb9da901aebe69d4cfb804decea28dee",
      "parents": [
        "3b7b814c83f81d460ae8d413aea02aef1524242d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 17:13:33 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 17:13:33 2005 +0000"
      },
      "message": "2005-04-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* INSTALL.quagga.txt: Add note about additional CVS build\n\t  requirements, if one wishes to build ps/pdf docs.\n"
    },
    {
      "commit": "3b7b814c83f81d460ae8d413aea02aef1524242d",
      "tree": "276669f9dc609ce04d7f70866050626bf56e7dfb",
      "parents": [
        "3cb98dee9067372756964f461eb2c931a1c75138"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 16:37:07 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 16:37:07 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf6_route.c: (ospf6_route_show, ospf6_route_show_detail) Protect\n\t  against the possibility that the string returned by if_indextoname\n\t  may not terminate with \u0027\\0\u0027.\n"
    },
    {
      "commit": "3cb98dee9067372756964f461eb2c931a1c75138",
      "tree": "726827878765c01c45e5be08b909974ae54ce79f",
      "parents": [
        "47004ec501bd70d558c11af05d8bacd66a8c7c25"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 16:01:05 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 16:01:05 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* configure.ac: Add strnlen to AC_CHECK_FUNCS.\n\t* zebra.h: Should include str.h to pick up missing functions.\n\t* str.h: Declare strnlen if needed.\n\t* str.c: Do not include str.h since zebra.h now includes it.\n\t  (strnlen) New function.\n"
    },
    {
      "commit": "47004ec501bd70d558c11af05d8bacd66a8c7c25",
      "tree": "88cf175ab910d555798a503f7eb5892f007c8d96",
      "parents": [
        "bbd938e2e64badb8f32b24e0b08df7ccd7696990"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 12:13:59 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 12:13:59 2005 +0000"
      },
      "message": "2005-04-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Makefile.am: quagga_TEXINFOS should depend on figures_BUILT_SOURCES.\n"
    },
    {
      "commit": "bbd938e2e64badb8f32b24e0b08df7ccd7696990",
      "tree": "ef55a7765aeab7d68ac1e93aff114c529db1c4fa",
      "parents": [
        "b7ed1ec7d62f6db50de882d1be08e1e32acc7909"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 10:18:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 10:18:42 2005 +0000"
      },
      "message": "2005-04-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* fig{-{normal,rs}-processing,_topologies_{rs,full}}.dia: new\n          files, dia diagramme XML versions of the original corresponding\n          EPS encapsulated bitmaps.\n\t* fig{-{normal,rs}-processing,_topologies_{rs,full}}.png: new\n\t  files, png exports by dia of the source dia diagrammes above.\n\t* fig{-{normal,rs}-processing,_topologies_{rs,full}}.eps: removed,\n\t  replaced by above dia source.\n\t* routeserver.texi: remove extension in image macros.\n\t* quagga.info: updated build\n\t* Makefile.am: Add rules to build eps (using \u0027convert\u0027), png (using\n\t  dia). Add figures_BUILT_SOURCES to extra_dist to avoid the\n\t  dependency on dia :) (amongst other things) for dist users.\n"
    },
    {
      "commit": "b7ed1ec7d62f6db50de882d1be08e1e32acc7909",
      "tree": "db4f4d21a5c2d1ad6065458ec8cc48a16c628dfa",
      "parents": [
        "aca72fda8f251c866f88becd5bec4c215104b102"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Mar 31 20:13:49 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Mar 31 20:13:49 2005 +0000"
      },
      "message": "\t* rt_netlink.c (netlink_talk_filter): Show always warning message,\n\t  it\u0027s not for debug.\n\t* rt_netlink.c (netlink_talk): Don\u0027t assume we use netlink_cmd\n\t  although we do now actually.\n\t* rt_netlink.c (netlink_route, netlink_route_multipath): Always use\n\t  netlink_cmd to send messages to the kernel.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "aca72fda8f251c866f88becd5bec4c215104b102",
      "tree": "cbc00dabb129e1a85079e1446ce9c721ec00817c",
      "parents": [
        "2da40f4919f6268d4935c42a358739ffdf3a48dc"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Mar 31 15:18:21 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Mar 31 15:18:21 2005 +0000"
      },
      "message": "2005-03-31 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_dump.c: (show_debugging_ospf) Show if ospf event debugging\n\t  is turned on.\n\n\t  [backport candidate]\n"
    }
  ],
  "next": "2da40f4919f6268d4935c42a358739ffdf3a48dc"
}
