diff --git a/lib/ChangeLog b/lib/ChangeLog
index 2bacff1..6f27b8d 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,19 @@
+2005-04-15 Paul Jakma <paul@dishone.st>
+
+	* memtypes.c: The new, unified location for memory type definitions.
+	  The memtype enum and declarations for memory_lists are built from
+          this automatically and put into memtypes.h.
+        * memtypes.awk: New script to generate memtypes.h from memtypes.c
+        * memory.h: Finally, the enum can banished!
+        * memory.c: Finally, the seperate mtype memory_list definitions can
+          be banished!
+          (log_memstats) Increase width of fields
+          (show_memory_zebra_cmd) display zebra specific memory types.
+          Increase width of fields.
+        * Makefile.am: Add memtypes.{c,h}, add BUILT_SOURCES for memtypes.h
+          Add a rule to build memtypes.h using memtypes.awk.
+          Add memtypes.awk to EXTRA_DIST.
+
 2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* zclient.h (struct zclient): Add two fields to support non-blocking
diff --git a/lib/Makefile.am b/lib/Makefile.am
index bc321b6..93442c8 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -12,7 +12,9 @@
 	sockunion.c prefix.c thread.c if.c memory.c buffer.c table.c hash.c \
 	filter.c routemap.c distribute.c stream.c str.c log.c plist.c \
 	zclient.c sockopt.c smux.c md5.c if_rmap.c keychain.c privs.c \
-	sigevent.c pqueue.c jhash.c
+	sigevent.c pqueue.c jhash.c memtypes.c
+
+BUILT_SOURCES = memtypes.h
 
 libzebra_la_DEPENDENCIES = @LIB_REGEX@
 
@@ -23,7 +25,9 @@
 	memory.h network.h prefix.h routemap.h distribute.h sockunion.h \
 	str.h stream.h table.h thread.h vector.h version.h vty.h zebra.h \
 	plist.h zclient.h sockopt.h smux.h md5-gnu.h if_rmap.h keychain.h \
-	privs.h sigevent.h pqueue.h jhash.h zassert.h
+	privs.h sigevent.h pqueue.h jhash.h zassert.h memtypes.h
 
-EXTRA_DIST = regex.c regex-gnu.h
+EXTRA_DIST = regex.c regex-gnu.h memtypes.awk
 
+memtypes.h: memtypes.c memtypes.awk
+	($(AWK) -f memtypes.awk memtypes.c > memtypes.h)
diff --git a/lib/memory.c b/lib/memory.c
index bad884e..335a921 100644
--- a/lib/memory.c
+++ b/lib/memory.c
@@ -233,200 +233,6 @@
 #include "vty.h"
 #include "command.h"
 
-/* For pretty printng of memory allocate information. */
-struct memory_list
-{
-  int index;
-  const char *format;
-};
-
-static struct memory_list memory_list_lib[] =
-{
-  { MTYPE_TMP,                "Temporary memory" },
-  { MTYPE_ROUTE_TABLE,        "Route table     " },
-  { MTYPE_ROUTE_NODE,         "Route node      " },
-  { MTYPE_RIB,                "RIB             " },
-  { MTYPE_DISTRIBUTE,         "Distribute list " },
-  { MTYPE_DISTRIBUTE_IFNAME,  "Dist-list ifname" },
-  { MTYPE_NEXTHOP,            "Nexthop         " },
-  { MTYPE_LINK_LIST,          "Link List       " },
-  { MTYPE_LINK_NODE,          "Link Node       " },
-  { MTYPE_HASH,               "Hash            " },
-  { MTYPE_HASH_BACKET,        "Hash Bucket     " },
-  { MTYPE_ACCESS_LIST,        "Access List     " },
-  { MTYPE_ACCESS_LIST_STR,    "Access List Str " },
-  { MTYPE_ACCESS_FILTER,      "Access Filter   " },
-  { MTYPE_PREFIX_LIST,        "Prefix List     " },
-  { MTYPE_PREFIX_LIST_STR,    "Prefix List Str " },
-  { MTYPE_PREFIX_LIST_ENTRY,  "Prefix List Entry "},
-  { MTYPE_ROUTE_MAP,          "Route map       " },
-  { MTYPE_ROUTE_MAP_NAME,     "Route map name  " },
-  { MTYPE_ROUTE_MAP_INDEX,    "Route map index " },
-  { MTYPE_ROUTE_MAP_RULE,     "Route map rule  " },
-  { MTYPE_ROUTE_MAP_RULE_STR, "Route map rule str" },
-  { MTYPE_ROUTE_MAP_COMPILED, "Route map compiled" },
-  { MTYPE_DESC,               "Command desc    " },
-  { MTYPE_BUFFER,             "Buffer          " },
-  { MTYPE_BUFFER_DATA,        "Buffer data     " },
-  { MTYPE_STREAM,             "Stream          " },
-  { MTYPE_KEYCHAIN,           "Key chain       " },
-  { MTYPE_KEY,                "Key             " },
-  { MTYPE_VTY,                "VTY             " },
-  { -1, NULL }
-};
-
-static struct memory_list memory_list_bgp[] =
-{
-  { MTYPE_BGP_PEER,               "BGP peer" },
-  { MTYPE_ATTR,                   "BGP attribute" },
-  { MTYPE_AS_PATH,                "BGP aspath" },
-  { MTYPE_AS_SEG,                 "BGP aspath seg" },
-  { MTYPE_AS_STR,                 "BGP aspath str" },
-  { 0, NULL },
-  { MTYPE_BGP_TABLE,              "BGP table" },
-  { MTYPE_BGP_NODE,               "BGP node" },
-  { MTYPE_BGP_ADVERTISE_ATTR,     "BGP adv attr" },
-  { MTYPE_BGP_ADVERTISE,          "BGP adv" },
-  { MTYPE_BGP_ADJ_IN,             "BGP adj in" },
-  { MTYPE_BGP_ADJ_OUT,            "BGP adj out" },
-  { 0, NULL },
-  { MTYPE_AS_LIST,                "BGP AS list" },
-  { MTYPE_AS_FILTER,              "BGP AS filter" },
-  { MTYPE_AS_FILTER_STR,          "BGP AS filter str" },
-  { 0, NULL },
-  { MTYPE_COMMUNITY,              "community" },
-  { MTYPE_COMMUNITY_VAL,          "community val" },
-  { MTYPE_COMMUNITY_STR,          "community str" },
-  { 0, NULL },
-  { MTYPE_ECOMMUNITY,             "extcommunity" },
-  { MTYPE_ECOMMUNITY_VAL,         "extcommunity val" },
-  { MTYPE_ECOMMUNITY_STR,         "extcommunity str" },
-  { 0, NULL },
-  { MTYPE_COMMUNITY_LIST,         "community-list" },
-  { MTYPE_COMMUNITY_LIST_NAME,    "community-list name" },
-  { MTYPE_COMMUNITY_LIST_ENTRY,   "community-list entry" },
-  { MTYPE_COMMUNITY_LIST_CONFIG,  "community-list config" },
-  { 0, NULL },
-  { MTYPE_CLUSTER,                "Cluster list" },
-  { MTYPE_CLUSTER_VAL,            "Cluster list val" },
-  { 0, NULL },
-  { MTYPE_TRANSIT,                "BGP transit attr" },
-  { MTYPE_TRANSIT_VAL,            "BGP transit val" },
-  { 0, NULL },
-  { MTYPE_BGP_DISTANCE,           "BGP distance" },
-  { MTYPE_BGP_NEXTHOP_CACHE,      "BGP nexthop" },
-  { MTYPE_BGP_CONFED_LIST,        "BGP confed list" },
-  { MTYPE_PEER_UPDATE_SOURCE,     "peer update if" },
-  { MTYPE_BGP_DAMP_INFO,          "Dampening info" },
-  { MTYPE_BGP_REGEXP,             "BGP regexp" },
-  { -1, NULL }
-};
-
-static struct memory_list memory_list_rip[] =
-{
-  { MTYPE_RIP,                "RIP structure   " },
-  { MTYPE_RIP_INFO,           "RIP route info  " },
-  { MTYPE_RIP_INTERFACE,      "RIP interface   " },
-  { MTYPE_RIP_PEER,           "RIP peer        " },
-  { MTYPE_RIP_OFFSET_LIST,    "RIP offset list " },
-  { MTYPE_RIP_DISTANCE,       "RIP distance    " },
-  { -1, NULL }
-};
-
-static struct memory_list memory_list_ripng[] =
-{
-  { MTYPE_RIPNG,              "RIPng structure " },
-  { MTYPE_RIPNG_ROUTE,        "RIPng route info" },
-  { MTYPE_RIPNG_AGGREGATE,    "RIPng aggregate " },
-  { MTYPE_RIPNG_PEER,         "RIPng peer      " },
-  { MTYPE_RIPNG_OFFSET_LIST,  "RIPng offset lst" },
-  { MTYPE_RIPNG_RTE_DATA,     "RIPng rte data  " },
-  { -1, NULL }
-};
-
-static struct memory_list memory_list_ospf[] =
-{
-  { MTYPE_OSPF_TOP,           "OSPF top        " },
-  { MTYPE_OSPF_AREA,          "OSPF area       " },
-  { MTYPE_OSPF_AREA_RANGE,    "OSPF area range " },
-  { MTYPE_OSPF_NETWORK,       "OSPF network    " },
-#ifdef NBMA_ENABLE
-  { MTYPE_OSPF_NEIGHBOR_STATIC,"OSPF static nbr " },
-#endif  /* NBMA_ENABLE */
-  { MTYPE_OSPF_IF,            "OSPF interface  " },
-  { MTYPE_OSPF_NEIGHBOR,      "OSPF neighbor   " },
-  { MTYPE_OSPF_ROUTE,         "OSPF route      " },
-  { MTYPE_OSPF_TMP,           "OSPF tmp mem    " },
-  { MTYPE_OSPF_LSA,           "OSPF LSA        " },
-  { MTYPE_OSPF_LSA_DATA,      "OSPF LSA data   " },
-  { MTYPE_OSPF_LSDB,          "OSPF LSDB       " },
-  { MTYPE_OSPF_PACKET,        "OSPF packet     " },
-  { MTYPE_OSPF_FIFO,          "OSPF FIFO queue " },
-  { MTYPE_OSPF_VERTEX,        "OSPF vertex     " },
-  { MTYPE_OSPF_NEXTHOP,       "OSPF nexthop    " },
-  { MTYPE_OSPF_PATH,	      "OSPF path       " },
-  { MTYPE_OSPF_VL_DATA,       "OSPF VL data    " },
-  { MTYPE_OSPF_CRYPT_KEY,     "OSPF crypt key  " },
-  { MTYPE_OSPF_EXTERNAL_INFO, "OSPF ext. info  " },
-  { MTYPE_OSPF_DISTANCE,      "OSPF distance   " },
-  { MTYPE_OSPF_IF_INFO,       "OSPF if info    " },
-  { MTYPE_OSPF_IF_PARAMS,     "OSPF if params  " },
-  { -1, NULL },
-};
-
-static struct memory_list memory_list_ospf6[] =
-{
-  { MTYPE_OSPF6_TOP,          "OSPF6 top         " },
-  { MTYPE_OSPF6_AREA,         "OSPF6 area        " },
-  { MTYPE_OSPF6_IF,           "OSPF6 interface   " },
-  { MTYPE_OSPF6_NEIGHBOR,     "OSPF6 neighbor    " },
-  { MTYPE_OSPF6_ROUTE,        "OSPF6 route       " },
-  { MTYPE_OSPF6_PREFIX,       "OSPF6 prefix      " },
-  { MTYPE_OSPF6_MESSAGE,      "OSPF6 message     " },
-  { MTYPE_OSPF6_LSA,          "OSPF6 LSA         " },
-  { MTYPE_OSPF6_LSA_SUMMARY,  "OSPF6 LSA summary " },
-  { MTYPE_OSPF6_LSDB,         "OSPF6 LSA database" },
-  { MTYPE_OSPF6_VERTEX,       "OSPF6 vertex      " },
-  { MTYPE_OSPF6_SPFTREE,      "OSPF6 SPF tree    " },
-  { MTYPE_OSPF6_NEXTHOP,      "OSPF6 nexthop     " },
-  { MTYPE_OSPF6_EXTERNAL_INFO,"OSPF6 ext. info   " },
-  { MTYPE_OSPF6_OTHER,        "OSPF6 other       " },
-  { -1, NULL },
-};
-
-static struct memory_list memory_list_isis[] =
-{
-  { MTYPE_ISIS,               "ISIS              " },
-  { MTYPE_ISIS_TMP,           "ISIS TMP          " },
-  { MTYPE_ISIS_CIRCUIT,       "ISIS circuit      " },
-  { MTYPE_ISIS_LSP,           "ISIS LSP          " },
-  { MTYPE_ISIS_ADJACENCY,     "ISIS adjacency    " },
-  { MTYPE_ISIS_AREA,          "ISIS area         " },
-  { MTYPE_ISIS_AREA_ADDR,     "ISIS area address " },
-  { MTYPE_ISIS_TLV,           "ISIS TLV          " },
-  { MTYPE_ISIS_DYNHN,         "ISIS dyn hostname " },
-  { MTYPE_ISIS_SPFTREE,       "ISIS SPFtree      " },
-  { MTYPE_ISIS_VERTEX,        "ISIS vertex       " },
-  { MTYPE_ISIS_ROUTE_INFO,    "ISIS route info   " },
-  { MTYPE_ISIS_NEXTHOP,       "ISIS nexthop      " },
-  { MTYPE_ISIS_NEXTHOP6,      "ISIS nexthop6     " },
-  { -1, NULL },
-};
-
-static struct mlist {
-  struct memory_list *list;
-  const char *name;
-} mlists[] = {
-  { memory_list_lib,   "LIB"},
-  { memory_list_rip,   "RIP"},
-  { memory_list_ripng, "RIPNG"},
-  { memory_list_ospf,  "OSPF"},
-  { memory_list_ospf6, "OSPF6"},
-  { memory_list_isis,  "ISIS"},
-  { memory_list_bgp,   "BGP"},
-  { NULL, NULL},
-};
-
 static void
 log_memstats(int pri)
 {
@@ -439,7 +245,7 @@
       zlog (NULL, pri, "Memory utilization in module %s:", ml->name);
       for (m = ml->list; m->index >= 0; m++)
 	if (m->index && mstat[m->index].alloc)
-	  zlog (NULL, pri, "  %-22s: %5ld", m->format, mstat[m->index].alloc);
+	  zlog (NULL, pri, "  %-30s: %10ld", m->format, mstat[m->index].alloc);
     }
 }
 
@@ -458,7 +264,7 @@
     if (m->index == 0)
       vty_out (vty, "-----------------------------\r\n");
     else
-      vty_out (vty, "%-22s: %5ld\r\n", m->format, mstat[m->index].alloc);
+      vty_out (vty, "%-22s: %10ld\r\n", m->format, mstat[m->index].alloc);
 }
 
 DEFUN (show_memory_all,
@@ -497,6 +303,17 @@
   return CMD_SUCCESS;
 }
 
+DEFUN (show_memory_zebra,
+       show_memory_zebra_cmd,
+       "show memory zebra",
+       SHOW_STR
+       "Memory statistics\n"
+       "Zebra memory\n")
+{
+  show_memory_vty (vty, memory_list_zebra);
+  return CMD_SUCCESS;
+}
+
 DEFUN (show_memory_rip,
        show_memory_rip_cmd,
        "show memory rip",
@@ -579,6 +396,7 @@
   install_element (ENABLE_NODE, &show_memory_cmd);
   install_element (ENABLE_NODE, &show_memory_all_cmd);
   install_element (ENABLE_NODE, &show_memory_lib_cmd);
+  install_element (ENABLE_NODE, &show_memory_zebra_cmd);
   install_element (ENABLE_NODE, &show_memory_rip_cmd);
   install_element (ENABLE_NODE, &show_memory_ripng_cmd);
   install_element (ENABLE_NODE, &show_memory_bgp_cmd);
diff --git a/lib/memory.h b/lib/memory.h
index 3ef0f48..7b47197 100644
--- a/lib/memory.h
+++ b/lib/memory.h
@@ -21,201 +21,23 @@
 #ifndef _ZEBRA_MEMORY_H
 #define _ZEBRA_MEMORY_H
 
-/* #define MEMORY_LOG */
+#include "memtypes.h"
 
-/* For tagging memory, below is the type of the memory. */
-enum
+/* For pretty printing of memory allocate information. */
+struct memory_list
 {
-  MTYPE_TMP = 1,
-  MTYPE_STRVEC,
-  MTYPE_VECTOR,
-  MTYPE_VECTOR_INDEX,
-  MTYPE_LINK_LIST,
-  MTYPE_LINK_NODE,
-  MTYPE_THREAD,
-  MTYPE_THREAD_MASTER,
-  MTYPE_THREAD_STATS,
-  MTYPE_THREAD_FUNCNAME,
-  MTYPE_VTY,
-  MTYPE_VTY_HIST,
-  MTYPE_VTY_OUT_BUF,
-  MTYPE_IF,
-  MTYPE_IF_IRDP,
-  MTYPE_CONNECTED,
-  MTYPE_AS_SEG,
-  MTYPE_AS_STR,
-  MTYPE_AS_PATH,
-  MTYPE_CLUSTER,
-  MTYPE_CLUSTER_VAL,
-  MTYPE_ATTR,
-  MTYPE_TRANSIT,
-  MTYPE_TRANSIT_VAL,
-  MTYPE_BUFFER,
-  MTYPE_BUFFER_DATA,
-  MTYPE_STREAM,
-  MTYPE_STREAM_DATA,
-  MTYPE_STREAM_FIFO,
-  MTYPE_PREFIX,
-  MTYPE_PREFIX_IPV4,
-  MTYPE_PREFIX_IPV6,
-  MTYPE_HASH,
-  MTYPE_HASH_INDEX,
-  MTYPE_HASH_BACKET,
-  MTYPE_ROUTE_TABLE,
-  MTYPE_ROUTE_NODE,
-  MTYPE_ACCESS_LIST,
-  MTYPE_ACCESS_LIST_STR,
-  MTYPE_ACCESS_FILTER,
-  MTYPE_PREFIX_LIST,
-  MTYPE_PREFIX_LIST_STR,
-  MTYPE_PREFIX_LIST_ENTRY,
-  MTYPE_ROUTE_MAP,
-  MTYPE_ROUTE_MAP_NAME,
-  MTYPE_ROUTE_MAP_INDEX,
-  MTYPE_ROUTE_MAP_RULE,
-  MTYPE_ROUTE_MAP_RULE_STR,
-  MTYPE_ROUTE_MAP_COMPILED,
-
-  MTYPE_RIB,
-  
-  MTYPE_DISTRIBUTE,
-  MTYPE_DISTRIBUTE_IFNAME,
-  MTYPE_ZLOG,
-  MTYPE_ZCLIENT,
-  MTYPE_NEXTHOP,
-  MTYPE_RTADV_PREFIX,
-  MTYPE_IF_RMAP,
-  MTYPE_SOCKUNION,
-  MTYPE_STATIC_IPV4,
-  MTYPE_STATIC_IPV6,
-
-  MTYPE_DESC,
-  MTYPE_OSPF_TOP,
-  MTYPE_OSPF_AREA,
-  MTYPE_OSPF_AREA_RANGE,
-  MTYPE_OSPF_NETWORK,
-  MTYPE_OSPF_NEIGHBOR_STATIC,
-  MTYPE_OSPF_IF,
-  MTYPE_OSPF_NEIGHBOR,
-  MTYPE_OSPF_ROUTE,
-  MTYPE_OSPF_TMP,
-  MTYPE_OSPF_LSA,
-  MTYPE_OSPF_LSA_DATA,
-  MTYPE_OSPF_LSDB,
-  MTYPE_OSPF_PACKET,
-  MTYPE_OSPF_FIFO,
-  MTYPE_OSPF_VERTEX,
-  MTYPE_OSPF_NEXTHOP,
-  MTYPE_OSPF_PATH,
-  MTYPE_OSPF_VL_DATA,
-  MTYPE_OSPF_CRYPT_KEY,
-  MTYPE_OSPF_EXTERNAL_INFO,
-  MTYPE_OSPF_MESSAGE,
-  MTYPE_OSPF_DISTANCE,
-  MTYPE_OSPF_IF_INFO,
-  MTYPE_OSPF_IF_PARAMS,
-
-  MTYPE_OSPF6_TOP,
-  MTYPE_OSPF6_AREA,
-  MTYPE_OSPF6_IF,
-  MTYPE_OSPF6_NEIGHBOR,
-  MTYPE_OSPF6_ROUTE,
-  MTYPE_OSPF6_PREFIX,
-  MTYPE_OSPF6_MESSAGE,
-  MTYPE_OSPF6_LSA,
-  MTYPE_OSPF6_LSA_SUMMARY,
-  MTYPE_OSPF6_LSDB,
-  MTYPE_OSPF6_VERTEX,
-  MTYPE_OSPF6_SPFTREE,
-  MTYPE_OSPF6_NEXTHOP,
-  MTYPE_OSPF6_EXTERNAL_INFO,
-  MTYPE_OSPF6_OTHER,
-
-  
-  MTYPE_ISIS,
-  MTYPE_ISIS_TMP,
-  MTYPE_ISIS_CIRCUIT,
-  MTYPE_ISIS_LSP,
-  MTYPE_ISIS_ADJACENCY,
-  MTYPE_ISIS_AREA,
-  MTYPE_ISIS_AREA_ADDR,
-  MTYPE_ISIS_TLV,
-  MTYPE_ISIS_DYNHN,
-  MTYPE_ISIS_SPFTREE,
-  MTYPE_ISIS_VERTEX,
-  MTYPE_ISIS_ROUTE_INFO,
-  MTYPE_ISIS_NEXTHOP,
-  MTYPE_ISIS_NEXTHOP6,
-
-  MTYPE_BGP,
-  MTYPE_BGP_PEER,
-  MTYPE_PEER_GROUP,
-  MTYPE_PEER_DESC,
-  MTYPE_PEER_UPDATE_SOURCE,
-  MTYPE_BGP_STATIC,
-  MTYPE_BGP_AGGREGATE,
-  MTYPE_BGP_CONFED_LIST,
-  MTYPE_BGP_NEXTHOP_CACHE,
-  MTYPE_BGP_DAMP_INFO,
-  MTYPE_BGP_DAMP_ARRAY,
-  MTYPE_BGP_ANNOUNCE,
-  MTYPE_BGP_ATTR_QUEUE,
-  MTYPE_BGP_ROUTE_QUEUE,
-  MTYPE_BGP_DISTANCE,
-  MTYPE_BGP_ROUTE,
-  MTYPE_BGP_TABLE,
-  MTYPE_BGP_NODE,
-  MTYPE_BGP_ADVERTISE_ATTR,
-  MTYPE_BGP_ADVERTISE,
-  MTYPE_BGP_ADJ_IN,
-  MTYPE_BGP_ADJ_OUT,
-  MTYPE_BGP_REGEXP,
-  MTYPE_AS_FILTER,
-  MTYPE_AS_FILTER_STR,
-  MTYPE_AS_LIST,
-
-  MTYPE_COMMUNITY,
-  MTYPE_COMMUNITY_VAL,
-  MTYPE_COMMUNITY_STR,
-
-  MTYPE_ECOMMUNITY,
-  MTYPE_ECOMMUNITY_VAL,
-  MTYPE_ECOMMUNITY_STR,
-
-  /* community-list and extcommunity-list.  */
-  MTYPE_COMMUNITY_LIST_HANDLER,
-  MTYPE_COMMUNITY_LIST,
-  MTYPE_COMMUNITY_LIST_NAME,
-  MTYPE_COMMUNITY_LIST_ENTRY,
-  MTYPE_COMMUNITY_LIST_CONFIG,
-
-  MTYPE_RIP,
-  MTYPE_RIP_INTERFACE,
-  MTYPE_RIP_DISTANCE,
-  MTYPE_RIP_OFFSET_LIST,
-  MTYPE_RIP_INFO,
-  MTYPE_RIP_PEER,
-  MTYPE_KEYCHAIN,
-  MTYPE_KEY,
-
-  MTYPE_RIPNG,
-  MTYPE_RIPNG_ROUTE,
-  MTYPE_RIPNG_AGGREGATE,
-  MTYPE_RIPNG_PEER,
-  MTYPE_RIPNG_OFFSET_LIST,
-  MTYPE_RIPNG_RTE_DATA,
-
-  MTYPE_VTYSH_CONFIG,
-  MTYPE_VTYSH_CONFIG_LINE,
-
-  MTYPE_VRF,
-  MTYPE_VRF_NAME,
-  
-  MTYPE_PRIVS,
-
-  MTYPE_MAX
+  int index;
+  const char *format;
 };
 
+struct mlist {
+  struct memory_list *list;
+  const char *name;
+};
+ 
+extern struct mlist mlists[];
+
+/* #define MEMORY_LOG */
 #ifdef MEMORY_LOG
 #define XMALLOC(mtype, size) \
   mtype_zmalloc (__FILE__, __LINE__, (mtype), (size))
diff --git a/lib/memtypes.awk b/lib/memtypes.awk
new file mode 100644
index 0000000..2da6547
--- /dev/null
+++ b/lib/memtypes.awk
@@ -0,0 +1,40 @@
+# $Id: memtypes.awk,v 1.1 2005/04/15 11:47:15 paul Exp $
+#
+# Scan a file of memory definitions (see eg memtypes.c) and generate
+# a corresponding header file with an enum of the MTYPE's and declarations
+# for the struct memory_list arrays
+#
+
+BEGIN {
+	mlistregex = "memory_list_(.*)\\[\\]";
+	mtyperegex = "^.*(MTYPE_[A-Z_0-9]+).*$";
+	header = "/* Auto-generated from memtypes.c by " ARGV[0] ". */\n";
+	header = header "/* Do not edit! */\n";
+	header = header "\n#ifndef _QUAGGA_MEMTYPES_H\n";
+	header = header "#define _QUAGGA_MEMTYPES_H\n";
+	footer = "\n#endif /* _QUAGGA_MEMTYPES_H */\n\n";
+	mlistformat = "extern struct memory_list memory_list_%s[];";
+	printf ("%s\n", header);
+}
+
+($0 ~ /^struct memory_list /) && (NF >= 3) {
+	mlists[lcount++] = gensub(mlistregex,"\\1",g,$3);
+}
+
+($1 != "/*") && ($1 != "*") && ($2 ~ /MTYPE_/) { 
+	mtype[tcount++] = gensub(mtyperegex,"\\1",1, $0);
+} 
+
+END {
+	printf("enum\n{\n  MTYPE_TMP = 1,\n"); 
+	for (i = 0; i < tcount; i++) {
+		if (mtype[i] != "" && mtype[i] != "MTYPE_TMP")
+			printf ("  %s,\n", mtype[i]);
+	}
+	printf ("  MTYPE_MAX,\n};\n\n");
+	for (i = 0; i < lcount; i++) {
+		if (mlists[i] != "")
+			printf (mlistformat "\n", mlists[i]);
+	}
+	printf (footer);
+}
diff --git a/lib/memtypes.c b/lib/memtypes.c
new file mode 100644
index 0000000..a643d43
--- /dev/null
+++ b/lib/memtypes.c
@@ -0,0 +1,244 @@
+/*
+ * Memory type definitions. This file is parsed by memtypes.awk to extract
+ * MTYPE_ and memory_list_.. information in order to autogenerate 
+ * memtypes.h.
+ *
+ * The script is sensitive to the format (though not whitespace), so 
+ * be careful. Comment lines /must/ start with either /* or *.
+ *
+ * $Id: memtypes.c,v 1.1 2005/04/15 11:47:15 paul Exp $
+ */
+
+#include "zebra.h"
+#include "memory.h"
+
+struct memory_list memory_list_lib[] =
+{
+  { MTYPE_TMP,			"Temporary memory"		},
+  { MTYPE_STRVEC,		"String vector"			},
+  { MTYPE_VECTOR,		"Vector"			},
+  { MTYPE_VECTOR_INDEX,		"Vector index"			},
+  { MTYPE_LINK_LIST,		"Link List"			},
+  { MTYPE_LINK_NODE,		"Link Node"			},
+  { MTYPE_THREAD,		"Thread"			},
+  { MTYPE_THREAD_MASTER,	"Thread master"			},
+  { MTYPE_THREAD_STATS,		"Thread stats"			},
+  { MTYPE_THREAD_FUNCNAME,	"Thread function name" 		},
+  { MTYPE_VTY,			"VTY"				},
+  { MTYPE_VTY_OUT_BUF,		"VTY output buffer"		},
+  { MTYPE_VTY_HIST,		"VTY history"			},
+  { MTYPE_IF,			"Interface"			},
+  { MTYPE_CONNECTED,		"Connected" 			},
+  { MTYPE_BUFFER,		"Buffer"			},
+  { MTYPE_BUFFER_DATA,		"Buffer data"			},
+  { MTYPE_STREAM,		"Stream"			},
+  { MTYPE_STREAM_DATA,		"Stream data"			},
+  { MTYPE_STREAM_FIFO,		"Stream FIFO"			},
+  { MTYPE_PREFIX,		"Prefix"			},
+  { MTYPE_PREFIX_IPV4,		"Prefix IPv4"			},
+  { MTYPE_PREFIX_IPV6,		"Prefix IPv6"			},
+  { MTYPE_HASH,			"Hash"				},
+  { MTYPE_HASH_BACKET,		"Hash Bucket"			},
+  { MTYPE_HASH_INDEX,		"Hash Index"			},
+  { MTYPE_ROUTE_TABLE,		"Route table"			},
+  { MTYPE_ROUTE_NODE,		"Route node"			},
+  { MTYPE_DISTRIBUTE,		"Distribute list"		},
+  { MTYPE_DISTRIBUTE_IFNAME,	"Dist-list ifname"		},
+  { MTYPE_ACCESS_LIST,		"Access List"			},
+  { MTYPE_ACCESS_LIST_STR,	"Access List Str"		},
+  { MTYPE_ACCESS_FILTER,	"Access Filter"			},
+  { MTYPE_PREFIX_LIST,		"Prefix List"			},
+  { MTYPE_PREFIX_LIST_ENTRY,	"Prefix List Str"		},
+  { MTYPE_PREFIX_LIST_STR,	"Prefix List Entry"		},
+  { MTYPE_ROUTE_MAP,		"Route map"			},
+  { MTYPE_ROUTE_MAP_NAME,	"Route map name"		},
+  { MTYPE_ROUTE_MAP_INDEX,	"Route map index"		},
+  { MTYPE_ROUTE_MAP_RULE,	"Route map rule"		},
+  { MTYPE_ROUTE_MAP_RULE_STR,	"Route map rule str"		},
+  { MTYPE_ROUTE_MAP_COMPILED,	"Route map compiled"		},
+  { MTYPE_DESC,			"Command desc"			},
+  { MTYPE_KEY,			"Key"				},
+  { MTYPE_KEYCHAIN,		"Key chain"			},
+  { MTYPE_IF_RMAP,		"Interface route map"		},
+  { MTYPE_SOCKUNION,		"Socket union"			},
+  { MTYPE_PRIVS,		"Privilege information"		},
+  { MTYPE_ZLOG,			"Logging"			},
+  { MTYPE_ZCLIENT,		"Zclient"			},
+  { -1, NULL },
+};
+
+struct memory_list memory_list_zebra[] = 
+{
+  { MTYPE_RTADV_PREFIX,		"Router Advertisement Prefix"	},
+  { MTYPE_VRF,			"VRF"				},
+  { MTYPE_VRF_NAME,		"VRF name"			},
+  { MTYPE_NEXTHOP,		"Nexthop"			},
+  { MTYPE_RIB,			"RIB"				},
+  { MTYPE_STATIC_IPV4,		"Static IPv4 route"		},
+  { MTYPE_STATIC_IPV6,		"Static IPv6 route"		},
+  { -1, NULL },
+};
+
+struct memory_list memory_list_bgp[] =
+{
+  { MTYPE_BGP,			"BGP instance"			},
+  { MTYPE_BGP_PEER,		"BGP peer"			},
+  { MTYPE_PEER_GROUP,		"Peer group"			},
+  { MTYPE_PEER_DESC,		"Peer description"		},
+  { MTYPE_ATTR,			"BGP attribute"			},
+  { MTYPE_AS_PATH,		"BGP aspath"			},
+  { MTYPE_AS_SEG,		"BGP aspath seg"		},
+  { MTYPE_AS_STR,		"BGP aspath str"		},
+  { 0, NULL },
+  { MTYPE_BGP_TABLE,		"BGP table"			},
+  { MTYPE_BGP_NODE,		"BGP node"			},
+  { MTYPE_BGP_ROUTE,		"BGP route"			},
+  { MTYPE_BGP_STATIC,		"BGP static"			},
+  { MTYPE_BGP_ADVERTISE_ATTR,	"BGP adv attr"			},
+  { MTYPE_BGP_ADVERTISE,	"BGP adv"			},
+  { MTYPE_BGP_ADJ_IN,		"BGP adj in"			},
+  { MTYPE_BGP_ADJ_OUT,		"BGP adj out"			},
+  { 0, NULL },
+  { MTYPE_AS_LIST,		"BGP AS list"			},
+  { MTYPE_AS_FILTER,		"BGP AS filter"			},
+  { MTYPE_AS_FILTER_STR,	"BGP AS filter str"		},
+  { 0, NULL },
+  { MTYPE_COMMUNITY,		"community"			},
+  { MTYPE_COMMUNITY_VAL,	"community val"			},
+  { MTYPE_COMMUNITY_STR,	"community str"			},
+  { 0, NULL },
+  { MTYPE_ECOMMUNITY,		"extcommunity"			},
+  { MTYPE_ECOMMUNITY_VAL,	"extcommunity val"		},
+  { MTYPE_ECOMMUNITY_STR,	"extcommunity str"		},
+  { 0, NULL },
+  { MTYPE_COMMUNITY_LIST,	"community-list"		},
+  { MTYPE_COMMUNITY_LIST_NAME,	"community-list name"		},
+  { MTYPE_COMMUNITY_LIST_ENTRY,	"community-list entry"		},
+  { MTYPE_COMMUNITY_LIST_CONFIG,  "community-list config"	},
+  { MTYPE_COMMUNITY_LIST_HANDLER, "community-list handler"	},
+  { 0, NULL },
+  { MTYPE_CLUSTER,		"Cluster list"			},
+  { MTYPE_CLUSTER_VAL,		"Cluster list val"		},
+  { 0, NULL },
+  { MTYPE_TRANSIT,		"BGP transit attr"		},
+  { MTYPE_TRANSIT_VAL,		"BGP transit val"		},
+  { 0, NULL },
+  { MTYPE_BGP_DISTANCE,		"BGP distance"			},
+  { MTYPE_BGP_NEXTHOP_CACHE,	"BGP nexthop"			},
+  { MTYPE_BGP_CONFED_LIST,	"BGP confed list"		},
+  { MTYPE_PEER_UPDATE_SOURCE,	"BGP peer update interface"	},
+  { MTYPE_BGP_DAMP_INFO,	"Dampening info"		},
+  { MTYPE_BGP_DAMP_ARRAY,	"BGP Dampening array"		},
+  { MTYPE_BGP_REGEXP,		"BGP regexp"			},
+  { MTYPE_BGP_AGGREGATE,	"BGP aggregate"			},
+  { -1, NULL }
+};
+
+struct memory_list memory_list_rip[] =
+{
+  { MTYPE_RIP,                "RIP structure"			},
+  { MTYPE_RIP_INFO,           "RIP route info"			},
+  { MTYPE_RIP_INTERFACE,      "RIP interface"			},
+  { MTYPE_RIP_PEER,           "RIP peer"			},
+  { MTYPE_RIP_OFFSET_LIST,    "RIP offset list"			},
+  { MTYPE_RIP_DISTANCE,       "RIP distance"			},
+  { -1, NULL }
+};
+
+struct memory_list memory_list_ripng[] =
+{
+  { MTYPE_RIPNG,              "RIPng structure"			},
+  { MTYPE_RIPNG_ROUTE,        "RIPng route info"		},
+  { MTYPE_RIPNG_AGGREGATE,    "RIPng aggregate"			},
+  { MTYPE_RIPNG_PEER,         "RIPng peer"			},
+  { MTYPE_RIPNG_OFFSET_LIST,  "RIPng offset lst"		},
+  { MTYPE_RIPNG_RTE_DATA,     "RIPng rte data"			},
+  { -1, NULL }
+};
+
+struct memory_list memory_list_ospf[] =
+{
+  { MTYPE_OSPF_TOP,           "OSPF top"			},
+  { MTYPE_OSPF_AREA,          "OSPF area"			},
+  { MTYPE_OSPF_AREA_RANGE,    "OSPF area range"			},
+  { MTYPE_OSPF_NETWORK,       "OSPF network"			},
+  { MTYPE_OSPF_NEIGHBOR_STATIC,"OSPF static nbr"		},
+  { MTYPE_OSPF_IF,            "OSPF interface"			},
+  { MTYPE_OSPF_NEIGHBOR,      "OSPF neighbor"			},
+  { MTYPE_OSPF_ROUTE,         "OSPF route"			},
+  { MTYPE_OSPF_TMP,           "OSPF tmp mem"			},
+  { MTYPE_OSPF_LSA,           "OSPF LSA"			},
+  { MTYPE_OSPF_LSA_DATA,      "OSPF LSA data"			},
+  { MTYPE_OSPF_LSDB,          "OSPF LSDB"			},
+  { MTYPE_OSPF_PACKET,        "OSPF packet"			},
+  { MTYPE_OSPF_FIFO,          "OSPF FIFO queue"			},
+  { MTYPE_OSPF_VERTEX,        "OSPF vertex"			},
+  { MTYPE_OSPF_NEXTHOP,       "OSPF nexthop"			},
+  { MTYPE_OSPF_PATH,	      "OSPF path"			},
+  { MTYPE_OSPF_VL_DATA,       "OSPF VL data"			},
+  { MTYPE_OSPF_CRYPT_KEY,     "OSPF crypt key"			},
+  { MTYPE_OSPF_EXTERNAL_INFO, "OSPF ext. info"			},
+  { MTYPE_OSPF_DISTANCE,      "OSPF distance"			},
+  { MTYPE_OSPF_IF_INFO,       "OSPF if info"			},
+  { MTYPE_OSPF_IF_PARAMS,     "OSPF if params"			},
+  { MTYPE_OSPF_MESSAGE,		"OSPF message"			},
+  { -1, NULL },
+};
+
+struct memory_list memory_list_ospf6[] =
+{
+  { MTYPE_OSPF6_TOP,          "OSPF6 top"			},
+  { MTYPE_OSPF6_AREA,         "OSPF6 area"			},
+  { MTYPE_OSPF6_IF,           "OSPF6 interface"			},
+  { MTYPE_OSPF6_NEIGHBOR,     "OSPF6 neighbor"			},
+  { MTYPE_OSPF6_ROUTE,        "OSPF6 route"			},
+  { MTYPE_OSPF6_PREFIX,       "OSPF6 prefix"			},
+  { MTYPE_OSPF6_MESSAGE,      "OSPF6 message"			},
+  { MTYPE_OSPF6_LSA,          "OSPF6 LSA"			},
+  { MTYPE_OSPF6_LSA_SUMMARY,  "OSPF6 LSA summary"		},
+  { MTYPE_OSPF6_LSDB,         "OSPF6 LSA database"		},
+  { MTYPE_OSPF6_VERTEX,       "OSPF6 vertex"			},
+  { MTYPE_OSPF6_SPFTREE,      "OSPF6 SPF tree"			},
+  { MTYPE_OSPF6_NEXTHOP,      "OSPF6 nexthop"			},
+  { MTYPE_OSPF6_EXTERNAL_INFO,"OSPF6 ext. info"			},
+  { MTYPE_OSPF6_OTHER,        "OSPF6 other"			},
+  { -1, NULL },
+};
+
+struct memory_list memory_list_isis[] =
+{
+  { MTYPE_ISIS,               "ISIS"				},
+  { MTYPE_ISIS_TMP,           "ISIS TMP"			},
+  { MTYPE_ISIS_CIRCUIT,       "ISIS circuit"			},
+  { MTYPE_ISIS_LSP,           "ISIS LSP"			},
+  { MTYPE_ISIS_ADJACENCY,     "ISIS adjacency"			},
+  { MTYPE_ISIS_AREA,          "ISIS area"			},
+  { MTYPE_ISIS_AREA_ADDR,     "ISIS area address"		},
+  { MTYPE_ISIS_TLV,           "ISIS TLV"			},
+  { MTYPE_ISIS_DYNHN,         "ISIS dyn hostname"		},
+  { MTYPE_ISIS_SPFTREE,       "ISIS SPFtree"			},
+  { MTYPE_ISIS_VERTEX,        "ISIS vertex"			},
+  { MTYPE_ISIS_ROUTE_INFO,    "ISIS route info"			},
+  { MTYPE_ISIS_NEXTHOP,       "ISIS nexthop"			},
+  { MTYPE_ISIS_NEXTHOP6,      "ISIS nexthop6"			},
+  { -1, NULL },
+};
+
+struct memory_list memory_list_vtysh[] =
+{
+  { MTYPE_VTYSH_CONFIG,		"Vtysh configuration",		},
+  { MTYPE_VTYSH_CONFIG_LINE,	"Vtysh configuration line"	},
+  { -1, NULL },
+};
+
+struct mlist mlists[] __attribute__ ((unused)) = {
+  { memory_list_lib,	"LIB"	},
+  { memory_list_zebra,	"ZEBRA"	},
+  { memory_list_rip,	"RIP"	},
+  { memory_list_ripng,	"RIPNG"	},
+  { memory_list_ospf,	"OSPF"	},
+  { memory_list_ospf6,	"OSPF6"	},
+  { memory_list_isis,	"ISIS"	},
+  { memory_list_bgp,	"BGP"	},
+  { NULL, NULL},
+};
