diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2017-07-05 15:19:52 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-08-29 12:51:18 +0000 |
commit | 00e82d61ab7bbdcf09c2c88c159dd6e8fac72387 (patch) | |
tree | 83aa888237576c3ca6ca22b82b6b9eb9f3b63b12 /src/libmsc | |
parent | 6d82bec2c8cd3636fbce09757610762e5bd85b06 (diff) |
move libiu to osmo-iuh/libosmo-ranap
Remove libiu here, use the functions from libosmo-ranap instead, by applying
the ranap_ / RANAP_ prefix.
Corresponding change-id in osmo-iuh.git is I6a3f7ad15be03fb94689b4af6ccfa828c25f45c0
To be able to run the msc_vlr tests for RAN_UTRAN_IU without Iu client headers
available, add iu_dummy.h, containing mere function signatures that match
iu_dummy.c and a mostly empty struct ranap_ue_conn_ctx.
Make sure we can build with and without --enable-iu: include osmo-iuh headers
only with --enable-iu.
Change-Id: Ib8c4fcdb4766c5e575618b95ce16dce51063206b
Diffstat (limited to 'src/libmsc')
-rw-r--r-- | src/libmsc/Makefile.am | 9 | ||||
-rw-r--r-- | src/libmsc/a_iface_bssap.c | 1 | ||||
-rw-r--r-- | src/libmsc/gsm_04_08.c | 8 | ||||
-rw-r--r-- | src/libmsc/gsm_subscriber.c | 17 | ||||
-rw-r--r-- | src/libmsc/iu_dummy.c | 22 | ||||
-rw-r--r-- | src/libmsc/iucs.c | 14 | ||||
-rw-r--r-- | src/libmsc/iucs_ranap.c | 12 | ||||
-rw-r--r-- | src/libmsc/msc_ifaces.c | 19 | ||||
-rw-r--r-- | src/libmsc/msc_vty.c | 10 | ||||
-rw-r--r-- | src/libmsc/osmo_msc.c | 10 | ||||
-rw-r--r-- | src/libmsc/subscr_conn.c | 2 |
11 files changed, 70 insertions, 54 deletions
diff --git a/src/libmsc/Makefile.am b/src/libmsc/Makefile.am index 9f246b3d8..c9b8bb4cc 100644 --- a/src/libmsc/Makefile.am +++ b/src/libmsc/Makefile.am @@ -35,8 +35,6 @@ libmsc_a_SOURCES = \ gsm_04_14.c \ gsm_04_80.c \ gsm_subscriber.c \ - iucs.c \ - iucs_ranap.c \ mncc.c \ mncc_builtin.c \ mncc_sock.c \ @@ -52,7 +50,12 @@ libmsc_a_SOURCES = \ meas_feed.c \ subscr_conn.c \ $(NULL) -if !BUILD_IU +if BUILD_IU +libmsc_a_SOURCES += \ + iucs.c \ + iucs_ranap.c \ + $(NULL) +else libmsc_a_SOURCES += \ iu_dummy.c \ $(NULL) diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 561ccdeb0..e8a229374 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -29,7 +29,6 @@ #include <openbsc/gsm_data.h> #include <openbsc/a_iface_bssap.h> #include <openbsc/a_iface.h> -#include <openbsc/iu.h> #include <openbsc/osmo_msc.h> #include <osmocom/core/byteswap.h> #include <openbsc/a_reset.h> diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index b6746a564..21bc2b83b 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -72,13 +72,11 @@ #include <osmocom/core/utils.h> #include <osmocom/gsm/tlv.h> #include <osmocom/crypt/auth.h> - -#include <openbsc/msc_ifaces.h> - #ifdef BUILD_IU -#include <openbsc/iu.h> +#include <osmocom/ranap/iu_client.h> #endif +#include <openbsc/msc_ifaces.h> #include <openbsc/a_iface.h> #include <assert.h> @@ -3412,7 +3410,7 @@ static int msc_vlr_set_ciph_mode(void *msc_conn_ref, #ifdef BUILD_IU DEBUGP(DMM, "-> SECURITY MODE CONTROL %s\n", vlr_subscr_name(conn->vsub)); - return iu_tx_sec_mode_cmd(conn->iu.ue_ctx, tuple, 0, 1); + return ranap_iu_tx_sec_mode_cmd(conn->iu.ue_ctx, &tuple->vec, 0, 1); #else LOGP(DMM, LOGL_ERROR, "Cannot send Security Mode Control over RAN_UTRAN_IU," " built without Iu support\n"); diff --git a/src/libmsc/gsm_subscriber.c b/src/libmsc/gsm_subscriber.c index 73361a169..09540c16c 100644 --- a/src/libmsc/gsm_subscriber.c +++ b/src/libmsc/gsm_subscriber.c @@ -20,6 +20,8 @@ * */ +#include "../../bscconfig.h" + #include <unistd.h> #include <stdlib.h> #include <stdio.h> @@ -32,6 +34,12 @@ #include <osmocom/vty/vty.h> +#ifdef BUILD_IU +#include <osmocom/ranap/iu_client.h> +#else +#include <openbsc/iu_dummy.h> +#endif + #include <openbsc/gsm_subscriber.h> #include <openbsc/gsm_04_08.h> #include <openbsc/debug.h> @@ -40,7 +48,6 @@ #include <openbsc/db.h> #include <openbsc/chan_alloc.h> #include <openbsc/vlr.h> -#include <openbsc/iu.h> #include <openbsc/osmo_msc.h> #include <openbsc/msc_ifaces.h> #include <openbsc/a_iface.h> @@ -108,10 +115,10 @@ int msc_paging_request(struct vlr_subscr *vsub) case RAN_GERAN_A: return a_iface_tx_paging(vsub->imsi, vsub->tmsi, vsub->lac); case RAN_UTRAN_IU: - return iu_page_cs(vsub->imsi, - vsub->tmsi == GSM_RESERVED_TMSI? - NULL : &vsub->tmsi, - vsub->lac); + return ranap_iu_page_cs(vsub->imsi, + vsub->tmsi == GSM_RESERVED_TMSI? + NULL : &vsub->tmsi, + vsub->lac); default: break; } diff --git a/src/libmsc/iu_dummy.c b/src/libmsc/iu_dummy.c index 1f5dffb55..e9d335e2e 100644 --- a/src/libmsc/iu_dummy.c +++ b/src/libmsc/iu_dummy.c @@ -26,39 +26,39 @@ #include "../../bscconfig.h" #ifndef BUILD_IU -#include <stdint.h> -#include <stdbool.h> +#include <openbsc/iu_dummy.h> #include <osmocom/core/logging.h> #include <osmocom/vty/logging.h> #include <osmocom/core/msgb.h> struct msgb; -struct ue_conn_ctx; +struct ranap_ue_conn_ctx; struct gsm_auth_tuple; struct RANAP_Cause; +struct osmo_auth_vector; -int iu_tx(struct msgb *msg, uint8_t sapi) +int ranap_iu_tx(struct msgb *msg, uint8_t sapi) { LOGP(DLGLOBAL, LOGL_INFO, "iu_tx() dummy called, NOT transmitting %d bytes: %s\n", msg->len, osmo_hexdump(msg->data, msg->len)); return 0; } -int iu_tx_sec_mode_cmd(struct ue_conn_ctx *uectx, struct gsm_auth_tuple *tp, - int send_ck) +int ranap_iu_tx_sec_mode_cmd(struct ranap_ue_conn_ctx *uectx, struct osmo_auth_vector *vec, + int send_ck) { LOGP(DLGLOBAL, LOGL_INFO, "iu_tx_sec_mode_cmd() dummy called, NOT transmitting Security Mode Command\n"); return 0; } -int iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac) +int ranap_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac) { LOGP(DLGLOBAL, LOGL_INFO, "iu_page_cs() dummy called, NOT paging\n"); return 23; } -int iu_page_ps(const char *imsi, const uint32_t *ptmsi, uint16_t lac, uint8_t rac) +int ranap_iu_page_ps(const char *imsi, const uint32_t *ptmsi, uint16_t lac, uint8_t rac) { LOGP(DLGLOBAL, LOGL_INFO, "iu_page_ps() dummy called, NOT paging\n"); return 0; @@ -72,19 +72,19 @@ struct msgb *ranap_new_msg_rab_assign_voice(uint8_t rab_id, uint32_t rtp_ip, return NULL; } -int iu_rab_act(struct ue_conn_ctx *ue_ctx, struct msgb *msg) +int ranap_iu_rab_act(struct ranap_ue_conn_ctx *ue_ctx, struct msgb *msg) { LOGP(DLGLOBAL, LOGL_INFO, "iu_rab_act() dummy called, NOT activating RAB\n"); return 0; } -int iu_tx_common_id(struct ue_conn_ctx *uectx, const char *imsi) +int ranap_iu_tx_common_id(struct ranap_ue_conn_ctx *uectx, const char *imsi) { LOGP(DLGLOBAL, LOGL_INFO, "iu_tx_common_id() dummy called, NOT sending CommonID\n"); return 0; } -int iu_tx_release(struct ue_conn_ctx *ctx, const struct RANAP_Cause *cause) +int ranap_iu_tx_release(struct ranap_ue_conn_ctx *ctx, const struct RANAP_Cause *cause) { LOGP(DLGLOBAL, LOGL_INFO, "iu_tx_release() dummy called, NOT sending Release\n"); return 0; diff --git a/src/libmsc/iucs.c b/src/libmsc/iucs.c index be026c857..04b9ece7d 100644 --- a/src/libmsc/iucs.c +++ b/src/libmsc/iucs.c @@ -25,17 +25,17 @@ #include <inttypes.h> #include <osmocom/core/logging.h> +#include <osmocom/ranap/iu_client.h> #include <openbsc/debug.h> #include <openbsc/gsm_data.h> -#include <openbsc/iu.h> #include <openbsc/gsm_subscriber.h> #include <openbsc/osmo_msc.h> #include <openbsc/vlr.h> /* For A-interface see libbsc/bsc_api.c subscr_con_allocate() */ static struct gsm_subscriber_connection *subscr_conn_allocate_iu(struct gsm_network *network, - struct ue_conn_ctx *ue, + struct ranap_ue_conn_ctx *ue, uint16_t lac) { struct gsm_subscriber_connection *conn; @@ -57,7 +57,7 @@ static struct gsm_subscriber_connection *subscr_conn_allocate_iu(struct gsm_netw return conn; } -static int same_ue_conn(struct ue_conn_ctx *a, struct ue_conn_ctx *b) +static int same_ue_conn(struct ranap_ue_conn_ctx *a, struct ranap_ue_conn_ctx *b) { if (a == b) return 1; @@ -103,7 +103,7 @@ static inline void log_subscribers(struct gsm_network *network) * connection IDs, or return NULL if not found. */ struct gsm_subscriber_connection *subscr_conn_lookup_iu( struct gsm_network *network, - struct ue_conn_ctx *ue) + struct ranap_ue_conn_ctx *ue) { struct gsm_subscriber_connection *conn; @@ -126,7 +126,7 @@ struct gsm_subscriber_connection *subscr_conn_lookup_iu( } /* Receive MM/CC/... message from IuCS (SCCP user SAP). - * msg->dst must reference a struct ue_conn_ctx, which identifies the peer that + * msg->dst must reference a struct ranap_ue_conn_ctx, which identifies the peer that * sent the msg. * * For A-interface see libbsc/bsc_api.c gsm0408_rcvmsg(). */ @@ -134,10 +134,10 @@ int gsm0408_rcvmsg_iucs(struct gsm_network *network, struct msgb *msg, uint16_t *lac) { int rc; - struct ue_conn_ctx *ue_ctx; + struct ranap_ue_conn_ctx *ue_ctx; struct gsm_subscriber_connection *conn; - ue_ctx = (struct ue_conn_ctx*)msg->dst; + ue_ctx = (struct ranap_ue_conn_ctx*)msg->dst; /* TODO: are there message types that could allow us to skip this * search? */ diff --git a/src/libmsc/iucs_ranap.c b/src/libmsc/iucs_ranap.c index c016474c9..45de1caca 100644 --- a/src/libmsc/iucs_ranap.c +++ b/src/libmsc/iucs_ranap.c @@ -27,11 +27,11 @@ #include <osmocom/core/logging.h> #include <osmocom/ranap/ranap_ies_defs.h> +#include <osmocom/ranap/iu_client.h> #include <openbsc/debug.h> #include <openbsc/gsm_data.h> #include <openbsc/gsm_subscriber.h> -#include <openbsc/iu.h> #include <openbsc/iucs.h> #include <openbsc/vlr.h> #include <openbsc/iucs_ranap.h> @@ -67,7 +67,7 @@ int iucs_rx_sec_mode_compl(struct gsm_subscriber_connection *conn, } int iucs_rx_ranap_event(struct gsm_network *network, - struct ue_conn_ctx *ue_ctx, int type, void *data) + struct ranap_ue_conn_ctx *ue_ctx, int type, void *data) { struct gsm_subscriber_connection *conn; @@ -79,19 +79,19 @@ int iucs_rx_ranap_event(struct gsm_network *network, } switch (type) { - case IU_EVENT_IU_RELEASE: - case IU_EVENT_LINK_INVALIDATED: + case RANAP_IU_EVENT_IU_RELEASE: + case RANAP_IU_EVENT_LINK_INVALIDATED: LOGP(DIUCS, LOGL_INFO, "IuCS release for %s\n", vlr_subscr_name(conn->vsub)); msc_subscr_conn_close(conn, 0); return 0; - case IU_EVENT_SECURITY_MODE_COMPLETE: + case RANAP_IU_EVENT_SECURITY_MODE_COMPLETE: LOGP(DIUCS, LOGL_INFO, "IuCS security mode complete for %s\n", vlr_subscr_name(conn->vsub)); return iucs_rx_sec_mode_compl(conn, (RANAP_SecurityModeCompleteIEs_t*)data); - case IU_EVENT_RAB_ASSIGN: + case RANAP_IU_EVENT_RAB_ASSIGN: return iucs_rx_rab_assign(conn, (RANAP_RAB_SetupOrModifiedItemIEs_t*)data); default: diff --git a/src/libmsc/msc_ifaces.c b/src/libmsc/msc_ifaces.c index 7d2e8981b..262bf98a3 100644 --- a/src/libmsc/msc_ifaces.c +++ b/src/libmsc/msc_ifaces.c @@ -23,7 +23,6 @@ #include <openbsc/debug.h> #include <openbsc/gsm_data.h> #include <openbsc/msc_ifaces.h> -#include <openbsc/iu.h> #include <openbsc/gsm_subscriber.h> #include <openbsc/transaction.h> #include <openbsc/mgcp.h> @@ -34,10 +33,13 @@ #include "../../bscconfig.h" #ifdef BUILD_IU +#include <osmocom/ranap/iu_client.h> extern struct msgb *ranap_new_msg_rab_assign_voice(uint8_t rab_id, uint32_t rtp_ip, uint16_t rtp_port, bool use_x213_nsap); +#else +#include <openbsc/iu_dummy.h> #endif /* BUILD_IU */ static int msc_tx(struct gsm_subscriber_connection *conn, struct msgb *msg) @@ -57,7 +59,7 @@ static int msc_tx(struct gsm_subscriber_connection *conn, struct msgb *msg) case RAN_UTRAN_IU: msg->dst = conn->iu.ue_ctx; - return iu_tx(msg, 0); + return ranap_iu_tx(msg, 0); default: LOGP(DMSC, LOGL_ERROR, @@ -134,10 +136,10 @@ int msc_tx_common_id(struct gsm_subscriber_connection *conn) DEBUGP(DIUCS, "%s: tx CommonID %s\n", vlr_subscr_name(conn->vsub), conn->vsub->imsi); - return iu_tx_common_id(conn->iu.ue_ctx, conn->vsub->imsi); + return ranap_iu_tx_common_id(conn->iu.ue_ctx, conn->vsub->imsi); } -static int iu_rab_act_cs(struct ue_conn_ctx *uectx, uint8_t rab_id, +static int iu_rab_act_cs(struct ranap_ue_conn_ctx *uectx, uint8_t rab_id, uint32_t rtp_ip, uint16_t rtp_port) { #ifdef BUILD_IU @@ -145,7 +147,7 @@ static int iu_rab_act_cs(struct ue_conn_ctx *uectx, uint8_t rab_id, bool use_x213_nsap; uint32_t conn_id = uectx->conn_id; - use_x213_nsap = (uectx->rab_assign_addr_enc == NSAP_ADDR_ENC_X213); + use_x213_nsap = (uectx->rab_assign_addr_enc == RANAP_NSAP_ADDR_ENC_X213); LOGP(DIUCS, LOGL_DEBUG, "Assigning RAB: conn_id=%u, rab_id=%d," " rtp=%x:%u, use_x213_nsap=%d\n", conn_id, rab_id, rtp_ip, @@ -155,7 +157,7 @@ static int iu_rab_act_cs(struct ue_conn_ctx *uectx, uint8_t rab_id, use_x213_nsap); msg->l2h = msg->data; - if (iu_rab_act(uectx, msg)) + if (ranap_iu_rab_act(uectx, msg)) LOGP(DIUCS, LOGL_ERROR, "Failed to send RAB Assignment:" " conn_id=%d rab_id=%d rtp=%x:%u\n", conn_id, rab_id, rtp_ip, rtp_port); @@ -170,7 +172,6 @@ static void mgcp_response_rab_act_cs_crcx(struct mgcp_response *r, void *priv) { struct gsm_trans *trans = priv; struct gsm_subscriber_connection *conn = trans->conn; - struct ue_conn_ctx *uectx = conn->iu.ue_ctx; uint32_t rtp_ip; int rc; @@ -195,7 +196,7 @@ static void mgcp_response_rab_act_cs_crcx(struct mgcp_response *r, void *priv) if (trans->conn->via_ran == RAN_UTRAN_IU) { /* Assign a voice channel via RANAP on 3G */ - if (iu_rab_act_cs(uectx, conn->iu.rab_id, rtp_ip, conn->rtp.port_subscr)) + if (iu_rab_act_cs(conn->iu.ue_ctx, conn->iu.rab_id, rtp_ip, conn->rtp.port_subscr)) goto rab_act_cs_error; } else if (trans->conn->via_ran == RAN_GERAN_A) { /* Assign a voice channel via A on 2G */ @@ -234,7 +235,7 @@ int msc_call_assignment(struct gsm_trans *trans) mgcp = conn->network->mgcpgw.client; #ifdef BUILD_IU - /* FIXME: HACK. where to scope the RAB Id? At the conn / subscriber / ue_conn_ctx? */ + /* FIXME: HACK. where to scope the RAB Id? At the conn / subscriber / ranap_ue_conn_ctx? */ static uint8_t next_iu_rab_id = 1; if (conn->via_ran == RAN_UTRAN_IU) conn->iu.rab_id = next_iu_rab_id ++; diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index 01e7e8295..6ae4529a1 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -23,15 +23,19 @@ /* NOTE: I would have liked to call this the MSC_NODE instead of the MSC_NODE, * but MSC_NODE already exists to configure a remote MSC for osmo-bsc. */ +#include "../../bscconfig.h" + #include <inttypes.h> #include <osmocom/vty/command.h> +#ifdef BUILD_IU +#include <osmocom/ranap/iu_client.h> +#endif #include <openbsc/vty.h> #include <openbsc/gsm_data.h> #include <openbsc/gsm_subscriber.h> #include <openbsc/vlr.h> -#include <openbsc/iu.h> static struct cmd_node msc_node = { MSC_NODE, @@ -99,7 +103,7 @@ static int config_write_msc(struct vty *vty) mgcpgw_client_config_write(vty, " "); #ifdef BUILD_IU - iu_vty_config_write(vty, " "); + ranap_iu_vty_config_write(vty, " "); #endif return CMD_SUCCESS; @@ -153,6 +157,6 @@ void msc_vty_init(struct gsm_network *msc_network) mgcpgw_client_vty_init(MSC_NODE, &msc_network->mgcpgw.conf); #ifdef BUILD_IU - iu_vty_init(MSC_NODE, &msc_network->iu.rab_assign_addr_enc); + ranap_iu_vty_init(MSC_NODE, &msc_network->iu.rab_assign_addr_enc); #endif } diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c index 866cfbd07..4d24f22a6 100644 --- a/src/libmsc/osmo_msc.c +++ b/src/libmsc/osmo_msc.c @@ -28,11 +28,17 @@ #include <openbsc/db.h> #include <openbsc/vlr.h> #include <openbsc/osmo_msc.h> -#include <openbsc/iu.h> #include <openbsc/a_iface.h> #include <openbsc/gsm_04_11.h> +#include "../../bscconfig.h" +#ifdef BUILD_IU +#include <osmocom/ranap/iu_client.h> +#else +#include <openbsc/iu_dummy.h> +#endif + /* Receive a SAPI-N-REJECT from BSC */ void msc_sapi_n_reject(struct gsm_subscriber_connection *conn, int dlci) { @@ -285,7 +291,7 @@ static void msc_subscr_conn_release_all(struct gsm_subscriber_connection *conn, switch (conn->via_ran) { case RAN_UTRAN_IU: - iu_tx_release(conn->iu.ue_ctx, NULL); + ranap_iu_tx_release(conn->iu.ue_ctx, NULL); /* FIXME: keep the conn until the Iu Release Outcome is * received from the UE, or a timeout expires. For now, the log * says "unknown UE" for each release outcome. */ diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index cdeeae903..bcab8e48c 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -30,10 +30,8 @@ #include <openbsc/debug.h> #include <openbsc/transaction.h> #include <openbsc/signal.h> -#include <openbsc/iu.h> #include <openbsc/a_iface.h> - #define SUBSCR_CONN_TIMEOUT 5 /* seconds */ static const struct value_string subscr_conn_fsm_event_names[] = { |