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

	* rip_interface.c: (rip_interface_multicast_set) Use new CONNECTED_ID
	  macro to simplify logic.
	  (rip_request_interface_send) Fix minor bug: ipv4_broadcast_addr does
	  not give a useful result if prefixlen is 32 (we require a peer
	  address in such cases).
	* ripd.c: (rip_update_interface) Fix same bug as above.

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

	* ripd.c: (rip_read) remove gratuitous use of mid-function
	  declaration of vrecv, bug #278.
	* rip_routemap.c: (route_set_metric) underflow check needs to
	  use signed, problem identified and diagnosed by Pavel
	  Nikiforov in bug #293.

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

	* rip_zebra: (general) convert redistribute commands to use
	  the auto-generated defines.

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.
