Implementation of unknown NSVC alarm.
The alarm cause ID is defined by NuRAN Wireless.

Change-Id: I48ee1c23cd299b5208487472d802d339c55c99e6
diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp
index 4c7ca7c..75f7e05 100644
--- a/src/gprs_bssgp_pcu.cpp
+++ b/src/gprs_bssgp_pcu.cpp
@@ -488,6 +488,8 @@
 	nssd = (struct ns_signal_data *)signal_data;
 	if (nssd->nsvc != the_pcu.nsvc) {
 		LOGP(DPCU, LOGL_ERROR, "Signal received of unknown NSVC\n");
+		memcpy(alarm_sig_data.spare, &nssd->nsvc->nsvci, sizeof(uint16_t));
+		osmo_signal_dispatch(SS_L_GLOBAL, S_PCU_NM_UNKN_NSVC_ALARM, &alarm_sig_data);
 		return -EINVAL;
 	}
 
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 57beaf9..c19f335 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -772,6 +772,17 @@
 				sig_data->add_text);
 		break;
 
+	case S_PCU_NM_UNKN_NSVC_ALARM:
+		memcpy(&val, sig_data->spare, sizeof(uint16_t));
+		snprintf(log_msg, 100, "PCU: Rx unknown NSVC %d\n", val);
+		sig_data->add_text = &log_msg[0];
+		rc = pcu_tx_nm_fail_evt(NM_EVT_COMM_FAIL,
+				NM_SEVER_MAJOR,
+				NM_PCAUSE_T_MANUF,
+				PCU_NM_EVT_CAUSE_MAJ_UNKN_NSVC,
+				sig_data->add_text);
+		break;
+
 	default:
 		break;
 	}
diff --git a/src/pcuif_proto.h b/src/pcuif_proto.h
index f3d9214..8bd7488 100644
--- a/src/pcuif_proto.h
+++ b/src/pcuif_proto.h
@@ -68,6 +68,7 @@
 	PCU_NM_EVT_CAUSE_MAJ_UKWN_L1_PRIM_MSG	= 0x3013,
 	PCU_NM_EVT_CAUSE_MAJ_UKWN_BTS_MSG	= 0x3014,
 	PCU_NM_EVT_CAUSE_MAJ_PDTCH_QUEUE_FULL	= 0x333a,
+	PCU_NM_EVT_CAUSE_MAJ_UNKN_NSVC	= 0x3314,
 	PCU_NM_EVT_CAUSE_MAJ_UNKN_NSEI_BVCI	= 0x3317,
 	PCU_NM_EVT_CAUSE_MAJ_PTP_BVC_FAIL	= 0x3318,
 	/* Warning causes */