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

	* (general) Fixes for bugs #261 and 262. Thanks to
	  Konstantin V. Gavrilenko <kos@arhont.com> for the problem
	  reports, testing of a series of proposed patches and comment
	  on the proposed changes in behaviour.
	* rip_interface.c: (ip_rip_authentication_mode_cmd) Parse all
	  of the command before making any changes to configured state.
	* ripd.c: (rip_read) RIP version control should be absolute and
          always apply, fixes bug #261 by allowing RIPv1 to be disabled.
	  Fix bug #262: If authentication is enabled, then
	  unauthenticated packets should not be accepted. We do however
	  make an exception for RIPv1 REQUEST packets, to which we will
	  reply as RIPv1 can now be disabled fully, to allow ripd to
	  still provide routing /information/ to simple devices.
 
2006-04-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ripd.c: (rip_update_process) Try to fix the logic for sending
	  an updated on each connected network.  The new code will
	  attempt to send the update on each connected network, whereas
	  the previous code seemed to be attempting to avoid sending
	  more than one RIPv1 update on a given interface, but was coded
	  incorrectly.  The actual effect of the old code was to send
	  an update only on the first connected address in the cases
	  where the interface is not multicast, or RIPv2 is not being used.

2006-01-30 Alain Ritoux <alain.ritoux@6wind.com>

        * ripd.c: correct bug that allowed route learnt through RIP to take
	  precedence over connectd routes

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

        * ripd.c: (main) return from main, not exit, cause it annoys SOS.

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

	* ripd.c: (rip_auth_md5) remove pdigest, not needed.
	  Use a local buffer for the auth_str, where it can be properly 
	  nul padded. Do so, hence fixing MD5 authentication.  
	  Key looked up via key ring should be used in preference to 
	  the RIPv1 simple password, not other way around.
	  No need to copy around digests, we can reference them
	  directly.
	  The auth_len received can't be trusted, some implementations
	  lie (e.g. older ripd).
	  (rip_auth_md5_ah_write) rename len local variable to doff
	  to be consistent with other functions.
	  (rip_auth_header_write) add the missing return.
	  (rip_auth_md5_set) use the proper constructs to access stream.
	  
2005-10-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ripd.c: (rip_response_process) Instead of calling
	  rip_interface.c:if_valid_neighbor(), call the equivalent
	  library function if_lookup_address().
	* rip_interface.c: (if_valid_neighbor) Remove function, since it is
	  essentially equivalent to the if_lookup_address() library function.
	* ripd.h: (if_valid_neighbor) Remove function declaration.

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

	* Makefile.am: Add rip_interface.h, or else it doesn't get
	  included in dists.

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

	* (general) static/extern functions and definitions.
	* rip_interface.h: new file, export the public functions from
	  rip_interface.c
	* ripd.c: Update couple more functions to specify void
	  explicitely.

2005-10-17 Vincent Jardin <vincent.jardin@6wind.com>

	* ripd.c: rip_create_socket() for each packet, it does not bind to the
	  proper interfaces because we forget to use the from address when
	  it is specified.

2005-10-06 Alain Ritoux <alain.ritoux@6wind.com>

	* rip_interface.c: Now the command "no ip rip split-horizon
	  poisoned-reverse" just inhibates the poisoned-reverse effects
	  but keep spli-horizon activ.

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

	* rip_zebra.c: (config_write_rip_redistribute): Remove local hard-coded
	  table str[]. Replace str[] with calls to new library function
	  zebra_route_string().
	* ripd.c: Remove local hard-coded table route_info[].
	  (show_ip_rip) Replace uses of str[] with calls to new library
	  functions zebra_route_char and zebra_route_string.

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

	* rip_snmp.c: rip2IfConfReceive() sends values in conformance
	  with RFC. Also PeerDomain is now set to a STRING type.
	* ripd.h: rip_redistribute_add() API includes metric and distance
	  added field external_metric in routes.
	* ripd.c: rip_redistribute_add() API i.e. stores metric and distance
      Now allows a RIP-route to overcome a redistributed route coming
	  from a protocol with worse (higher) administrative distance
	  Metrics from redistribution are shown in show ip rip
	* rip_zebra.c: adapt to the rip_redistribute_add() API, i.e.
	  provide distance and metric
	* rip_interface.c: adapt to the rip_redistribute_add() API
	* rip_routemap.c: no RMAP_COMPILE_ERROR on (metric > 16) usage
	  rather a CMD_WARNING, because set metric ius shared with other
	  protocols using larger values (such as OSPF)
	  The match metric action takes first external metric if present
      (from redistribution) then RIP metric.

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

	* ripd.c: use new md5 API

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

	* ripd.c: (general) Fix previous commit, broke multicast bind and
	  hence setting of source port, which broke communication with
	  non-borken ripd. Fix removes more stuff from rip_interface.c
	  than it adds to ripd.c ;)
	  (rip_create_socket) the to argument really is a from argument,
	  rename it. Set the source port to RIP port unconditionally, it's
	  required.
	  (rip_send_packet) Set from address correctly for multicast.
	  (rip_output_process) trivial: num can be BSS specified, rather
	  than in body.
	* rip_interface.c: (rip_interface_multicast_set) strip out
	  redundant stuff related to bind, which rip_create_socket does.
	  Just make it set the multicast socket option, as per the
	  interface concerned, no more.

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

	* ripd.c: (rip_create_socket) move it up so rip_send_packet
	  can use it too. Make it static. Remove the getservbyname stuff,
	  as RFC2453 3.9.2 says non-RIP port messages should be discarded,
	  quagga doesnt accept them, no need to lookup port.
	  Take a 'to' argument, if socket should be bound to something else.
	  setsockopt_so_recvbuf might need privs, move it to the raised
	  privileges section.
	  dont forget to close the socket if bind fails.
	  (rip_send_packet) use strncpy, just in case (address is under
	  our control anyway, but still).
	  dont duplicate rip_create_socket - just use it.
	  (rip_create) rip_create_socket takes an argument now, modify.
	  
2005-06-01 Paul Jakma <paul.jakma@sun.com>

	* rip_interface.c: Fix authentication, no-auth impossible to specify
	  (rip_interface_new) default to RIP_NO_AUTH
	  (rip_interface_reset) ditto
	  (rip_interface_config_write) write out config for simple
	  
2005-05-29 Paul Jakma <paul@dishone.st>

	* ripd.c: (rip_output_process) fix error which crept in my
	  previous rip auth untanglement commit - it had become impossible
	  to not have authentication (even for v1).
	
2005-05-28 Hasso Tepper <hasso at quagga.net>

	* rip_routemap.c: Fix set_metric_addsub_cmd help, it's not about BGP
	  metric.

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

	* rip_routemap.c: In case of '0.0.0.0' used as 'nexthop', use sender
	  address as nexthop in routemap.

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

	* rip_routemap.c: Make "match interface" routemap command match both -
	  in and out interfaces.

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

	* rip_interface.c (rip_interface_add): Need to call
	  rip_passive_interface_apply (was already calling it in
	  rip_interface_up).

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

	* rip_zebra.c (rip_redistribute_set, rip_redistribute_unset,
	  rip_redistribute_clean): Change 2nd arg to zebra_redistribute_send
	  from zclient->sock to zclient.

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

	* rip_interface.c: (rip_interface_delete) After deleting, set
	  ifp->ifindex to IFINDEX_INTERNAL.

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

	* ripd.c: Untangle the construction of RIP auth data.
	  (rip_auth_prepare_str_send) new helper function, prepare
	  correct key string.
	  (rip_auth_simple_write) new helper, write out the
	  rip simple password auth psuedo-RTE.
	  (rip_auth_md5_ah_write) new helper, write out the
	  MD5 auth-header psuedo-RTE.
	  (rip_auth_header_write) new helper, write out correct
	  auth header data / psuedo-RTE.
	  (rip_auth_md5_set) rip out the memmove and writing of the
	  auth header psuedo-RTE. So that all that is left is to
	  write the trailing auth digest, and update digest offset
	  field in the original header.
	  (rip_write_rte) rip out writing of RIP header, writing of
	  simple auth data psuedo-RTE. Make it do what its name suggests,
	  write out actual RTEs.
	  (rip_output_process) remove the incorrect additional decrements 
	  of rtemax. Prepare the auth_str, which simple or MD5 auth will
	  need. Move write out of RIP header and auth data to inside the
	  loop. Adjust paramaters as required.

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

	* ripd.c: (rip_create_socket) Replace perror with zlog_err.

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

	* ripd.c: (rip_create_socket) Save errno before calling
	  ripd_privs.change.

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

	* ripd.c: (rip_recvmsg) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR.

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

	* ripd.c: (rip_read) Improve 2 error messages to show the source of
	  the packet when the lookup fails.

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

	* *.c: Change level of debug messages to LOG_DEBUG.

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

	* rip_main.c: (main) The 2nd argument to openzlog has been removed.

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

	* rip_main.c: (sigint) Use zlog_notice for termination message.
	  (main) Add a startup announcement using zlog_notice.

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

	* rip_main.c: Make group to run as configurable.

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

	* ripd.c: Collapse redundant passing of various address structs,
          struct interface and struct connected as arguments to functions
          down to two key arguments, namely struct connected and, possibly,
          address of source/destination. Testing for RIPv1 would be useful.
          (rip_read) lookup struct connected for the received packet, pass
          it on.
        * rip_interface.c: With previous changes, we no longer have to tread
          carefully with struct connected, as it will always be there and
          valid.

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

	* ripd.c: (rip_update_interface) if connected->destination is NULL,
	  get the broadcast address with ipv4_broadcast_addr()
	* rip_interface.c: (rip_interface_multicast_set)
	  connected->destination may be NULL. Improve message if
	  setsockopt_multicast_ipv4 fails. Improve message if bind fails.
	  (rip_request_interface_send) If connected->destination is NULL,
	  get the broadcast address with ipv4_broadcast_addr().
	  (if_valid_neighbor) Handle PtP subnet addressing properly.
	  Speed up code by using prefix_match properly.

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

	* ripd_snmp.c: Remove defaults used to initialize smux connection to
	  snmpd. Connection is initialized only if smux peer is configured.

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

	* *.c: Make more strings const.

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

	* *.c: Fix compiler warnings: make strings const, signed -> unsigned
	  etc.

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

	* ripd.c: Fix compiler warning.

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

	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.

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

	* ripd.c: set receive buffer to a decent size, some systems have low
	  defaults. Problem noted and fix suggested by Stephan Schweizer
	  in [zebra 20967].

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

	* rip_interface.c: (rip_interface_multicast_set) get rid
	  of extraneous if_pointopoint arg. ifp is accessible via connected.
	  pass connected->ifp->ifindex to setsockopt_multicast_ipv4.
	* ripd.c: (rip_send_packet) update call to
	  rip_interface_multicast_set
	* ripd.h: update rip_interface_multicast_set prototype
	
2004-06-11 Sowmini Varadhan <sowmini.varadhan@sun.com>

	* ripd.c: (rip_distribute_update_all) distribute list hook
	  function pointer prototype requires struct prefix_list * arg.
	  (rip_distribute_update_all_wrapper) update to pass required arg,
	  NULL.
	 
2004-06-06 Paul Jakma <paul.jakma@sun.com>

	* ripd.h: Add define for the RIPv2 Authentication Data family
	  Move the auth type defines up to where other defines live.
	  Add RIP_AUTH_MD5_COMPAT_SIZE, for backwards compatible
	  md5->auth_len size. Add md5_auth_len field to struct
          rip_interface: (rip_interface_new) Init md5_auth_len to compatible 
          size.
          (ip_rip_authentication_mode_cmd) Extended to handle setting
          md5 auth-length. Appropriate aliases added.
          (no_ip_rip_authentication_mode_cmd) Reset md5_auth_len to
          compatible size.
          (rip_interface_config_write) Teach it about md5_auth_len.
          _always_ write out the auth-length, so that everyone will get
          the setting in their config file, and hence allow for a future
          change of default for md5_auth_len to be less painful - every md5
          user will have this setting in their config file.
          ripd.c: (rip_packet_dump) Change nasty hard coded constants to 
          symbolic defines. Change various tests of 'ntoh.(variable) ==
          constant' to test 'variable == ntoh.(constant)'. Clean up
          indentation on some long lines.
          (rip_auth_simple_password) ditto.
          (rip_auth_md5) ditto, also add length argument and sanity check 
          md5 data offset field. Sanity check md5 auth length, accept RFC
          or old-ripd/cisco lengths.
          (rip_auth_md5_set) as per (rip_packet_dump), also write out
          the configured md5 auth length for the interface (old-ripd or rfc)
          (rip_read) as per (rip_packet_dump)
          (rip_write_rte) ditto
          (rip_response_process) ditto
          (rip_write_rte) ditto
          
2004-06-04 JJ Ludman <jacques.ludman@sun.com>

	* ripd.c: Interoperability fix. Correct value for MD5 auth length
	  is 16. Accept packets with this set to >= 16, and set to 16
          ourselves.

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

	* ripd.c: Fixup compile warnings
	* rip_routemap.c: Ditto
	
2004-05-08 Paul Jakma <paul@dishone.st>

	* rip_zebra.c: sync with zclient changes.
	* rip_interface.c: ditto.

2004-05-05 Anthony.Golia@morganstanley.com

	* ripd.c: (rip_update_jitter) Bound jitter to a more sensible
	  value, eg 1/4 of update time.
	  
2004-05-03 Paul Jakma <paul@dishone.st>

	* ripd.c: (rip_rte_process) fix typo in merge of previous patch
	  and run function through indent.
	
2004-03-19 Jean-Yves Simon <lethalwp@tiscali.be>

	* ripd.c: (rip_rte_process) make ripd also check on 
	  administrative distance of his own links to update routes.

2004-03-18 sowmini.varadhan@sun.com

	* ripd.c: rip_send_packet can get null connected address when
	  called in response to a unicast rip-request. Handle correctly.

2004-03-03 Krzysztof Oledzki <oleq@ans.pl>

	* ripd.c: fix "show ip rip" and per interface rip version selection.

2004-01-23 sowmini.varadhan@sun.com

	* rip_interface.c: obsolete unbind code in
  	rip_interface_multicast_set, and instead do the more portable
  	(though slower) method of creating a socket for each outgoing packet
  	and binding the source address on the new socket.
        * rip_interface.c, ripd.c, ripd.h: Modify rip_request_send so that
        source address is determined by the caller of rip_request_send for
        ripv1 packets and non-multicast interfaces (rip_request_send loops
        over all connected address in all other cases).
        * rip_send_packet: don't send packets with source set to
        ZEBRA_IFA_SECONDARY connected addresses; improved debug messages;

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.
