| Age | Commit message (Collapse) | Author | 
|---|
|  |  | 
|  | * main.c: new file, common 'main' portion which then calls
	  test_init.
	* heavy.c: remove common portions now in 'main.
	* heavy-wq.c: ditto
	* heavy-thread.c: ditto
	* heavy*.c: Set the slow_function iteration number lower, to 300, it
	  was several orders of magnitude too 'slow' to be useful. :)
	* Makefile.am: main is a source of the tests. heavy should link
	  to the math library. | 
|  |  | 
|  | * workqueue.{c,h}: Helper API for setting up and running queues via
	  background threads.
	* command.c: install the 'show workqueues' command
	* memtypes.c: Add work queue mtypes, and a rib-queue type for
	  a zebra rib work queue.
	* memtypes.h: Updated to match memtypes.c
	* Makefile.am: Add new workqueue files to build. | 
|  | the rpmbuild commandline, eg rpmbuild --define 'keep_build 1' | 
|  | * thread.c: Kill unused TIMER_NO_SORT bits | 
|  | to HACKING (which I added..) | 
|  | * memory.c: Make the string field much wider
	* memtypes.c: Correct the prefix list str/entry strings | 
|  | * Makefile.am: Refer to source files via srcdir variable, fix
	  out-of-tree build breakage. | 
|  | * HACKING: Add some notes about build system changes, to
	  document common oversights (common for me anyway).
	  Seperate sections with two newlines, easier to read. | 
|  | * thread.h: Fix type for struct thread_master add_type: should be
	  unsigned char.  Also, add some documentation of thread_add_background
	  args.  And remove extraneous declaration of
	  show_thread_work_queues_cmd. | 
|  | * memory.h: Move include of memtypes.h to after the definition of
	  struct memory_list, gcc 4.0 doesn't like arrays of incomplete
	  types. | 
|  | * bgpd.8,isisd.8,ospf6d.8,ospfd.8,ripd.8,ripngd.8,zebra.8: Fix
	  spelling mistake: idenifier -> identifier. | 
|  | * bgpd.8,isisd.8,ospf6d.8,ospfd.8,ripd.8,ripngd.8,zebra.8: Fix
	  spelling mistake: intrefaces -> interfaces. | 
|  |  | 
|  | * Makefile.am: Build heavythread | 
|  | * heavy-thread.c: Andrew Schorr's adaptation of heavy.c to use a
	  background thread to avoid responsivity problems. | 
|  | * thread.h: Add background thread type and thread_add_background
	  macro and accompanying funcname_... function.
	  export thread_should_yield, background threads can use it.
	  Lower thread yield time to 10ms, 100ms is noticeable lag and
	  a thread would only be /starting/ to finish sometime afterward.
	* thread.c: (general) Add background thread type and schedule
	  nearly all thread types through the ready list for fairness.
	  (timeval_adjust) static qualifier missing
	  (vty_out_cpu_thread_history) add support for printout of
	  background threads
	  (show_thread_cpu) ditto.
	  (thread_master_debug) add debug of background list
	  (thread_master_create) fixup long line
	  (thread_add_unuse) add asserts for required state.
	  (thread_master_free) free background thread list
	  (funcname_thread_add_timer_timeval) make generic, able to
	  support arbitrary timer-like thread types.
	  (funcname_thread_add_timer) pass thread type to .._add_timer_timeval
	  (funcname_thread_add_timer_msec) ditto
	  (funcname_thread_add_background) Add a background thread, with an
	  optional millisecond delay factor, using .._add_timer_timeval.
	  (thread_cancel) Add background thread type.
	  Move the thread_list_delete common to all cases to bottom of
	  function, after the switch statement..
	  (thread_cancel_event) indent
	  (thread_timer_wait) Static qualifier, and make it able to cope
	  with arbitrary timer-like thread lists, so its of use to
	  background threads too.
	  (thread_process_fd) static qualifier. Again, make it take a list
	  reference rather than thread_master. Fix indentation.
	  (thread_timer_process) Check for ready timer-like threads in the
	  given list and move them on to the ready list - code originally
	  embedded in thread_fetch.
	  (thread_fetch) Schedule all threads, other than events, through
	  the ready list, to ensure fairness. Timer readying code moved to
	  thread_timer_process so it can be reused for background threads.
	  Remove the unneeded quagga_sigevent_process, as pointed out by
	  John Lin <john.ch.lin@gmail.com>.
	  (thread_should_yield) make this available. | 
|  |  | 
|  | * heavy.c: Add a timer thread to demonstrate thread interactivity,
	  Add a daemon_exit command to assist with debugging (eg for memory
	  tracers, etc..) | 
|  | * Makefile.am: pkginfo.%.tmpl is a generated file, srcdir prefix
	  is not appropriate. | 
|  | version of RIPng is v1). | 
|  | * Makefile.am: Add @INCLUDES@ and srcdir to allow out-of-tree
	  builds to work. | 
|  | * heavy.c: test programme to show how long-running functions
	  kill responsiveness. Demonstrating the most niggly problem
	  left in bgpd. | 
|  | * configure.ac: Added AC_ARG_ENABLE(time-check).  By default,
	  warning messages will now be printed for threads or commands that take
	  longer than 5 seconds, but this configure argument can be used
	  to disable the checks or change the threshold.
	* thread.h (thread_consumed_time): Declare new function to calculate
	  elapsed microseconds.
	* thread.c (thread_consumed_time): Must be global not static so we
	  can call it from lib/vty.c:vty_command.
	  (thread_should_yield): Surround with `#if 0' to make clear that this
	  function is not currently being used anywhere.
	  (thread_call): If CONSUMED_TIME_CHECK is defined, print a CPU HOG
	  warning message if the thread takes more than CONSUMED_TIME_CHECK
	  microseconds.
	* vty.c (vty_command): If CONSUMED_TIME_CHECK is defined, print a CPU
	  HOG warning message if the command takes more than CONSUMED_TIME_CHECK
	  microseconds. | 
|  | * memtypes.c: the comment about use of comments in the comments
	  headers was causing comment within comment warnings from compiler
	* memtypes.awk: Add extensive comments on the file format for
	  memtypes.c.
	  tighten the pattern for the MTYPE matching action (suggestion from
	  Andrew) and tighten which field we try the match on. | 
|  | * configure.ac: check for gawk, needed to build memtypes.h | 
|  | * Makefile.am: memtypes.awk is gawk dependent, use the GAWK automake
	  var.
	* memtypes.h: New file, auto-generated, checked in for convenience. | 
|  | * topology/Makefile.am: random.c is a source of libtopology, so list
	  it. | 
|  | * ospf_abr.c: (ospf_abr_announce_network_to_area) dont forget
	  to approve LSAs for the case where metric has changed, lsa gets
	  flushed otherwise. (backport candidate). | 
|  | * memtypes.c: The new, unified location for memory type definitions.
	  The memtype enum and declarations for memory_lists are built from
          this automatically and put into memtypes.h.
        * memtypes.awk: New script to generate memtypes.h from memtypes.c
        * memory.h: Finally, the enum can banished!
        * memory.c: Finally, the seperate mtype memory_list definitions can
          be banished!
          (log_memstats) Increase width of fields
          (show_memory_zebra_cmd) display zebra specific memory types.
          Increase width of fields.
        * Makefile.am: Add memtypes.{c,h}, add BUILT_SOURCES for memtypes.h
          Add a rule to build memtypes.h using memtypes.awk.
          Add memtypes.awk to EXTRA_DIST. | 
|  | * Makefile.am: {i,r}.manifest are (or will be) system provided files
	  and not in CVS, hence dont depend on them or distribute them. | 
|  |  | 
|  | * test-buffer.c: Andrew's buffer tester
	* test-memory.c: basic memory tester
	* Makefile.am: Add new tests | 
|  |  | 
|  | * .cvsignore: Add built files | 
|  | Implement non-blocking zclient I/O with buffering.
	* zclient.h (struct zclient): Add two fields to support non-blocking
	  I/O: struct buffer *wb, and struct thread *t_write.
	  (zclient_free): Remove function.
	  (zebra_redistribute_send): Change 2nd arg from socket fd to
	  struct zclient * (needed to support non-blocking I/O and buffering).
	  (zclient_send_message): New function to send an arbitrary
	  message with non-blocking I/O.
	* zclient.c (zclient_new): Create write buffer.
	  (zclient_free): Remove unused function.
	  (zclient_stop): Must cancel new t_write thread.  Also, reset
	  all buffers: ibuf, obuf, and wb.
	  (zclient_failed): New helper function for typical error handling.
	  (zclient_flush_data): New thread to flush queued data.
	  (zclient_send_message): New function to send the message in
	  zclient->obuf to zebra using non-blocking I/O and buffering.
	  (zebra_message_send, zapi_ipv4_route, zapi_ipv6_route): Use
	  new zclient_send_message function instead of calling writen.
	  (zclient_start): Set socket non-blocking.  Also, change 2nd arg
	  to zebra_redistribute_send from zclient->sock to zclient.
	  (zebra_redistribute_send): Change 2nd arg to struct zclient *.
	  Can now use zclient->obuf to assemble the message instead of
	  allocating a temporary stream.  And call zclient_send_message to
	  send the message instead of writen.
	  (zclient_read): Convert to support non-blocking I/O by using
	  stream_read_try instead of deprecated stream_read.
	  (zclient_redistribute): Change 2nd arg to zebra_redistribute_send
	  from zclient->sock to zclient.
	* ospf6_zebra.c (ospf6_zebra_redistribute, ospf6_zebra_no_redistribute):
	  Change 2nd arg to zebra_redistribute_send from zclient->sock
	  to zclient.
	* ospf_zebra.c (ospf_zebra_add): Call zclient_send_message instead
	  of writen.
	* rip_zebra.c (rip_redistribute_set, rip_redistribute_unset,
	  rip_redistribute_clean): Change 2nd arg to zebra_redistribute_send
	  from zclient->sock to zclient.
	* ripng_zebra.c (ripng_redistribute_unset, ripng_redistribute_clean):
	  Change 2nd arg to zebra_redistribute_send from zclient->sock
	  to zclient.
	* bgp_zebra.c (bgp_redistribute_set, bgp_redistribute_unset):
	  The 2nd arg to zebra_redistribute_send is now zclient instead of
	  zclient->sock.
	* isis_zebra.h (isis_zebra_finish): Remove declaration of unused
	  function.
	* isis_zebra.c (isis_zebra_route_add_ipv4): Call zclient_send_message
	  to send the message to zebra instead of calling writen directly, since
	  zclient_send_message understands non-blocking I/O and will manage
	  the buffer queue appropriately.
	  (isis_zebra_finish): Remove unused function, particularly since
	  the zclient_free function has been removed. | 
|  | * configure.ac: Move AC_CANONICAL_* stuff before AM_INIT_AUTOMAKE to
	  eliminate warning message about AC_ARG_PROGRAM being called
	  before AC_CANONICAL_TARGET. | 
|  | * Makefile.am: README.txt to EXTRA_DIST
	* README.txt: new file, package creation, install, usage notes. | 
|  | * configure.ac: Call AC_CANONICAL_{BUILD,TARGET} macros. Target isnt
	  set otherwise, afaict. AC_SUBST enable_{user,group,vty_group} and
	  quagga_statedir - the Solaris package bits for one need this.
	  configure the solaris/ Makefile.
	* Makefile.am: solaris is a subdir - unconditional or else it wont
	  be included in non-solaris made dists. | 
|  | * (all) Initial check-in of files for building S10 packages
	* protototype.*.in: package prototype files for SysV packages
	* *.xml.in: SMF manifests for Quagga daemons
	* pkginfo.*.tmpl.in: daemon specific pkginfo, refererenced
	  by prototype files.
	* pkginfo.tmpl.in: Quagga common pkginfo bits
	* quagga.init.in: SMF method script
	* Makefile.am: Automake file for building packages
	* depend.*: Solaris 10 dependencies for packages, referenced by
	  prototype files.
	* .cvsignore: no idea what this is for... | 
|  | * if_ioctl_solaris.c: (if_lookup_linklocal) fix order of args
	  in ALL_LIST_ELEMENTS_RO macro. | 
|  | * quagga.info: Update to match bgpd.texi addition | 
|  | * configure.ac: Fix host string recognition for Solaris Nevada aka
	  solaris2.10.1, and hopefully future such strings. | 
|  | * Makefile.am: topology should not be a conditional SUBDIR,
	  otherwise make dist breaks.
	* topology/Makefile.am: remove EXTRA_DIST of files which dont
	  exist in that directory, broke make dist.
	* isisd.c: (show_isis_generated_topology_cmd) convert LIST_LOOP
	* isis_lsp.c: (generate_topology_lsps) ditto
	  (build_topology_lsp_data) ditto | 
|  | * zserv.c (zebra_client_read): Fix bug: first read attempt should
	  read ZEBRA_HEADER_SIZE minus the number of bytes already read.
	  Improve efficiency by maintaining a calculation of the number
	  of bytes read instead of calling stream_get_endp multiple times.
	  If message length is too small, issue a warning message (not debug)
	  before closing the connection.  And also check that message length
	  is not too big. | 
|  | about IPv6 nexthops. | 
|  | status to unsigned here, because we already checked that it isn't
	  negative or 0.
	* rt_netlink.c (netlink_interface_addr): Prefix length belongs to the
	  address, not to the interface.
	* rt_netlink.c (netlink_route_multipath): Fix debug. No useless info
	  is printed out now and IPv6 info is handeled. | 
|  |  | 
|  | family node.
	[backport candidate] |