aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmsc')
-rw-r--r--src/libmsc/Makefile.am9
-rw-r--r--src/libmsc/a_iface_bssap.c1
-rw-r--r--src/libmsc/gsm_04_08.c8
-rw-r--r--src/libmsc/gsm_subscriber.c17
-rw-r--r--src/libmsc/iu_dummy.c22
-rw-r--r--src/libmsc/iucs.c14
-rw-r--r--src/libmsc/iucs_ranap.c12
-rw-r--r--src/libmsc/msc_ifaces.c19
-rw-r--r--src/libmsc/msc_vty.c10
-rw-r--r--src/libmsc/osmo_msc.c10
-rw-r--r--src/libmsc/subscr_conn.c2
11 files changed, 70 insertions, 54 deletions
diff --git a/src/libmsc/Makefile.am b/src/libmsc/Makefile.am
index 76696665c..908353042 100644
--- a/src/libmsc/Makefile.am
+++ b/src/libmsc/Makefile.am
@@ -34,8 +34,6 @@ libmsc_a_SOURCES = \
gsm_04_11.c \
gsm_04_80.c \
gsm_subscriber.c \
- iucs.c \
- iucs_ranap.c \
mncc.c \
mncc_builtin.c \
mncc_sock.c \
@@ -51,7 +49,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 ac409408c..4ed5f944f 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 631bb982b..be23c6472 100644
--- a/src/libmsc/gsm_04_08.c
+++ b/src/libmsc/gsm_04_08.c
@@ -71,13 +71,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>
@@ -3401,7 +3399,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[] = {