-#define PIM_MASK_PIM_PACKETS (1 << 1)
-#define PIM_MASK_PIM_PACKETDUMP_SEND (1 << 2)
-#define PIM_MASK_PIM_PACKETDUMP_RECV (1 << 3)
-#define PIM_MASK_PIM_TRACE (1 << 4)
-#define PIM_MASK_IGMP_EVENTS (1 << 5)
-#define PIM_MASK_IGMP_PACKETS (1 << 6)
-#define PIM_MASK_IGMP_TRACE (1 << 7)
-#define PIM_MASK_ZEBRA (1 << 8)
-#define PIM_MASK_SSMPINGD (1 << 9)
-#define PIM_MASK_MROUTE (1 << 10)
-#define PIM_MASK_PIM_HELLO (1 << 11)
-#define PIM_MASK_PIM_J_P (1 << 12)
-#define PIM_MASK_STATIC (1 << 13)
+#define PIM_MASK_PIM_EVENTS_DETAIL (1 << 1)
+#define PIM_MASK_PIM_PACKETS (1 << 2)
+#define PIM_MASK_PIM_PACKETDUMP_SEND (1 << 3)
+#define PIM_MASK_PIM_PACKETDUMP_RECV (1 << 4)
+#define PIM_MASK_PIM_TRACE (1 << 5)
+#define PIM_MASK_PIM_TRACE_DETAIL (1 << 6)
+#define PIM_MASK_IGMP_EVENTS (1 << 7)
+#define PIM_MASK_IGMP_PACKETS (1 << 8)
+#define PIM_MASK_IGMP_TRACE (1 << 9)
+#define PIM_MASK_IGMP_TRACE_DETAIL (1 << 10)
+#define PIM_MASK_ZEBRA (1 << 11)
+#define PIM_MASK_SSMPINGD (1 << 12)
+#define PIM_MASK_MROUTE (1 << 13)
+#define PIM_MASK_MROUTE_DETAIL (1 << 14)
+#define PIM_MASK_PIM_HELLO (1 << 15)
+#define PIM_MASK_PIM_J_P (1 << 16)
+#define PIM_MASK_STATIC (1 << 17)
+#define PIM_MASK_PIM_REG (1 << 18)
+#define PIM_MASK_MSDP_EVENTS (1 << 19)
+#define PIM_MASK_MSDP_PACKETS (1 << 20)
+#define PIM_MASK_MSDP_INTERNAL (1 << 21)
+
+
+/* PIM error codes */
+#define PIM_SUCCESS 0
+#define PIM_MALLOC_FAIL -1
+#define PIM_GROUP_BAD_ADDRESS -2
+#define PIM_GROUP_OVERLAP -3
+#define PIM_GROUP_PFXLIST_OVERLAP -4
+#define PIM_RP_BAD_ADDRESS -5
+#define PIM_RP_NO_PATH -6
+#define PIM_RP_NOT_FOUND -7
+#define PIM_RP_PFXLIST_IN_USE -8
+#define PIM_IFACE_NOT_FOUND -9
+#define PIM_UPDATE_SOURCE_DUP -10