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.

