2003-06-07 Andrew J. Schorr <aschorr@telemetry-investments.com>

	* Allow ripd to receive RIPv1
	* add default as valid param to passive-interface command

2003-05-25 Vincent Jardin <vjardin@wanadoo.fr>

	* 6Wind patch merge.

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

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

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

	* zebra-0.93 released.

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

	* ripd.c (rip_output_process): When outgoing interface is same as
	next hop interface, announce RIPv2 next hop otherwise set next hop
	to 0.  Revert previous change then take 6WIND way.

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

	* ripd.c: RIP enabled interface's route is advertised by default.

2001-08-28  NOGUCHI Kay <kay@v6.access.co.jp>

	* rip_snmp.c (rip_ifaddr_delete): Add route_node_lookup() return
	value check.

	* rip_interface.c (rip_multicast_leave): Fix bug of multiple IP
	address on one interface multicast join/leave bug.

2001-08-26  NOGUCHI Kay <kay@v6.access.co.jp>

	* rip_interface.c (no_rip_passive_interface): Add NO_STR.

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-06-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rip_routemap.c (route_match_ip_address_prefix_list): Add match
	ip next-hop prefix-list WORD.

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

	* rip_interface.c (rip_passive_interface_clean): Call
	rip_passive_interface_apply_all.

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

	* ripd.c (rip_response_process): Multicast address nexthop check
	is moved from rip_nexthop_check.

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

	* rip_interface.c (ipv4_multicast_join): Use
	setsockopt_multicast_ipv4.
	(ipv4_multicast_leave): Likewise.
	(rip_if_ipv4_address_check): Interface which has IPv4 address can
	be enabled.

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

	* rip_interface.c (rip_interface_delete): To support pseudo
	interface do not free interface structure.
	* ripd.c (rip_output_process): If output interface is in simple
	password authentication mode, we need space for authentication
	data.

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

	* ripd.c (rip_nexthop_check): Fix multicast address nexthop check.

	* zebra-0.91 is released.

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

	* ripd.c (show_ip_rip): Show metric infinity route's timeout.
	(rip_rte_process): If current route is metric infinity, route is
	replaced with received rte.
	(rip_redistribute_delete): When redistribute route is deleted,
	perform poisoned reverse.
	(rip_redistribute_withdraw): Likewise.

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

	* ripd.c (rip_response_process): RIPv2 routing table entry with
	non directly reachable nexthop was dropped.  The code is changed
	to treat it as 0.0.0.0 nexthop.
	(rip_destination_check): Check net 0 address destination.
	(rip_nexthop_check): New function for checking nexthop address
	validity.

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

	* ripd.c (rip_request_process): Triggered update only send changed
	route.

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

	* rip_snmp.: Likewise.

	* rip_zebra.c: Likewise.

	* ripd.c: Likewise. 

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

	* rip_interface.c (rip_if_init): Remove HAVE_IF_PSEUDO part.

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

	* zebra-0.90 is released.

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

	* ripd.h (RIP_VTYSH_PATH): Change "/tmp/ripd" to "/tmp/.ripd".

2000-12-25  David Lipovkov <davidl@nbase.co.il>

	* ripd.c (rip_rte_process): When a route is in garbage collection
	process (invalid with metric 16) and a router receives the same
	route with valid metric then route was not installed into zebra
	rib, but only into ripd rib. Moreover , it will never get into
	zebra rib, because ripd wrongly assumes it's already there.
	(rip_redistribute_add): When doing redistribute into rip other
	route (e.g. connected) and the same route exists in ripd rib we
	changed it in place - bug. Now we don't forget to remove old route
	from zebra.
	(rip_timeout): When removing routes from zebra I made sure that we
	remove route with the metric we have in zebra and not the new
	one. It doesn't make a difference now,but could be significant
	when multipath support is done.

2000-12-25  David Lipovkov <davidl@nbase.co.il>

	* rip_zebra.c (rip_metric_unset): Fix bug of metric value unset.

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

	* ripd.c (rip_request_process): Check passive flag of the
	interface.

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

	* rip_interface.c (rip_multicast_join): When IP_ADD_MEMBERSHIP
	failed do not set runnning flag to the interface.

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

	* ripd.c (rip_output_process): Memory leak related classfull
	network generation is fixed.

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

	* rip_interface.c (if_check_address): Obsolete pointopoint address
	check is removed.

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

	* rip_interface.c (if_check_address): Add pointopoint address
	check.
	(rip_interface_up): Add check for passive interface when interface
	goes up.

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

	* rip_snmp.c: rip_oid and ripd_oid are used in smux_open after it
	is registered.  So those variables must be static.

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

	* rip_interface.c: Change to "no ip rip (send|receive)" command
	accept version number argument.

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

	* rip_routemap.c (route_set_ip_nexthop_compile): Change "match ip
	next-hop" from IP address to access-list name.

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

	* rip_peer.c: Change ot use linklist.c instaed of newlist.c.

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

	* rip_offset.c: Change to use linklist.c instead of newlist.c.

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

	* zebra-0.89 is released.

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

	* rip_routemap.c (match_ip_nexthop): Add next-hop format check.

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

	* rip_interface.c (ripd_api_get_if_rx_version): Corrects rip SNMP
	and rip API functions dealing with rip version.

	* rip_snmp.c (Status_Valid): SNMPv2-TC TEXTUAL-CONVENTION.

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

	* rip_snmp.c (rip2IfLookup): Use rip_ifaddr_lookup_next() instead
	of rip_if_lookup_next().

	* rip_interface.c (rip_enable_network_lookup): Interface enable
	check by interface's address with /32 prefix.

	* ripd.c (rip_read): When RIP is configured with authentication
	and no authentication in incoming packet, drop the packet.

	* rip_interface.c (rip_interface_reset): RIP_AUTH_SIMPLE_PASSWORD
	is default mode of authentication.
	(rip_interface_new): Likewise.
	(no_ip_rip_authentication_mode): Likewise.

	* ripd.c (rip_read): Likewise.

2000-09-10  David Lipovkov <davidl@nbase.co.il>

	* rip_snmp.c: Set ASN_INTEGER v->type where it is needed.

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

	* ripd.c (rip_auth_simple_password): Simple password
	authentication using key-chain.
	(rip_write_rte): Likewise.

	* rip_interface.c (ip_rip_authentication_key_chain): Add check for
	authentication string configuration.

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

	* ripd.c (rip_write_rte): Add check for ri->auth_str.

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

	* ripd_api.h: New file is added.

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

	* ripd.c (rip_rte_process): rip_route_process() is renamed to
	rip_rte_process() to clarify meanings of the function.
	rip_route_process() is newly added to process RIP route selection.

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

	* ripd.c (rip_incoming_filter): Extract incoming filter code to
	function from rip_route_process(). Add check for all interface
	filter.
	(rip_outgoing_filter): Extract incoming filter code to function
	from rip_output_process().  Add check for all interface filter.

	* rip_zebra.c (rip_redistribute_clean): Reset redistribute status
	when "no router rip" is performed.

	* rip_interface.c (rip_interface_clean): Reset interface's RIP
	enable status.

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

	* ripd.c (rip_route_process): When metric infinity is received the
	route is removed from service immediately.
	(rip_timeout): Likewise.
	(rip_garbage_collect): Do not delete route in garbage collection.
	(rip_output_process): Check metric_out exceed metric infinity.

	* zebra-0.88 is released.

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

	* ripd.c (rip_distance_apply): Unlock node when there is matched
	node.

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

	* rip_routemap.c (match_ip_nexthop): Add check for IP address
	validness.
	(no_set_metric): Add new ALIAS.

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

	* ripd.h (struct rip ): Add distance.

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

	* rip_zebra.c (rip_zebra_ipv4_add): Use new Zebra api to register
	routes.  Pass RIP metric value to zebra.

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

	* rip_main.c (main): Make struct thread thread from global
	variable to local variable in main.

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

	* ripd.c (rip_packet_dump): Add MD5 authentication dump function.
	(rip_auth_md5): RIP MD5 authentication packet receive works.

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

	* rip_interface.c (rip_if_init): Install interface "pseudo"
	commands.
	(rip_interface_delete): Do not call if_delete() when interface is
	pseudo interface.

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

	* rip_interface.c (ip_rip_authentication_mode): "ip rip
	authentication mode (md5|text)" is added.
	(ip_rip_authentication_key_chain): "ip rip authentication
	key-chain KEY-CHAIN" is added.
	(rip_interface_clean): Clean all interface configuration.
	(rip_interface_reset): Reset all interface configuration.
	(rip_clean_network): Clean rip_enable_network.

	* ripd.h (struct rip_interface): Add key_chain member.

	* ripd.c: Include md5-gnu.h.

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

	* ripd.h (RIP_NO_AUTH): Change RIP_NO_AUTH value from 1 to 0.

	* ripd.c (rip_authentication): Use RIP_AUTH_SIMPLE_PASSWORD
	instead of raw value 2.
	(rip_write_rte): Likewise.
	(rip_write_rte): Check ri->auth_type instead of ri->auth_str.

2000-07-30  David Lipovkov <davidl@nbase.co.il>

	* rip_interface.c (rip_if_down): Do not delete ZEBRA_ROUTE_KERNEL
	route.

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

	* ripd.c (rip_update_process): Add "passive-interface" command.

	* ripd.h (struct rip_interface): Add passive member to struct
	rip_interface.

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

	* rip_interface.c (rip_if_init): Multiple RIP routes for one
	prefix change.  The codes are enclosed by #ifdef NEW_RIP_TABLE.

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

	* rip_interface.c (rip_if_init): Use install_default() for
	INTERFACE_NODE.

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

	* ripd.c: First update timer will be invoked in two seconds.

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

	* rip_snmp.c: Local function definitions to static.  Add INTEGER
	ASN_INTEGER and TIMETICKS ASN_TIMETICKS definition.
	(rip2PeerLookup): Peer with domain lookup implemented.
	(rip2PeerTable): Temporary disable RIP2PEERLASTUPDATE value
	support due to unknown SNMP agent startup time.

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

	* ripd.h: Sweep obsolete definitions.

	* rip_interface.c (rip_split_horizon): Add "ip split-horizon"
	command.

	* ripd.c (rip_output_process): Remove split_horizon argument.
	(rip_update_process): Likewise.

	* ripd.h (struct rip_interface): Add split_horizon flag to struct
	rip_interface.

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

	* ripd.c (rip_version): Change VERSION to <1-2>.
	Add "no version" command.

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

	* rip_zebra.c (rip_redistribute_type_metric): "redistribute TYPE
	metric <0-16>" command is added.

	* rip_routemap.c (route_set_metric): Set metric_set when metric is
	modified.

	* ripd.h (struct rip_info): To check route-map set metric or not,
	new member metric_set is added to struct rip_info.

	* ripd.c (rip_route_process): Move metric handling code from
	rip_response_process() to rip_route_process().
	(rip_output_process): Set output offset-list metric.

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

	* rip_offset.c (rip_offset_list): New file for offset-list.

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

	* ripd.h (struct rip ): Add default_metric.

	* ripd.c (rip_default_metric): "default-metric <1-16>" command is
	added.
	(config_write_rip): Change configuration order.
	
	* rip_zebra.c: Fix help strings.

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

	* rip_interface.c (rip_if_init): Add IF_DELETE_HOOK.

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

	* ripd.c (rip_output_process): If specified route-map does not
	exist, it treated as deny all.

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

	* rip_routemap.c (rip_route_map_init): Call rip_route_map_update
	when route-map is deleted.

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

	* rip_routemap.c (set_metric): For consistency with bgpd's set
	metric, value range is set to <0-4294967295>.
	
2000-06-28  David Lipovkov <davidl@nbase.co.il>

	* rip_routemap.c (rip_route_map_update): Add check for rip is
	enabled or not for avoid core dump.

	* rip_debug.c (debug_rip_packet_direct): Fix bug of setting
	rip_debug_packet flag.

2000-06-13  David Lipovkov <davidl@nbase.co.il>

	* rip_interface.c (rip_interface_delete): All work is done in
	rip_if_down().

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

	* ripd.c (rip_redistribute_delete): Fix bug of missing
	route_unlock_node() when redistribute route is not found.

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

	* rip_debug.c (rip_debug_init): Disable show debugging in
	VIEW_NODE like other protocol daemon.

	* rip_routemap.c: Change command argument to more comprehensive.

	METRIC       -> <0-16>
	IFNAME       -> WORD
	IP_ADDR      -> A.B.C.D
	ACCSESS_LIST -> WORD

2000-06-05  David Lipovkov <davidl@nbase.co.il>

	* rip_interface.c (rip_interface_delete): Delete all routes
	include static and kernel through the interface , because even if
	the interface is added again there is no guarantee that it will
	get the same ifindex as before.

2000-05-31  Akihirof Mizutani <mizutani@dml.com>

	* rip_debug.c: Fix rip debug help string.

2000-04-27  Mirko Karanovic <mkaranov@torsel.alcatel.com>

	* rip_interface.c (rip_interface_down): Remove interface from
	multicast group when interface goes down.

2000-04-03  David Lipovkov <davidl@nbase.co.il>

	* rip_interface.c (rip_interface_down): Implemented rip functions
	for interface up/down events: rip_interface_up() and
	rip_interface_down()

2000-03-16  David Lipovkov <davidl@nbase.co.il>

	* rip_zebra.c (rip_zclient_init): Added rip functions for
	interface up/down events.

2000-02-15  Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>

	* ripd.c (rip_write_rte): "set metic" in route-map has no effect
	for RIPv1 in ripd.  It worked fine for RIPv2.

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

	* ripd.c (show_ip_protocols_rip): Fix bug of "show ip protocls"
	mis-display RIP version.

	* ripd.h (struct rip_peer): Add timeout thread to rip_peer
	structure.

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

	* rip_peer.c: Add new file for supporting RIP peer.

1999-12-26  David Lipovkov <davidl@nbase.co.il>

	* ripd.c (rip_authentication): RIP authantication string is 16
	bytes long.

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

	* ripd.c (rip_read): Add check for minimum packet length.
	Authentication check is moved from rip_process_response() to
	rip_read().  Patch from David Lipovkov <davidl@nbase.co.il> is
	applied then add rte number check by Kunihiro Ishiguro
	<kunihiro@zebra.org>.

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

	* ripd.c (rip_response_process): In case of packet is RIPv2 and
	network is non zero and netmask is zero, apply netmask rule as
	same as RIPv1.

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

	* ripd.c (rip_timers): Fix bug of timers basic argument format.

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

	* rip_snmp.c (rip2IfConfAddress): Forgot to include
	RIP2IFCONFDOMAIN.

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

	* ripd.h (struct rip_peer): New structure added.

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

	* rip_zebra.c (rip_zebra_ipv4_add): Increment
	rip_global_route_changes when route change occur.
	(rip_zebra_ipv4_delete): Likewise.

	* ripd.c (rip_request_process): Increment rip_global_queries when
	reply to the query is sent.

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

	* rip_debug.c (rip_debug_reset): Reset function added.

	* ripd.c (rip_update_process): Logging bug is fixed. 

1999-10-10  Marc Boucher <marc@mbsi.ca>

	* ripd.c (config_write_rip): Add config_write_distribute() call.

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

	* ripd.c (rip_distribute_update): Fix bug of access-list
	prefix-list updates.

1999-09-10  VOP <vop@unity.net>

	* rip_zebra.c: Add redistribute route-map feature.

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

	* ripd.c (rip_response_process): Add check for given prefix is
	given mask applied one.

1999-09-03  VOP <vop@unity.net>

	* rip_interface.c (rip_interface_multicast_set): Bug fix about
	setting multicast interface.

1999-09-02  VOP <vop@unity.net>

	* rip_routemap.c: New file added.

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

	* ripd.c (show_ip_protocols_rip): Show next update time.
	(show_ip_protocols_rip): Show redistribute information.

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

	* RIPv2-MIB.txt: New file added.

	* rip_snmp.c: New file added.

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

	* rip_interface.c (ip_rip_authentication_string): RIPv2
	authentication command is added.

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

	* rip_interface.c (rip_interface_multicast_set): Process of
	setting IP_MULTICAST_IF on specific interface.

	* ripd.c (rip_read): Add packet size check.

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

	* ripd.c (rip_request_process): Fill in RIP_METRIC_INFINITY with
	network byte order using htonl ().
	(rip_response_process): Pass host byte order address to IN_CLASSC
	and IN_CLASSB macro.

1999-08-08  davidm@nbase.co.il (David Mozes)

	* rip_zebra.c (rip_zebra_read_ipv4): Fix split horizon problem.

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

	* ripd.c (rip_timer_set): Function added.

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

	* rip_debug.c: New file added.
	rip_debug.h: New file added.

1999-07-01  Rick Payne <rickp@rossfell.co.uk>

	* rip_zebra.c (zebra_init): Install standard commands to
	ZEBRA_NODE.

1999-06-01  David Luyer <luyer@ucs.uwa.edu.au>

	* ripd.c (rip_process_route): Add support for RIP version 1.

1999-05-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rip_zebra.c: Change to use lib/zclient.[ch].

1999-05-20  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>

	* ripd.c (rip_add_route): Change the existance route's metric check
          to the condition specified by RFC2453. 
	
1999-05-17  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>

	* ripd.c (rip_process_route): Add the if metric to the route metric.

	* ripd.c (rip_add_route): Deleted add if metric to the route.

1999-05-16  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>

	* rip_interface.c (if_valid_neighbor): New function.

	* ripd.c (rip_process_route): Added check whether the datagram
	is from a valid neighbor.
	
1999-05-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ripd.c (rip_process_route): Set interface pointer to rinfo.

1999-05-15  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>

	* ripd.c (rip_check_address): Unicast and not net 0 or 127 check
	added.

1999-05-14  Stephen R. van den Berg <srb@cuci.nl>

	* rip_main.c (signal_init): SIGTERM call sigint.
	(sigint): Loggging more better message.

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

	* ripd.c (rip_add_route): Fix previous route_unlock_node() chenge.

	* rip_main.c (main): Change default zlog output to ZLOG_STDOUT for
	debugging.

1999-05-09  Patrick Koppen <koppen@rhrk.uni-kl.de>

	* rip_interface.c (rip_request): Fix old semantics for fetching
	connected address.

	* ripd.c (rip_add_route): Update timer when the route is updated.

1999-05-09  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>

	* rip_zebra.c (struct zebra): Add ridist_static, ridist_connect,
	redist_rip, redist_ripng.  

	* rip_zebra.c (zebra_create): Updated for current zebra method.

	* ripd.c (rip_add_route): Add missing route_unlock_node().

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

	* ripd.c (rip_add_route): Add metric check.  Reported by Carlos
	Alberto Barcenilla <barce@frlp.utn.edu.ar>.

1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>

	* syslog support added

1998-12-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ripd.c (rip_announce_func): Apply new lib functions.

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

	* ripd.c (config_write_rip): Delete vector v argument.
	* rip_zebra.c (config_write_zebra): Likewise.
	* rip_interface.c (interface_config_write): Likewise.

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

	* rip_announce.c (rip_rib_close): When ripd terminates delete all
	added route.

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

	* rip_interface.c: return read packet size.

1998-05-18  Yamshita TAKAO  <jargon@lares.dti.ne.jp>

	* ripd.h: Modify for compile on Solaris.

1998-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ripd.c: DEFUN function return CMD_SUCCESS.
		  change xmalloc to XMALLOC macro.
	
1998-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rip_main.c: change CONFDIR to SYSCONFDIR.

1998-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* .cvsignore: added.

1998-02-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rip_interface.c (config_write_interface): correct ADVERTISE spell.

	* rip_main.c (main): add usage() and make cleanup.

1998-01-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ripd.c (rip_version): add rip version command.

1998-01-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rip_interface.c (zebra_get_interface): added to get
	interface's information.

	* ChangeLog: create.
