sgsn: Add SGSN_ERROR_CAUSE_NONE and use it instead of 0

Currently an error_cause of 0 is being used to indicate normal
operation. Albeit this is not a defined GMM cause, the value is not
explicitly reserved.

This commit adds the macro SGSN_ERROR_CAUSE_NONE and uses it for
initialisation (instead of relying on talloc_zero) and comparisons.
The value is set to -1 to be on the safe side. The VTY code is
updated to set the error_cause when using the
'update-subscriber imsi IMSI update-location-result CAUSE' command.

Sponsored-by: On-Waves ehf
diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c
index 8b7cc9f..32fb8e4 100644
--- a/openbsc/src/gprs/gprs_gmm.c
+++ b/openbsc/src/gprs/gprs_gmm.c
@@ -654,7 +654,7 @@
 
 void gsm0408_gprs_access_denied(struct sgsn_mm_ctx *ctx, int gmm_cause)
 {
-	if (gmm_cause == 0)
+	if (gmm_cause == SGSN_ERROR_CAUSE_NONE)
 		gmm_cause = GMM_CAUSE_GPRS_NOTALLOWED;
 
 	switch (ctx->mm_state) {
@@ -690,7 +690,7 @@
 
 void gsm0408_gprs_access_cancelled(struct sgsn_mm_ctx *ctx, int gmm_cause)
 {
-	if (gmm_cause != 0) {
+	if (gmm_cause != SGSN_ERROR_CAUSE_NONE) {
 		LOGMMCTXP(LOGL_INFO, ctx,
 			  "Cancelled with cause '%s' (%d), deleting context\n",
 			  get_value_string(gsm48_gmm_cause_names, gmm_cause),