gprs: Use 'Network failure' as default cause

This commit adds a check after a GSUP message has been decoded
whether it is an error message and does not contain a cause value.
If his is the case, the cause value is set to 'Network failure', so
that this cause if effectively the default value for error messages.

Sponsored-by: On-Waves ehf
diff --git a/openbsc/tests/sgsn/sgsn_test.c b/openbsc/tests/sgsn/sgsn_test.c
index 25e0310..1036e41 100644
--- a/openbsc/tests/sgsn/sgsn_test.c
+++ b/openbsc/tests/sgsn/sgsn_test.c
@@ -451,6 +451,11 @@
 		0x02, 0x01, 0x02, /* IMSI unknown in HLR */
 	};
 
+	static const uint8_t purge_ms_err_no_cause[] = {
+		0x0d,
+		TEST_GSUP_IMSI1_IE,
+	};
+
 	static const uint8_t purge_ms_res[] = {
 		0x0e,
 		TEST_GSUP_IMSI1_IE,
@@ -588,6 +593,11 @@
 			     sizeof(purge_ms_err));
 	OSMO_ASSERT(rc == -GMM_CAUSE_IMSI_UNKNOWN);
 
+	/* Inject PurgeMsErr() GSUP message */
+	rc = rx_gsup_message(purge_ms_err_no_cause,
+			     sizeof(purge_ms_err_no_cause));
+	OSMO_ASSERT(rc == -GMM_CAUSE_NET_FAIL);
+
 	/* Inject InsertSubscrData GSUP message (unknown IMSI) */
 	last_updated_subscr = NULL;
 	rc = rx_gsup_message(insert_data_req, sizeof(insert_data_req));