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.

