2007-05-01 David L Stevens <dlstevens@us.ibm.com>

	* (general) These changes collectively add route-map and
	  prefix-list support to zebra and fix a bug in "show
	  route-map" (with no argument).
	* command.h: added PROTOCOL_NODE type
	* log.c: (proto_name2num) new function, protocol name to
	  number translation.
	* routemap.c: (vty_show_route_map) fixed "show route-map"
	  without route-map name
	* routemap.h: added RMAP_ZEBRA type
	* zebra.h: added proto_name2num() prototype

2007-04-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.c: (quagga_timestamp) Optimize the subsecond timestamp generation.

2007-04-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* command.c: (config_write_host) Save "log timestamp precision"
	  if not default value.
	  (show_logging) Show configured timestamp precision.
	  (config_log_timestamp_precision) Enable configuration of timestamp
	  precision.
	  (no_config_log_timestamp_precision) Restore default timestamp
	  precision.
	  (cmd_init) Install new timestamp precision commands.
	* log.h: (struct zlog) New timestamp_precision field.
	  (quagga_timestamp) New function to generate a timestamp with the
	  desired precision.
	  (struct timestamp_control) Declare a structure for use in avoiding
	  repeated duplicate calls to quagga_timestamp.
	* log.c: (quagga_timestamp) New function to generate a timestamp
	  of the desired precision.
	  (time_print) Call quagga_timestamp if the time hasn't already been
	  calculated.
	  (vzlog) Initialize a timestamp_control structure and pass it to
	  time_print and vty_log.
	  (zlog_backtrace) Fix 64-bit problem: cannot print size_t with %u.
	* vty.h: Must now include "log.h".
	  (vty_log) Takes an additional struct timestamp_control argument.
	* vty.c: (vty_log_out) Use new struct timestamp_control and new
	  quagga_timestamp function to print timestamps of the desired
	  precision.
	  (vty_time_print) Use new quagga_timestamp function.
	  (vty_log) Accept new struct timestamp_control argument and pass it
	  down to vty_log_out.

2007-04-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* smux.c: (smux_trap) Fix printf format to work with 64-bit size_t.

2007-04-07 Paul Jakma <paul.jakma@sun.com>

	* prefix.h: Add define to match IPv4 Link-Local addresses

2007-03-20 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.c: (mes_lookup) Make the function more robust: check for
	  cases where the index does not match the key value at that position.
	  If so, give a warning and fall back to a linear search.
	  And improve the error message in cases where even that fails.

2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* if.h: (struct connected) Add new ZEBRA_IFA_PEER flag indicating
	  whether a peer address has been configured.  Comment now shows
	  the new interpretation of the destination addr: if ZEBRA_IFA_PEER
	  is set, then it must contain the destination address, otherwise
	  it may contain the broadcast address or be NULL.
	  (CONNECTED_DEST_HOST,CONNECTED_POINTOPOINT_HOST) Remove obsolete
	  macros that were specific to IPv4 and not fully general.
	  (CONNECTED_PEER) New macro to check ZEBRA_IFA_PEER flag.
	  (CONNECTED_PREFIX) New macro giving the prefix to insert into
	  the RIB: if CONNECTED_PEER, then use the destination (peer) address,
	  else use the address field.
	  (CONNECTED_ID) New macro to come up with an identifying address
	  for the struct connected.
	* if.c: (if_lookup_address, connected_lookup_address) Streamline
	  logic with new CONNECTED_PREFIX macro.
	* prefix.h: (PREFIX_COPY_IPV4, PREFIX_COPY_IPV6) New macros
	  for better performance than the general prefix_copy function.
	* zclient.c: (zebra_interface_address_read) For non-null destination
	  addresses, set prefixlen to equal the address prefixlen.  This
	  is needed to get the new CONNECTED_PREFIX macro to work properly.

2006-10-14 Paul Jakma <paul.jakma@sun.com>

	* if.c: (general) Handle upgrades from SUNWzebra, which tried
	  to track each logical interface as a seperate struct
	  interface, to Quagga, which assigns only one struct interface
	  per ifindex.
	  (if_sunwzebra_get) Try decompose a logical interface name
          (fooX:Y) to the 'primary' name (fooX), for Solaris.
          (interface_cmd) Use if_sunwzebra_get on Solaris.

2006-09-26 Pierre-Yves Ritschard <pierre-yves@spootnik.org>

	* smux.c: (smux_open,smux_trap,smux_register) Fix various
	  asn_build_* calls to pass the proper length in the final
	  argument: use sizeof(<variable>) instead of sizeof(<type>),
	  since there were several inconsistencies between the actual
	  variable type and the size that was passed.  This should
	  fix some problems on 64-bit architectures where sizeof(int)
	  != sizeof(long).

2006-08-25 Paul Jakma <paul.jakma@sun.com>

	* thread.c: (general) Add support for monotonic clock, it may still
	  jump forward by huge amounts, but should be immune to going
	  backwards. Fixes bug #134.
	  (quagga_gettimeofday_relative_adjust) helper, does what name
	  says - adjusts gettimeofday based relative timer.
	  (quagga_gettimeofday) helper to keep recent_time up to date.
	  (quagga_get_relative) helper, update and getch the relative
	  timer using gettimeofday(). POSIX CLOCK_MONOTONIC is also
	  supported, but the code is not enabled yet nor tested.
	  (quagga_real_stabilised) helper, retrieve absolute time but
	  stabilised so as to never decrease.
	  (quagga_gettime) Exported interface, analogous to POSIX
	  clock_gettime() in interface, supporting several clocks.
	  (quagga_time) Exported interface, analogous to traditional
	  time(), will never decrease.
	  (recent_relative_time) Convenience function to retrieve
	  relative_time timeval, similar to existing recent_time absolute
	  timeval, for when an approximately recent value will do.
	  (remainder) Update to use above helpers.
	  (thread_getrusage) Previously was a macro, but needs to be
	  a function to twiddle with thread.c private stuff.
	* thread.c: Point the GETRUSAGE macro at previous function.
	  Export quagga_gettime, quagga_time and recent_relative_time for 
	  general use.

2006-07-25 Paul Jakma <paul.jakma@sun.com>

	* thread.h: (struct thread) Add a cache pointer to the struct
	  cpu_thread_history, if it is known - saving hash lookup on
	  each thread_call.
	* thread.c: (thread_call) Cache the pointer to the
          cpu_thread_history, so that future thread_calls of same
          thread can avoid the hash_lookup.

2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* vty.c: (vty_log_out) Do not call vty_close, because this could
	  result in a parent function's accessing the freed memory.
	  Instead, set status VTY_CLOSE and call shutdown(vty->fd, SHUT_RDWR).
	  And add a comment on vty_close.

2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* vty.c: (vty_log_out, vty_read, vty_flush, vtysh_flush, vtysh_read)
	  After an I/O error, must set vty->monitor to 0 before calling
	  zlog_warn, otherwise an infinite recursion could occur
	  (since zlog_warn triggers a message to be written to the vty,
	  and that in turn triggers another error message when it fails, etc.).

2006-07-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* vty.c: (vty_log_out) Debug messages to terminal vty sessions
	  should include timestamps.

2006-06-28 Paul Jakma <paul.jakma@sun.com>

	* memory.c: Fix typo in cpp conditional around malloc.h, from
	  comment in bug #269.

2006-06-27 Paul Jakma <paul.jakma@sun.com>

	* route_types.awk: Remove setting the 'bare' numeric route type
	  in redist strings.

2006-06-15 Paul Jakma <paul.jakma@sun.com>

	* command.c: (cmd_describe_command_real) Fix leak, CID #38.
	* memory.h: Experimental, have XFREE macro NULL out the freed
	  pointer.
	* linklist.c: (list_delete) call list_delete_all_node, don't
	  duplicate it.
	* if.c: (if_flag_dump) remove the whitespace indentation, callers
	  should provide.

2006-05-28 Paul Jakma <paul.jakma@sun.com>

	* zebra.h: Include inttypes.h rather than stdint.h, best practice
	  according to the autoconf manual.
	  Add UINT*_MAX defines for older platforms lacking these (FBSD 4)
	* memory.c: malloc.h is deprecated in favour of stdlib.h, however
	  we still need it on GNU Libc for mallinfo().
	* vty.c: (vty_log/vty_log_fixed) dont crash if called when vty
	  hasn't been initiliased.
	* log.c: (general) Add support for Sun libc printstack().
	  (hex_append) make the cpp conditional on general HAVE_STACK_TRACE
	  define.
	  (zlog_backtrace_sigsafe) Ditto. Add printstack() version of the
	  the DUMP macro in this function.

2006-05-23 Paul Jakma <paul.jakma@sun.com>

	* route_types.txt: New file, table of ZEBRA_ROUTE definitions.
	* route_types.awk: New script, to parse previous and generate
	  (for now) redistribute string defines.
	* Makefile.am: build route_types.h using previous two, ala
	  memtypes.h, include the script and table file in EXTRA_DIST.
	* command.h: pull in route_types.h, add a REDIST_STR define.

2006-05-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* if.h: (struct connected) Document the meaning of the
	  ZEBRA_IFC_REAL and ZEBRA_IFC_CONFIGURED flags.

2006-05-15 Paul Jakma <paul.jakma@sun.com>

	* log.c: (general) Generalise struct zebra_route_desc into
	  struct zebra_desc_table and, similar to route_types, add a
	  command_types table to describe Zserv protocol commands.
	  (route_types[]) use a macro to use designated initialisers
	  while avoiding tedious duplication.
	  (zserv_command_string) lookup string from zebra_desc_table,
	  similar to zebra_route_string
	* zebra.h: Add declaration for zserv_command_string, adjust the
	  comments to reflect zebra_desc_table.

2006-05-13 Paul Jakma <paul.jakma@sun.com>

	* vty.c: (vty_describe_command) CID #39 fix was too hasty, just
	  cause it /can/ leak doesn't mean it always will have, check
	  first.

2006-05-12 Paul Jakma <paul.jakma@sun.com>

	* plist.c: (vty_prefix_list_uninstall) Fix potential NULL deref
	  of prefix and typestr strings, Coverity CID #3.
	* command.c: (cmd_complete_command_real) Fix leak of cmd_vector
	  in error case, Coverity CID #37.
	  (cmd_describe_command_real) Fix return of freed pointer when
	  no-match, CID #55.
	* vty.c: (vty_describe_command) fix leak of describe vector in
	  error path, CID #39.

2006-03-30 Paul Jakma <paul.jakma@sun.com>

	* command.h: (DEFUN_CMD_FUNC_TEXT) Annotate arguments as
	  potentially being unused.
	* workqueue.c: (work_queue_run) fix line length of comment

2006-03-27 Paul Jakma <paul.jakma@sun.com>

	* memtypes.awk: Fix gensub call, g should be a string..

2006-03-25 Paul Jakma <paul.jakma@sun.com>

	* workqueue.h: (struct work_queue) Remove status field and
	  state flag, no longer used.

2006-03-19 Paul Jakma <paul.jakma@sun.com>

	* memtypes.c: Add MTYPE_BGP_SYNCHRONISE.

2006-03-16 Paul Jakma <paul.jakma@sun.com>

	* Makefile.am: Fix -version-info argument.

2006-03-15 Paul Jakma <paul.jakma@sun.com>

	* memory.c: (mtype_memstr) new helper function to 
	  return human friendly string for a byte count.
	  (mtype_stats_alloc) new function, for users to retrieve
	  number of objects allocated.
	  (show_memory_mallinfo) New function, show mallinfo statistics
	  if available.
	  (show_memory_all_cmd) Call show_memory_mallinfo, if mallinfo
	  is available.
	* memory.h: Export mtype_memstr and mtype_stats_alloc.
	  Provide a define for a reasonable buffer size for
	  mtype_memstr.
	  
2006-03-14 Paul Jakma <paul.jakma@sun.com>

	* privs.c: (zprivs_caps_init) Change user IDs before lowering
	  privileges, while this seems to work on Linux, on Solaris
	  it rightfully refuses due to PRIV_PROC_SETID having been
	  dropped.
	* command.h: Add the struct host global exported from command.c

2006-03-06 Paul Jakma <paul.jakma@sun.com>

	* if.h: export show_address_cmd, for anyone who wishes to use
	  it.

2006-02-21 Paul Jakma <paul.jakma@sun.com>

	* sockunion.c: (sockunion_{su2str,log}) Use XSTRDUP.
	  Particularly with _su2str, as that string gets XFREEd,
	  which can be annoying if run debug code in memory.c.

2006-02-02 Paul Jakma <paul.jakma@sun.com>

	* workqueue.h: (struct work_queue) Remove the delay field.
	  It served no purpose and just introduced bad behaviour.
	  Should be excised before its allowed to escape into 1.0.
	  This removes need for the 'flood' and runs_since_clear
	  fields.
	* workqueue.c: (general) excise delay factor between queue
	  runs, hence the 'flood' crap too.. See above.

2006-01-19 Paul Jakma <paul.jakma@sun.com>

	* stream.c: (stream_getq_from) should use POSIX uint64_t
	  not u_int64_t. Latter is neither a traditional BSD type, nor
	  a POSIX type.

2006-01-17 Vincent Jardin <vincent.jardin@6wind.com>

	* md5.c: Don't forget to keep const.
	* regex.c: Cleanup code and remove warnings.

2006-01-17 Paul Jakma <paul.jakma@sun.com>

	* md5.{c,h}: (md5_loop) Is better off taking a void * and doing
	  cast to byte wise type internally, avoids needs for casts 
	  in users.
	* vty.c: (no_terminal_monitor_cmd) New ALIAS for 
	  terminal_no_monitor, in the more normal negating format,
	  to be kind to my fingers.
	  (vty_init) install new ALIAS.
	* zclient.{c,h}: (zclient_create_header) export this, seems others
	  could use it (in lieu of more complete zserv helpers).

2006-01-16 Paul Jakma <paul.jakma@sun.com>

	* zclient.h: Update the Zserv protocol header with a version
	  field.  Define the old command field to be a 'marker', to
	  allow old Zserv and updated Zserv to be differentiated.
	  Future updates will bump the version field obviously. New
	  command field is made wider.  Try to stop using the
	  'zebra_size_t' typedef in the callbacks.
	* zclient.c: Update to read/write new format header.

2006-01-11 Paul Jakma <paul.jakma@sun.com>

	* if.h: (struct interface) expand flags to 8 bytes.
	* zclient.c: (zebra_interface_{add,state}_read) stream read of
	  interface flags now need to use stream_getq.
	  (zebra_interface_if_set_value) ditto

2006-01-10 Paul Jakma <paul.jakma@sun.com>

	* stream.c: (stream_new) Allocate stream data as seperate object.
	  (stream_free) free the data.
	  (stream_resize) new function, resize stream to new size.
	  (stream_{get,put}q*) new functions to get/put quad word size
	  types.
	* stream.h: (struct stream) make data seperate from the stream.
	  Export new stream_resize and quad-word get/put functions.
	  
2005-12-29  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* vty.c (vty_hello): add cast to quiet lint (from David Young)

2005-11-26 Paul Jakma <paul.jakma@sun.com>

	* buffer.c: (struct buffer_data) change gcc zero array
	  declaration to C99 incomplete array.
	* stream.h: (struct stream) same

2005-11-24 Paul Jakma <paul.jakma@sun.com>

	* privs.c: (zcaps2sys/solaris) remove unused variable.
	  (zprivs_state_caps/solaris) Format string missing a
	  specifier.
	* zebra.h: s/u_int/unsigned int/, u_int is a BSD type, defining
	  __USE_BSD on Linux pulls in further things from netinet/ip.h
	  which dont preprocess for some reason. There is no C99
	  shorthand type directly equivalent to u_int afaict, so don't
	  use it.

2005-11-14 Paul Jakma <paul.jakma@sun.com>

	* (general) pass struct work-queue to callback functions.
	* workqueue.h: (struct work_queue) move the state flag
	  variables to end.
	  Add an opaque pointer to spec, for user-data global to the
	  queue.
	  Pass reference to work_queue to all callbacks.
	* workqueue.c: (work_queue_item_remove) pass ref to workqueue
	  to user callbacks.
	  (work_queue_run) ditto.

2005-11-14 Paul Jakma <paul.jakma@sun.com>

	* (general) Add state to detect queue floods.  There's no sense
	  trying to be sparing of CPU resources, if the queue is
	  flooding and using ever more memory resources. we should just
	  get on with clearing the queue.
	  The sense of delay and hold were wrong way around, fix.
	* workqueue.h: (struct work_queue) Add status bitfield.  Add
	  'flood' integer to workqueue spec.  Add runs_since_clear
	  counter to workqueue.
	* workqueue.c: (work_queue_new) set defaults for delay, hold
	  and flood.
	  (work_queue_add) initial schedule should use delay, not hold.
	  (show_work_queues) Print flood field, conserve whitespace.
	  (work_queue_unplug) use delay, not hold.
	  (work_queue_run) consecutive runs should be seperated by hold
	  time, not delay.
	  Keep track of number of consecutive runs, go into 'overdrive'
	  if queue is being flooded, we can't avoid making heavy use of 
	  resources, better to use CPU than ever more RAM.
	* zebra.h: [bug #231] include stdint, if its there.

2005-11-05 Paul Jakma <paul.jakma@sun.com>

	* routemap.c: (vty_show_route_map_entry) call action is
	  seperate from exit action, latter should still be printed
	  regardless of whether a call is specified.

2005-11-03 Paul Jakma <paul.jakma@sun.com>

	* zebra.h: BSD BYTE_ORDER define isn't available everywhere,
	  define if needs be.
	* checksum.h: new file. checksum.c exports in_cksum, provide
	  a header for it.
	* checksum.c: (in_cksum) callers shouldn't have to know it uses
	  a u_short internally, change to void *.
	* Makefile.am: Add checksum.h
	* command.h: remove bogus trailling slash.
	* md5.c: (general) Update it for the twentieth century. ANSI
	  declarations are widely supported now.. Don't include system
	  headers, only include zebra.h. Use POSIX types (the
	  alternative is to define u_int64_t in a portable way - rest
	  of Quagga needs same cleanup).
	  Make endian-conditional code be compiler conditional rather
	  than preprocessor conditional, so that breakage gets noticed
	  quicker.
	* md5.h: POSIX types. Get rid of the odd __P() non-ANSI capable
	  compiler compatibility hack.
	* if.c: (connected_free) use MTYPE for connected label.
	* memtypes.c: Add MTYPE_CONNECTED_LABEL
	* memtypes.h: Update auto-built file.

2005-10-26 Paul Jakma <paul.jakma@sun.com>

	* (general) Cleanup a some calls to XFREE,strdup, etc. to use
	  the memory.h macros.
	* memtypes.c: Add MTYPE_IF_RMAP_NAME, MTYPE_PQUEUE,
	  MTYPE_PQUEUE_DATA and MTYPE_HOST.
	* memtypes.h: update auto-built file.
	* if_rmap.c: Use MTYPE_IF_RMAP_NAME.
	* pqueue.c: Use the two MTYPE_PQUEUE mtypes for allocations.
	* command.c: Use MTYPE_HOST, MTYPE_STRVEC. Some other fixups,
	  including fixing some likely leaks in config_write_file.
	* vty.c: memory macro usage fixes. 
	  (vty_read_config) fix leak where relative config file is
	  specified.

2005-10-20 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* sockopt.c: (setsockopt_multicast_ipv4) If IP_ADD_MEMBERSHIP
	  fails with errno equal to EADDRINUSE, then issue an info
	  message and try IP_DROP_MEMBERSHIP followed by IP_ADD_MEMBERSHIP.

2005-10-20 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* memory.c: (show_memory_vty) Omit zero statistics.  Print separators
	  only if some non-zero stats have been printed in between.
	  (show_separator) New function to print a separator.
	  (show_memory_all) Keep track of whether a separator is needed
	  between the different memory statistics groups.

2005-10-18 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* memtypes.h: Add MTYPE_OSPF_VERTEX_PARENT (to match memtypes.c).

2005-10-18 Paul Jakma <paul.jakma@sun.com>

	* memtypes.c: (memory_list_ospf) Add MTYPE_OSPF_VERTEX_PARENT.

2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* zebra.h: Declare new functions zebra_route_string() and
	  zebra_route_char().
	* log.c: (zroute_lookup,zebra_route_string,zebra_route_char) New
	  functions to map zebra route numbers to strings.

2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>

	* smux.[ch]: allow to retreive global OID (identified by <0
	  namelen).

2005-09-29 Paul Jakma <paul.jakma@sun.com>

	* zebra.h: Solaris capabilities requires priv.h to be included.
	* privs.{c,h}: Add support for Solaris Least-Privileges.
	  privs.h: Reduce some of the abstract capabilities, which do
	  not have rough equivalents on both systems. Rename the net
	  related caps to _NET, as they should have been in first
	  place.
	  (zprivs_terminate) should take the zebra_privs_t as argument so
	  that it can update change pointer.
	  Add an additional privilege state, ZPRIVS_UNKNOWN.
	* privs.c: (various capability functions) Add
	  Solaris privileges variants.
	  (zprivs_state) Use privs.c specific generic types to
          represent various capability/privilege related types, so that
          each can be typedef'd as appropriate on each platform.
	  (zprivs_null_state) static added, to hold the state the null
	  method should report (should be raised by default, and
          LOWERED if zprivs_terminate has been called)
          (zprivs_state_null) Report back the zprivs_null_state.
          (cap_map) Make it able to map abstract capability to multiple
          system capabilities.
          (zcaps2sys) Map to abstract capabilities to multiple system
          privileges/capabilities.
          (zprivs_init) move capability related init to seperate
	  function, zprivs_caps_init.
          (zprivs_terminate) ditto, moved to zprivs_caps_terminate.
          Set the change_state callback to the NULL state, so the
          user can continue to run and use the callbacks.
          
2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>

	* filer.c: show protocol name in filter_show()
	* plist.c: show protocol name in vty_show_prefix_entry()
	* routemap.c: show protocol name in vty_show_route_map_entry()
	* vty.c: in vty_command(), show protocol name if command unknown
	
2005-09-28 Alain Ritoux <alain.ritoux@6wind.com>

	* md5-gnu.h: removed
	* md5.h: replaces md5-gnu.h
	* Makefile.am: use correct md5.h
	* md5.c: import from WIDE

2005-09-21 Paul Jakma <paul.jakma@sun.com>

	* memtypes.{c,h}: Add MTYPE_AS_SEG_DATA.
	
2005-09-19 Hasso Tepper <hasso at quagga.net>

	* str.[ch]: Add strndup() from glibc.

2005-09-05 Paul Jakma <paul.jakma@sun.com>

	* command.c: (install_element) be more robust. Eg, cmd_init
	  need not have been called, some applications may use other
	  library subsystems, which call install_element, without the
          application wanting commands and hence not calling cmd_init.
        
2005-08-22 Hugo Santos <hsantos@av.it.pt>

	* command.h: (enum node_type) Add BGP_IPV6M_NODE 
	* command.c: (node_parent) Handle BGP_IPV6M_NODE node
	  (config_exit, config_end) ditto
	* vty.c: (vty_end_config) Handle BGP_IPV6M_NODE node
	
2005-08-10  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* getopt.h: Don't declare getopt (rather than getopt_long), since
	quagga doesn't need it.
	* getopt.c (getopt): Don't define getopt.

2005-07-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* prefix.c: (prefix_ipv4_new, prefix_ipv6_new): Call prefix_new
	  to allocate the memory to make sure that all struct prefix pointers
	  point to objects of the same length (avoids memory overruns
	  on struct prefix assignments).
	  (prefix_ipv4_free, prefix_ipv6_free): Simply call prefix_free.
	  It is interesting to note that these functions are never actually
	  called anywhere in the code.  Instead prefix_free was already
	  being called directly, despite the previous MTYPE incompatibility.

2005-07-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* prefix.c: (ip_masklen) While loop should test that 'pnt' pointer is
	  in range before dereferencing it.

2005-06-24 Pawel Worach <pawel.worach@gmail.com>

	* getopt.h: add further tests for full getopt declaration on
	  various systems.

2005-06-18 Paul Jakma <paul.jakma@sun.com>

	* memtypes.h: update autobuilt file to match memtypes.c changes

2005-06-01 Paul Jakma <paul.jakma@sun.com>

	* memtypes.c: Add MTYPE_BGP_PROCESS_QUEUE and
	  MTYPE_BGP_CLEAR_NODE_QUEUE

2005-05-24 Paul Jakma <paul@dishone.st>

	* memtypes.h: update this auto-built file. (maybe we should just
	  remove it, is GNU awk a terrible dependency to have?)

2005-05-23 Paul Jakma <paul@dishone.st>

	* memtypes.awk: use character classes, which work correctly in
	  all LC_COLLATE environments, unlike A-Z, which doesnt work in
	  eg estonian collate order. Reported by Hasso.
	* routemap.c: (rmap_onmatch_goto) fix crash if 'continue' command
	  is used, which does not supply an argv[0].
	  this is a backport candidate /iff/ the trailing ; is removed
	  from VTY_GET_INTEGER_RANGE
	* vty.h: fix the VTY_GET macros, do {..} while(0) so they have
	  correct function like syntax in usage.
	* workqueue.h: Add a WQ_QUEUE_BLOCKED item_status return code,
	  to allow a queue function to indicate the queue is not
	  ready/blocked - rather than any problem with the item at hand.
	  Add a notion of being able to 'plug' and 'unplug' a queue.
	  Add helpers to plug/unplug a queue.
	  Add a completion callback, to be called when a queue is emptied.
	* workqueue.c: (work_queue_new) remove useless list_free.
	  (work_queue_schedule) new internal helper function to schedule
	  queue, if appropriate.
	  (work_queue_add) use work_queue_schedule
	  (show_work_queues) Print 'P' if queue is plugged.
	  (work_queue_plug) new API function, plug a queue - ie prevent it
	  from 'drained' / processed / scheduled.
	  (work_queue_unplug) unplug a queue, allowing it to be drained
	  / scheduled / processed again.
	  (work_queue_run) Add support for WQ_QUEUE_BLOCKED.
	  Add comment for RETRY_NOW case.
	  Make hysteris more aggresive in ramping up granularity, improves
	  performance significantly.
	  Add support for calling completion callback when queue is emptied,
	  possibly useful for knowing when to unplug a queue.

2005-05-19 Paul Jakma <paul@dishone.st>

	* thread.c: (thread_cancel_event) the number of pending events
	  cancelled is potentially useful information, dont throw it away,
	  pass it back to the caller.
	* sockunion.c: (sockunion_getsockname) use MTYPE_SOCKUNION, not TMP
	  (sockunion_getpeername) ditto
	* memtypes.c: (memory_list_bgp) add MTYPE_BGP_PEER_HOST

2005-05-15 Paul Jakma <paul@dishone.st>

	* getopt.h: It's not just __GNU_LIBRARY__ which defines
	  getopt, eg __EXTENSIONS__ does too on SunOS. It still seems
	  awfully fragile though.
	* getopt.c: include zebra.h after config.h, before including
	  getopt.h so that things at least are consistent..
	* getopt1.c: ditto
	
2005-05-07 Yar Tikhiy <yar@comp.chem.msu.su>

	* sockopt.c: Add support for BSD style ifindex in ip_mreq.

2005-05-06 Paul Jakma <paul@dishone.st>

	* (general) extern and static'ification of functions in code and
	  header.
	  Cleanup any definitions with unspecified arguments.
	  Add casts for callback assignments where the callback is defined,
	  typically, as passing void *, but the function being assigned has
	  some other pointer type defined as its argument, as gcc complains 
	  about casts from void * to X* via function arguments.
	  Fix some old K&R style function argument definitions.
	  Add noreturn gcc attribute to some functions, as appropriate.
	  Add unused gcc attribute to some functions (eg ones meant to help
	  while debugging)
	  Add guard defines to headers which were missing them.
	* command.c: (install_node) add const qualifier, still doesnt shut
	  up the warning though, because of the double pointer.
	  (cmp_node) ditto
	* keychain.c: (key_str2time) Add GET_LONG_RANGE() macro, derived 
	  fromn vty.h ones to fix some of the (long) < 0 warnings.
	* thread.c: (various) use thread_empty
	  (cpu_record_hash_key) should cast to uintptr_t, a stdint.h type
	* vty.h: Add VTY_GET_IPV4_ADDRESS and VTY_GET_IPV4_PREFIX so they
	  removed from ospfd/ospf_vty.h
	* zebra.h: Move definition of ZEBRA_PORT to here, to remove
	  dependence of lib on zebra/zserv.h

2005-05-06 Hasso Tepper <hasso at quagga.net>

	* sockunion.c: Fix warning message.

2005-05-03 Paul Jakma <paul@dishone.st>

	* stream.h: Add comment about the special zero-ing ability of
	  stream_put.
	  (stream_recvmsg, stream_write) should return ssize_t and size_t
	  respectively. Should both be extern linkage.
	  (stream_recvfrom) Stream aware wrapper around recvfrom, in style
	  of stream_read_try.
	* stream.c: (stream_recvfrom) new function, wrapper around recvfrom.
	  (stream_recvmsg, stream_write) ssize_t and size_t return values
	  
2005-04-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	Add wall-clock timing statistics to 'show thread cpu' output.
	* thread.h: Define struct rusage_t to contain wall-clock time
	  and cpu time.  Change GETRUSAGE macro to collect both pieces
	  of data.  Make appropriate changes to struct cpu_thread_history
	  to track CPU time and real time.  Change proto for
	  thread_consumed_time to return real and cpu time elapsed.
	  And declare a new global variable 'struct timeval recent_time'.
	* thread.c (struct timeval recent_time): New global timestamp variable.
	  (timeval_adjust): If timeout is negative, set to 0 (not 10
	  microseconds).  And remove upper bound of 1,000,000 seconds, since
	  this does not seem to make any sense (and it breaks
	  funcname_thread_add_timer_timeval).
	  (timeval_cmp): Should return long, not int.
	  (vty_out_cpu_thread_history): Show CPU time and real time.
	  (cpu_record_hash_print): Calculate totals for CPU and real time.
	  (cpu_record_print): Change 'show thread cpu' title to show CPU and
	  real time.
	  (thread_timer_remain_second): Put current time in global recent_time.
	  (funcname_thread_add_timer_timeval): Fix assert.  Replace 2-case
	  switch assignment with a ternary expression.  Use global recent_time
	  variable.  Fix use of timeval_adjust (previously, the value was not
	  actually being adjusted).
	  (thread_cancel): Add missing "break" statement in case
	  THREAD_BACKGROUND.
	  (thread_timer_wait): Use global recent_time value instead of calling
	  gettimeofday.  And there's no need to check for negative timeouts,
	  since timeval_subtract already sets these to zero.
	  (thread_timer_process): Timers are sorted, so bail out once we
	  encounter a timer that has not yet popped.  And remove some
	  extraneous asserts.
	  (thread_fetch): Do not process foreground timers before calling
	  select.  Instead, add them to the ready list just after the select.
	  Also, no need to maintain a count of the number of ready threads,
	  since we don't care how many there are, just whether there's
	  one at the head of the ready list (which is easily checked).
	  Stick current time in global variable recent_time to reduce
	  the number of calls to gettimeofday.  Tighten logic for
	  calculating the select timeout.
	  (thread_consumed_time): Now returns real time and puts the elapsed
	  cpu time in an additional argument.
	  (thread_should_yield): Use real (wall-clock) time to decide whether
	  to yield.
	  (thread_call): Maintain CPU and real time statistics.
	* vty.c (vty_command): For slow commands, show real and cpu time.

2005-04-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* workqueue.c (show_work_queues): Remove unused gettimeofday call.

2005-04-27 Paul Jakma <paul.jakma@sun.com>

	* workqueue.h: (struct work_queue_item) change retry_count to ran,
	  its a count of number item has been run.
	* workqueue.c: (show_work_queues) Fix formating of slightly
	  bugfix: fix SIGFPE if wq->runs is 0.
	  (work_queue_run) retry logic was slightly wrong.
	  cycles.best is 0 initialy, granularity is 1, so update best
	  if cycles >= granularity, not just >.
	* memory.h: memtypes is built source, default includes points to
	  top_builddir, so we should refer to lib/memtypes.h

2005-04-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* buffer.c (buffer_write): Comment out call to buffer_flush_available.
	  This should speed up buffering at the expense of a possible increase
	  in latency in flushing the data if inside a long-running thread.

2005-04-25 Paul Jakma <paul.jakma@sun.com>

	* 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: Refer to source files via srcdir variable, fix
	  out-of-tree build breakage.
	  Add new workqueue files to build.
	* memory.c: Make the string field much wider
	* memtypes.c: Correct the prefix list str/entry strings
	* thread.c: Kill unused TIMER_NO_SORT bits

2005-04-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* 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.

2005-04-22 Paul Jakma <paul.jakma@sun.com>

	* 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.
	* 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.
	
2005-04-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* 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.

2005-04-16 Paul Jakma <paul@dishone.st>

	* 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.

2005-04-15 Paul Jakma <paul@dishone.st>

	* 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.
	  memtypes.awk is gawk dependent, use the GAWK automake var.
	* memtypes.h: New file, auto-generated, checked in for convenience.

2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* 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.

2005-04-09 Jeroen Simonetti <jeroens@office.netland.nl>

	* routemap.c: Show description in "show route-map" output.

2005-04-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* sigevent.c: On GNU_LINUX, check whether __USE_GNU is already defined.

2005-04-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* vty.c: (vty_log_fixed) Use casts to (void *) to try to eliminate
	  compiler warnings when assigning a (const char *) value to
	  struct iovec iov_base.

2005-04-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* zebra.h: If GNU_LINUX is defined, then define _GNU_SOURCE.  This
	  fixes a problem where we were not getting the declaration of strnlen
	  in <string.h>.

2005-04-08 Hasso Tepper <hasso at quagga.net>

	* routemap.[ch]: Added "description ..." command.

2005-04-08 Hasso Tepper <hasso at quagga.net>

	* prefix.[hc]: Pass argument to the inet6_ntoa by value making it more
	  inet_ntoa alike.

2005-04-07 Paul Jakma <paul.jakma@sun.com>

	* linklist.h: Add usage comments.	  
	  Rename getdata macro to listgetdata.
	  Rename nextnode to listnextnode and fix its odd behaviour to be
	  less dangerous.
	  Make listgetdata macro assert node is not null, NULL list entries
          should be bug condition.
          ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use
          with for loop, Suggested by Jim Carlson of Sun.
          Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the
          "safety" of previous macro.
	  LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to
	  distinguish from the similarly named functions, and reflect their
	  effect better.
	  Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section 
	  with the old defines which were modified above, 
	  for backwards compatibility - guarded to prevent Quagga using it..
	* linklist.c: fix up for linklist.h changes.
	* *.c: fix up for new list loop macro, try audit other loop
          usage at same time, to some degree.

2004-04-05 Hasso Tepper <hasso at quagga.net>

	* lib/prefix.[hc]: inet6_ntoa utility function copied from
	  ripngd/ripngd.c (inet6_ntop).

2004-04-05 Paul Jakma <paul@dishone.st>

	* vty.c: Improve logging of failures to open vty socket(s).
	  See bugid #163.

2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* if.h: Fix comments to reflect that if_lookup_by_name and
	  if_get_by_name now require the argument strings to be NUL-terminated.
	* if.c: (if_lookup_by_name) Compare using strcmp.
	  (if_get_by_name) Pass strlen(ifname) as 2nd arg to if_create.

2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* if.c: (if_nametoindex) The man page is rather vague, but it seems
	  like the argument to if_nametoindex has an implicit maximum length
	  of IFNAMSIZ characters.

2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* if.h: (if_lookup_by_name_len, if_get_by_name_len) New functions.
	* if.c: (if_lookup_by_name_len, if_get_by_name_len) New functions.
	  (if_get_by_name) Tighten up code.
	  (interface) Use new function if_get_by_name_len.
	* zclient.c: (zebra_interface_add_read) Use new if_get_by_name_len
	  function.
	  (zebra_interface_state_read) Use new if_lookup_by_name_len function.

2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* str.c: Replace strlcpy and strlcat with actual working versions
	  copied from rsync-2.6.2/lib/compat.c.

2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* if.h: Remove define for IFINDEX_INTERNBASE and add define
	  IFINDEX_INTERNAL 0, since all internal (i.e. non-kernel) pseudo-
	  interfaces should have ifindex set to 0.
	  (if_new) Remove function.
	  (if_delete_retain) New function to delete an interface without
	  removing from iflist and freeing the structure.
	  (ifname2ifindex) New function.
	* if.c: (if_new) Remove function (absorb into if_create).
	  (if_create) Replace function if_new with call to calloc.
	  Set ifp->ifindex to IFINDEX_INTERNAL.  Fix off-by-one error
	  in assert to check length of interface name.  Add error message
	  if interface with this name already exists.
	  (if_delete_retain) New function to delete an interface without
	  removing from iflist and freeing the structure.
	  (if_delete) Implement with help of if_delete_retain.
	  (ifindex2ifname) Reimplement using if_lookup_by_index.
	  (ifname2ifindex) New function to complement ifindex2ifname.
	  (interface) The interface command should check the name length
	  and fail with a warning message if it is too long.
	  (no_interface) Fix spelling in warning message.
	  (if_nametoindex) Reimplement using if_lookup_by_name.
	  (if_indextoname, ifaddr_ipv4_lookup) Reimplement using
	  if_lookup_by_index.

2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* zebra.h: Should include str.h to pick up missing functions.
	* str.h: Declare strnlen if needed.
	* str.c: Do not include str.h since zebra.h now includes it.
	  (strnlen) New function.

2005-03-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* zebra.h: Must check whether __attribute__ should be defined before
	  including zassert.h.

2005-03-14 Paul Jakma <paul.jakma@sun.com>

	* command.c: (sort_node) use vector_max instead of referencing 
	  (struct vector *)->max directly. Test that vector_max is > 0 
	  before using it to calculate an index.
	  Fixup vector loop to make main body conditional on vector slot
	  not being empty.
	  (cmd_cmdsize) Fixup vector loop to make main body conditional on
	  vector slot not being empty.
	  (cmd_filter_by_completion) ditto
	  (cmd_filter_by_string) ditto 
	  (is_cmd_ambiguous) ditto
	  (cmd_describe_command_real) Change index integers to unsigned.
	  Test that vector_max is > 0 before using it to calculate an index.
	  Return immediately with CMD_ERR_NO_MATCH if vline has no 
	  active slots.
	  Fixup vector loop to make main body conditional on vector slot
	  not being empty.
	  (cmd_complete_command_real) ditto.
	  (cmd_execute_command_strict) Fixup vector loop to be conditional
	  on non-null slot.
	  (various) Fix indentation and other whitespace.
	  vector.h: Rename to (struct vector).max to slightly less confusing
	  active, for the number of active slots, distinct from allocated
	  or active-and-not-empty. Rename vector_max to vector_active 
	  for same reason.

2005-03-09 Paul Jakma <paul.jakma@sun.com>

	* command.c: Undo commit of sign warning fix and hidden command
	  in list_cmd. Sign warning is more subtle. list_cmd on its own
	  will be committed after.
	* command.c: (config_list_cmd) Don't list hidden or deprecated
	  commands, hiding these from tab completion is still to be done.

2005-03-08 Paul Jakma <paul.jakma@sun.com>

	* command.c: (banner_motd_file_cmd) use XSTRDUP/XFREE.
	  (no_banner_motd_cmd) use XFREE.
	  (cmd_describe_command_real) sign compile warning fix
	  (cmd_complete_command_real) ditto.
	  (config_list_cmd) Don't list hidden or deprecated commands,
	  hiding these from tab completion is still to be done.
	* command.h: cmd attr enum should start at 1.
	* vty.c: (vty_hello) suggestions from Andrew, read by line and
	  stub out trailling non-printable characters on each line thus
	  allowing us to specify VTY_NEWLINE to vty_out.

2005-03-08 Jeroen Massar <jeroen@unfix.org>

	* vty.c: (vty_hello) display motd file, if set
	* command.h: add char *motdfile to struct host
	* command.c: (config_write_host) write out motdfile config
	  (banner_motd_file_cmd) new command, allow motd to be read from
	  file.
	  (no_banner_motd_cmd) free motdfile string, if needs be.
	  (cmd_init) init (struct host).motdfile. Add new motd file
	  commands.

2005-03-07 Michael Sandee <voidptr@voidptr.sboost.org>

	* command.c: host.name might be NULL.
	* vty.c: Fix fd leak.

2005-02-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* stream.c: (stream_read_try) Log a warning message if a fatal
	  I/O error occurs.
	  (stream_fifo_new) Fix prototype.
	* stream.h: Fix prototype for stream_fifo_new (need void arg).

2005-02-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* {vty.h,vty.c}: Remove vty_finish (duplicate of vty_reset).

2005-02-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* buffer.h: Make the struct buffer and struct buffer_data structures
	  private by moving them inside buffer.c.  Add comments for all
	  functions.  Rename buffer_write as buffer_put (to be more consistent
	  with the buffer_putc and buffer_putstr functions).  Declare a new
	  buffer_write function that is used to write data to a file descriptor
	  and/or add it to the buffer queue.  Remove unused function
	  buffer_flush_vty_all.  Create a new enum typedef buffer_status_t
	  to be used as the return code for all buffer_flush* functions
	  and buffer_write.
	* buffer.c: The struct buffer and struct buffer_data declarations
	  are now private to this file.  In conjunction with that, remove
	  some unnecessary fields: struct buffer (alloc, unused_head,
	  unused_tail, length), struct buffer_data (prev).
	  (buffer_data_new) Removed: functionality incorporated into buffer_add.
	  (buffer_data_free) Removed: use a macro BUFFER_DATA_FREE instead.
	  (buffer_new) Use calloc instead of malloc + memset(zero). 
	  Supply an appropriate default size if the specified size is 0.
	  (buffer_free) Eliminate code duplication by calling buffer_reset to
	  free the contents of the buffer (and remove unused code related
	  to unused_head).
	  (buffer_empty,buffer_putc,buffer_putstr) Aesthetic change (make more
	  compact).
	  (buffer_reset) Use macro BUFFER_DATA_FREE.  No need to set
	  alloc and length to 0 (these fields have been removed).
	  (buffer_add) Fix scope to be static.  Call XMALLOC directly instead
	  of calling removed buffer_data_new function.  Simplify the logic
	  (since it's now a singly-linked list instead of doubly-linked).
	  (buffer_write) Renamed to buffer_put.  Change to void, since return
	  code of 1 was meaningless.  No need to adjust length field, since
	  it has been removed.
	  (buffer_putw,buffer_flush,buffer_flush_vty_all,buffer_flush_vty)
	  Remove unused functions.
	  (buffer_flush_all) Rewrite using buffer_flush_available to eliminate
	  a possible failure mode if IOV_MAX is less than the number of buffers
	  on the queue.
	  (buffer_flush_window) Incorporate logic from buffer_flush_vty.
	  Log an error message if there is a writev error.
	  (buffer_flush_available) Be more paranoid: check for case where
	  buffer is already empty.  Use new ERRNO_IO_RETRY macro, and use
	  new enum for return codes.  Simplify deletion logic (since it's
	  now a singly-linked list).
	  (buffer_write) New function for use with non-blocking I/O.
	* vty.h: Replace the struct vty sb_buffer field with a fixed-size
	  (5-character) sb_buf field and an sb_len field, since using
	  a struct buffer was inappropriate for this task.  Add some useful
	  comments about telnet window size negotiation.
	* vty.c: Include <arpa/telnet.h> (no longer included by zebra.h).
	  Remove VTY_OBUF_SIZE (instead use buffer_new default size).
	  Make telnet_backward_char and telnet_space_char static const.
	  (vty_out) Replace buffer_write with buffer_put.
	  (vty_log_out) Check for I/O errors.  If fatal, close the vty session.
	  Consolidate 3 separate writes into a single write call.
	  (vty_will_echo,vty_command,vty_next_line,vty_previous_line,
	  vty_end_config,vty_describe_fold,vty_clear_buf,vty_serv_sock_addrinfo,
	  vty_serv_sock_family,vty_serv_un,vty_use_backup_config,exec_timeout,
	  vty_config_write,vty_save_cwd) Fix scope to static.
	  (vty_new) Let buffer_new use its default buffer size.
	  (vty_write) Fix signature: 2nd arg should be const char *.
	  Replaced buffer_write with buffer_put.
	  (vty_telnet_option) Fix minor bug (window height or width greater than
	  255 was broken).  Use sb_buf and sb_len instead of removed sb_buffer
	  (which was being used improperly).
	  (vty_read) On error, use ERRNO_IO_RETRY to decide whether it's fatal.
	  If the error is fatal, call buffer_reset so vty_close does not attempt
	  to flush the data.  Use new sb_buf and sb_len instead of sb_buffer
	  to store the SB negotiation string.
	  (vty_flush) When vty->lines is 0, call buffer_flush_available instead
	  of buffer_flush_window.  Look at the return code from buffer_flush
	  to detect I/O errors (and in that case, log an error message and
	  close the vty).
	  (vty_create) Fix scope to static.  Initialize sb_len to 0 instead
	  of creating sb_buffer.
	  (vty_accept) Set socket nonblocking.
	  (vtysh_accept) Use new set_nonblocking function instead of calling
	  fcntl directly.
	  (vtysh_flush) New function called from vtysh_read (after command
	  execution) and from vtysh_write.  This flushes the buffer
	  and reacts appropriately to the return code (by closing the vty
	  or scheduling further flushes).
	  (vtysh_read) Check whether error is fatal using ERRNO_IO_RETRY.
	  If not, just try again later.  Otherwise, call buffer_reset before
	  calling vty_close (to avoid trying to flush the buffer in vty_close).
	  Fix logic to allow case where a command does not arrive atomically
	  in a single read call by checking for the terminating NUL char.
	  (vtysh_write) Use new vtysh_flush helper function.
	  (vty_close) No need to call buffer_empty, just call buffer_flush_all
	  in any case (it will check whether the buffer is empty).
	  Do not free sb_buffer (since it has been removed).
	  (vty_log_fixed) Use writev instead of write.
	* zebra.h: Do not include <arpa/telnet.h>, since this is used only
	  by lib/vty.c.

2005-02-21 Vincenzo Eramo <eramo at infocom.ing.uniroma1.it>

	* pqueue.[ch]: Introduce "update" function to meet ospf spf needs. It
	  will allow to update node when:
	  i) a node is inserted into the priority queue;
	  ii) a node position is modified in the priority queue;
	* pqueue.h: Export trickle_down() function.

2005-02-19 Paul Jakma <paul.jakma@sun.com>

	* stream.c: (stream_new) fix dumb mistake.

2005-02-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* stream.c: (stream_read_try) Use new ERRNO_IO_RETRY macro.

2005-02-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* network.h: Define a new ERRNO_IO_RETRY macro to test whether an I/O
	  operation should be retried.  This eliminates the need to duplicate
	  the same logic testing for EAGAIN or EINTR in multiple places.

2005-02-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* stream.h: Declare new function stream_read_try suitable for use
	  with non-blocking file descriptors.  Indicate that stream_read
	  and stream_read_unblock are deprecated.
	* stream.c: (stream_read_try) New function for use with non-blocking
	  I/O.
	  (stream_recvmsg) Should return -1 if the stream is too small to
	  contain the data.

2005-02-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* network.c: (set_nonblocking) Should check return code from
	  fcntl(F_GETFL).

2005-02-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	
	* network.h: Declare new function set_nonblocking.  Indicate that
	  readn and writen are deprecated.
	* network.c: (set_nonblocking) New function to make a file descriptor
	  non-blocking, since it seems silly to have fcntl calls sprinkled
	  throughout the code.

2005-02-14 Paul Jakma <paul.jakma@sun.com>

	* stream.h: Unsigned long updated to size_t
	* stream.c: ditto
	* stream.h: Add stream_copy, stream_dup, stream_recvmsg.
	  Add comment describing struct stream abstraction, and various
	  other comments.
	  Deprecate several unsafe/ambigious macros.
	  Add STREAM_WRITEABLE and STREAM_READABLE.
	  Add (stream_getl_from) for symmetry.
	  Update stream_forward_{endp,getp} to use size_t offset.
	  Make stream data a 0 length array, rather than a seperate malloc.
	* stream.c: Add consistency checks. Update to follow stream.h
	  changes.
	  (stream_new) Alloc stream+data in one go.
	  (stream_copy) new function, copy a stream.
	  (stream_dup) new function, dup a stream.
	  (stream_recvmsg) new function, recvmsg data into a stream.
	  (stream_empty) no need to check getp == 0.

2005-02-09 Paul Jakma <paul.jakma@sun.com>

	* stream.h: Remove putp. Update reference to putp with endp.
	  Add stream_forward_endp, which daemons were doing manually.
	  Rename stream_forward to stream_forward_getp.
	  stream.c: Remove/update references to putp.
	  introduce stream_forward_endp.

2005-02-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* zebra.h: Change macro definitions SET_FLAG and UNSET_FLAG
	  to use compound assignment operators (aesthetic change).

2005-02-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.c: (zlog_signal,zlog_backtrace_sigsafe) Eliminate use of fileno()
	  since it is not async-signal-safe.
	  (_zlog_assert_failed) Rewrite crashlog logic more compactly.
	  (zlog_set_file,zlog_reset_file,zlog_rotate) Update logfile_fd
	  for use in signal handler.

2005-02-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.c: (syslog_sigsafe) Reduce scope of syslog_fd: it is accessed
	  inside this function only.
	  (open_crashlog) New function to open /var/tmp/quagga.<daemon>.crashlog
	  with flags O_WRONLY|O_CREAT|O_EXCL to save some crash info.
	  (zlog_signal,_zlog_assert_failed) Increase logging priority from
	  LOG_ERR to LOG_CRIT.  If no file logging is configured, try to use
	  open_crashlog to create a crash logfile.
	  (zlog_backtrace_sigsafe) If a crashlog file descriptor is open,
	  dump a backtrace to that file.

2005-02-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* if.h: Declare if_flag_dump.

2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* daemon.c: (daemon) Replace perror with zlog_err.
	* vty.c: (vty_serv_un) Replace perror with zlog_err.

2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* buffer.h: Fix comment on buffer_getstr to reflect that it now
	  uses XMALLOC.
	* buffer.c: (buffer_getstr) Use XMALLOC(MTYPE_TMP) instead of malloc.
	* filter.c: (access_list_remark,ipv6_access_list_remark) Use
	  argv_concat instead of buffer_getstr.
	* if.c: (interface_desc) Use argv_concat instead of buffer_getstr.
	* plist.c: (ip_prefix_list_description,ipv6_prefix_list_description)
	  Use argv_concat instead of buffer_getstr.

2005-01-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* lib/buffer.h: Document behavior of buffer_getstr function.
	* lib/buffer.c: (buffer_getstr) Fix bug: must handle case where
	  the string extends beyond the head struct buffer_data.

2005-01-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* lib/command.h: Document behavior of argv_concat function.
	* lib/command.c: (argv_concat) Calculate total string length first so
	  we can call malloc just once (instead of realloc'ing to add each
	  string element).
	  (do_echo,config_logmsg) Allow for possible NULL return value from
	  argv_concat.

2005-01-23 Hasso Tepper <hasso at quagga.net>

	* lib/command.[ch]: Make node_parent() function nonstatic. vtyh.c will
	  use it as well.

2005-01-18 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.h: Test for SA_SIGINFO to see whether zlog_signal takes final
	  two args (siginfo and program_counter).
	* log.c: (hex_append) Include this function only if SA_SIGINFO or
	  HAVE_GLIBC_BACKTRACE is defined.
	  (zlog_signal) Final two args (siginfo and program_counter) now
	  depend on whether SA_SIGINFO is defined on this platform.
	* sigevent.c: (program_counter) Do not include this function if
	  SA_SIGINFO is not defined on this platform.
	  (exit_handler,core_handler) Test for SA_SIGINFO to decide whether
	  2nd & 3rd arguments are present and to decide how to invoke
	  zlog_signal.
	  (trap_default_signals) Test for SA_SIGINFO and invoke sigaction
	  appropriately.

2005-01-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.h: Change prototype for zlog_backtrace_sigsafe to take additional
	  program_counter argument.
	* log.c: (zlog_backtrace_sigsafe) Add additional program_counter
	  argument.  If it is non-NULL, use backtrace_symbols_fd to resolve
	  the address.
	  (zlog_signal) Call zlog_backtrace_sigsafe with additional
	  program_counter argument.

2005-01-17 Hasso Tepper <hasso at quagga.net>

	* command.[ch], vty.c: cmd_execute_command() function must not attempt
	  to walk up in the node tree if called from vtysh. Different daemons
	  might have commands with same syntax in different nodes (for example
	  "router-id x.x.x.x" commands in zebra/ospfd/ospf6d daemons).

2005-01-14 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* command.c (print_version): Do not bother even to examine host.name,
	  since it is always NULL when this function is called from main.

2005-01-14  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* command.c (print_version): Don't print host.name if it is NULL.
	Fixes segfault on Solaris reported by Goetz von Escher <goetz@open.ch>
	
2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* sigevent.c: (trap_default_signals) Use the SA_SIGINFO flag to
	  pass additional siginfo_t and ucontext_t arguments to core_handler
	  and exit_handler.
	  (core_handler,exit_handler) Now invoked with 3 arguments (using
	  SA_SIGINFO).  Pass additional info to zlog_signal.
	  (program_counter) New function to find program counter in ucontext_t,
	  needs to be enhanced to support more platforms (currently works only
	  on Linux/x86).
	* log.h: Change the zlog_signal prototype to add new arguments
	  siginfo_t * and program_counter.
	* log.c: (zlog_signal) Add new arguments siginfo and program_counter.
	  Include si_addr and program counter (if non-NULL) in message.
	  And remove #ifdef HAVE_GLIBC_BACKTRACE around hex_append, since
	  that is now used to render the si_addr and PC pointers.

2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* zebra.h: If not C99 and no va_copy macro available, fall back to
	  memcpy (solves a build problem on FreeBSD 4.x).

2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* zebra.h: Define ZCMSG_FIRSTHDR appropriately based on whether
	  config.h indicates HAVE_BROKEN_CMSG_FIRSTHDR (as determined
	  by the configure test program).
	* sockopt.c: (getsockopt_cmsg_data) Use ZCMSG_FIRSTHDR instead
	  of CMSG_FIRSTHDR.

2005-01-02 Hasso Tepper <hasso at quagga.net>

	* command.c: Revert int -> unsigned int fixes in
	cmd_describe_command_real() and cmd_complete_command_real(). index can
	be actually negative and it caused crash with "do<TAB>" in vty.

2004-12-29  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* sockopt.c (getsockopt_ipv4_ifindex): Document calling
	convention.  Beef up comments.  Handle the case where the cmsghdr
	has a zero controllen, or more specifically when the wanted option
	is not present.  This is needed for Solaris 8, and in general for
	any platform for which configure finds a method and it can fail.
	Mark some changes with XXX to be cleaned up post 0.98.	
	
2004-12-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* sockopt.c: (setsockopt_ipv4_ifindex) Improve error message.
	  When neither IP_PKTINFO nor IP_RECVIF is defined, make return value
	  deterministic (-1).

2004-12-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* thread.c: (funcname_thread_add_timer_msec) Reduce overflow risk.

2004-12-21 Paul Jakma <paul.jakma@sun.com>

	* if.h: Add more 'non-generic' IFF_ flags.
	* if.c: IFF_NOXMIT/IFF_VIRTUAL interfaces are 'loopback like'
	* stream.c: Dont allocate streams with 0 sized data buffers

2004-12-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* command.c: (do_echo) Added new "echo" command, useful for
	  watchdog pinging to make sure the daemon is responsive.

2004-12-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	
	* pid_output.c: (pid_output_lock) Eliminate static function, and just
	  use the #ifdef to decide which version of the function to include.
	  This eliminates a compilation problem with gcc4.  And fix the
	  non-fcntl version so that it actually compiles.  Exit with
	  status 1 instead of -1 on error.

2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* sigevent.c: (trap_default_signals) Ignore SIGPIPE instead of exiting.

2004-12-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	
	* log.c: (zlog_signal,_zlog_assert_failed) Change logging level back to
	  LOG_ERR instead of LOG_EMERG.

2004-12-09 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.c: (hex_append) No need to include this function if
	  HAVE_GLIBC_BACKTRACE is not defined.

2004-12-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* prefix.c: (prefix_copy) Error message before abort should
	  have severity LOG_ERR, not LOG_INFO.
	* memory.c: (mtype_log) Log level should be LOG_DEBUG, not LOG_INFO.

2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* {smux.c,zclient.c}: Change level of debug messages to LOG_DEBUG.

2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* command.c: (config_write_host) Note that "log trap" is deprecated
	  when writing out the config.

2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.h: Replace struct zlog flags and maskpri fields with maxlvl
	  array to support individual logging levels for each destination.
	  Remove the 2nd argument to openzlog since the default logging config
	  should be standardized inside the library.  Replaced the
	  zlog_set_flag and zlog_reset_flag functions with zlog_set_level.
	  And zlog_set_file now requires an additional log_level argument.
	  Declare zlog_proto_names for use inside command.c in the
	  "show logging" command.  Added defines useful for command
	  construction.
	* log.c: (vzlog) Decide where to send the message based on the
	  individual logging levels configured for each destination.
	  Remove support for ZLOG_STDERR since it was never actually used.
	  Support record-priority for terminal monitors.
	  (zlog_signal,zlog_backtrace_sigsafe) Support destination-specific
	  logging levels.  Remove stderr support (was never used).  Added
	  support for terminal monitor logging.
	  (_zlog_assert_failed) Increase message severity to LOG_EMERG.
	  (openzlog) Remove 2nd argument since default config should be
	  standardized in library.  By default, terminal monitoring
	  is set to debug, and all other logging is disabled.
	  (zlog_set_flag,zlog_reset_flag) Removed.
	  (zlog_set_level) New function to replace zlog_set_flag and
	  zlog_reset_flag.  Supports destination-specific logging levels.
	  (zlog_set_file,zlog_reset_file) Support file-specific logging level.
	  (zlog_rotate) Log an error message if fopen fails, and support
	  new file-specific logging level.
	* command.h: Change DEFUN_CMD_FUNC_DECL and DEFUN_CMD_FUNC_TEXT so that
	  command functions will be static instead of global.  Remove
	  declarations for config_exit and config_help.  Define new macros
	  DEFUNSH_ATTR, DEFUNSH_HIDDEN, and DEFUNSH_DEPRECATED so we can
	  have deprecated commands in vtysh.  Similarly, for completeness,
	  define macros ALIAS_SH, ALIAS_SH_HIDDEN, and ALIAS_SH_DEPRECATED.
	  Also, fix bug in ALIAS_ATTR macro (didn't matter because it
	  was never used).
	* command.c: Make many functions static instead of global.
	  (facility_name,facility_match,level_match) New functions
	  to support enhanced destination-specific logging levels.
	  (config_write_host) Support new destination-specific logging levels.
	  (config_logmsg) Added new "logmsg" command to help test logging
	  system.
	  (show_logging) Added "show logging" command to show the current
	  configuration of the logging system.
	  (config_log_stdout_level) Support explicit stdout logging level.
	  (no_config_log_stdout) Now takes optional LEVEL arg.
	  (config_log_monitor,config_log_monitor_level,no_config_log_monitor)
	  New commands creating new "log monitor" commands to set terminal
	  monitoring log level.
	  (config_log_file_level) Support explicit file logging level.
	  (config_log_syslog_level) Support explicit syslog logging level.
	  (config_log_facility,no_config_log_facility) Implement new
	  "log facility" command.
	  (cmd_init) Add hooks for new commands: "show logging", "logmsg",
	  "log stdout <level>", "log monitor", "log monitor <level>",
	  "no log monitor", "log file <filename> <level>",
	  "no log file <filename> <level>", "log syslog <level>",
	  "log facility", and "no log facility".
	* vty.h: Added a "level" argument to vty_log so it can support
	  "log record-priority".  Declare new function vty_log_fixed for
	  use in signal handlers.
	* vty.c: (vty_log,vty_log_out) Added a "level" argument to support
	  "log record-priority" for vty terminal monitors.
	  (vty_down_level) Use config_exit_cmd.func instead of calling
	  config_exit directly (since command functions will now be static
	  instead of global).
	  (vty_log_fixed) New function to send terminal monitor messages
	  from inside a signal handler.

2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.h: Document appropriate use of syslog logging priorities
	  inside quagga.

2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* command.h: Remove fields log_stdout and log_syslog from struct host,
	  since they are just trying to duplicate information in the
	  zlog_default structure.  Note that this fixes a bug since those
	  fields were not registering any logging that was established
	  in the initial call to openzlog (this affects only the zebra and
	  ospf6d daemons).  It is probably a bug to turn on any logging by
	  default in the call to openzlog.
	* command.c: (config_write_host) Get logging info from zlog_default
	  instead of now-removed fields host.log_stdout and host.log_syslog.
	  (config_log_stdout,no_config_log_stdout) Do not set now-removed field
	  host.log_stdout, since this info is recorded in zlog_default.
	  (config_log_file) Use XSTRDUP (instead of strdup) to set host.logfile.
	  (config_log_syslog,config_log_syslog_facility,no_config_log_syslog)
	  Do not set now-removed field host.log_syslog, since this info is
	  recorded in zlog_default.

2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* version.h.in: Remove declaration for pid_output_lock, this function
	  is now static, not global.
	* pid_output.c: (pid_output_lock) This function should be static, not
	  global.  And remove "old umask" error message, since it was really
	  an unimportant debug message, not an error.
	  (pid_output) Need to declare static function pid_output_lock.

2004-11-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.h: Remove several unused fields from struct zlog.  Add comments
	  for other fields, and add one new field syslog_options that is
	  used in the new syslog_sigsafe implementation.
	* log.c: (syslog_sigsafe) New function to send syslog messages in
	  an async-signal safe way that can be used inside a signal handler.
	  (syslog_connect) New function to connect to syslog daemon inside a
	  signal handler.  This function supports only systems where /dev/log
	  is a unix datagram socket (e.g. not Solaris).
	  (zlog_signal) Call syslog_sigsafe if syslog logging is enabled.
	  (zlog_backtrace_sigsafe) Call syslog_sigsafe if syslog logging is
	  enabled.
	  (openzlog) Save syslog_options for use in syslog_sigsafe.
	  (num_append) Fix bug: handle 0 properly.
	  (hex_append) New function to print a u_long in hex format.

2004-11-28 Hasso Tepper <hasso at quagga.net>

	* command.h: DEFUN_DEPRECATED passes attribute to DEFUN as well.

2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.c, log.h, memory.c: Change function name from zlog_backtrace_safe
	  to the more self-explanatory zlog_backtrace_sigsafe.

2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* debug.[ch]: Remove unused files.
	* Makefile.am: Remove references to debug.c and debug.h

2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.c: (zlog_backtrace) New function to log a backtrace.
	  (zlog_backtrace_safe) Log a backtrace in an async-signal-safe way.
	  Unfortunately, this function does not support syslog logging yet.
	  (zlog_signal) Move backtrace code into separate function
	  zlog_backtrace_safe.
	  (_zlog_assert_failed) Call zlog_backtrace before aborting.
	* log.h: Declare new functions zlog_backtrace and zlog_backtrace_safe.
	* memory.c: (zerror) Call zlog_backtrace before aborting.

2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* Makefile.am: Need to add zassert.h to pkginclude_HEADERS.

2004-11-25 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* zebra.h: If not C99 and there's no va_copy macro and there is
	  a __va_copy macro, define va_copy as __va_copy.

2004-11-25 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* pid_output.c: (pid_output_lock) Fix 2 bugs: when locking, should
	  set l_whence to SEEK_SET, not SEEK_END.  And after writing new
	  pid to file, must ftruncate to eliminate any extraneous bytes left
	  over from the last time a pid was written.

2004-11-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* zassert.h: New header file to declare a quagga-specific assert macro.
	* log.c: (_zlog_assert_failed) New function called when assert fails
	  to log the error and abort.
	* zebra.h: Include "zassert.h" instead of <assert.h>.
	* regex.c: Include "zassert.h" instead of <assert.h>.

2004-11-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* sigevent.c: (signal_init) Set up some default signal handlers
	  so that processes will issue an error message before terminating
	  or dumping core.
	  (trap_default_signals) New function to set up signal handlers
	  for various signals that may kill the process.
	  (exit_handler) Call zlog_signal, then _exit.
	  (core_handler) Call zlog_signal, then abort.
	* log.h: Declare new function zlog_signal.
	* log.c: (zlog_signal) New function to log information about
	  a received signal before the process dies.  Try to log a 
	  backtrace also.
	  (quagga_signal_handler,signal_set) Should be static.

2004-11-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.c: (vzlog) Take a single va_list argument and use va_copy
	  as necessary for multiple traversals.
	  (zlog) Pass only one va_list to vzlog.
	  (zlog_*,plog_*) Use a macro for boilerplate code; pass only one
	  va_list to vzlog.
	  (zlog_set_file) Remove unused 2nd argument (flags).
	  (zlog_save_cwd,zlog_get_cwd,zlog_free_cwd) Remove unused functions.
	* log.h: Remove ZLOG_*_INDEX defines (no longer used).
	  Remove unused 2nd argument from zlog_set_file prototype.
	  Fix prototype for zlog_rotate.
	* command.c: (config_log_file) Remove unused 2nd arg to zlog_set_file.
	* vty.c: (vty_out) Fix stdarg usage to perform multiple traversals
	  properly.
	  (vty_log) Must use va_copy for multiple traversals of va_list arg.

2004-11-19 David Young <dyoung@pobox.com>

	* log.c: (safe_strerror) New function: safe wrapper for strerror.

2004-11-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* sockopt.c: (setsockopt_so_recvbuf) Stop error message from being
	  printed every time.

2004-11-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* memory.h: Fix prototype for memory_init().
	* memory.c: Declare many functions and data structures static instead
	  of global.  Fix prototype for memory_init().

2004-11-15  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* sockopt.h: Avoid CMSG_ALIGN, and declare that sizes are without
	alignment (users should use CMSG_SPACE).

	* zebra.h: Rationalize CMSG_SPACE compatibility defines.  Warn if
	asumming 4-byte alignment, since this isn't safe.

2004-11-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* memory.c: (zerror) Use zlog_err instead of fprintf to stderr.
	  Instead of exiting, log currenty memory usage and then abort.
	  (log_memstats) New function to log memory statistics, called by
	  zerror.
	  (show_memory_all) Loop over new mlists array instead of calling
	  show_memory_vty separately for each memory_list.

2004-11-08 Paul Jakma <paul@dishone.st>

	* buffer.c: Add missing include of log.h.
	  (buffer_flush_available) written is compared against
	  mostly against unsigned types, only for the writev do we need
          signed compare, so declare it as size_t and cast it to ssize_t
          just for the error compare when we've called writev.
	* buffer.h: Add comment that buffer data sizes really should be 
          size_t.

2004-11-07 Paul Jakma <paul@dishone.st>

	* version.h.in: add autoconf configure_input output var

2004-11-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* vty.h: Remove fields in struct vty that were related to VTY_CONTINUE
	  capabilities (that were used only in bgpd/bgp_route.c and are now
	  removed).  Also remove some other fields that were not being
	  used at all.
	* vty.c: (vty_execute) Do not test for obsolete status values VTY_START
	  and VTY_CONTINUE.
	  (vty_read) Remove calls to vty->output_func since that was part
	  of the VTY_CONTINUE infrastructure that has been removed.
	  (vty_flush) Remove code to support VTY_START and VTY_CONTINUE.
	  (vty_close) Remove code to cancel vty->t_output thread, since that
	  thread was never actually used.

2004-11-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* vty.c: Vtysh connections to daemons should use buffering.
	  (vty_out) Remove exception for vty_shell_serv, just use buffer_write.
	  (vty_new) Increase output buffer size to 4096 rounded up to a
	  multiple of pagesize.
	  (vtysh_read) After command has been executed and all output buffered,
	  call buffer_flush_available and schedule further writes if the
	  buffers are not yet empty.
	  (vtysh_write) New function to flush output to vtysh when the socket
	  is writeable.
	  (vty_event) Added new VTYSH_WRITE event for flushing buffers to vtysh
	  clients.  Also, should save read thread in vty->t_read so the
	  thread can be cancelled in vty_close.
	* buffer.h: In struct buffer_data, remove unused "parent" field.
	  Convert "unsigned char *data" to "unsigned char data[0]" to save
	  a malloc.  Declare new function buffer_flush_available that works
	  with non-blocking sockets.
	* buffer.c: (buffer_data_new) Use a single malloc now that data is
	  a variable-size array at end of structure.
	  (buffer_data_free) Just a single free now that data is part of the
	  structure.
	  (buffer_write) Simplify the logic to make behavior more transparent.
	  (buffer_flush) Decrease b->length as data is written out.
	  (buffer_flush_vty_all) Decrease b->length as buffers are freed.
	  (buffer_flush_vty) Decrease b->length as data is written out.
	  (buffer_flush_available) New function to flush non-blocking sockets.
	  
2004-11-01 Paul Jakma <paul@dishone.st>

	* sockopt.c: (setsockopt_pktinfo) remove, its unused.

2004-10-31 Paul Jakma <paul@dishone.st>

	* vty.c: As per Andrew's suggestions..
	  (vty_serv_un) remove flags.
	  (vtysh_accept) close socket if we cant set NONBLOCK. Add flags.
	* keychain.c: Convert some more strtoul users to VTY_GET_INTEGER.
	* memory.h: Add MTYPE_THREAD_FUNCNAME and MTYPE_THREAD_STATS
	* thread.c: Update stats and funcname alloc/free to use previous
	  specific memory type defines. Use XCALLOC and sizeof the type,
          not the pointer.
	* smux.c: fix int to size_t compile warnings

2004-10-29 Paul Jakma <paul@dishone.st>

	* vty.c: Move setting of sock to O_NONBLOCK from vty_serv_un
	  to vtysh_accept, where sock is the actual fd we wanted to set to
          O_NONBLOCK, ie the /connected/ vtysh unix socket.

2004-10-23 Hasso Tepper <hasso at quagga.net>

	* zclient.c: Unbreak reading interface update message. Might fix
	blocker bugzilla #109.

2004-10-22 Paul Jakma <paul@dishone.st>

	* sockopt.c: (getsockopt_ipv4_ifindex) no ifindex should be 0, not
          -1. 
          (setsockopt_pktinfo) unexported
	* sockopt.h: Cleanup SOCKOPT_CMSG defines a bit. Add a throwaway
          define for SOPT_SIZE_CMSG_IFINDEX_IPV4 for systems which have
          neither IP_RECVIF nor IP_PKTINFO (eg openbsd), thanks to Rivo
          Nurges for highlighting problem and fix.
          Fix elif that should be an else.
	* command.h: Cleanup the defines a bit, add helper defines and
	  collapse all defines to use those. Add an attribute field to
	  cmd_element to support, eg hidden or deprecated commands, add
          defun defines for such. All that's left to do is add logic
          to command.c to check these attributes... ;)
	* zebra.h: reserve ZEBRA_ROUTE_HSLS

2004-10-19 Hasso Tepper <hasso at quagga.net>

	* version.h.in: Define copyright string QUAGGA_COPYRIGHT.
	* print_version.c: Remove. print_version () function moved to
	  command.[c|h].
	* command.c: Use QUAGGA_COPYRIGHT.
	* Makefile.am: Remove useless version.c and print_version.c files.

2004-10-19 Andrew J. Schorr <aschorr@telemetry-investments.com>

	* zclient.c: (zebra_interface_address_read) If the destination address
	  is encoded as all zeroes, load it as a NULL pointer.
	* if.h: Add comment describing struct connected destination field
	  and indicating that it may be NULL.  Define macros
	  CONNECTED_DEST_HOST and CONNECTED_POINTOPOINT_HOST to help
	  with PtP logic (distinguish between host and subnet addressing).
	* if.c: (if_lookup_address) Fix PtP logic to handle subnet addressing
	  properly,
	  (connected_lookup_address) ditto.
	  (connected_add_by_prefix) Handle case where destination is NULL,
	* prefix.[c|h]: New functions ipv4_network_addr and
	  ipv4_broadcast_addr.

2004-10-13 Hasso Tepper <hasso at quagga.net>

	* command.c: Make CMD_ERR_NOTHING_TODO nonfatal if reading
	  configuration from file. Fixes critical bugzilla #113.
	* smux.c, smux.h: Remove all defaults to initialize smux connection to
	  snmpd by default even if not configured to do so. "smux peer OID
	  <password>" initializes now connection and "no smux peer" terminates
	  it.

2004-10-13 Paul Jakma <paul@dishone.st>

	* (global) more const'ification.
	* sockunion.c: (sockunion_su2str) buffer should be sized
          SU_ADDRSTRLEN.
          (sockunion_log) do not return stack variables, strdup buf before
          return.
        * vty.h: Fix up the VTY_GET_INTEGER macros. Testing caller supplied
          values against ULONG_MAX is daft, when caller probably has passed
          a type that can not hold ULONG_MAX. use a temporary long instead.
          Add VTY_GET_LONG, make VTY_GET_INTEGER_RANGE use it, make
	  VTY_GET_INTEGER a define for VTY_GET_INTEGER_RANGE.

2004-10-11 Hasso Tepper <hasso at quagga.net>

	* command.h: Sync DEFUNSH with other macros.
	* sockunion.c, sockunion.h: More const strings.

2004-10-11 Paul Jakma <paul@dishone.st>

	* thread.c: (funcname_thread_add_timer) 
	  (funcname_thread_add_timer_msec) Fix mistakes from last change.
	  Pointed out by Liu Xin in [quagga-dev 1609].
	* if.h: mtu's should be unsigned.
	* routemap.{c,h}: const char updates
	* smux.{c,h}: ditto

2004-10-10 Paul Jakma <paul@dishone.st>

	* version.h.in: (pid_output*) add const qualifier.
	* command.h: Change DEFUN func to take const char *[] rather
          than char **, to begin process of fixing compile warnings in lib/.
          Nearly all other changes in this commit follow from this change.
        * buffer.{c,h}: (buffer_write) pointer-arithmetic is gccism, take
          const void * and cast an automatic const char *p to it.
          (buffer_putstr) add const
        * command.c: (zencrypt) const qualifier
          (cmd_execute_command_real) ditto
          (cmd_execute_command_strict) ditto
          (config_log_file) ditto. 
          Fix leak of getcwd() returned string.
        * memory.{c,h}: Add MTYPE_DISTRIBUTE_IFNAME for struct dist ifname.
        * distribute.{c,h}: Update with const qualifier.
          (distribute_free) use MTYPE_DISTRIBUTE_IFNAME
          (distribute_lookup) Cast to char *, note that it's ok.
          (distribute_hash_alloc) use MTYPE_DISTRIBUTE_IFNAME.
          (distribute_get)  Cast to char *, note that it's ok.
        * filter.c: Update with const qualifier.
        * if.{c,h}: ditto.
        * if_rmap.{c,h}: ditto.
          (if_rmap_lookup) Cast to char *, note that it's ok.
          (if_rmap_get) ditto.
        * log.{c,h}: Update with const qualifier.
        * plist.{c,h}: ditto.
        * routemap.{c,h}: ditto.
        * smux.{c,h}: ditto. Fix some signed/unsigned comparisons.
        * sockopt.c: (getsockopt_cmsg_data) add return for error case.
        * vty.c: Update with const qualifier.
          
2004-10-08 Hasso Tepper <hasso at quagga.net>

	* routemap.c, routemap.h: Make some string arguments const.

2004-10-05 Paul Jakma <paul@dishone.st>

	* version.h.in: print_version declaration is here, not in automake
	  generated version.h.

2004-10-08 Hasso Tepper <hasso at quagga.net>

	* command.c, command.h: Make argument of cmd_make_strvec function
	  const.
	* command.c: Make hostname commands usable in vtysh again.

2004-10-07 Hasso Tepper <hasso at quagga.net>

	* command.c, pid_output.c, print_version.c, vty.c, vty.h: Make more
	  strings const.

2004-10-05 Hasso Tepper <hasso at quagga.net>

	* *.[c|h]: Make many strings cons and a lot of int -> unsigned int
	  changes to fix warnings.

2004-10-05 Paul Jakma <paul@dishone.st>

	* sockopt.{c,h}: add sockopt_iphdrincl_swab_{htosys,systoh},
          functions to change byte order between system IP_HDRINCL order
          and host order.
	* thread.c: (funcname_thread_add_timer_timeval) new function, add
          timer at specified timeval.
	  (funcname_thread_add_timer) use funcname_thread_add_timer_timeval.
	  (funcname_thread_add_timer_msec) ditto

2004-10-04 Hasso Tepper <hasso at quagga.net>

	* memory.c, memory.h: Make char * argument of strdup functions const.
	* prefix.c, prefix.h: Make many arguments const. Reorder stuff in
	  header.
	* log.h: Make log message const in struct message.
	* log.c: Fix some indenting.
	* network.c, network.h: Make second argument of writen() const.

2004-10-03  Hasso Tepper  <hasso at quagga.net>

	* command.h: Introduce SERVICE_NODE for "service <...>" commands.
	* command.c: Don't initialize commands that don't make sense if vtysh
	  is used.
	* vty.c: Make VTY_NODE appear in vtysh.

2004-10-03 James R. Leu <jleu at mindspring.com>

	* zclient.c, zclient.h: zclient functions for router id handling.
	* zebra.h: New message types for router id handling.

2004-09-27 Paul Jakma <paul@dishone.st>

	* zebra.h: Add WANT_OSPF_WRITE_FRAGMENT for ospfd
	  to try to fragment oversized packets. Enabled only for Linux.
	  Add HAVE_IP_HDRINCL_BSD_ORDER to define struct ip byte order,
	  to consolidate various ad-hoc platform defines for same thing.

2004-09-26 Hasso Tepper <hasso at quagga.net>

	* vty.c, sockopt.c: Fix compiler warnings.

2004-09-23 Hasso Tepper <hasso at quagga.net>

	* linklist.h: Remove list and listnode typedefs.
	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.

2004-09-17 Paul Jakma <paul@dishone.st>

	* sockopt.c: Add missing bracket

2004-09-17 Paul Jakma <paul@dishone.st>

	* sockopt.{c,h}: Add setsockopt_so_recvbuf, for ripd and ripngd.

2004-09-13 Paul Jakma <paul@dishone.st>

	* command.c: Update the copyright string in the default motd.

2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* hash.c (hash_iterate): Save next pointer before calling
	procedure, so that iteration works even if the called procedure
	deletes the hash backet.

	* linklist.h (listtail): new macro, not yet used.

2004-08-27 Hasso Tepper <hasso at quagga.net>

	* command.c: Install "terminal length" commands only if vty is used.
	  Vtysh will handle it itself.

2004-08-26  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* sockopt.h: Define method-independent macro for callers of
	get_ifindex to use for cmsg length.

2004-08-19 Paul Jakma <paul@dishone.st>

	* zebra.h: add MAX and MIN defines (eg for ospf6d)

2004-08-19 Paul Jakma <paul@dishone.st>

	* sockopt.c: include sockopt.h
	  rename some of the _pktinfo_ functions to _ifindex, where that is
	  their purpose.
          (getsockopt_ipv6_pktinfo_ifindex) renamed to
	  getsockopt_ipv6_ifindex.
	  (setsockopt_ipv4_pktinfo) renamed to setsockopt_ipv4_ifindex
	  (setsockopt_pktinfo) update with previous and add comment re
	  AF_INET portability.
	  (setsockopt_ifindex) generic ifindex function ala
	  setsockopt_pktinfo.
	  (getsockopt_ipv4_pktinfo_ifindex) renamed to
	  getsockopt_ipv4_ifindex.
	  (getsockopt_ipv4_ifindex) rejiggling to reduce repeated
          ifdef/elses. pktinfo case forgot to set ifindex.
          (getsockopt_pktinfo_ifindex) renamed to 
          getsockopt_ifindex. update some calls to renamed functions.
        * sockopt.h: Update renamed exported functions
          Rename the CMSG_SIZE macros to IFINDEX.
          Guard IPv4 PKTINFO in a conditional define.

2004-08-18 Paul Jakma <paul@dishone.st>

	* vty.c: (vty_serv_un) set unix vty socket to nonblocking
	  to prevent inadvertent blocking of daemons by use of
	  vtysh. TODO: disentangle manual paging from the buffer_write
	  path so that unix vty can use this path too and be reliable.
	  
2004-07-23  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* sockopt.c (getsockopt_ipv4_pktinfo_ifindex): Make this compile
	on NetBSD, and add comments to make it less confusing.  Change the
	sense of the SUNOS_5 test to make parallel structure between the
	variables and the code.

2004-07-23 Paul Jakma <paul@dishone.st>

	* sockopt.h: Add SOPT_SIZE_CMSG_PKTINFO{_IPV{4,6}} define, for
	  sizeof pktinfo as appropriate, to be used when allocating msg
	  buffers. export setsockopt_pktinfo() and
	  getsockopt_pktinfo_ifindex()
	* sockopt.c: (setsockopt_pktinfo_ifindex) new function to portably
	  set received ifindex sock option.
	  (getsockopt_pktinfo_ifindex) portably retrieve ifindex.
	  (getsockopt_cmsg_data) retrieve indicated control info from 
	  message header.
	  (getsockopt_ipv6_pktinfo_ifindex) ipv6 version of above.
	  (setsockopt_ipv4_pktinfo) v4 version
	  (setsockopt_pktinfo) the exported version
	  (getsockopt_ipv4_pktinfo_ifindex) v4 specific version
	  (getsockopt_pktinfo_ifindex) the exported version

2004-07-14 Paul Jakma <paul@dishone.st>

	* sigevent.c: (quagga_signal_handler) add a global caught flag, set
	  the flags to a constant rather increment to be kinder. 
	  (quagga_sigevent_process) new function, to do core of what
	  quagga_signal_timer did. dont block signals at all as sig->caught
	  is volatile sig_atomic_t and should be safe to access from signal
	  and normal contexts. The signal blocking is unneeded paranoia, but
	  is left intact under an ifdef, should some platform require it.
	  Check global caught flag before iterating through array. 
	  (quagga_signal_timer) nearly everything moved to
	  quagga_sigevent_process. Left in under ifdef, in case some
	  platform could use a regular timer check for signals.
	* sigevent.h: quagga_sigevent_process declaration.
	* thread.c: (thread_fetch) check for signals at beginning of 
	  scheduler loop, check for signals if select returns EINTR.
	 
2004-07-13  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* sigevent.c: Don't block SIGTRAP and SIGKILL.  Blocking SIGTRAP
	confuses gdb, at least on NetBSD 2.0_BETA, where the block
	succeeds.

2004-07-09 Paul Jakma <paul@dishone.st>

	* Merge Kunihiro's 'show route-map' change and add 
	  compatibility aliases for route-map continue
	* jhash.{c,h}: New files. Bob Jenkins' public domain hashing 
	  function, as implemented in linux kernel by David Miller.

2004-07-09 Juris Kalnins <juris@mt.lv>

	* if.c: (if_cmp_func) fix for interface names where name is same,
	  but one has no number, eg "devtyp" and "devtyp0".
	  
2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* Makefile.am: Make libzebra shared.

2004-06-21 Paul Jakma <paul@dishone.st>

	* ChangeLog: fix my last update config.h -> zebra.h ;)
	* zebra.h: Fix gcc check.
	
2004-06-11 Sowmini Varadhan <sowmini.varadhan@sun.com>

	* filter.c: (access_list_remark_cmd) buffer_putstr doesnt need cast
	  to u_char. (ipv6_access_list_remark_cmd) ditto.
	  if.c: ditto
	* network.c: (readn/writen) pointer arg should be type u_char.
	* plist.c: needs to include stream.h, not declare stream functions
	  internally.
	  (various) Add static qualifier to internal functions.
	  (prefix_list_type_str) extraneous breaks in switch statement.
	  (ip_prefix_list_description_cmd) buffer_putstr doesnt need cast
	* stream.h: depends on plist.h and export stream_put_prefix
	* vty.c: (vty_<telnet option build functions>) should use 
	  unsigned char, telnet options are 0 -> 255.
	* zclient.c: various u_char<->char type cleanups.
	* zebra.h: Having to define CMSG_* can apply to more than just
	  BSDI_NRL. 
	  
2004-06-09 Paul Jakma <paul@dishone.st>

	* zebra.h: __attribute__ is a gcc'ism
	
2004-06-04 Paul Jakma <paul@dishone.st>

        * type mismatch fixes
        
2004-05-18 Hasso Tepper <hasso@estpak.ee>
	
	* pqueue.[c|h]: Added as part of ospf6d merge from Zebra repository.

2004-05-08 Paul Jakma <paul@dishone.st>

	* zclient.c (zapi_ipv4_route) Follow Sowmini's lead and describe
	  message format.

2004-05-08 Sowmini Varadhan <sowmini.varadhan@sun.com>

	* zclient.c: (zapi_ipv4_add) collapsed into zapi_ipv4_route
	  (zapi_ipv4_delete) ditto.
	  (zapi_ipv4_route) add/delete a route by way of cmd arg.
	  (zapi_ipv6_add) collapsed into zapi_ipv6_route.
	  (zapi_ipv6_delete) ditto.
	  (zapi_ipv6_route) add/delete a route by way of cmd arg.
	  (zebra_interface_address_delete_read) collapsed into 
	  zebra_interface_address_read.
	  (zebra_interface_address_delete_read) ditto.
	  (zebra_interface_address_read) read address add/delete messages
	  by way of type argument. Describe command message format.
	  (zebra_interface_add_read) Unconditionally read new ifmtu6 field.
	  Describe command message format.
	  (zebra_interface_state_read) Unconditionally read new ifmtu6 field.
	  (zclient_redistribute_set) Collapsed into zclient_redistribute
	  (zclient_redistribute_unset) ditto
	  (zclient_redistribute) set/unset redistribution.
	  (zclient_redistribute_default_set) Collapsed into
	  zclient_redistribute_default.
	  (zclient_redistribute_default_unset) ditto.
	  (zclient_redistribute_default) Redistribute default set/unset.
	* zclient.h: delete zapi_ipv{4,6}_add, zapi_ipv{4,6}_delete. Add
	  zapi_ipv{4,6}_route. delete zclient_redistribute_set/unset. Add
	  zclient_redistribute. Ditto for
          zclient_redistribute_default_{set/unset}.
          
2004-05-08 Sowmini Varadhan <sowmini.varadhan@sun.com>

	* if.h: Add mtu6 field to struct interface, IPv6 MTU may differ
	  from IPv4, and Solaris treats the MTU's differently.
	  Add connected_add_by_prefix, for use by later patch.
	* if.c: (connected_add_by_prefix) Add prefix to connected list.
	  (if_flag_dump) Solaris: Dump IFF_IPv4/6 flag
	  (if_dump) Dump mtu6 flag, for HAVE_IPV6.
	* command.c: (sockunion_getsockname) use socklen_t for len.
	  (sockunion_getpeername) ditto.
	  	  
2004-04-21 Boris Kovalenko <boris@tagnet.ru>

	* daemon.c: (daemon) fix check for error return from setsid
	
2004-01-19 Paul Jakma <paul@dishone.st>

	* sigevent.{c,h}: New files, implement event handled signals.
	  see signal_init() in sigevent.h.
	  
2003-12-23  Vincent Jardin  <jardin@6wind.com>

	* {command.c, memory.c, vty.c, zebra.h}: Add isisd support

2003-12-22  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* vty.c (vty_use_backup_config): Don't free filenames before using
	them for unlink.

2003-08-20 Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* command.c: Fix <cr> display problem for command line
	  description

2003-05-24 Anil Madhavapeddy

	* (sockunion.c): Incorrect bounds specified in sockunion_log()

2003-05-08 Sergiy Vyshnevetskiy <serg @ vostok.net>

	* vty.c: -A option

2003-04-19 Hasso Tepper <hasso@estpak.ee>

	* rip_routemap.c: sync daemon's route-map commands to have same
	syntax

2002-09-28  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* vty.c (vty_flush): One line more on vty.

2002-09-27  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* vector.c (vector_lookup): Add new function.

2002-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* thread.c (timeval_adjust): Fix unconditional crush due to
	FreeBSD's select() system call timeval value check.

2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.93 released.

2002-06-21  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* if.c (ifc_pointopoint): Add ifc_pointopoint() accoding to Frank
	van Maarseveen's suggestion.

2002-06-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c: Change bcopy() to memcpy().

2001-12-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (config_password): Fix host.password clear bug.
	Reported by Wang Jian <lark@linux.net.cn>.

2001-08-29  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* thread.c (thread_should_yield): New function to check thread
	should yeild it's execution to other thread.  Suggested by: Rick
	Payne <rickp@ayrnetworks.com>

2001-08-20  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* thread.c (thread_timer_cmp): Rewrite function.

	* hash.c: Add hash_get().  Change hash_pull() to hash_release().

2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92a released.

2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92 released.

2001-08-12  Akihiro Mizutani <mizutani@dml.com>

	* prefix.c (netmask_str2prefix_str): Convert "1.1.0.0 255.255.0.0"
	string to "1.1.0.0/16".

2001-08-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* filter.c (access_list_lookup): access_list_lookup's first
	argument is changed from address family to AFI.

	* plist.c: (prefix_list_lookup): Likewise.

2001-07-27  Akihiro Mizutani <mizutani@dml.com>

	* plist.c: ge and le display order is changed.  Old compatible
	rule (len <= ge-value <= le-value) is removed.

2001-07-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* prefix.h: Temporary fix for alignment of prefix problem.

2001-06-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* prefix.h (struct prefix): Remove safi and padding field.
	(struct prefix_ipv4): Likewise.
	(struct prefix_ipv6): Likewise.
	(struct prefix_ls): Likewise.
	(struct prefix_rd): Likewise.

	* command.h (enum node_type): Preparation for BGP new config.

	* vty.c (vty_end_config): Likewise.

2001-06-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* routemap.c (route_map_rule_delete): Call func_free when
	route-map rule is deleted.

2001-06-14  "Akihiro Mizutani" <mizutani@dml.com>

	* routemap.c (route_map_index_lookup): Prevent to use deny and
	permit for same route-map sequence.

2001-04-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_read_config): Fix warning.

2001-03-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (IPV6_PREFIX_STR): Add '.' and '%' for IPv6 address
	strings.

2001-03-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h (_XPG4_2): Define _XPG4_2 and __EXTENSIONS__ for
	CMSG_FIRSTHDR.

2001-03-07  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* zebra.h (struct in_pktinfo): structure in_pktinfo declaration.

2001-02-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.c (memory_list_lib): Add MTYPE_NEXTHOP for "show memory
	lib" member.

2001-02-13  Matthew Grant <grantma@anathoth.gen.nz>

	* vty.c (vty_read_config): Revert check of integrate_default when
	VTYSH is defined.

2001-02-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_read_config): Do not check integrate_default.  That
	should be used only by vtysh.

2001-02-08  Matthew Grant <grantma@anathoth.gen.nz>

	* vty.c (vty_serv_un): Set umask 0077.
	(vty_read_config): Stat for vtysh Zebra.conf, if found startup and
	wait for boot configuration.

	* if.c (if_lookup_address): Make it smart implementation.

	* sockopt.c (setsockopt_multicast_ipv4): Set up a multicast socket
	options for IPv4 This is here so that people only have to do their
	OS multicast mess in one place rather than all through zebra,
	ospfd, and ripd .

2001-02-04  Akihiro Mizutani <mizutani@dml.com>

	* plist.c (vty_prefix_list_install): Even when argument is
	invalid, new memory is allocated.  Now memory allocation is done
	after argument check.

2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.91 is released.

2001-01-31  Akihiro Mizutani <mizutani@dml.com>

	* vty.c (vty_login): Add vty login command.

2001-01-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_reset): Close accept socket.

2001-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): MTYPE_ATTR_TRANSIT is added for unknown transit
	attribute.

2001-01-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zclient.c (zebra_interface_address_add_read): Fetch interface
	address flag.
	(zebra_interface_address_delete_read): Likewise.

2001-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* table.c (route_node_match_ipv4): Utility function for IPv4
	address lookup.
	(route_node_match_ipv6): Utility function for IPv4 address lookup.

2001-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.c: Delete RIP_API part until new implementation comes out.

2001-01-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* hash.h (struct Hash): Rename alloc to count.  Change type to
	unsigned long.

	* stream.c (stream_getc_from): New function.
	(stream_getw_from): Likewise.

	* zebra.h (ZEBRA_FLAG_STATIC): Add new flag for persistent route.

2001-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* flap.c: File is removed.

	* flap.c: Likewise.

	* roken.h: Likewise.

	* buffer.c (buffer_new): Remove type option to buffer_new().

2001-01-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zclient.c (zapi_ipv4_delete): Remove OLD_RIB part.

2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.90 is released.

	* command.c: Update Copyright year.

2001-01-09  Matthew Grant <grantma@anathoth.gen.nz>

	* if.c (if_create): Register connected_free() function for
	deletion.
	(if_delete): Free connected information when the interface is
	deleted.
	(if_lookup_by_index): Fix argument type from int to unsigned int.
	(connected_add): Keep list in order if old info found, essential
	for repeatable operation in some daemons.

2001-01-09  endo@suri.co.jp (Masahiko Endo)

	* vty.c (vty_flush): When vty->statis is VTY_CLOSE do not add vty
	read thread.

2001-01-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* filter.c (access_list_delete): Access-list name is not freed.

	* plist.c (prefix_list_delete): Prefix-list name is not freed.

2000-12-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zclient.c (zclient_start): Change to use UNIX domain
	socket for zebra communication.

	* vector.c (vector_init): vector_alloc and vector_data_alloc is
	removed.  All memory allocation count should be maintained by
	XMALLOC and XFREE macros.

2000-12-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h (ZEBRA_NEXTHOP_IFINDEX): Define ZEBRA_NEXTHOP_* values.

2000-12-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h (ZEBRA_ERR_RTEXIST): Make zebra error code to negative
	value.

2000-12-25  "Wataru Uno" <wataru@po.ntts.co.jp>

	* vty.c (vtysh_read): Don't allocate new buffer because buffer is
	allocated in vty_new ().

2000-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add MTYPE_AS_FILTER_STR.

	* command.c (config_write_terminal): Display "end" at the end of
	configuration.

	* plist.c (vty_prefix_list_install): Use AF_INET to determine
	lenum length.

2000-12-13  "Wataru Uno" <wataru@po.ntts.co.jp>

	* buffer.c (buffer_flush_vty): If IOV_MAX defined in the System,
	then all lines write by IOV_MAX.

2000-12-12  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* command.c (config_write_file): Robust method for writing
	configuration file and recover from backing up config file.

2000-11-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* smux.c (smux_connect): More fail check.
	(smux_trap): When SMUX connection is not established, do nothing.

2000-11-28  Gleb Natapov <gleb@nbase.co.il>

	* thread.c (thread_fetch): Execut event list first.  Old event
	list is renamed to ready list.  With this change, event thread is
	executed before any other thread.

	* thread.h (struct thread_master): Add ready list.

2000-11-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* linklist.c (listnode_add_after): Add node right after the
	listnode pointer.

2000-11-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* smux.h: Pass struct variable to WriteMethod.

2000-11-25  Frank van Maarseveen <F.vanMaarseveen@inter.NL.net>

	* if.c (if_lookup_address): When looking up interface with IP
	address, Sometimes multiple interfaces will match.  Now PtP
	interfaces prevail in such a case which seem the right thing to
	do: There will probably also be host routes which usually prevail
	over network routes.

2000-11-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* smux.c (smux_trap): SMUX trap implementation.

2000-11-19  Akihiro Mizutani <mizutani@dml.com>

	* plist.c: Add automatic conversion function of an old rule. 
	ex.) 10.0.0.0/8 ge 8 -> 10.0.0.0/8 le 32

2000-11-16  Yon Uriarte <ukl2@rz.uni-karlsruhe.de>

	* zclient.c (zebra_interface_add_read): Read hardware address when
	hw_addr_len is greater than 0.

2000-11-15  Akihiro Mizutani <mizutani@dml.com>

	* plist.c: The rule of "len <= ge-value <= le-value" 
	was changed to "len < ge-value <= le-value".

2000-11-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* memory.[ch]: Added #define and functions for ospf6d.

	* log.[ch]: some platform says that the data of used va_list
	is undefined. Changed to hold list of va_list for each
	vsnprintf.

2000-11-07  Rick Payne <rickp@rossfell.co.uk>

	* memory.h (enum): Add MTYPE_COMMUNITY_REGEXP.

2000-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (config_exit): Fix bug of missing break after case
	BGP_VPNV4_NODE.

2000-10-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vector.c (vector_unset): Check i is not nevative.

2000-10-24  Arkadiusz Miskiewicz <misiek@pld.org.pl>

	* smux.c (smux_sock): Set terminating '\0'.  Check address family.

	* vty.c (vty_serv_sock_addrinfo): Set terminating '\0'. Use
	gai_strerror.  Check address family.

2000-10-23  Jochen Friedrich <jochen@scram.de>

	* smux.c: Use linklist rather than vector.
	(smux_getnext): A SMUX subagent has to behave as if it manages the
	whole SNMP MIB tree itself. It's the duty of the master agent to
	collect the best answer and return it to the manager. See RFC 1227
	chapter 3.1.6 for the glory details :-). ucd-snmp really behaves
	bad here as it actually might ask multiple times for the same
	GETNEXT request as it throws away the answer when it expects it in
	a different subtree and might come back later with the very same
	request.

2000-10-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_init): Log related command are only installed for
	terminal mode.

2000-10-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (libzebra_a_SOURCES): Remove duplicated buffer.c.

	* zebra.h: Remove #warn directive.

2000-10-20  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* keychain.c (keychain_init): Register "key chain" command to
	KEYCHAIN_NODE and KEYCHAIN_KEY_NODE.

	* vty.c (vty_end_config): Fix missing vty_cinfig_unlock for other
	CONFIG_NODE.

	* command.c (config_end): Likewise.

	* keychain.c (keychain_get): Key is sorted by it's identifier
	value.

2000-10-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* linklist.c (list_delete_all_node): Call delete function if it is
	defined.

	* command.c (cmd_execute_command_strict): Add modification for
	vtysh.
	(cmd_execute_command_strict): Remove first argument cmdvec because
	it is global varibale in command.c.

2000-10-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_init): Install
	copy_runningconfig_startupconfig_cmd only in terminal mode.

	* linklist.c (list_delete_node): Simplify the function.
	(listnode_lookup): Renamed from list_lookup_node.

2000-10-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* stream.h: Undef stream_read and stream_write without
	parenthesis.

	* newlist.c: File removed.

	* newlist.h: Likewise.

	* linklist.c (list_new): Remove list_init().  To allocate new
	linked list, please use list_new().
	(listnode_add): Remove list_add_node().  To add new node to linked
	list, please use listnode_add().
	(list_delete_by_val): Revemove fucntion.

2000-10-16  Nobuaki Tanaka <nobby@po.ntts.co.jp>

	* table.c (route_table_free): Reimplement route_table_free().

2000-10-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* keychain.c (keychain_get): Register key_delete_func to key
	list's delete function.  Use linklist.c instead of newlist.c.

2000-10-04  Akihiro Mizutani <mizutani@dml.com>

	* filter.c (access_list_remark): Add access-list's remark command.
	(no_access_list): "no access-list 100 permit any" error message
	bug is fixed.

2000-10-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add MTYPE_SOCKUNION.

2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.89 is released.

2000-10-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* linklist.c (list_add_node_head): Delete unused function.
	(list_add_node_tail): Likewise.

2000-09-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* stream.c (stream_read_unblock): Add new function for unblocking
	read.

2000-09-26  Jochen Friedrich <jochen@nwe.de>

	* smux.c (smux_register): Fix bug of can't register more than one
	MIB with SMUX.

2000-09-26  Makoto Otsuka <otsuka@inl.ntts.co.jp>

	* vty.c (vty_close): Fix memory leak of sb_buffer.
	(vty_new): Likewise.

2000-09-21  steve@Watt.COM (Steve Watt)

	* log.h: Do not declare zlog_priority[0] variable.

2000-09-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* linklist.h (struct _list ): Add member cmp for compare function.
	(struct _list ): Member up is deleted

2000-09-12  David Lipovkov <dlipovkov@OpticalAccess.com>

	* if.c: Include RIP_API header when RIP API is enabled.

2000-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* prefix.c (prefix_free): Siplify prefix_free().

	* keychain.c (key_match_for_accept): strncmp check bug is fixed.

2000-09-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h: Merge roken.h into zebra.h.

2000-09-05  Akihiro Mizutani <mizutani@dml.com>

	* routemap.c (route_map_init_vty): Install route-map command to
	RMAP_NODE.

2000-08-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* thread.c (thread_get_id): Remove pthread related garbage.

	* command.h (struct host): Likewise.

	* zebra.h: Likewise.

2000-08-20  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): Add AAA node for authentication.

	* vty.c (vty_close): Do not close stdout.

2000-08-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_init_vtysh): Added for vtysh.

	* distribute.c (districute_list_prefix_all): Interface independent
	filter can be set.
	(distribute_list_all): Likewise.
	(config_show_distribute): Display current distribute-list status
	for "show ip protocols".

2000-08-18  Akihiro Mizutani <mizutani@dml.com>

	* command.c (config_terminal_no_length): no terminal monitor ->
	terminal no monitor
	(cmd_init): Do not install service_terminal_length_cmd into
	ENABLE_NODE.

	* vty.c (terminal_no_monitor): no terminal length -> terminal no
	length.

2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.88 is released.

2000-08-17  Magnus Ahltorp <ahltorp@nada.kth.se>

	* vty.h (struct vty ): Add iac_sb_in_progress and sb_buffer for
	better IAC handling.

	* vty.c (vty_telnet_option): Change telnet option handling.

2000-08-15  Gleb Natapov <gleb@nbase.co.il>

	* zclient.c (zclient_redistribute_unset):  New function added.

2000-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zclient.c (zebra_interface_add_read): Change ifindex restore
	size from two octet to four.
	(zebra_interface_state_read): Likewise.
	(zebra_interface_address_add_read): Likewise.

2000-08-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_event): Use vector_set_index() instead of
	vector_set().

2000-08-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h (ZEBRA_XXX_DISTANCE_DEFAULT): Define Default
	Administrative Distance of each protocol.

2000-08-07  Matthew Grant <grantma@anathoth.gen.nz>

	* if.h (struct interface ): Add new member bandwidth to struct
	interface.

	* zclient.c (zebra_interface_add_read): Fetch bandwidth value.
	(zebra_interface_state_read): Likewise.

2000-08-07  Gleb Natapov <gleb@nbase.co.il>

	* routemap.c (route_map_event_hook): New hook route_map_event_hook
	is added.  This hook is called when route-map is changed. The
	parameters passed to the hook are 'event' and 'route-map name'

	* routemap.h: Add prototype for route_map_event_hook().

2000-08-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zclient.c (zebra_ipv4_route): zebra_ipv4_route(),
	zebra_ipv4_add(), zebra_ipv4_delete() are removed.

	* routemap.c (route_map_empty): Add new function.
	(route_map_delete): Use route_map_index_delete() instead of
	route_map_index_free().
	(route_map_index_free): Function removed.

2000-08-06  Gleb Natapov <gleb@nbase.co.il>

	* routemap.c (route_map_index_delete): Add check for route-map is
	empty or not.

2000-08-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zclient.c (zebra_ipv4_add): Change socket arguemnt with struct
	zclient.

2000-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zclient.h (struct zebra): Add obuf for output buffer.

	* if.c: Remove #ifdef NRL enclosing if_nametoindex() and
	if_indextoname().

2000-08-02  David Lipovkov <davidl@nbase.co.il>

	* if.h (IF_PSEUDO_UNSET): IF_PSEUDO related macro added.
	(IF_UNKNOWN_SET): IF_UNKNOWN related macro deleted.

	* if.c (interface_pseudo): Add "pseudo" command to interface node.
	(no_interface_pseudo): Add "no pseudo" command to interface node.

	* zclient.c (zebra_interface_add_read): Set pseudo flag when it is
	send from zebra.

2000-08-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h (ZEBRA_IPV4_NEXTHOP_LOOKUP): Add new message.
	(ZEBRA_IPV6_NEXTHOP_LOOKUP): Likewise.

	* vty.c (vty_serv_un): Use AF_UNIX for backward compatibility.

2000-07-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c: Use vector for VTY server thread listing instead of
	single value.

2000-07-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* keychain.c (no_key_chain): "no key chain WORD" command is added.

2000-07-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (config_from_file): If command fail in
	KEYCHAIN_KEY_NODE, down to KEYCHAIN_NODE.

	* vty.h (struct vty ): Add index_sub member.

2000-07-27  Akihiro Mizutani <mizutani@dml.com>

	* if.c: Help strings updates.

2000-07-11  Akihiro Mizutani <mizutani@dml.com>

	* command.c (no_config_enable_password): Add "no enable password"
	command.
	(config_write_host): Display password string.

	* routemap.c (route_map_delete_match): Add support for delete
	match without argument.
	(route_map_delete_set): Likewise.

2000-07-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): Change KEYCHAIN_NODE and
	KEYCHAIN_KEY_NODE place just before INTERFACE_NODE.

2000-07-09  Jochen Friedrich <jochen@scram.de>

	* smux.c (config_write_smux): Fixes the option to override OID and
	password for SMUX.

2000-07-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): Add SMUX_NODE for SMUX configuration.

2000-07-09  Toshiaki Takada  <takada@zebra.org>

	* command.c: Sort descvec command's help.

	* vty.c (vty_describe_command): Display '<cr>' at the end of
	descriptions.

2000-07-05  Toshiaki Takada  <takada@zebra.org>

	* command.c (cmd_ipv6_match), (cmd_ipv6_prefix_match):  Fix bug
	treatment of double colon.

2000-07-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zclient.h: Add zclient_redistribute_default_{set,unset}().

	* keychain.c: New file for authentication key management.
	* keychain.h: Likewise.
	
	* tcpfilter.c: New file for TCP/UDP base filtering using ipfw or
	ipchains.
	* tcpfilter.h: Likewise.
	
	* flap.h: New file for route flap dampening.
	* flap.c: Likewise.

2000-07-04  Toshiaki Takada <takada@zebra.org>

	* filter.c (struct filter): Add exact flag.
	(access_list): Add exact-match command.
	(ipv6_access_list): Add exact-match command.
	
2000-07-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h (ZEBRA_REDISTRIBUTE_DEFAULT_ADD): New message for
	request default route.

2000-07-01  Hideaki YOSHIFUJI ($B5HF#1QL@(B) <yoshfuji@ecei.tohoku.ac.jp>

	* smux.c: Add IPv6 smux connection code.

2000-06-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_complete_command): To cooperate readline library,
	returned string is newly allocated.  So some match function case
	need, free of memory.

2000-06-12  Akihiro Mizutani <mizutani@dml.com>

	* distribute.c: Fix help strings.

2000-06-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_complete_command): Add check for vector_slot
	(vline, index) is not NULL when calculating lcd.
	(cmd_entry_function): First check variable arguemnt to prevent it
	from completion.

2000-06-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.h (struct vty ): Add output_count member for displaying
	output route count.  Remove arugment arg from output_func because
	the value is passed by vty argument.  Change output to output_rn.
	Add output_clean function pointer member.  Add output_type member.

2000-06-10  Toshiaki Takada <takada@zebra.org>

	* command.c (show_startup_config): Add "show startup-config"
	command.

2000-06-06  Akihiro Mizutani <mizutani@dml.com>

	* filter.c: Fix help strings.

2000-06-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* prefix.h (struct prefix_rd): New prefix structure for routing
	distinguisher.
	(struct prefix): Add padding to every prefix structure.


	* routemap.c (route_map_add_match): When completely same match
	statement exists, don't duplicate it.

2000-06-05  Akihiro Mizutani <mizutani@dml.com>

	* routemap.c: Change NAME to WORD.

	* plist.c: Fix help strings.

2000-06-02  Akihiro Mizutani <mizutani@dml.com>

	* routemap.c: Fix route-map help strings.

2000-06-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_filter_by_completion): Fix CMD_VARARG treatment
	to filter other non vararg commands.

	* routemap.c (route_map_init_vty): Use install_default() for
	install common commands into route-map node..

2000-06-01  Akihiro Mizutani  <mizutani@dml.com>

	* command.h (OSPF_STR):  Macro added.

2000-05-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_complete_command): LCD completion must not modify
	installed command string.

	* plist.c (ipv6_prefix_list): Fix wrong syntax definition.  Change
	X:X::X:X to X:X::X:X/M.

2000-05-31  Toshiaki Takada  <takada@zebra.org>

	* vty.c (show_history):  New defun added.

2000-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (CMD_COMPLETE_LIST_MATCH): New define for completion
	list.  CMD_COMPLETE_MATCH is used for LCD completion.

	* vty.c (vty_complete_command): Matched string's LCD is completed.

	* command.c (cmd_lcd): New function for calculate LCD of matched
	strings.

2000-05-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (install_default): config_write_terminal_cmd,
	config_write_file_cmd, config_write_memory_cmd are added to
	default node.

	* memory.c (memory_init): Divide show memory command into each
	sort.

	* command.c (cmd_init): config_write_terminal_cmd,
	config_write_file_cmd, config_write_memory_cmd are added to
	CONFIG_NODE.

	* routemap.c (route_map_index_free): New function.
	(no_route_map_all): New DEFUN for "no route-map NAME".

	* filter.c (no_access_list_all): New DEFUN for delete access-list
	with NAME.
	(no_ipv6_access_list_all): Likewise.

2000-05-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* plist.c: Change IPV6_PREFIX to X:X::X:X.  When "any" is
	specified, user can not use "ge" and "le" statement.

2000-05-22  Thomas Molkenbur <tmo@datus.datus.com>

	* routemap.c (route_map_add_set): Fix bug of next pointer missing.

	* table.c (route_table_free): Like wise.

2000-05-22  Toshiaki Takada  <takada@zebra.org>

	* vty.c (vty_stop_input): Set history pointer to the latest one.

	* vty.c (vty_hist_add): Do not add command line history when input
	is as same as previous one.

2000-05-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add MTYPE_ECOMMUNITY and MTYPE_ECOMMUNITY_VAL.

2000-05-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): Add BGP_VPNV4_NODE.

2000-05-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vtysh_accept): Add cast of struct sockaddr * to bind
	argument.  Reported by: Vesselin Mladenov <mladenov@netbg.com>.

	* filter.c (ipv6_access_list): Add IPv6 prefix example instead of
	IPv4 example.  Reported by: Love <lha@s3.kth.se>.

	* command.c (cmd_complete_command): Make it sure last element of
	matchvec is NULL.  This fix problem which cause crush in
	vty_complete_command().  Reported by: JINMEI Tatuya
	<jinmei@isl.rdc.toshiba.co.jp>.

2000-04-28  Love <lha@s3.kth.se>

	* prefix.h (struct prefix): Add padding.

2000-04-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (show_version): Update copyright year.

2000-04-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* routemap.c (route_map_apply): When map is NULL, return deny.

2000-04-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* filter.c (access_list_apply): When access is NULL, return deny.

	* plist.c (prefix_list_apply): When plist is NULL, return deny.

2000-04-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): Change RDISC_NODE to IRDP_NODE.

2000-04-18  Toshiaki Takada  <takada@zebra.org>

	* filter.[ch] (access_list_add_hook), (access_list_delete_hook):
	Add argument for hook function to give struct access_list *.

2000-04-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* plist.c (prefix_list_entry_match): In case of le nor ge is
	specified, exact match is performed.
	(prefix_list_entry_match): Add any entry matching check.

2000-04-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (exec_timeout): Separate timeout setting to minutes and
	seconds.
	(no_exec_timeout): Add "no exec-timeout" command.

	* vty.h (VTY_TIMEOUT_DEFAULT): Change default value from 300 to
	600.

2000-03-31  Jochen Friedrich <jochen@scram.de>

	* smux.h (SMUX_CLOSE): The SMUX_CLOSE PDU is implicit integer, so
	it is a primitive encoding and not constructed.

2000-03-28  Toshiaki Takada  <takada@zebra.org>

	* memory.[ch] (enum): Add MTYPE_OSPF_EXTERNAL_INFO.

2000-03-26  Love <lha@s3.kth.se>

	* zclient.c (zclient_read): Add nbytes size check for
	ZEBRA_HEADER_SIZE.  Check return value of steam_read ().

2000-03-26  Rick Payne <rickp@rossfell.co.uk>

	* routemap.c: Add flexible route-map commands such as on-match
	next, on-match goto N.

	* routemap.h: Likewise

2000-03-23  Adrian Bool <aid@u.net.uk>

	* command.c (config_log_trap): Add new command "log trap
	PRIORITY".

2000-03-14  Toshiaki Takada  <takada@zebra.org>

	* memory.c (struct memory_list): Add Link List and Link Node
	to view.
	
	* memory.h (enum): Remove MTYPE_OSPF_EXTERNAL_ROUTE.
	
2000-01-20  Hideto Yamakawa <hideto.yamakawa@soliton.co.jp>

	* str.c (snprintf): Fix bug of calling sprintf instead of
	vsprintf.

2000-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add MTYPE_RIP_PEER.

2000-01-15  Toshiaki Takada  <takada@zebra.org>

	* memory.h (enum): Add MTYPE_OSPF_CRYPT_KEY.

2000-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): Add MASC_NODE for masc.

2000-01-09  Wang Jianliang <wangjl@soim.net>

	* routemap.c (route_map_index_add): When route_map_index is not
	empty and insert new item at the head, it can cause core dump.
	Fix "if (index == map->head)" to "if (point == map->head).
	(route_map_add_set): If there is an old set command, override old
	set command with new one.
	(route_map_index_delete): Use while() instead of for for() for
	logical correctness.

1999-12-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add MTYPE_BGP_STATIC.

1999-12-23  Alex Zinin <zinin@amt.ru>
	* zebra.h, zclient.*: dynamic int up/down message
	support

1999-12-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* thread.c (thread_cancel_event): Add a function for clean up
	events.

1999-12-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* dropline.c: Delete file.
	dropline.h: Linewise.	

1999-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* filter.c (access_list_filter_delete): Wrong pointer
	access->master was pointed out after access is freed.  I store
	master value at the beginning of the function.

1999-12-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (exec_timeout): Change of VTY timeout affect to current
	VTY connection.
	(vty_accept): Instead of immediate exit() return -1.

1999-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_configure_lock): Configuration lock function added.
	Only one VTY can use CONFI_NODE at the same time.

	* log.c: Delete zvlog_* functions.  Now zlog_* does the same
	thing.

	* log.c (log_init): Function removed.
	(log_close): Likewise.
	(log_flush): Likewise.
	(log_open): Likewise.

	* vty.c (terminal_monitor): Add new command.
	(no_terminal_monitor): Likewise.

	* log.c (old_log): Function removed.
	(old_log2): Likewise.
	(old_log_warn): Likewise.

1999-12-04  Toshiaki Takada  <takada@zebra.org>

	* command.c (cmd_ipv6_match): New function added.
	(cmd_ipv6_prefix_match): Likewise.
	
1999-12-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_ipv6_match): 

	* table.c: Delete #ifdef HAVE_MBGPV4.

	* prefix.h (struct prefix): Add safi member.
	(struct prefix_ipv4): Likewise.
	(struct prefix_ipv6): Likewise.

1999-12-04  Rumen Svobodnikov <rumen@linux.tu-varna.acad.bg>

	* memory.c (struct mstat): Revert to support MEMORY_LOG.

1999-11-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h: Bump up to 0.81c for testing new kernel codes.

1999-11-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* thread.h (struct thread): Pthread support is disabled all
	platform.

1999-11-21  Michael Handler <handler@sub-rosa.com>

	* Include <limits.h> and <strings.h> under SUNOS_5.

1999-11-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* sockunion.c (in6addr_cmp): Enclosed by #define HAVE_IPV6
1999-11-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): Add BGP_IPV4_NODE and BGP_IPV6_NODE.

1999-11-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (disable): Add `disable' command.

1999-11-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* plist.c (vty_prefix_list_install): Add any check.

1999-11-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): Add DUMP_NODE.

1999-11-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* smux.c: Change default SMUX oid to compatible with gated.

1999-10-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if_rmap.c: New file added.

	* if_rmap.h: New file added.

1999-10-29  Alex Zinin  <zinin@amt.ru>

	* hash.c: add hash_free() function

1999-10-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* hash.c (hash_clean): Add clean function.

	* plist.c (prefix_list_reset): Add reset function.

	* filter.c (access_list_reset): Add reset function.

1999-10-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* client.c: Merged with zclient.c.
	* client.h: Merged with zclient.h.

1999-10-15  Jordan Mendelson <jordy@wserv.com>

	* md5.c: Imported from GNU C Library.
	* md5-gnu.h: Likewise.

1999-10-15  Jochen Friedrich <jochen@scram.de>

	* smux.c (smux_getresp_send): SMUX_GETRSP codes improvement.

1999-10-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* smux.h: New file added.

	* snmp.c: Rename to smux.c.

1999-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_execute_command_strict): Filter ambious commands.
	(cmd_filter_by_string): Change to return enum match_type.

1999-10-01  Toshiaki Takada  <takada@zebra.org>

	* vty.c (vty_describe_fold): New function which does VTY
	description line fold.
	* vty.c (vty_describe_command): Set description column.

1999-09-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* plist.c (prefix_list_init_ipv4): VTY user interface is improved.

1999-09-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_filter_by_string): Fix bug of CMD_IPV4 and
	CMD_IPV4_PREFIX check.  Both return type must be exact_match.

1999-09-24  Toshiaki Takada  <takada@zebra.org>

	* command.c (cmd_filter_by_completion),
	(is_cmd_ambiguous): Check IPv4 address, IPv4 prefix and range 
	parameter matches range.

1999-09-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* routemap.c (route_map_apply): Returm RM_DENYMATCH when no match
	is performed.

1999-09-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_read): Control-C stop VTY_MORE mode.

1999-09-20  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): Add ACCESS_IPV6_NODE and
	PREFIX_IPV6_NODE.

	* distribute.h: New file added.

	* command.h (node_type ): Delete DISTRIBUTE_NODE.

1999-09-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_terminate_all): New function added for reload
	support.

1999-09-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add new type MTYPE_OSPF_EXTERNAL_ROUTE.

1999-08-31  Janos Farkas <chexum@shadow.banki.hu>

	* vty.c (vty_read): Handle also 0x7f (alt-backspace), just like
	esc-ctrl-h (delete word backwards).

1999-08-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.h: Add if_nametoindex for NRL.

1999-08-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.c (if_create): New function.

1999-08-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* snmp.c: New file.

1999-08-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* stream.c (stream_put): stream_memcpy () is changed to stream_put
	().  stream_get () is added.

1999-08-18  Toshiaki Takada  <takada@zebra.org>

	* memory.h (enum): Add MTYPE_OSPF_LSA_DATA.
	
1999-08-18  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* table.c (route_table_finish): add function frees table.

1999-08-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add MTYPE_RTADV_PREFIX.

1999-08-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.h (struct interface ): hw_address, hw_address_len added.

1999-08-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.h (struct interface ): Change structure member if_data to
	info, index to ifindex.

1999-08-08  Rick Payne <rickp@rossfell.co.uk>

	* routemap.c: Multi protocol route-map modification.

	* routemap.c (route_map_apply): Route match process bug is fixed.

1999-08-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* thread.c (thread_fetch): When signal comes, goto retry point.

1999-08-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am: Add sockopt.c and sockopt.h
	* sockopt.c: New file.
	* sockopt.h: New file.
	
1999-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h (ZEBRA_VERSION): Release zebra-0.75

1999-08-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add MTYPE_RIPNG_AGGREGATE.

1999-07-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* sockunion.h: Add sockunion_getpeername ().

1999-07-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h: Release zebra-0.74

1999-07-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (struct host): Delete lines from struct host.  Add
	lines to struct vty.

	* command.c: Delete `lines LINES'.  Terminal display line settings
	should be done by `terminal length' command.

1999-07-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): MTYPE_OSPF_PATH are added.

1999-07-22  Toshiaki Takada  <takada@zebra.org>

	* memory.h (enum): MTYPE_OSPF_NEXTHOP is added.

1999-07-21  Toshiaki Takada  <takada@zebra.org>

	* linklist.c (list_add_node_prev), (list_add_node_next),
	(list_add_list): New function added.

	* table.c (route_table_free): New function added.
	
1999-07-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* plist.c (config_write_prefix): Set write flag when configuration
	is written.

1999-07-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp> 

	* prefix.c : prefix_cmp() added. change apply_mask() to
	apply_mask_ipv4(), and new apply_mask() added.

1999-07-14  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* prefix.c (prefix2str): append prefixlen.

1999-07-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (config_terminal): Change "config terminal" to
	"configure terminal".  Reported by Georg Hitsch
	<georg@atnet.at>.
	(config_terminal_length): `terminal length <0-512>' is added.  At
	this moment this command is only usef for vty interface.
	Suggested by Georg Hitsch <georg@atnet.at>.

1999-07-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* routemap.c (rulecmp): Add wrapper function of strcmp.

1999-07-08  Rick Payne <rickp@rossfell.co.uk>

	* sockunion.c (inet_aton): Fix bug of inet_aton.

1999-07-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h (ZEBRA_VERSION): Start zebra-0.73

1999-07-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h: Bump up to 0.72.

1999-07-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (install_default): New function for install default
	commands to the node.

	* memory.h (enum): MTYPE_NEXTHOP is added.

1999-07-01    <kunihiro@zebra.org>

	* command.c (no_banner_motd): `no banner motd' command added.

1999-06-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* regex.c: Update to glibc-2.1.1's posix/regex.c

	* regex-gnu.h: Update to glibc-2.1.1's posix/regex.h

	* prefix.h (IPV4_ADDR_SAME): Macro added.
	(IPV6_ADDR_SAME): Likewise.

1999-06-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add MTYPE_OSPF_VERTEX

	* version.h: Bump up to 0.71.

	* vty.c (vty_serv_sock_addrinfo): Use addrinfo function to bind
	VTY socket when IPv6 is enabled.

1999-06-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_serv_sock): Change vty_serv_sock determine which
	address family to bind.

	* command.c: Add quit command.

1999-06-26  NOGUCHI kay <kay@dti.ad.jp>

	* vty.c (vty_read_config): Fix bug of configuration file path
	detection.

1999-06-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h: Bump up to 0.70.

1999-06-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* buffer.h (GETL): Remove GETL macro.

	* version.h: Bump up to 0.69.

1999-06-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.c (connected_add): Commented out connected_log.

1999-06-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (struct cmd_element ): strvec and descvec is combined
	into newstrvec.

	* command.c (desc_make): Function removed.
	(desc_next): Function removed.

	* command.h (struct cmd_element ): docvec is removed from struct
	cmd_element.

1999-06-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_execute_command): Remove command NULL check.

	* command.h (struct cmd_element ): Add newstrvec entry to struct
	cmd_element.
	(DEFUN2): DEFUN2 macro is removed.  DEFUN is extended to support
	(a|b|c) statement.
	(DESC): DESC macro is removed.

	* vty.c (vty_complete_command): When return value is
	CMD_ERR_NO_MATCH, don't display error message.

1999-06-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* table.c (route_next_until): New function.

	* version.h: Bump up to 0.68.

1999-06-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_close): Free vty->buf when vty is closed.

	* memory.h (enum): Add MTYPE_COMMUNITY_ENTRY and
	MTYPE_COMMUNITY_LIST.

	* vty.h (struct vty ): Change buf from static length buffer to
	variable length buffer.

	* vty.c (vty_ensure): New function added.
	
1999-06-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): Add COMMUNITY_LIST_NODE.

	* command.c (config_enable_password): Freeing host.enable bug is
	fixed.
	(config_enable_password): Add argc count check.

1999-05-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h: Bump up to 0.67.

1999-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (zencrypt): New function for encrypt password.

	* command.h (struct host): Add password_encrypt and
	enable_encrypt.

1999-05-30  Jochen Friedrich <jochen@scram.de>

	* command.h (struct host): New member encrypt is added for
	encrypted password.

1999-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c: Remove all_digit_check function.  Instead use all_digit.

	* prefix.c (all_digit): New function for checking string is made
	from digit character.

1999-05-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (libzebra_a_SOURCES): Add zclient.c.
	(noinst_HEADERS): Add zclient.h

	* zclient.[ch]: New file for zebra client routine.

	* memory.h (enum): Add MTYPE_ZEBRA.

1999-05-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h (ZEBRA_VERSION): Update to 0.66.

1999-05-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* buffer.h (GETC,GETW): Macro deleted.

1999-05-15  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>

	* prefix.h (IPV4_NET0, IPV4_NET127): Macro added.

1999-05-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (service_advanced_vty): New command added.
	(no_service_advanced_vty): Likewise.

1999-05-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_auth): If advanced flag is set and enable password is
	not set, directly login to the ENABLE_NODE.  This feature is
	originally designed and implemented by Stephen R. van den Berg
	<srb@cuci.nl>.

	* command.h (host): Add advanced flag to struct host for advanced
	vty terminal interface.

	* version.h (ZEBRA_VERSION): Update to 0.65 for next beta release.

1999-05-14  Stephen R. van den Berg <srb@cuci.nl>

	* command.h (node_type ): Add TABLE_NODE.
	
	* vty.c (vty_telnet_option): Check host.lines value.

	* command.c (config_lines): DEFUN for 'lines LINES' command.

	* zebra.h: Include <sys/utsname.h> for uname().
	(RT_TABLE_MAIN): Defined as 0 if OS does not support multiple
	routing table.

	* vty.c (vty_auth): Directly login to the ENABLE_NODE when enable
	password is not set.
	(vty_prompt): Get machine's hostname when hostname is not set.

1999-05-11  James Willard <james@whispering.org>

	* command.c (config_exit): Close connection when `exit' command is
	executed at ENABLE_NODE.

1999-05-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_stop_input): `C-c' key change node to ENABLE_NODE.

	* command.c (cmd_execute_command_strict): Matched command size
	check added.
	(cmd_make_desc_line): New function for DEFUN2.

	* command.h (struct cmd_element ): Add descsize.

1999-05-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (struct cmd_element ): Remame descvec to docvec.
	(struct cmd_element ): Add descvec for new description system.

	* command.c (desc_make): Check cmd->descvec.

1999-05-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add MTYPE_CLUSTER, MTYPE_CLUSTER_VAL.

1999-05-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h (ZEBRA_VERSION): Bump up to 0.64 for next beta
	release.

1999-05-04  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* linklist.c (list_delete_all_node): bug fix. 
	previous code loses current position when node
	is deleted.

1999-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (DESC): Macro added.
	(struct cmd_element2): Delete struct cmd_element2.

	* plist.c (prefix_list): Sequential number option check is added.

1999-05-02  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* log.c (zvlog_{debug,info,notice,warn,err}): have been
	added. now we can log both console and file, but still 
	need some fix about config write.

1999-05-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* log.c (zvlog_debug): Fix yasu's change.

1999-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* plist.c (prefix_list): Fix typo.

1999-04-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Set version to 0.63 for first beta package.

1999-04-27  Carlos Barcenilla <barce@frlp.utn.edu.ar>

	* prefix.c (str2prefix_ipv4): Fix prefix length check.
	(str2prefix_ipv6): Likewise.

1999-04-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): Add MTPYE_PREFIX_LIST and
	MTYPE_PREFIX_LIST_ENTRY.

	* command.h (node_type ): Add PREFIX_NODE.

1999-04-25  Carlos Barcenilla <barce@frlp.utn.edu.ar>

	* command.c: ALIAS (config_write_memory_cmd) and ALIAS
	(copy_runningconfig_startupconfig_cmd) is added.

	* table.c (route_node_lookup): Unused match variable deletion.

1999-04-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (libzebra_a_SOURCES): plist.c added.
	(noinst_HEADERS): plist.h added.

	* plist.c, plist.h: New file added.

	* memory.h (enum): Rename MTYPE_AS_PASN to MTYPE_AS_STR.
	* memory.c: Likewise.

1999-04-19  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>

	* command.c (show_version): `show version' command added.

1999-04-19  Kunihiro Ishiguro <kunihiro@zebra.org>

	* prefix.c (str2prefix_ipv6): Prefix length overflow check.

1999-04-19  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>

	* prefix.c (str2prefix_ipv4): Prefix length overflow check.

1999-04-19  Alex Bligh <amb@gxn.net>

	* prefix.c (sockunion2hostprefix): Function added.
	(sockunion2prefix): Address family was not set.  Now it is set.
	
	* vty.c: VTY access-class command is added.

1999-04-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.c: Change xmalloc to zmalloc.  xcalloc, xrealloc, xfree,
	xstrdup are likewise.

1999-04-18  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* thread.c: Add thread_execute for other routing daemon.
	OSPF tasks need to be generated by "sheduled" and "executed".

1999-04-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* buffer.c: Rewrite buffer_write and buffer_flush related
	functions for fixing bugs.  Reason of the problem and fix is
	suggested by Alex Bligh <amb@gxn.net>.
	
1999-04-12  Alex Bligh <amb@gxn.net>

	* command.c (cmd_entry_function_descr): Added for variable
	argument help display.

1999-04-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* regex.c, regex-gnu.h: Imported from GNU sed-3.02 distribution.

1999-03-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* stream.c: stream_fifo_free bug is fixed.

1999-03-19  Toshiaki Takada  <takada@zebra.org>

	* stream.c (stream_strncpy): Added for getting any length bytes
	from stream.

1999-03-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h (ZEBRA_BUG_ADDRESS): New macro added.

1999-03-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* buffer.c (buffer_flush_window): If ep is same as buffer's size
	length and lp is overrun one octet.

1999-03-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.h: add VTY's timeout function.

1999-03-05    <kunihiro@zebra.org>

	* command.h (node_type ): Add OSPF6_node.

1999-03-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h: Check HAVE_SYS_SELECT_H when include <sys/select.h>

1999-03-03  Jeroen Ruigrok/Asmodai <asmodai@wxs.nl>

	* zebra.h: Include <net/if_var.h> if it exists.

1999-03-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* getopt.[ch],getopt1.c: Sync with glibc-2.1.

	* log.c (zlog): Tempolary ZLOG_STDOUT feature added.

	* command.h: Include vector.h and vty.h

1999-02-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* routemap.h (struct route_map_rule_cmd): Add prefix arguemnt.

	* routemap.c (route_map_apply_index): Add prefix argument.
	(route_map_apply): Likewise.

	* memory.h (enum): Add MTYPE_ROUTE_MAP_COMPILED.

	* stream.c: Add stream_fifo related functions.

1999-02-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* daemon.c: Return integer value.  File descriptor close is added.

	* memory.h (enum): add MTYPE_OSPF_LSA.

1999-02-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rsh.c: Remove empty file.

1999-02-22    <kunihiro@zebra.org>

	* routemap.c: Add add/delete hook to route_map_master.

1999-02-19  Peter Galbavy  <Peter.Galbavy@knowledge.com>

	* str.[ch] added to supply wrappers for snprintf(), strlcat() and
	strlcpy on system without these.

1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>

	* syslog support added

1999-02-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* filter.c (access_list_add_hook): added for hook function management.
	* filter.c (access_list_delete_hook): Likewise.

1999-01-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* stream.c: New file.
	* stream.h: New file.
	* Divide stream related fucntions from buffer.[ch] into stream.[ch].
	
1999-01-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* memory.h (enum): add MTYPE_STREAM, MTYPE_STREAM_DATA

	* buffer.c (stream_new): Set MTYPE_STREAM to XMALLOC argument.

1998-12-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* routemap.c: route_map_index_delete() added.

1998-12-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* buffer.c (buffer_empty): check cp instead of sp.

1998-12-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* radix.[ch]: Deleted.

1998-12-15  Magnus Ahltorp <map@stacken.kth.se>

	* buffer.c: Prototype fixes.
	* prefix.c: Likewise.
	* sockunion.c: Likewise.
	* sockunion.h: Likewise.

1998-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_read): DELETE key works as vty_delete_char.

1998-12-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* log.c (time_print): chane %y to %Y.

1998-12-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* distribute.c: new file.

1998-12-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* filter.c: Remove all of struct prefix_{ipv4,ipv6} and add
	complete support of IPv6 access list.

	* command.c (config_write_element): function delete.
	(config_write_host): function add.  password and enable password
	isn't printed to vty interface.

1998-12-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* filter.c: Change prefix_ipv4 to prefix and add support of
	prefix_ipv6 filtering.

1998-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (INCLUDES): add @INCLUDES@ for Linux IPv6 inet6-apps
	header includes.

1998-12-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* log.c (log_flush): fix function name typo.

1998-12-04  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* memory.h: OSPF memory type is added.

1998-11-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (sort_node): add sort_node() for pretty printing of
	command on vty interface.
	(config_password): delete the restriction of charaster of password
	string.

1998-09-05  Kunihiro Ishiguro  <kunihiro@debian.zebra.org>

	* prefix.c (prefix_ipv4_any): add prefix_ipv4_any().

1998-08-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* network.h: New file.

1998-08-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_will_echo): function name change from vty_off_echo.

1998-08-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* buffer.h: add PUTC,PUTW,PUTL macros.

1998-07-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* route.[ch]: renamed to prefix.[ch]

1998-06-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* prefix_in, prefix_in6 is replaced by prefix_ipv4, prefix_ipv6.

	* Makefile.am: @INCLUDES@ is deleted from INCLUDES.

1998-06-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* host.[ch]: merged with command.[ch]

1998-05-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (libzebra_a_SOURCES): add route.c to libzebra_a_SOURCES.

1998-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* route.c (str2prefix): str2prefix () is gone.

1998-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_read_config): change CONDIR to SYSCONFDIR.

	* .cvsignore: add file.

	* memory.c (xerror): add arguent `type' and `size'.

	* socket.c: deleted.

1998-05-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vector.c: malloc,free,realloc -> XMALLOC,XFREE,XREALLOC.
	* linklist.c: same as above.

1998-04-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* filter.[ch]: added.

1998-04-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (config_who): return CMD_SUCCESS

1998-04-01  Jochen Friedrich <jochen@scram.de>

	* table.c (route_dump_node): route_dump_node is IPv6 specific
	function so move #ifdef to the end of route_dump_node ().

1998-03-05  "Hannes R. Boehm" <hannes@boehm.org>

	* if.c: DEFUN(interface_desc) added.

1998-03-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.c: separated from ripd/rip_interface.c

1998-03-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* thread.[ch] : added.

1998-02-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_delete_char): fix size bug.
	(vty_backward_pure_word): function added.
	(vty_read): ESC + 'f' perform vty_forward_word.
	(vty_read): ESC + 'b' perform vty_backward_word.

1998-02-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* radix.c (radix_lookup_rt): add mask check.
	(radix_delete_duproute): add mask check.

1998-02-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (config_write_file): fix vty -> file_vty.

1998-02-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_filter_ambiguous): add complex type treatment.

1998-02-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_time_print): function added.
	(vty_complete_command): now [...] element isn't shown by completion.

1998-01-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c : change from cmd_install_node() to install_node().

1998-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* route.[ch]: struct rt{} is replaced by struct prefix{}.

1998-01-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c (cmd_execute_command): check command length.

	* timer.c (zebra_timer_set): add zebra_timer_set.

1998-01-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.h (node_type ): add ZEBRA_NODE.

	* command.c (config_exit): add RIP_NODE.
	(config_write_file): add RIP_NODE.

1998-01-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* print_version.c (print_version): Now Copyright is 1996-1998.

	* sockunion.c (sockunion_log): moved from ../zebra/route.c

1997-12-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* host.c (config_logfile): change 'log PATH' to 'logfile PATH'.

	* sockunion.c (sockunion_sameprefix): add same prefix for
	sockunion.

1997-12-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* radix.[ch] : are moved from ../zebra directroy.
	
	* command.c (config_from_file): if command execution failed down
	level to CONFIG_NODE.

	* host.c: config_log function which enable 'log FILENAME' command.

1997-12-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c: add vty_transpose_chars ().  Now you can use '^T' to
	transpose character.

	* command.c: cmd_cmdsize add, this is useful to check incomplete
	command.

1997-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* fd.h: add family for address family

1997-12-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.o
	* vty.o
	* host.o    is moved from ../zebra

1997-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* make library directory.

