[pim] Packet dump debugging
diff --git a/pimd/pim_util.c b/pimd/pim_util.c
index 5bc8d07..13230c0 100644
--- a/pimd/pim_util.c
+++ b/pimd/pim_util.c
@@ -20,6 +20,10 @@
$QuaggaId: $Format:%an, %ai, %h$ $
*/
+#include <zebra.h>
+
+#include "log.h"
+
#include "pim_util.h"
/*
@@ -130,3 +134,26 @@
return checksum;
}
#endif /* PIM_USE_QUAGGA_INET_CHECKSUM */
+
+void pim_pkt_dump(const char *label, const char *buf, int size)
+{
+ char dump_buf[1000];
+ int i = 0;
+ int j = 0;
+
+ for (; i < size; ++i, j += 3) {
+ int left = sizeof(dump_buf) - j;
+ if (left < 4) {
+ if (left > 1) {
+ strcat(dump_buf + j, "!"); /* mark as truncated */
+ }
+ break;
+ }
+ snprintf(dump_buf + j, left, " %02x", buf[i]);
+ }
+
+ zlog_debug("%s: pkt dump size=%d:%s",
+ label,
+ size,
+ dump_buf);
+}