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
