Add helper function to convert numerical BSSGP PDU type to string
diff --git a/src/gb/gprs_bssgp_util.c b/src/gb/gprs_bssgp_util.c
index 19ae23a..6fff362 100644
--- a/src/gb/gprs_bssgp_util.c
+++ b/src/gb/gprs_bssgp_util.c
@@ -62,11 +62,57 @@
 	{ 0, NULL },
 };
 
+static const struct value_string bssgp_pdu_strings[] = {
+	{ BSSGP_PDUT_DL_UNITDATA,		"DL-UNITDATA" },
+	{ BSSGP_PDUT_UL_UNITDATA,		"UL-UNITDATA" },
+	{ BSSGP_PDUT_RA_CAPABILITY,		"RA-CAPABILITY" },
+	{ BSSGP_PDUT_PTM_UNITDATA,		"PTM-UNITDATA" },
+	{ BSSGP_PDUT_PAGING_PS,			"PAGING-PS" },
+	{ BSSGP_PDUT_PAGING_CS,			"PAGING-CS" },
+	{ BSSGP_PDUT_RA_CAPA_UDPATE,		"RA-CAPABILITY-UPDATE" },
+	{ BSSGP_PDUT_RA_CAPA_UPDATE_ACK,	"RA-CAPABILITY-UPDATE-ACK" },
+	{ BSSGP_PDUT_RADIO_STATUS,		"RADIO-STATUS" },
+	{ BSSGP_PDUT_SUSPEND,			"SUSPEND" },
+	{ BSSGP_PDUT_SUSPEND_ACK,		"SUSPEND-ACK" },
+	{ BSSGP_PDUT_SUSPEND_NACK,		"SUSPEND-NACK" },
+	{ BSSGP_PDUT_RESUME,			"RESUME" },
+	{ BSSGP_PDUT_RESUME_ACK,		"RESUME-ACK" },
+	{ BSSGP_PDUT_RESUME_NACK,		"RESUME-NACK" },
+	{ BSSGP_PDUT_BVC_BLOCK,			"BVC-BLOCK" },
+	{ BSSGP_PDUT_BVC_BLOCK_ACK,		"BVC-BLOCK-ACK" },
+	{ BSSGP_PDUT_BVC_RESET,			"BVC-RESET" },
+	{ BSSGP_PDUT_BVC_RESET_ACK,		"BVC-RESET-ACK" },
+	{ BSSGP_PDUT_BVC_UNBLOCK,		"BVC-UNBLOCK" },
+	{ BSSGP_PDUT_BVC_UNBLOCK_ACK,		"BVC-UNBLOCK-ACK" },
+	{ BSSGP_PDUT_FLOW_CONTROL_BVC,		"FLOW-CONTROL-BVC" },
+	{ BSSGP_PDUT_FLOW_CONTROL_BVC_ACK,	"FLOW-CONTROL-BVC-ACK" },
+	{ BSSGP_PDUT_FLOW_CONTROL_MS,		"FLOW-CONTROL-MS" },
+	{ BSSGP_PDUT_FLOW_CONTROL_MS_ACK,	"FLOW-CONTROL-MS-ACK" },
+	{ BSSGP_PDUT_FLUSH_LL,			"FLUSH-LL" },
+	{ BSSGP_PDUT_FLUSH_LL_ACK,		"FLUSH-LL-ACK" },
+	{ BSSGP_PDUT_LLC_DISCARD,		"LLC DISCARDED" },
+	{ BSSGP_PDUT_SGSN_INVOKE_TRACE,		"SGSN-INVOKE-TRACE" },
+	{ BSSGP_PDUT_STATUS,			"STATUS" },
+	{ BSSGP_PDUT_DOWNLOAD_BSS_PFC,		"DOWNLOAD-BSS-PFC" },
+	{ BSSGP_PDUT_CREATE_BSS_PFC,		"CREATE-BSS-PFC" },
+	{ BSSGP_PDUT_CREATE_BSS_PFC_ACK,	"CREATE-BSS-PFC-ACK" },
+	{ BSSGP_PDUT_CREATE_BSS_PFC_NACK,	"CREATE-BSS-PFC-NACK" },
+	{ BSSGP_PDUT_MODIFY_BSS_PFC,		"MODIFY-BSS-PFC" },
+	{ BSSGP_PDUT_MODIFY_BSS_PFC_ACK,	"MODIFY-BSS-PFC-ACK" },
+	{ BSSGP_PDUT_DELETE_BSS_PFC,		"DELETE-BSS-PFC" },
+	{ BSSGP_PDUT_DELETE_BSS_PFC_ACK,	"DELETE-BSS-PFC-ACK" },
+	{ 0, NULL },
+};
+
 const char *bssgp_cause_str(enum gprs_bssgp_cause cause)
 {
 	return get_value_string(bssgp_cause_strings, cause);
 }
 
+const char *bssgp_pdu_str(enum bssgp_pdu_type pdu)
+{
+	return get_value_string(bssgp_pdu_strings, pdu);
+}
 
 struct msgb *bssgp_msgb_alloc(void)
 {