diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index b7c4d5c..36d194a 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,11 @@
+2007-09-14 Denis Ovsienko
+
+	* rt_socket.c: (kernel_rtm_ipv4) Use lookup() instead of
+	  LOOKUP/mes_lookup() for rtm_type_str, as this is more
+	  appropriate for sparse code-spaces (#401).
+	* kernel_socket.c: (rtm_read, rtmsg_debug): Idem.
+	* kernel_socket.[ch]: We don't need rtm_type_str_max any more.
+
 2007-09-12 Denis Ovsienko
 
 	* rt_socket.c: (kernel_rtm_ipv4) prefix_buf could be passed
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index ff858bd..df2b5d8 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -160,7 +160,6 @@
 #endif /* RTM_IFANNOUNCE */
   {0,            NULL}
 };
-int rtm_type_str_max = sizeof (rtm_type_str) / sizeof (struct message) - 1;
 
 struct message rtm_flag_str[] =
 {
@@ -754,7 +753,7 @@
     return;
   if (IS_ZEBRA_DEBUG_KERNEL)
     zlog_debug ("%s: got rtm of type %d (%s)", __func__, rtm->rtm_type,
-      LOOKUP (rtm_type_str, rtm->rtm_type));
+      lookup (rtm_type_str, rtm->rtm_type));
 
 #ifdef RTF_CLONED	/*bsdi, netbsd 1.6*/
   if (flags & RTF_CLONED)
@@ -820,17 +819,17 @@
             {
               case ZEBRA_RIB_NOTFOUND:
                 zlog_debug ("%s: %s %s/%d: desync: RR isn't yet in RIB, while already in FIB",
-                  __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen);
+                  __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen);
                 break;
               case ZEBRA_RIB_FOUND_CONNECTED:
               case ZEBRA_RIB_FOUND_NOGATE:
                 inet_ntop (AF_INET, &gate.sin.sin_addr, gate_buf, INET_ADDRSTRLEN);
                 zlog_debug ("%s: %s %s/%d: desync: RR is in RIB, but gate differs (ours is %s)",
-                  __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen, gate_buf);
+                  __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen, gate_buf);
                 break;
               case ZEBRA_RIB_FOUND_EXACT: /* RIB RR == FIB RR */
                 zlog_debug ("%s: %s %s/%d: done Ok",
-                  __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen);
+                  __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen);
                 rib_lookup_and_dump (&p);
                 return;
                 break;
@@ -843,18 +842,18 @@
             {
               case ZEBRA_RIB_FOUND_EXACT:
                 zlog_debug ("%s: %s %s/%d: desync: RR is still in RIB, while already not in FIB",
-                  __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen);
+                  __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen);
                 rib_lookup_and_dump (&p);
                 break;
               case ZEBRA_RIB_FOUND_CONNECTED:
               case ZEBRA_RIB_FOUND_NOGATE:
                 zlog_debug ("%s: %s %s/%d: desync: RR is still in RIB, plus gate differs",
-                  __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen);
+                  __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen);
                 rib_lookup_and_dump (&p);
                 break;
               case ZEBRA_RIB_NOTFOUND: /* RIB RR == FIB RR */
                 zlog_debug ("%s: %s %s/%d: done Ok",
-                  __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen);
+                  __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen);
                 rib_lookup_and_dump (&p);
                 return;
                 break;
@@ -862,7 +861,7 @@
             break;
           default:
             zlog_debug ("%s: %s/%d: warning: loopback RTM of type %s received",
-              __func__, buf, p.prefixlen, LOOKUP (rtm_type_str, rtm->rtm_type));
+              __func__, buf, p.prefixlen, lookup (rtm_type_str, rtm->rtm_type));
         }
         return;
       }
@@ -1063,7 +1062,7 @@
 static void
 rtmsg_debug (struct rt_msghdr *rtm)
 {
-  zlog_debug ("Kernel: Len: %d Type: %s", rtm->rtm_msglen, LOOKUP (rtm_type_str, rtm->rtm_type));
+  zlog_debug ("Kernel: Len: %d Type: %s", rtm->rtm_msglen, lookup (rtm_type_str, rtm->rtm_type));
   rtm_flag_dump (rtm->rtm_flags);
   zlog_debug ("Kernel: message seq %d", rtm->rtm_seq);
   zlog_debug ("Kernel: pid %d, rtm_addrs 0x%x", rtm->rtm_pid, rtm->rtm_addrs);
diff --git a/zebra/kernel_socket.h b/zebra/kernel_socket.h
index c903786..8f8a207 100644
--- a/zebra/kernel_socket.h
+++ b/zebra/kernel_socket.h
@@ -29,6 +29,5 @@
 extern int rtm_write (int, union sockunion *, union sockunion *,
                       union sockunion *, unsigned int, int, int);
 extern struct message rtm_type_str[];
-extern int rtm_type_str_max;
 
 #endif /* __ZEBRA_KERNEL_SOCKET_H */
diff --git a/zebra/rt_socket.c b/zebra/rt_socket.c
index 63e4612..1b8ded7 100644
--- a/zebra/rt_socket.c
+++ b/zebra/rt_socket.c
@@ -211,14 +211,14 @@
                if (!IS_ZEBRA_DEBUG_RIB)
                  inet_ntop (AF_INET, &p->u.prefix, prefix_buf, INET_ADDRSTRLEN);
                zlog_err ("%s: %s/%d: rtm_write() unexpectedly returned %d for command %s",
-                 __func__, prefix_buf, p->prefixlen, error, LOOKUP (rtm_type_str, cmd));
+                 __func__, prefix_buf, p->prefixlen, error, lookup (rtm_type_str, cmd));
                break;
            }
          } /* if (cmd and flags make sense) */
        else
          if (IS_ZEBRA_DEBUG_RIB)
            zlog_debug ("%s: odd command %s for flags %d",
-             __func__, LOOKUP (rtm_type_str, cmd), nexthop->flags);
+             __func__, lookup (rtm_type_str, cmd), nexthop->flags);
      } /* for (nexthop = ... */
  
    /* If there was no useful nexthop, then complain. */
