diff --git a/ripd/ChangeLog b/ripd/ChangeLog
index e9f7e07..a3c0e24 100644
--- a/ripd/ChangeLog
+++ b/ripd/ChangeLog
@@ -1,3 +1,12 @@
+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
diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c
index 17b25ff..0bc5a31 100644
--- a/ripd/rip_interface.c
+++ b/ripd/rip_interface.c
@@ -388,59 +388,6 @@
   return 0;
 }
 
-/* is this address from a valid neighbor? (RFC2453 - Sec. 3.9.2) */
-int
-if_valid_neighbor (struct in_addr addr)
-{
-  struct listnode *node;
-  struct connected *connected = NULL;
-  struct interface *ifp;
-  struct prefix_ipv4 *p;
-  struct prefix_ipv4 pa;
-
-  pa.family = AF_INET;
-  pa.prefix = addr;
-  pa.prefixlen = IPV4_MAX_PREFIXLEN;
-
-  for (ALL_LIST_ELEMENTS_RO (iflist, node, ifp))
-    {
-      struct listnode *cnode;
-
-      for (ALL_LIST_ELEMENTS_RO (ifp->connected, cnode, connected))
-	{
-	  if (if_is_pointopoint (ifp))
-	    {
-	      p = (struct prefix_ipv4 *) connected->address;
-
-	      if (p && p->family == AF_INET)
-		{
-		  if (IPV4_ADDR_SAME (&p->prefix, &addr))
-		    return 1;
-
-		  p = (struct prefix_ipv4 *) connected->destination;
-		  if (p)
-		    {
-		      if (IPV4_ADDR_SAME (&p->prefix, &addr))
-			return 1;
-		    }
-		  else
-		    {
-		      if (prefix_match(connected->address,(struct prefix *)&pa))
-			return 1;
-		    }
-		}
-	    }
-	  else
-	    {
-	      if ((connected->address->family == AF_INET) &&
-		  prefix_match(connected->address,(struct prefix *)&pa))
-		return 1;
-	    }
-	}
-    }
-  return 0;
-}
-
 /* Inteface link down message processing. */
 int
 rip_interface_down (int command, struct zclient *zclient, zebra_size_t length)
diff --git a/ripd/ripd.c b/ripd/ripd.c
index 2e2b284..ec7bd19 100644
--- a/ripd/ripd.c
+++ b/ripd/ripd.c
@@ -1131,8 +1131,8 @@
 
   /* The datagram's IPv4 source address should be checked to see
      whether the datagram is from a valid neighbor; the source of the
-     datagram must be on a directly connected network  */
-  if (! if_valid_neighbor (from->sin_addr)) 
+     datagram must be on a directly connected network (RFC2453 - Sec. 3.9.2) */
+  if (if_lookup_address(from->sin_addr) == NULL) 
     {
       zlog_info ("This datagram doesn't came from a valid neighbor: %s",
 		 inet_ntoa (from->sin_addr));
diff --git a/ripd/ripd.h b/ripd/ripd.h
index cc4aef6..4d0c04e 100644
--- a/ripd/ripd.h
+++ b/ripd/ripd.h
@@ -391,7 +391,6 @@
 extern void rip_zclient_reset (void);
 extern void rip_offset_init (void);
 extern int if_check_address (struct in_addr addr);
-extern int if_valid_neighbor (struct in_addr addr);
 
 extern int rip_request_send (struct sockaddr_in *, struct interface *, u_char,
                       struct connected *);
