mgcp: Move the rtp state into a struct

Use a struct to group the rtp state for the up and the down
link of the bts.
diff --git a/openbsc/src/mgcp/mgcp_network.c b/openbsc/src/mgcp/mgcp_network.c
index 5923fea..d2dbeeb 100644
--- a/openbsc/src/mgcp/mgcp_network.c
+++ b/openbsc/src/mgcp/mgcp_network.c
@@ -94,7 +94,7 @@
 			endp->net_rtp, buf, 1);
 }
 
-static void patch_and_count(uint16_t *last_seq, int *lost, int payload, char *data, int len)
+static void patch_and_count(struct mgcp_rtp_state *state, int payload, char *data, int len)
 {
 	uint16_t seq;
 	struct rtp_hdr *rtp_hdr;
@@ -105,14 +105,13 @@
 	rtp_hdr = (struct rtp_hdr *) data;
 	seq = ntohs(rtp_hdr->sequence);
 
-	/* 0 is assumed to be not set */
-	if (*last_seq == 0)
-		*last_seq = seq;
-	else if (*last_seq + 1 != seq)
-		*lost = abs(seq - (*last_seq + 1));
+	if (!state->initialized) {
+		state->seq_no = seq;
+		state->initialized = 1;
+	} else if (state->seq_no + 1u != seq)
+		state->lost_no = abs(seq - (state->seq_no + 1));
 
-	*last_seq = seq;
-
+	state->seq_no = seq;
 
 	if (payload < 0)
 		return;
@@ -210,14 +209,14 @@
 
 	if (dest == DEST_NETWORK) {
 		if (proto == PROTO_RTP)
-			patch_and_count(&endp->bts_seq_no, &endp->bts_lost_no,
+			patch_and_count(&endp->bts_state,
 					endp->net_payload_type, buf, rc);
 		return udp_send(fd->fd, &endp->remote,
 			     proto == PROTO_RTP ? endp->net_rtp : endp->net_rtcp,
 			     buf, rc);
 	} else {
 		if (proto == PROTO_RTP)
-			patch_and_count(&endp->net_seq_no, &endp->net_lost_no,
+			patch_and_count(&endp->net_state,
 					endp->bts_payload_type, buf, rc);
 		return udp_send(fd->fd, &endp->bts,
 			     proto == PROTO_RTP ? endp->bts_rtp : endp->bts_rtcp,
diff --git a/openbsc/src/mgcp/mgcp_protocol.c b/openbsc/src/mgcp/mgcp_protocol.c
index 5883c15..2a5ce08 100644
--- a/openbsc/src/mgcp/mgcp_protocol.c
+++ b/openbsc/src/mgcp/mgcp_protocol.c
@@ -763,8 +763,8 @@
 	memset(&endp->remote, 0, sizeof(endp->remote));
 	memset(&endp->bts, 0, sizeof(endp->bts));
 
-	endp->net_seq_no = endp->bts_seq_no = 0;
-	endp->net_lost_no = endp->bts_lost_no = 0;
+	memset(&endp->net_state, 0, sizeof(endp->net_state));
+	memset(&endp->bts_state, 0, sizeof(endp->bts_state));
 
 	endp->conn_mode = endp->orig_mode = MGCP_CONN_NONE;
 }
diff --git a/openbsc/src/mgcp/mgcp_vty.c b/openbsc/src/mgcp/mgcp_vty.c
index 45df0a2..a179b7a 100644
--- a/openbsc/src/mgcp/mgcp_vty.c
+++ b/openbsc/src/mgcp/mgcp_vty.c
@@ -87,8 +87,8 @@
 			i, endp->ci,
 			ntohs(endp->net_rtp), ntohs(endp->net_rtcp),
 			ntohs(endp->bts_rtp), ntohs(endp->bts_rtcp),
-			inet_ntoa(endp->bts), endp->in_bts, endp->bts_lost_no,
-			endp->in_remote, endp->net_lost_no,
+			inet_ntoa(endp->bts), endp->in_bts, endp->bts_state.lost_no,
+			endp->in_remote, endp->net_state.lost_no,
 			VTY_NEWLINE);
 	}