diff --git a/lib/ChangeLog b/lib/ChangeLog
index f55578e..6701a90 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,5 +1,12 @@
 2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
+	* if.h: Fix comments to reflect that if_lookup_by_name and
+	  if_get_by_name now require the argument strings to be NUL-terminated.
+	* if.c: (if_lookup_by_name) Compare using strcmp.
+	  (if_get_by_name) Pass strlen(ifname) as 2nd arg to if_create.
+
+2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
 	* if.c: (if_nametoindex) The man page is rather vague, but it seems
 	  like the argument to if_nametoindex has an implicit maximum length
 	  of IFNAMSIZ characters.
diff --git a/lib/if.c b/lib/if.c
index a32cee0..dbf4f20 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -219,9 +219,7 @@
   for (node = listhead (iflist); node; nextnode (node))
     {
       ifp = getdata (node);
-      /* Change this to strcmp once improper uses of this function
-         have been replaced with calls to if_lookup_by_name_len. */
-      if (strncmp (name, ifp->name, sizeof ifp->name) == 0)
+      if (strcmp(name, ifp->name) == 0)
 	return ifp;
     }
   return NULL;
@@ -335,10 +333,8 @@
 {
   struct interface *ifp;
 
-  /* Replace 2nd arg to if_create with strlen(name) once improper uses of
-     this function have been replaced with calls to if_get_by_name_len. */
   return ((ifp = if_lookup_by_name(name)) != NULL) ? ifp :
-	 if_create(name, INTERFACE_NAMSIZ);
+	 if_create(name, strlen(name));
 }
 
 struct interface *
diff --git a/lib/if.h b/lib/if.h
index 4cfc9e7..6946865 100644
--- a/lib/if.h
+++ b/lib/if.h
@@ -217,20 +217,17 @@
 struct interface *if_lookup_exact_address (struct in_addr);
 struct interface *if_lookup_address (struct in_addr);
 
-/* Currently, the code assumes that the interface name arguments to these
-   functions have length <= INTERFACE_NAMSIZ, and they must be NUL-terminated
-   if they are shorter than INTERFACE_NAMSIZ.  After code cleanup, the
-   implementation will be changed to require the arguments to these functions
-   to terminate with a NUL character (no length limitation). */
-struct interface *if_lookup_by_name (const char *);
-struct interface *if_get_by_name (const char *);
+/* These 2 functions are to be used when the ifname argument is terminated
+   by a '\0' character: */
+struct interface *if_lookup_by_name (const char *ifname);
+struct interface *if_get_by_name (const char *ifname);
 
-/* For these 2 functions, the 2nd argument should be the precise length
-   of the interface name (not counting a trailing NUL which may or may
-   not be present). */
-extern struct interface *if_lookup_by_name_len(const char *name,
+/* For these 2 functions, the namelen argument should be the precise length
+   of the ifname string (not counting any optional trailing '\0' character).
+   In most cases, strnlen should be used to calculate the namelen value. */
+extern struct interface *if_lookup_by_name_len(const char *ifname,
 					       size_t namelen);
-extern struct interface *if_get_by_name_len(const char *name, size_t namelen);
+extern struct interface *if_get_by_name_len(const char *ifname, size_t namelen);
 
 
 /* Delete the interface, but do not free the structure, and leave it in the
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index 924f0f0..1d0f175 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,5 +1,12 @@
 2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
+	* if_ioctl.c: (interface_list_ioctl) Use if_get_by_name_len.
+	* if_proc.c: (ifaddr_proc_ipv6) Increase size of ifname buffer to
+	  avoid overflow.
+	* kernel_socket.c: (ifan_read) Use if_get_by_name_len.
+
+2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
 	* kernel_socket.c: (ifm_read) Use new if_lookup_by_name_len function
 	  to save a memcpy.
 	* if_ioctl_solaris.c: (interface_list_ioctl) Fix subtle bug with new
diff --git a/zebra/if_ioctl.c b/zebra/if_ioctl.c
index 90f18e2..0d7713d 100644
--- a/zebra/if_ioctl.c
+++ b/zebra/if_ioctl.c
@@ -102,7 +102,9 @@
       int size;
 
       ifreq = (struct ifreq *)((caddr_t) ifconf.ifc_req + n);
-      ifp = if_get_by_name (ifreq->ifr_name);
+      ifp = if_get_by_name_len(ifreq->ifr_name,
+			       strnlen(ifreq->ifr_name,
+				       sizeof(ifreq->ifr_name)));
       if_add_update (ifp);
       size = ifreq->ifr_addr.sa_len;
       if (size < sizeof (ifreq->ifr_addr))
@@ -113,7 +115,9 @@
 #else
   for (n = 0; n < ifconf.ifc_len; n += sizeof(struct ifreq))
     {
-      ifp = if_get_by_name (ifreq->ifr_name);
+      ifp = if_get_by_name_len(ifreq->ifr_name,
+			       strnlen(ifreq->ifr_name,
+				       sizeof(ifreq->ifr_name)));
       if_add_update (ifp);
       ifreq++;
     }
diff --git a/zebra/if_proc.c b/zebra/if_proc.c
index 504d2f3..3257d03 100644
--- a/zebra/if_proc.c
+++ b/zebra/if_proc.c
@@ -212,7 +212,7 @@
   char buf[PROCBUFSIZ];
   int n;
   char addr[33];
-  char ifname[20];
+  char ifname[21];
   int ifindex, plen, scope, status;
   struct interface *ifp;
   struct prefix_ipv6 p;
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index 1212563..c1f785d 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -201,7 +201,9 @@
   if (ifp == NULL && ifan->ifan_what == IFAN_ARRIVAL)
     {
       /* Create Interface */
-      ifp = if_get_by_name (ifan->ifan_name);
+      ifp = if_get_by_name_len(ifan->ifan_name,
+			       strnlen(ifan->ifan_name,
+				       sizeof(ifan->ifan_name)));
       ifp->ifindex = ifan->ifan_index;
 
       if_add_update (ifp);
