gprs: Implement PURGE_MS GSUP messages

This commit implements the encoding and decoding of the messages

  - Purge MS Request
  - Purge MS Error
  - Purge MS Result

and adds corresponding tests.

Sponsored-by: On-Waves ehf
diff --git a/openbsc/src/gprs/gprs_gsup_messages.c b/openbsc/src/gprs/gprs_gsup_messages.c
index 1dad74f..8996fe2 100644
--- a/openbsc/src/gprs/gprs_gsup_messages.c
+++ b/openbsc/src/gprs/gprs_gsup_messages.c
@@ -237,6 +237,10 @@
 			gsup_msg->pdp_info_compl = 1;
 			break;
 
+		case GPRS_GSUP_FREEZE_PTMSI_IE:
+			gsup_msg->freeze_ptmsi = 1;
+			break;
+
 		case GPRS_GSUP_PDP_CONTEXT_ID_IE:
 			/* When these IE appear in the top-level part of the
 			 * message, they are used by Delete Subscr Info to delete
@@ -381,6 +385,9 @@
 	if (gsup_msg->pdp_info_compl)
 		msgb_tlv_put(msg, GPRS_GSUP_PDP_INFO_COMPL_IE, 0, &u8);
 
+	if (gsup_msg->freeze_ptmsi)
+		msgb_tlv_put(msg, GPRS_GSUP_FREEZE_PTMSI_IE, 0, &u8);
+
 	for (idx = 0; idx < gsup_msg->num_pdp_infos; idx++) {
 		const struct gprs_gsup_pdp_info *pdp_info;