diff mncc/call_setup.c @ 28:660126bd5f59

themwi-mncc: fix one bug, add debug syslog output
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 28 Jun 2022 21:47:04 -0800
parents c6572f4c31d2
children 2ebad02adbe5
line wrap: on
line diff
--- a/mncc/call_setup.c	Tue Jun 28 19:21:51 2022 -0800
+++ b/mncc/call_setup.c	Tue Jun 28 21:47:04 2022 -0800
@@ -66,12 +66,16 @@
 	else
 		msg->fields &= ~MNCC_F_CALLING;
 	if (!(msg->fields & MNCC_F_CALLED)) {
+		syslog(LOG_ERR, "rejecting MO call 0x%x: no called number",
+			msg->callref);
 		reject_mo_call(msg->callref, GSM48_CAUSE_LOC_PRN_S_LU,
 				GSM48_CC_CAUSE_INVAL_MAND_INF);
 		return;
 	}
 	call = create_gsm_call(msg->callref);
 	if (!call) {
+		syslog(LOG_ERR, "rejecting MO call 0x%x: no memory for call",
+			msg->callref);
 		reject_mo_call(msg->callref, GSM48_CAUSE_LOC_PRN_S_LU,
 				GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
 		return;
@@ -91,6 +95,9 @@
 			break;
 		res = lookup_short_dial_number(msg->called.number, nanp);
 		if (!res) {
+			syslog(LOG_ERR,
+				"rejecting MO call 0x%x: invalid short number",
+				msg->callref);
 			reject_mo_call(msg->callref, GSM48_CAUSE_LOC_PRN_S_LU,
 					GSM48_CC_CAUSE_UNASSIGNED_NR);
 			call->gc_flag = 1;
@@ -117,6 +124,9 @@
 		    msg->called.plan != GSM48_NPI_NATIONAL)
 			break;
 		if (!is_nanp_valid_prefix(msg->called.number)) {
+			syslog(LOG_ERR,
+				"rejecting MO call 0x%x: invalid NANP number",
+				msg->callref);
 			reject_mo_call(msg->callref, GSM48_CAUSE_LOC_PRN_S_LU,
 					GSM48_CC_CAUSE_INV_NR_FORMAT);
 			call->gc_flag = 1;
@@ -139,6 +149,9 @@
 		if (msg->called.number[0] != '1')
 			break;
 		if (!is_nanp_valid_prefix(msg->called.number+1)) {
+			syslog(LOG_ERR,
+				"rejecting MO call 0x%x: invalid NANP number",
+				msg->callref);
 			reject_mo_call(msg->callref, GSM48_CAUSE_LOC_PRN_S_LU,
 					GSM48_CC_CAUSE_INV_NR_FORMAT);
 			call->gc_flag = 1;
@@ -155,6 +168,8 @@
 		is_local = 1;
 	/* weed out attempts to call yourself */
 	if (is_local && !strcmp(msg->calling.number, msg->called.number)) {
+		syslog(LOG_ERR, "rejecting MO call 0x%x: call to self",
+			msg->callref);
 		reject_mo_call(msg->callref, GSM48_CAUSE_LOC_PRN_S_LU,
 				GSM48_CC_CAUSE_INCOMPAT_DEST);
 		call->gc_flag = 1;
@@ -166,6 +181,8 @@
 		return;
 	}
 	/* outbound calls remain to be implemented */
+	syslog(LOG_ERR, "rejecting MO call 0x%x: outbound not implemented",
+		msg->callref);
 	reject_mo_call(msg->callref, GSM48_CAUSE_LOC_PRN_S_LU,
 			GSM48_CC_CAUSE_NO_ROUTE);
 	call->gc_flag = 1;
@@ -193,18 +210,23 @@
 	struct gsm_call *call;
 
 	if (!(msg->fields & MNCC_F_CALLED) && !msg->imsi[0]) {
+		syslog(LOG_ERR, "rejecting ext MT: no called number");
 		reject_mt_call(conn, msg->callref, GSM48_CAUSE_LOC_PRN_S_LU,
 				GSM48_CC_CAUSE_INVAL_MAND_INF);
 		return;
 	}
 	call = create_new_mt_call();
 	if (!call) {
+		syslog(LOG_ERR, "rejecting ext MT: no memory for call");
 		reject_mt_call(conn, msg->callref, GSM48_CAUSE_LOC_PRN_S_LU,
 				GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
 		return;
 	}
 	call->socket = conn;
 	call->socket_ref = msg->callref;
+	conn->ncalls++;
+	syslog(LOG_DEBUG, "mapped socket callref 0x%x to GSM callref 0x%x",
+		msg->callref, call->callref);
 	/* forward to GSM MNCC interface */
 	msg->callref = call->callref;
 	send_mncc_to_gsm(msg, sizeof(struct gsm_mncc));