NS: Factor out gprs_nsvc_start_test() and use it

This function performs  sending a NS-ALIVE PDU and starting Tns-Test,
let's use it in all places where we used to do that.

As part of this, also fix a bug where the sendto() return value (number
of bytes sent) would actually propagate up all the way to
gprs_ns_rx_reset() return value, which in turn affects the test results
on stdout.

Change-Id: I4d303117f77fabb74bbb91887b9914a81c2a084a
diff --git a/src/gb/gb_internal.h b/src/gb/gb_internal.h
index c1fa8e1..72d940f 100644
--- a/src/gb/gb_internal.h
+++ b/src/gb/gb_internal.h
@@ -4,6 +4,7 @@
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/gprs/gprs_ns.h>
 
+void gprs_nsvc_start_test(struct gprs_nsvc *nsvc);
 int gprs_ns_tx_sns_ack(struct gprs_nsvc *nsvc, uint8_t trans_id, uint8_t *cause,
 		       const struct gprs_ns_ie_ip4_elem *ip4_elems,unsigned int num_ip4_elems);
 
diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c
index 660dfec..ad68bc9 100644
--- a/src/gb/gprs_ns.c
+++ b/src/gb/gprs_ns.c
@@ -1171,8 +1171,7 @@
 	rc = gprs_ns_tx_reset_ack(*nsvc);
 
 	/* start the test procedure */
-	gprs_ns_tx_alive(*nsvc);
-	nsvc_start_timer((*nsvc), NSVC_TIMER_TNS_TEST);
+	gprs_nsvc_start_test(*nsvc);
 
 	return rc;
 }
@@ -1295,10 +1294,9 @@
 		osmo_timer_del(&(*nsvc)->timer);
 	}
 	/* Initiate TEST proc.: Send ALIVE and start timer */
-	rc = gprs_ns_tx_alive(*nsvc);
-	nsvc_start_timer(*nsvc, NSVC_TIMER_TNS_TEST);
+	gprs_nsvc_start_test(*nsvc);
 
-	return rc;
+	return 0;
 }
 
 static int gprs_ns_rx_block(struct gprs_nsvc *nsvc, struct msgb *msg)
@@ -1949,4 +1947,11 @@
 	return s;
 }
 
+/*! Start the ALIVE timer procedure in all NS-VCs part of this NS Instance */
+void gprs_nsvc_start_test(struct gprs_nsvc *nsvc)
+{
+	gprs_ns_tx_alive(nsvc);
+	nsvc_start_timer(nsvc, NSVC_TIMER_TNS_TEST);
+}
+
 /*! @} */