diff -Nru zebra-0.95-pre2/lib/command.c zebra-0.95-pre2-zpimd/lib/command.c
--- zebra-0.95-pre2/lib/command.c	Tue Jun  1 07:03:58 2004
+++ zebra-0.95-pre2-zpimd/lib/command.c	Sat Oct 30 00:38:25 2004
@@ -2161,6 +2161,7 @@
     case KEYCHAIN_NODE:
     case MASC_NODE:
     case RMAP_NODE:
+    case PIM_NODE:
     case VTY_NODE:
       vty->node = CONFIG_NODE;
       break;
diff -Nru zebra-0.95-pre2/lib/command.h zebra-0.95-pre2-zpimd/lib/command.h
--- zebra-0.95-pre2/lib/command.h	Mon Jul  8 16:31:53 2002
+++ zebra-0.95-pre2-zpimd/lib/command.h	Sat Oct 30 00:41:30 2004
@@ -100,6 +100,7 @@
   SMUX_NODE,			/* SNMP configuration node. */
   DUMP_NODE,			/* Packet dump node. */
   FORWARDING_NODE,		/* IP forwarding node. */
+  PIM_NODE,			/* PIM node. */
   VTY_NODE			/* Vty node. */
 };
 
diff -Nru zebra-0.95-pre2/lib/log.h zebra-0.95-pre2-zpimd/lib/log.h
--- zebra-0.95-pre2/lib/log.h	Thu Nov 15 09:00:12 2001
+++ zebra-0.95-pre2-zpimd/lib/log.h	Sat Oct 30 00:38:25 2004
@@ -47,6 +47,7 @@
   ZLOG_OSPF,
   ZLOG_RIPNG,  
   ZLOG_OSPF6,
+  ZLOG_PIM,	
   ZLOG_MASC
 } zlog_proto_t;
 
diff -Nru zebra-0.95-pre2/lib/memory.c zebra-0.95-pre2-zpimd/lib/memory.c
--- zebra-0.95-pre2/lib/memory.c	Tue Nov  4 20:10:16 2003
+++ zebra-0.95-pre2-zpimd/lib/memory.c	Sat Oct 30 00:40:45 2004
@@ -373,6 +373,18 @@
   { -1, NULL },
 };
 
+struct memory_list memory_list_pim[] =
+{
+  { MTYPE_PIM_FIFO,           "PIM FIFO queue : %ld\r\n" },
+  { MTYPE_PIM_IF,             "PIM interface  : %ld\r\n" },
+  { MTYPE_PIM_OIF,            "PIM OIF        : %ld\r\n" },
+  { MTYPE_PIM_SG,             "PIM (S,G)      : %ld\r\n" },
+  { MTYPE_PIM_G,              "PIM/IGMP (*,G) : %ld\r\n" },
+  { MTYPE_PIM_SRC,            "Multicast src  : %ld\r\n" },
+  { MTYPE_PIM_NEIGHBOR,       "PIM neighbor   : %ld\r\n" },
+  { -1, NULL },
+};
+
 struct memory_list memory_list_separator[] =
 {
   { 0, NULL},
@@ -407,6 +419,7 @@
   show_memory_vty (vty, memory_list_ospf6);
   show_memory_vty (vty, memory_list_separator);
   show_memory_vty (vty, memory_list_bgp);
+  show_memory_vty (vty, memory_list_pim);
 
   return CMD_SUCCESS;
 }
@@ -472,6 +485,17 @@
   return CMD_SUCCESS;
 }
 
+DEFUN (show_memory_pim,
+       show_memory_pim_cmd,
+       "show memory pim",
+       SHOW_STR
+       "Memory statistics\n"
+       "PIM memory\n")
+{
+  show_memory_vty (vty, memory_list_pim);
+  return CMD_SUCCESS;
+}
+
 void
 memory_init ()
 {
@@ -482,6 +506,7 @@
   install_element (VIEW_NODE, &show_memory_bgp_cmd);
   install_element (VIEW_NODE, &show_memory_ospf_cmd);
   install_element (VIEW_NODE, &show_memory_ospf6_cmd);
+  install_element (VIEW_NODE, &show_memory_pim_cmd);
 
   install_element (ENABLE_NODE, &show_memory_cmd);
   install_element (ENABLE_NODE, &show_memory_all_cmd);
@@ -490,4 +515,5 @@
   install_element (ENABLE_NODE, &show_memory_bgp_cmd);
   install_element (ENABLE_NODE, &show_memory_ospf_cmd);
   install_element (ENABLE_NODE, &show_memory_ospf6_cmd);
+  install_element (ENABLE_NODE, &show_memory_pim_cmd);
 }
diff -Nru zebra-0.95-pre2/lib/memory.h zebra-0.95-pre2-zpimd/lib/memory.h
--- zebra-0.95-pre2/lib/memory.h	Wed Apr 28 18:03:39 2004
+++ zebra-0.95-pre2-zpimd/lib/memory.h	Sat Oct 30 00:39:31 2004
@@ -186,6 +186,15 @@
   MTYPE_VRF,
   MTYPE_VRF_NAME,
 
+  MTYPE_PIM_FIFO,
+  MTYPE_PIM_IF,
+  MTYPE_PIM_NEIGHBOR,
+  MTYPE_PIM_OIF,
+  MTYPE_PIM_SG,
+  MTYPE_PIM_G,
+  MTYPE_PIM_SRC,
+  MTYPE_IGMP_OIF,
+
   MTYPE_MAX
 };
 
