Implement AoIP, port to M3UA SIGTRAN (large addition and refactoring)

This was originally a long series of commits converging to the final result
seen in this patch. It does not make much sense to review the smaller steps'
trial and error, we need to review this entire change as a whole.

Implement AoIP in osmo-msc and osmo-bsc.

Change over to the new libosmo-sigtran API with support for proper
SCCP/M3UA/SCTP stacking, as mandated by 3GPP specifications for the IuCS and
IuPS interfaces.

From here on, a separate osmo-stp process is required for SCCP routing between
OsmoBSC / OsmoHNBGW <-> OsmoMSC / OsmoSGSN

jenkins.sh: build from libosmo-sccp and osmo-iuh master branches now for new
M3UA SIGTRAN.

Patch-by: pmaier, nhofmeyr, laforge
Change-Id: I5ae4e05ee7c57cad341ea5e86af37c1f6b0ffa77
diff --git a/include/openbsc/iu.h b/include/openbsc/iu.h
index 5b29830..08e4cd0 100644
--- a/include/openbsc/iu.h
+++ b/include/openbsc/iu.h
@@ -5,13 +5,15 @@
 
 #include <osmocom/core/linuxlist.h>
 #include <osmocom/gsm/gsm48.h>
+#include <osmocom/sigtran/sccp_sap.h>
 
 #include <openbsc/common.h>
 
 struct sgsn_pdp_ctx;
 struct msgb;
-struct osmo_sccp_link;
 struct gsm_auth_tuple;
+struct osmo_sccp_addr;
+struct osmo_ss7_instance;
 
 struct RANAP_RAB_SetupOrModifiedItemIEs_s;
 struct RANAP_GlobalRNC_ID;
@@ -23,7 +25,10 @@
 
 struct ue_conn_ctx {
 	struct llist_head list;
-	struct osmo_sccp_link *link;
+	/* TODO: It's not needed to store the full SCCP address for each
+	 * UE.  Rather than that, a pointer to the RNC should be far
+	 * sufficient */
+	struct osmo_sccp_addr sccp_addr;
 	uint32_t conn_id;
 	int integrity_active;
 	struct gprs_ra_id ra_id;
@@ -53,11 +58,9 @@
 typedef int (* iu_rab_ass_resp_cb_t )(struct ue_conn_ctx *ue_ctx, uint8_t rab_id,
 		struct RANAP_RAB_SetupOrModifiedItemIEs_s *setup_ies);
 
-int iu_init(void *ctx, const char *listen_addr, uint16_t listen_port,
+int iu_init(void *ctx, struct osmo_sccp_instance *sccp,
 	    iu_recv_cb_t iu_recv_cb, iu_event_cb_t iu_event_cb);
 
-void iu_link_del(struct osmo_sccp_link *link);
-
 int iu_tx(struct msgb *msg, uint8_t sapi);
 
 int iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac);