aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-11-29 22:37:51 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2018-11-30 22:45:42 +0100
commitc036b79918dbeb2baefff177be51dfdd9dac1588 (patch)
tree86dbac47aa1a05ffe3f0bf5341664c92a98ba300 /src/libmsc
parentd03e7289156f1b54926a5a63ce97a3ef954f0c9d (diff)
rename gsm_subscriber_connection to ran_conn
In preparation for inter-BSC and inter-MSC handover, we need to separate the subscriber management logic from the actual RAN connections. What better time to finally rename gsm_subscriber_connection. * Name choice: In 2G, this is a connection to the BSS, but even though 3GPP TS commonly talk of "BSS-A" and "BSS-B" when explaining handover, it's not good to call it "bss_conn": in 3G a BSS is called RNS, IIUC. The overall term for 2G (GERAN) and 3G (UTRAN) is RAN: Radio Access Network. * Rationale: A subscriber in the MSC so far has only one RAN connection, but e.g. for inter-BSC handover, a second one needs to be created to handover to. Most of the items in the former gsm_subscriber_connection are actually related to the RAN, with only a few MM and RTP related items. So, as a first step, just rename it to ran_conn, to cosmetically prepare for moving the not strictly RAN related items away later. Also: - Rename some functions from msc_subscr_conn_* to ran_conn_* - Rename "Subscr_Conn" FSM instance name to "RAN_conn" - Rename SUBSCR_CONN_* to RAN_CONN_* Change-Id: Ic595f7a558d3553c067f77dc67543ab59659707a
Diffstat (limited to 'src/libmsc')
-rw-r--r--src/libmsc/a_iface.c24
-rw-r--r--src/libmsc/a_iface_bssap.c60
-rw-r--r--src/libmsc/gsm_04_08.c142
-rw-r--r--src/libmsc/gsm_04_08_cc.c16
-rw-r--r--src/libmsc/gsm_04_11.c24
-rw-r--r--src/libmsc/gsm_04_14.c18
-rw-r--r--src/libmsc/gsm_04_80.c8
-rw-r--r--src/libmsc/gsm_09_11.c14
-rw-r--r--src/libmsc/gsm_subscriber.c8
-rw-r--r--src/libmsc/iucs.c32
-rw-r--r--src/libmsc/iucs_ranap.c12
-rw-r--r--src/libmsc/msc_ifaces.c10
-rw-r--r--src/libmsc/msc_mgcp.c24
-rw-r--r--src/libmsc/msc_vty.c14
-rw-r--r--src/libmsc/osmo_msc.c62
-rw-r--r--src/libmsc/rrlp.c4
-rw-r--r--src/libmsc/silent_call.c12
-rw-r--r--src/libmsc/smpp_openbsc.c10
-rw-r--r--src/libmsc/smpp_smsc.h6
-rw-r--r--src/libmsc/subscr_conn.c384
-rw-r--r--src/libmsc/transaction.c14
21 files changed, 448 insertions, 450 deletions
diff --git a/src/libmsc/a_iface.c b/src/libmsc/a_iface.c
index bd9b89035..fa0cb5f62 100644
--- a/src/libmsc/a_iface.c
+++ b/src/libmsc/a_iface.c
@@ -142,12 +142,12 @@ static struct bsc_context *get_bsc_context_by_sccp_addr(const struct osmo_sccp_a
/* Send DTAP message via A-interface, take ownership of msg */
int a_iface_tx_dtap(struct msgb *msg)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct msgb *msg_resp;
uint8_t link_id = OMSC_LINKID_CB(msg);
OSMO_ASSERT(msg);
- conn = (struct gsm_subscriber_connection *)msg->dst;
+ conn = (struct ran_conn *)msg->dst;
OSMO_ASSERT(conn);
OSMO_ASSERT(conn->a.scu);
@@ -171,7 +171,7 @@ int a_iface_tx_dtap(struct msgb *msg)
}
/* Send Cipher mode command via A-interface */
-int a_iface_tx_cipher_mode(const struct gsm_subscriber_connection *conn,
+int a_iface_tx_cipher_mode(const struct ran_conn *conn,
struct gsm0808_encrypt_info *ei, int include_imeisv)
{
/* TODO generalize for A- and Iu interfaces, don't name after 08.08 */
@@ -358,7 +358,7 @@ static int enc_speech_codec_list(struct gsm0808_speech_codec_list *scl, const st
/* Send assignment request via A-interface */
int a_iface_tx_assignment(const struct gsm_trans *trans)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct gsm0808_channel_type ct;
struct gsm0808_speech_codec_list scl;
uint32_t *ci_ptr = NULL;
@@ -412,7 +412,7 @@ int a_iface_tx_assignment(const struct gsm_trans *trans)
}
/* Send clear command via A-interface */
-int a_iface_tx_clear_cmd(struct gsm_subscriber_connection *conn)
+int a_iface_tx_clear_cmd(struct ran_conn *conn)
{
struct msgb *msg;
@@ -422,7 +422,7 @@ int a_iface_tx_clear_cmd(struct gsm_subscriber_connection *conn)
return osmo_sccp_tx_data_msg(conn->a.scu, conn->a.conn_id, msg);
}
-int a_iface_tx_classmark_request(const struct gsm_subscriber_connection *conn)
+int a_iface_tx_classmark_request(const struct ran_conn *conn)
{
struct msgb *msg;
@@ -443,7 +443,7 @@ static void a_reset_cb(const void *priv)
if (!gsm_network)
return;
- /* Clear all now orphaned subscriber connections */
+ /* Clear all now orphaned RAN connections */
a_clear_all(bsc_ctx->sccp_user, &bsc_ctx->bsc_addr);
/* Send reset to the remote BSC */
@@ -612,22 +612,22 @@ static int sccp_sap_up(struct osmo_prim_hdr *oph, void *_scu)
return rc;
}
-/* Clear all subscriber connections on a specified BSC */
+/* Clear all RAN connections on a specified BSC */
void a_clear_all(struct osmo_sccp_user *scu, const struct osmo_sccp_addr *bsc_addr)
{
- struct gsm_subscriber_connection *conn;
- struct gsm_subscriber_connection *conn_temp;
+ struct ran_conn *conn;
+ struct ran_conn *conn_temp;
struct gsm_network *network = gsm_network;
OSMO_ASSERT(scu);
OSMO_ASSERT(bsc_addr);
- llist_for_each_entry_safe(conn, conn_temp, &network->subscr_conns, entry) {
+ llist_for_each_entry_safe(conn, conn_temp, &network->ran_conns, entry) {
/* Clear only A connections and connections that actually
* belong to the specified BSC */
if (conn->via_ran == RAN_GERAN_A && memcmp(bsc_addr, &conn->a.bsc_addr, sizeof(conn->a.bsc_addr)) == 0) {
uint32_t conn_id = conn->a.conn_id;
- LOGPCONN(conn, LOGL_NOTICE, "Dropping orphaned subscriber connection\n");
+ LOGPCONN(conn, LOGL_NOTICE, "Dropping orphaned RAN connection\n");
/* This call will/may talloc_free(conn), so we must save conn_id above */
msc_clear_request(conn, GSM48_CC_CAUSE_SWITCH_CONG);
diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c
index 77d84b32c..31cdb06ef 100644
--- a/src/libmsc/a_iface_bssap.c
+++ b/src/libmsc/a_iface_bssap.c
@@ -45,16 +45,16 @@
* Helper functions to lookup and allocate subscribers
*/
-/* Allocate a new subscriber connection */
-static struct gsm_subscriber_connection *subscr_conn_allocate_a(const struct a_conn_info *a_conn_info,
+/* Allocate a new RAN connection */
+static struct ran_conn *ran_conn_allocate_a(const struct a_conn_info *a_conn_info,
struct gsm_network *network,
uint16_t lac, struct osmo_sccp_user *scu, int conn_id)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
- LOGP(DMSC, LOGL_DEBUG, "Allocating A-Interface subscriber conn: lac %i, conn_id %i\n", lac, conn_id);
+ LOGP(DMSC, LOGL_DEBUG, "Allocating A-Interface RAN conn: lac %i, conn_id %i\n", lac, conn_id);
- conn = msc_subscr_conn_alloc(network, RAN_GERAN_A, lac);
+ conn = ran_conn_alloc(network, RAN_GERAN_A, lac);
if (!conn)
return NULL;
@@ -62,18 +62,18 @@ static struct gsm_subscriber_connection *subscr_conn_allocate_a(const struct a_c
conn->a.scu = scu;
/* Also backup the calling address of the BSC, this allows us to
- * identify later which BSC is responsible for this subscriber connection */
+ * identify later which BSC is responsible for this RAN connection */
memcpy(&conn->a.bsc_addr, &a_conn_info->bsc->bsc_addr, sizeof(conn->a.bsc_addr));
- LOGPCONN(conn, LOGL_DEBUG, "A-Interface subscriber connection successfully allocated!\n");
+ LOGPCONN(conn, LOGL_DEBUG, "A-Interface RAN connection successfully allocated!\n");
return conn;
}
-/* Return an existing A subscriber connection record for the given
+/* Return an existing A RAN connection record for the given
* connection IDs, or return NULL if not found. */
-static struct gsm_subscriber_connection *subscr_conn_lookup_a(const struct gsm_network *network, int conn_id)
+static struct ran_conn *ran_conn_lookup_a(const struct gsm_network *network, int conn_id)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
OSMO_ASSERT(network);
@@ -83,7 +83,7 @@ static struct gsm_subscriber_connection *subscr_conn_lookup_a(const struct gsm_n
* maybe this function should be public to reach it from here? */
/* log_subscribers(network); */
- llist_for_each_entry(conn, &network->subscr_conns, entry) {
+ llist_for_each_entry(conn, &network->ran_conns, entry) {
if (conn->via_ran == RAN_GERAN_A && conn->a.conn_id == conn_id) {
LOGPCONN(conn, LOGL_DEBUG, "Found A subscriber for conn_id %i\n", conn_id);
return conn;
@@ -111,7 +111,7 @@ static void bssmap_rx_reset(struct osmo_sccp_user *scu, const struct a_conn_info
osmo_sccp_tx_unitdata_msg(scu, &a_conn_info->bsc->msc_addr, &a_conn_info->bsc->bsc_addr,
gsm0808_create_reset_ack());
- /* Make sure all orphand subscriber connections will be cleard */
+ /* Make sure all orphand RAN connections will be cleard */
a_clear_all(scu, &a_conn_info->bsc->bsc_addr);
if (!a_conn_info->bsc->reset_fsm)
@@ -213,7 +213,7 @@ void a_sccp_rx_udt(struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_
*/
/* Endpoint to handle BSSMAP clear request */
-static int bssmap_rx_clear_rqst(struct gsm_subscriber_connection *conn,
+static int bssmap_rx_clear_rqst(struct ran_conn *conn,
struct msgb *msg, struct tlv_parsed *tp)
{
uint8_t cause;
@@ -226,7 +226,7 @@ static int bssmap_rx_clear_rqst(struct gsm_subscriber_connection *conn,
}
cause = TLVP_VAL(tp, GSM0808_IE_CAUSE)[0];
- msc_subscr_conn_mo_close(conn, cause);
+ ran_conn_mo_close(conn, cause);
return 0;
}
@@ -234,14 +234,14 @@ static int bssmap_rx_clear_rqst(struct gsm_subscriber_connection *conn,
/* Endpoint to handle BSSMAP clear complete */
static int bssmap_rx_clear_complete(struct osmo_sccp_user *scu,
const struct a_conn_info *a_conn_info,
- struct gsm_subscriber_connection *conn)
+ struct ran_conn *conn)
{
int rc;
LOGPCONN(conn, LOGL_INFO, "Rx BSSMAP CLEAR COMPLETE, releasing SCCP connection\n");
if (conn)
- msc_subscr_conn_rx_bssmap_clear_complete(conn);
+ ran_conn_rx_bssmap_clear_complete(conn);
rc = osmo_sccp_tx_disconn(scu, a_conn_info->conn_id,
NULL, SCCP_RELEASE_CAUSE_END_USER_ORIGINATED);
@@ -261,7 +261,7 @@ static int bssmap_rx_l3_compl(struct osmo_sccp_user *scu, const struct a_conn_in
uint8_t data_length;
const uint8_t *data;
struct gsm_network *network = a_conn_info->network;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
LOGP(DBSSAP, LOGL_INFO, "Rx BSSMAP COMPLETE L3 INFO (conn_id=%i)\n", a_conn_info->conn_id);
@@ -340,7 +340,7 @@ static int bssmap_rx_l3_compl(struct osmo_sccp_user *scu, const struct a_conn_in
}
/* Create new subscriber context */
- conn = subscr_conn_allocate_a(a_conn_info, network, lac, scu, a_conn_info->conn_id);
+ conn = ran_conn_allocate_a(a_conn_info, network, lac, scu, a_conn_info->conn_id);
/* Handover location update to the MSC code */
msc_compl_l3(conn, msg, 0);
@@ -348,7 +348,7 @@ static int bssmap_rx_l3_compl(struct osmo_sccp_user *scu, const struct a_conn_in
}
/* Endpoint to handle BSSMAP classmark update */
-static int bssmap_rx_classmark_upd(struct gsm_subscriber_connection *conn, struct msgb *msg,
+static int bssmap_rx_classmark_upd(struct ran_conn *conn, struct msgb *msg,
struct tlv_parsed *tp)
{
const uint8_t *cm2 = NULL;
@@ -378,7 +378,7 @@ static int bssmap_rx_classmark_upd(struct gsm_subscriber_connection *conn, struc
}
/* Endpoint to handle BSSMAP cipher mode complete */
-static int bssmap_rx_ciph_compl(struct gsm_subscriber_connection *conn, struct msgb *msg,
+static int bssmap_rx_ciph_compl(struct ran_conn *conn, struct msgb *msg,
struct tlv_parsed *tp)
{
/* FIXME: The field GSM0808_IE_LAYER_3_MESSAGE_CONTENTS is optional by
@@ -413,7 +413,7 @@ static int bssmap_rx_ciph_compl(struct gsm_subscriber_connection *conn, struct m
}
/* Endpoint to handle BSSMAP cipher mode reject, 3GPP TS 08.08 ยง3.2.1.48 */
-static int bssmap_rx_ciph_rej(struct gsm_subscriber_connection *conn,
+static int bssmap_rx_ciph_rej(struct ran_conn *conn,
struct msgb *msg, struct tlv_parsed *tp)
{
int rc;
@@ -440,7 +440,7 @@ static int bssmap_rx_ciph_rej(struct gsm_subscriber_connection *conn,
}
/* Endpoint to handle BSSMAP assignment failure */
-static int bssmap_rx_ass_fail(struct gsm_subscriber_connection *conn, struct msgb *msg,
+static int bssmap_rx_ass_fail(struct ran_conn *conn, struct msgb *msg,
struct tlv_parsed *tp)
{
uint8_t cause;
@@ -473,7 +473,7 @@ static int bssmap_rx_ass_fail(struct gsm_subscriber_connection *conn, struct msg
}
/* Endpoint to handle sapi "n" reject */
-static int bssmap_rx_sapi_n_rej(struct gsm_subscriber_connection *conn, struct msgb *msg,
+static int bssmap_rx_sapi_n_rej(struct ran_conn *conn, struct msgb *msg,
struct tlv_parsed *tp)
{
uint8_t dlci;
@@ -538,7 +538,7 @@ static enum mgcp_codecs mgcp_codec_from_sc(struct gsm0808_speech_codec *sc)
}
/* Endpoint to handle assignment complete */
-static int bssmap_rx_ass_compl(struct gsm_subscriber_connection *conn, struct msgb *msg,
+static int bssmap_rx_ass_compl(struct ran_conn *conn, struct msgb *msg,
struct tlv_parsed *tp)
{
struct sockaddr_storage rtp_addr;
@@ -590,7 +590,7 @@ static int bssmap_rx_ass_compl(struct gsm_subscriber_connection *conn, struct ms
/* Handle incoming connection oriented BSSMAP messages */
static int rx_bssmap(struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct tlv_parsed tp;
int rc;
uint8_t msg_type;
@@ -616,11 +616,11 @@ static int rx_bssmap(struct osmo_sccp_user *scu, const struct a_conn_info *a_con
break;
}
- conn = subscr_conn_lookup_a(a_conn_info->network, a_conn_info->conn_id);
+ conn = ran_conn_lookup_a(a_conn_info->network, a_conn_info->conn_id);
if (!conn) {
- LOGP(DBSSAP, LOGL_ERROR, "Couldn't find subscr_conn for conn_id=%d\n", a_conn_info->conn_id);
+ LOGP(DBSSAP, LOGL_ERROR, "Couldn't find ran_conn for conn_id=%d\n", a_conn_info->conn_id);
/* We expect a Clear Complete to come in on a valid conn. But if for some reason we still
- * have the SCCP connection while the subscriber connection data is already gone, at
+ * have the SCCP connection while the RAN connection data is already gone, at
* least close the SCCP conn. */
if (msg_type == BSS_MAP_MSG_CLEAR_COMPLETE)
@@ -660,10 +660,10 @@ static int rx_bssmap(struct osmo_sccp_user *scu, const struct a_conn_info *a_con
static int rx_dtap(const struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg)
{
struct gsm_network *network = a_conn_info->network;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct dtap_header *dtap = (struct dtap_header *) msg->l2h;
- conn = subscr_conn_lookup_a(network, a_conn_info->conn_id);
+ conn = ran_conn_lookup_a(network, a_conn_info->conn_id);
if (!conn) {
return -EINVAL;
}
diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c
index 6569a9a52..407144e9b 100644
--- a/src/libmsc/gsm_04_08.c
+++ b/src/libmsc/gsm_04_08.c
@@ -77,16 +77,16 @@
void *tall_locop_ctx;
void *tall_authciphop_ctx;
-static int gsm0408_loc_upd_acc(struct gsm_subscriber_connection *conn,
+static int gsm0408_loc_upd_acc(struct ran_conn *conn,
uint32_t send_tmsi);
/*! Send a simple GSM 04.08 message without any payload
- * \param conn Active subscriber connection
+ * \param conn Active RAN connection
* \param[in] pdisc Protocol discriminator
* \param[in] msg_type Message type
* \return result of \ref gsm48_conn_sendmsg
*/
-int gsm48_tx_simple(struct gsm_subscriber_connection *conn,
+int gsm48_tx_simple(struct ran_conn *conn,
uint8_t pdisc, uint8_t msg_type)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 TX SIMPLE");
@@ -176,7 +176,7 @@ static int classmark_supports_a5(const struct gsm_classmark *cm, uint8_t a5)
}
}
-int gsm48_conn_sendmsg(struct msgb *msg, struct gsm_subscriber_connection *conn, struct gsm_trans *trans)
+int gsm48_conn_sendmsg(struct msgb *msg, struct ran_conn *conn, struct gsm_trans *trans)
{
struct gsm48_hdr *gh = (struct gsm48_hdr *) msg->data;
@@ -206,7 +206,7 @@ void gsm0408_clear_all_trans(struct gsm_network *net, int protocol)
}
/* Chapter 9.2.14 : Send LOCATION UPDATING REJECT */
-static int gsm0408_loc_upd_rej(struct gsm_subscriber_connection *conn, uint8_t cause)
+static int gsm0408_loc_upd_rej(struct ran_conn *conn, uint8_t cause)
{
struct msgb *msg;
@@ -223,7 +223,7 @@ static int gsm0408_loc_upd_rej(struct gsm_subscriber_connection *conn, uint8_t c
}
/* Chapter 9.2.13 : Send LOCATION UPDATE ACCEPT */
-static int gsm0408_loc_upd_acc(struct gsm_subscriber_connection *conn,
+static int gsm0408_loc_upd_acc(struct ran_conn *conn,
uint32_t send_tmsi)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 LOC UPD ACC");
@@ -274,7 +274,7 @@ static int gsm0408_loc_upd_acc(struct gsm_subscriber_connection *conn,
}
/* Transmit Chapter 9.2.10 Identity Request */
-static int mm_tx_identity_req(struct gsm_subscriber_connection *conn, uint8_t id_type)
+static int mm_tx_identity_req(struct ran_conn *conn, uint8_t id_type)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 ID REQ");
struct gsm48_hdr *gh;
@@ -288,7 +288,7 @@ static int mm_tx_identity_req(struct gsm_subscriber_connection *conn, uint8_t id
}
/* Parse Chapter 9.2.11 Identity Response */
-static int mm_rx_id_resp(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int mm_rx_id_resp(struct ran_conn *conn, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t mi_type = gh->data[1] & GSM_MI_TYPE_MASK;
@@ -319,7 +319,7 @@ static const struct value_string lupd_names[] = {
/* Chapter 9.2.15: Receive Location Updating Request.
* Keep this function non-static for direct invocation by unit tests. */
-int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
+int mm_rx_loc_upd_req(struct ran_conn *conn, struct msgb *msg)
{
struct gsm_network *net = conn->network;
struct gsm48_hdr *gh = msgb_l3(msg);
@@ -339,7 +339,7 @@ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
gsm48_mi_to_string(mi_string, sizeof(mi_string), lu->mi, lu->mi_len);
- if (msc_subscr_conn_is_establishing_auth_ciph(conn)) {
+ if (ran_conn_is_establishing_auth_ciph(conn)) {
LOGP(DMM, LOGL_ERROR,
"Cannot accept another LU, conn already busy establishing authenticity;"
" extraneous LOCATION UPDATING REQUEST: MI(%s)=%s type=%s\n",
@@ -347,7 +347,7 @@ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
return -EINVAL;
}
- if (msc_subscr_conn_is_accepted(conn)) {
+ if (ran_conn_is_accepted(conn)) {
LOGP(DMM, LOGL_ERROR,
"Cannot accept another LU, conn already established;"
" extraneous LOCATION UPDATING REQUEST: MI(%s)=%s type=%s\n",
@@ -355,7 +355,7 @@ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
return -EINVAL;
}
- msc_subscr_conn_update_id(conn, COMPLETE_LAYER3_LU, mi_string);
+ ran_conn_update_id(conn, COMPLETE_LAYER3_LU, mi_string);
DEBUGP(DMM, "LOCATION UPDATING REQUEST: MI(%s)=%s type=%s\n",
gsm48_mi_type_name(mi_type), mi_string,
@@ -406,7 +406,7 @@ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
is_utran = (conn->via_ran == RAN_UTRAN_IU);
lu_fsm = vlr_loc_update(conn->fi,
- SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, NULL,
+ RAN_CONN_E_ACCEPTED, RAN_CONN_E_CN_CLOSE, NULL,
net->vlr, conn, vlr_lu_type, tmsi, imsi,
&old_lai, &new_lai,
is_utran || conn->network->authentication_required,
@@ -433,7 +433,7 @@ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
conn->vsub->classmark.classmark1 = lu->classmark1;
conn->vsub->classmark.classmark1_set = true;
- msc_subscr_conn_complete_layer_3(conn);
+ ran_conn_complete_layer_3(conn);
return 0;
}
@@ -451,7 +451,7 @@ static uint8_t bcdify(uint8_t value)
/* Section 9.2.15a */
-int gsm48_tx_mm_info(struct gsm_subscriber_connection *conn)
+int gsm48_tx_mm_info(struct ran_conn *conn)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 MM INF");
struct gsm48_hdr *gh;
@@ -602,7 +602,7 @@ int gsm48_tx_mm_info(struct gsm_subscriber_connection *conn)
return gsm48_conn_sendmsg(msg, conn, NULL);
}
-/*! Send an Authentication Request to MS on the given subscriber connection
+/*! Send an Authentication Request to MS on the given RAN connection
* according to 3GPP/ETSI TS 24.008, Section 9.2.2.
* \param[in] conn Subscriber connection to send on.
* \param[in] rand Random challenge token to send, must be 16 bytes long.
@@ -610,7 +610,7 @@ int gsm48_tx_mm_info(struct gsm_subscriber_connection *conn)
* send; must be 16 bytes long, or pass NULL for plain GSM auth.
* \param[in] key_seq auth tuple's sequence number.
*/
-int gsm48_tx_mm_auth_req(struct gsm_subscriber_connection *conn, uint8_t *rand,
+int gsm48_tx_mm_auth_req(struct ran_conn *conn, uint8_t *rand,
uint8_t *autn, int key_seq)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 AUTH REQ");
@@ -640,7 +640,7 @@ int gsm48_tx_mm_auth_req(struct gsm_subscriber_connection *conn, uint8_t *rand,
}
/* Section 9.2.1 */
-int gsm48_tx_mm_auth_rej(struct gsm_subscriber_connection *conn)
+int gsm48_tx_mm_auth_rej(struct ran_conn *conn)
{
DEBUGP(DMM, "-> AUTH REJECT\n");
return gsm48_tx_simple(conn, GSM48_PDISC_MM, GSM48_MT_MM_AUTH_REJ);
@@ -649,7 +649,7 @@ int gsm48_tx_mm_auth_rej(struct gsm_subscriber_connection *conn)
static int msc_vlr_tx_cm_serv_acc(void *msc_conn_ref);
static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value result);
-static int cm_serv_reuse_conn(struct gsm_subscriber_connection *conn, const uint8_t *mi_lv)
+static int cm_serv_reuse_conn(struct ran_conn *conn, const uint8_t *mi_lv)
{
uint8_t mi_type;
char mi_string[GSM48_MI_SIZE];
@@ -687,9 +687,9 @@ accept_reuse:
if (!conn->received_cm_service_request) {
conn->received_cm_service_request = true;
- msc_subscr_conn_get(conn, MSC_CONN_USE_CM_SERVICE);
+ ran_conn_get(conn, MSC_CONN_USE_CM_SERVICE);
}
- msc_subscr_conn_update_id(conn, conn->complete_layer3_type, mi_string);
+ ran_conn_update_id(conn, conn->complete_layer3_type, mi_string);
return conn->network->vlr->ops.tx_cm_serv_acc(conn);
}
@@ -704,7 +704,7 @@ accept_reuse:
*
* Keep this function non-static for direct invocation by unit tests.
*/
-int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
+int gsm48_rx_mm_serv_req(struct ran_conn *conn, struct msgb *msg)
{
struct gsm_network *net = conn->network;
uint8_t mi_type;
@@ -771,10 +771,10 @@ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *ms
return msc_gsm48_tx_mm_serv_rej(conn, GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);
}
- if (msc_subscr_conn_is_accepted(conn))
+ if (ran_conn_is_accepted(conn))
return cm_serv_reuse_conn(conn, mi_p);
- if (msc_subscr_conn_is_establishing_auth_ciph(conn)) {
+ if (ran_conn_is_establishing_auth_ciph(conn)) {
LOGP(DMM, LOGL_ERROR,
"Cannot accept CM Service Request, conn already busy establishing authenticity\n");
msc_vlr_tx_cm_serv_rej(conn, GSM48_REJECT_CONGESTION);
@@ -782,13 +782,13 @@ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *ms
/* or should we accept and note down the service request anyway? */
}
- msc_subscr_conn_update_id(conn, COMPLETE_LAYER3_CM_SERVICE_REQ, mi_string);
+ ran_conn_update_id(conn, COMPLETE_LAYER3_CM_SERVICE_REQ, mi_string);
osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_IDENTITY, mi_p);
is_utran = (conn->via_ran == RAN_UTRAN_IU);
vlr_proc_acc_req(conn->fi,
- SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, NULL,
+ RAN_CONN_E_ACCEPTED, RAN_CONN_E_CN_CLOSE, NULL,
net->vlr, conn,
VLR_PR_ARQ_T_CM_SERV_REQ, mi-1, &lai,
is_utran || conn->network->authentication_required,
@@ -807,12 +807,12 @@ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *ms
memcpy(conn->vsub->classmark.classmark2, classmark2, classmark2_len);
conn->vsub->classmark.classmark2_len = classmark2_len;
- msc_subscr_conn_complete_layer_3(conn);
+ ran_conn_complete_layer_3(conn);
return 0;
}
/* Receive a CM Re-establish Request */
-static int gsm48_rx_cm_reest_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int gsm48_rx_cm_reest_req(struct ran_conn *conn, struct msgb *msg)
{
uint8_t mi_type;
char mi_string[GSM48_MI_SIZE];
@@ -831,7 +831,7 @@ static int gsm48_rx_cm_reest_req(struct gsm_subscriber_connection *conn, struct
return msc_gsm48_tx_mm_serv_rej(conn, GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);
}
-static int gsm48_rx_mm_imsi_detach_ind(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int gsm48_rx_mm_imsi_detach_ind(struct ran_conn *conn, struct msgb *msg)
{
struct gsm_network *network = conn->network;
struct gsm48_hdr *gh = msgb_l3(msg);
@@ -884,7 +884,7 @@ static int gsm48_rx_mm_imsi_detach_ind(struct gsm_subscriber_connection *conn, s
vlr_subscr_put(vsub);
}
- msc_subscr_conn_close(conn, 0);
+ ran_conn_close(conn, 0);
return 0;
}
@@ -898,7 +898,7 @@ static int gsm48_rx_mm_status(struct msgb *msg)
}
static int parse_gsm_auth_resp(uint8_t *res, uint8_t *res_len,
- struct gsm_subscriber_connection *conn,
+ struct ran_conn *conn,
struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
@@ -918,7 +918,7 @@ static int parse_gsm_auth_resp(uint8_t *res, uint8_t *res_len,
}
static int parse_umts_auth_resp(uint8_t *res, uint8_t *res_len,
- struct gsm_subscriber_connection *conn,
+ struct ran_conn *conn,
struct msgb *msg)
{
struct gsm48_hdr *gh;
@@ -970,7 +970,7 @@ static int parse_umts_auth_resp(uint8_t *res, uint8_t *res_len,
}
/* Chapter 9.2.3: Authentication Response */
-static int gsm48_rx_mm_auth_resp(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int gsm48_rx_mm_auth_resp(struct ran_conn *conn, struct msgb *msg)
{
uint8_t res[16];
uint8_t res_len;
@@ -980,7 +980,7 @@ static int gsm48_rx_mm_auth_resp(struct gsm_subscriber_connection *conn, struct
if (!conn->vsub) {
LOGP(DMM, LOGL_ERROR,
"MM AUTHENTICATION RESPONSE: invalid: no subscriber\n");
- msc_subscr_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
@@ -1010,7 +1010,7 @@ static int gsm48_rx_mm_auth_resp(struct gsm_subscriber_connection *conn, struct
res, res_len);
}
-static int gsm48_rx_mm_auth_fail(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int gsm48_rx_mm_auth_fail(struct ran_conn *conn, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t cause;
@@ -1021,7 +1021,7 @@ static int gsm48_rx_mm_auth_fail(struct gsm_subscriber_connection *conn, struct
if (!conn->vsub) {
LOGP(DMM, LOGL_ERROR,
"MM R99 AUTHENTICATION FAILURE: invalid: no subscriber\n");
- msc_subscr_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
@@ -1030,7 +1030,7 @@ static int gsm48_rx_mm_auth_fail(struct gsm_subscriber_connection *conn, struct
"%s: MM R99 AUTHENTICATION FAILURE:"
" l3 length invalid: %u\n",
vlr_subscr_name(conn->vsub), msgb_l3len(msg));
- msc_subscr_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
@@ -1053,7 +1053,7 @@ static int gsm48_rx_mm_auth_fail(struct gsm_subscriber_connection *conn, struct
"%s: MM R99 AUTHENTICATION FAILURE:"
" invalid Synch Failure: missing AUTS IE\n",
vlr_subscr_name(conn->vsub));
- msc_subscr_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
@@ -1070,7 +1070,7 @@ static int gsm48_rx_mm_auth_fail(struct gsm_subscriber_connection *conn, struct
" got IE 0x%02x of %u bytes\n",
vlr_subscr_name(conn->vsub),
GSM48_IE_AUTS, auts_tag, auts_len);
- msc_subscr_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
@@ -1079,7 +1079,7 @@ static int gsm48_rx_mm_auth_fail(struct gsm_subscriber_connection *conn, struct
"%s: MM R99 AUTHENTICATION FAILURE:"
" invalid Synch Failure msg: message truncated (%u)\n",
vlr_subscr_name(conn->vsub), msgb_l3len(msg));
- msc_subscr_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
@@ -1092,7 +1092,7 @@ static int gsm48_rx_mm_auth_fail(struct gsm_subscriber_connection *conn, struct
return vlr_subscr_rx_auth_fail(conn->vsub, auts);
}
-static int gsm48_rx_mm_tmsi_reall_compl(struct gsm_subscriber_connection *conn)
+static int gsm48_rx_mm_tmsi_reall_compl(struct ran_conn *conn)
{
DEBUGP(DMM, "TMSI Reallocation Completed. Subscriber: %s\n",
vlr_subscr_name(conn->vsub));
@@ -1105,7 +1105,7 @@ static int gsm48_rx_mm_tmsi_reall_compl(struct gsm_subscriber_connection *conn)
}
/* Receive a GSM 04.08 Mobility Management (MM) message */
-static int gsm0408_rcv_mm(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int gsm0408_rcv_mm(struct ran_conn *conn, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
int rc = 0;
@@ -1148,7 +1148,7 @@ static int gsm0408_rcv_mm(struct gsm_subscriber_connection *conn, struct msgb *m
}
/* Receive a PAGING RESPONSE message from the MS */
-static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int gsm48_rx_rr_pag_resp(struct ran_conn *conn, struct msgb *msg)
{
struct gsm_network *net = conn->network;
struct gsm48_hdr *gh = msgb_l3(msg);
@@ -1171,24 +1171,24 @@ static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct m
return -EINVAL;
}
- if (msc_subscr_conn_is_establishing_auth_ciph(conn)) {
+ if (ran_conn_is_establishing_auth_ciph(conn)) {
LOGP(DMM, LOGL_ERROR,
"Ignoring Paging Response, conn already busy establishing authenticity\n");
return 0;
}
- if (msc_subscr_conn_is_accepted(conn)) {
+ if (ran_conn_is_accepted(conn)) {
LOGP(DMM, LOGL_ERROR, "Ignoring Paging Response, conn already established\n");
return 0;
}
DEBUGP(DRR, "PAGING RESPONSE: MI(%s)=%s\n", gsm48_mi_type_name(mi_type), mi_string);
- msc_subscr_conn_update_id(conn, COMPLETE_LAYER3_PAGING_RESP, mi_string);
+ ran_conn_update_id(conn, COMPLETE_LAYER3_PAGING_RESP, mi_string);
is_utran = (conn->via_ran == RAN_UTRAN_IU);
vlr_proc_acc_req(conn->fi,
- SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, NULL,
+ RAN_CONN_E_ACCEPTED, RAN_CONN_E_CN_CLOSE, NULL,
net->vlr, conn,
VLR_PR_ARQ_T_PAGING_RESP, mi_lv, &lai,
is_utran || conn->network->authentication_required,
@@ -1207,11 +1207,11 @@ static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct m
memcpy(conn->vsub->classmark.classmark2, classmark2, classmark2_len);
conn->vsub->classmark.classmark2_len = classmark2_len;
- msc_subscr_conn_complete_layer_3(conn);
+ ran_conn_complete_layer_3(conn);
return 0;
}
-static int gsm48_rx_rr_app_info(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int gsm48_rx_rr_app_info(struct ran_conn *conn, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t apdu_id_flags;
@@ -1234,7 +1234,7 @@ static int gsm48_rx_rr_app_info(struct gsm_subscriber_connection *conn, struct m
}
/* Receive a GSM 04.08 Radio Resource (RR) message */
-static int gsm0408_rcv_rr(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int gsm0408_rcv_rr(struct ran_conn *conn, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
int rc = 0;
@@ -1255,7 +1255,7 @@ static int gsm0408_rcv_rr(struct gsm_subscriber_connection *conn, struct msgb *m
return rc;
}
-int gsm48_send_rr_app_info(struct gsm_subscriber_connection *conn, uint8_t apdu_id,
+int gsm48_send_rr_app_info(struct ran_conn *conn, uint8_t apdu_id,
uint8_t apdu_len, const uint8_t *apdu)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 APP INF");
@@ -1311,7 +1311,7 @@ static bool msg_is_initially_permitted(const struct gsm48_hdr *hdr)
return false;
}
-void cm_service_request_concludes(struct gsm_subscriber_connection *conn,
+void cm_service_request_concludes(struct ran_conn *conn,
struct msgb *msg)
{
@@ -1332,7 +1332,7 @@ void cm_service_request_concludes(struct gsm_subscriber_connection *conn,
gsm48_pdisc_msgtype_name(pdisc, msg_type));
}
conn->received_cm_service_request = false;
- msc_subscr_conn_put(conn, MSC_CONN_USE_CM_SERVICE);
+ ran_conn_put(conn, MSC_CONN_USE_CM_SERVICE);
}
/* TS 24.007 11.2.3.2.3 Message Type Octet / Duplicate Detection */
@@ -1393,7 +1393,7 @@ static uint8_t gsm0407_determine_nsd_ret_modulo_r98(uint8_t pdisc, uint8_t msg_t
}
/* TS 24.007 11.2.3.2 Message Type Octet / Duplicate Detection */
-static bool gsm0407_is_duplicate(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static bool gsm0407_is_duplicate(struct ran_conn *conn, struct msgb *msg)
{
struct gsm48_hdr *gh;
uint8_t pdisc;
@@ -1425,10 +1425,10 @@ static bool gsm0407_is_duplicate(struct gsm_subscriber_connection *conn, struct
}
}
-extern int gsm0408_rcv_cc(struct gsm_subscriber_connection *conn, struct msgb *msg);
+extern int gsm0408_rcv_cc(struct ran_conn *conn, struct msgb *msg);
/* Main entry point for GSM 04.08/44.008 Layer 3 data (e.g. from the BSC). */
-int gsm0408_dispatch(struct gsm_subscriber_connection *conn, struct msgb *msg)
+int gsm0408_dispatch(struct ran_conn *conn, struct msgb *msg)
{
struct gsm48_hdr *gh;
uint8_t pdisc;
@@ -1451,7 +1451,7 @@ int gsm0408_dispatch(struct gsm_subscriber_connection *conn, struct msgb *msg)
gsm48_pdisc_msgtype_name(pdisc, gsm48_hdr_msg_type(gh)),
pdisc, gsm48_hdr_msg_type(gh));
- if (!msc_subscr_conn_is_accepted(conn)
+ if (!ran_conn_is_accepted(conn)
&& !msg_is_initially_permitted(gh)) {
LOGP(DRLL, LOGL_ERROR,
"subscr %s: Message not permitted for initial conn: %s\n",
@@ -1518,7 +1518,7 @@ int gsm0408_dispatch(struct gsm_subscriber_connection *conn, struct msgb *msg)
static int msc_vlr_tx_auth_req(void *msc_conn_ref, struct gsm_auth_tuple *at,
bool send_autn)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
return gsm48_tx_mm_auth_req(conn, at->vec.rand,
send_autn? at->vec.autn : NULL,
at->key_seq);
@@ -1527,48 +1527,48 @@ static int msc_vlr_tx_auth_req(void *msc_conn_ref, struct gsm_auth_tuple *at,
/* VLR asks us to send an authentication reject */
static int msc_vlr_tx_auth_rej(void *msc_conn_ref)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
return gsm48_tx_mm_auth_rej(conn);
}
/* VLR asks us to transmit an Identity Request of given type */
static int msc_vlr_tx_id_req(void *msc_conn_ref, uint8_t mi_type)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
return mm_tx_identity_req(conn, mi_type);
}
/* VLR asks us to transmit a Location Update Accept */
static int msc_vlr_tx_lu_acc(void *msc_conn_ref, uint32_t send_tmsi)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
return gsm0408_loc_upd_acc(conn, send_tmsi);
}
/* VLR asks us to transmit a Location Update Reject */
static int msc_vlr_tx_lu_rej(void *msc_conn_ref, enum gsm48_reject_value cause)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
return gsm0408_loc_upd_rej(conn, cause);
}
/* VLR asks us to transmit a CM Service Accept */
static int msc_vlr_tx_cm_serv_acc(void *msc_conn_ref)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
return msc_gsm48_tx_mm_serv_ack(conn);
}
static int msc_vlr_tx_common_id(void *msc_conn_ref)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
return msc_tx_common_id(conn);
}
/* VLR asks us to transmit MM info. */
static int msc_vlr_tx_mm_info(void *msc_conn_ref)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
if (!conn->network->send_mm_info)
return 0;
return gsm48_tx_mm_info(conn);
@@ -1577,14 +1577,14 @@ static int msc_vlr_tx_mm_info(void *msc_conn_ref)
/* VLR asks us to transmit a CM Service Reject */
static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value cause)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
int rc;
rc = msc_gsm48_tx_mm_serv_rej(conn, cause);
if (conn->received_cm_service_request) {
conn->received_cm_service_request = false;
- msc_subscr_conn_put(conn, MSC_CONN_USE_CM_SERVICE);
+ ran_conn_put(conn, MSC_CONN_USE_CM_SERVICE);
}
return rc;
@@ -1594,7 +1594,7 @@ static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value ca
osmo_static_assert(sizeof(((struct gsm0808_encrypt_info*)0)->key) >= sizeof(((struct osmo_auth_vector*)0)->kc),
gsm0808_encrypt_info_key_fits_osmo_auth_vec_kc);
-int msc_geran_set_cipher_mode(struct gsm_subscriber_connection *conn, bool umts_aka, bool retrieve_imeisv)
+int msc_geran_set_cipher_mode(struct ran_conn *conn, bool umts_aka, bool retrieve_imeisv)
{
struct gsm_network *net = conn->network;
struct gsm0808_encrypt_info ei;
@@ -1679,7 +1679,7 @@ int msc_vlr_set_ciph_mode(void *msc_conn_ref,
bool umts_aka,
bool retrieve_imeisv)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
struct vlr_subscr *vsub;
struct gsm_auth_tuple *tuple;
@@ -1723,7 +1723,7 @@ int msc_vlr_set_ciph_mode(void *msc_conn_ref,
return -ENOTSUP;
}
-void msc_rx_sec_mode_compl(struct gsm_subscriber_connection *conn)
+void msc_rx_sec_mode_compl(struct ran_conn *conn)
{
struct vlr_ciph_result vlr_res = {};
@@ -1767,7 +1767,7 @@ static void update_classmark(const struct gsm_classmark *src, struct gsm_classma
static void msc_vlr_subscr_assoc(void *msc_conn_ref,
struct vlr_subscr *vsub)
{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
+ struct ran_conn *conn = msc_conn_ref;
OSMO_ASSERT(vsub);
OSMO_ASSERT(!conn->vsub);
conn->vsub = vlr_subscr_get(vsub);
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index c9dffe3a5..516fc511d 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -310,7 +310,7 @@ static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg);
static int setup_trig_pag_evt(unsigned int hooknum, unsigned int event,
struct msgb *msg, void *_conn, void *_transt)
{
- struct gsm_subscriber_connection *conn = _conn;
+ struct ran_conn *conn = _conn;
struct gsm_trans *transt = _transt;
enum gsm_paging_event paging_event = event;
@@ -322,7 +322,7 @@ static int setup_trig_pag_evt(unsigned int hooknum, unsigned int event,
vlr_subscr_msisdn_or_name(transt->vsub));
OSMO_ASSERT(conn);
/* Assign conn */
- transt->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC);
+ transt->conn = ran_conn_get(conn, MSC_CONN_USE_TRANS_CC);
transt->paging_request = NULL;
/* send SETUP request to called party */
gsm48_cc_tx_setup(transt, &transt->cc.msg);
@@ -1755,7 +1755,7 @@ int gsm48_tch_rtp_create(struct gsm_trans *trans)
* mgcp-gw expects the incoming RTP stream from the remote
* end (e.g. Asterisk) is known. */
- struct gsm_subscriber_connection *conn = trans->conn;
+ struct ran_conn *conn = trans->conn;
struct gsm_network *network = conn->network;
mncc_recv_rtp_sock(network, trans, MNCC_RTP_CREATE);
@@ -1859,7 +1859,7 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
{
int i, rc = 0;
struct gsm_trans *trans = NULL, *transt;
- struct gsm_subscriber_connection *conn = NULL;
+ struct ran_conn *conn = NULL;
struct gsm_mncc *data = arg, rel;
DEBUGP(DMNCC, "receive message %s\n", get_mncc_name(msg_type));
@@ -2005,7 +2005,7 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
}
/* Assign conn */
- trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC);
+ trans->conn = ran_conn_get(conn, MSC_CONN_USE_TRANS_CC);
trans->dlci = 0x00; /* SAPI=0, not SACCH */
vlr_subscr_put(vsub);
} else {
@@ -2112,7 +2112,7 @@ static struct datastate {
#define DATASLLEN \
(sizeof(datastatelist) / sizeof(struct datastate))
-int gsm0408_rcv_cc(struct gsm_subscriber_connection *conn, struct msgb *msg)
+int gsm0408_rcv_cc(struct ran_conn *conn, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t msg_type = gsm48_hdr_msg_type(gh);
@@ -2160,7 +2160,7 @@ int gsm0408_rcv_cc(struct gsm_subscriber_connection *conn, struct msgb *msg)
return -ENOMEM;
}
/* Assign transaction */
- trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC);
+ trans->conn = ran_conn_get(conn, MSC_CONN_USE_TRANS_CC);
trans->dlci = OMSC_LINKID_CB(msg); /* DLCI as received from BSC */
cm_service_request_concludes(conn, msg);
}
@@ -2179,6 +2179,6 @@ int gsm0408_rcv_cc(struct gsm_subscriber_connection *conn, struct msgb *msg)
rc = datastatelist[i].rout(trans, msg);
- msc_subscr_conn_communicating(conn);
+ ran_conn_communicating(conn);
return rc;
}
diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c
index b60234447..d214f2e86 100644
--- a/src/libmsc/gsm_04_11.c
+++ b/src/libmsc/gsm_04_11.c
@@ -120,7 +120,7 @@ static void send_signal(int sig_no,
osmo_signal_dispatch(SS_SMS, sig_no, &sig);
}
-static int gsm411_sendmsg(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int gsm411_sendmsg(struct ran_conn *conn, struct msgb *msg)
{
DEBUGP(DLSMS, "GSM4.11 TX %s\n", msgb_hexdump(msg));
msg->l3h = msg->data;
@@ -131,7 +131,7 @@ static int gsm411_sendmsg(struct gsm_subscriber_connection *conn, struct msgb *m
static int paging_cb_mmsms_est_req(unsigned int hooknum, unsigned int event,
struct msgb *msg, void *_conn, void *_trans)
{
- struct gsm_subscriber_connection *conn = _conn;
+ struct ran_conn *conn = _conn;
struct gsm_trans *trans = _trans;
struct gsm_sms *sms = trans->sms.sms;
int rc = 0;
@@ -148,7 +148,7 @@ static int paging_cb_mmsms_est_req(unsigned int hooknum, unsigned int event,
switch (event) {
case GSM_PAGING_SUCCEEDED:
/* Associate transaction with established connection */
- trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS);
+ trans->conn = ran_conn_get(conn, MSC_CONN_USE_TRANS_SMS);
/* Confirm successful connection establishment */
gsm411_smc_recv(&trans->sms.smc_inst,
GSM411_MMSMS_EST_CNF, NULL, 0);
@@ -404,7 +404,7 @@ static int gsm340_gen_sms_status_report_tpdu(struct msgb *msg,
return msg->len - old_msg_len;
}
-static int sms_route_mt_sms(struct gsm_subscriber_connection *conn,
+static int sms_route_mt_sms(struct ran_conn *conn,
struct gsm_sms *gsms)
{
int rc;
@@ -475,7 +475,7 @@ try_local:
static int gsm340_rx_tpdu(struct gsm_trans *trans, struct msgb *msg,
uint32_t gsm411_msg_ref)
{
- struct gsm_subscriber_connection *conn = trans->conn;
+ struct ran_conn *conn = trans->conn;
uint8_t *smsp = msgb_sms(msg);
struct gsm_sms *gsms;
unsigned int sms_alphabet;
@@ -753,7 +753,7 @@ static struct gsm_sms *sms_report_alloc(struct gsm_sms *sms)
}
static void sms_status_report(struct gsm_sms *gsms,
- struct gsm_subscriber_connection *conn)
+ struct ran_conn *conn)
{
struct gsm_sms *sms_report;
int rc;
@@ -980,7 +980,7 @@ static int gsm411_mn_recv(struct gsm411_smc_inst *inst, int msg_type,
static struct gsm_trans *gsm411_alloc_mt_trans(struct gsm_network *net,
struct vlr_subscr *vsub)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct gsm_trans *trans;
int tid;
@@ -1010,7 +1010,7 @@ static struct gsm_trans *gsm411_alloc_mt_trans(struct gsm_network *net,
conn = connection_for_subscr(vsub);
if (conn) {
/* Associate transaction with connection */
- trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS);
+ trans->conn = ran_conn_get(conn, MSC_CONN_USE_TRANS_SMS);
/* Generate unique RP Message Reference */
trans->sms.sm_rp_mr = conn->next_rp_ref++;
}
@@ -1095,7 +1095,7 @@ int gsm411_send_sms(struct gsm_network *net,
}
/* Entry point for incoming GSM48_PDISC_SMS from abis_rsl.c */
-int gsm0411_rcv_sms(struct gsm_subscriber_connection *conn,
+int gsm0411_rcv_sms(struct ran_conn *conn,
struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
@@ -1140,7 +1140,7 @@ int gsm0411_rcv_sms(struct gsm_subscriber_connection *conn,
gsm411_smr_init(&trans->sms.smr_inst, 0, 1,
gsm411_rl_recv, gsm411_mn_send);
- trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS);
+ trans->conn = ran_conn_get(conn, MSC_CONN_USE_TRANS_SMS);
trans->dlci = OMSC_LINKID_CB(msg); /* DLCI as received from BSC */
new_trans = 1;
@@ -1171,7 +1171,7 @@ int gsm0411_rcv_sms(struct gsm_subscriber_connection *conn,
}
}
- msc_subscr_conn_communicating(conn);
+ ran_conn_communicating(conn);
gsm411_smc_recv(&trans->sms.smc_inst,
(new_trans) ? GSM411_MMSMS_EST_IND : GSM411_MMSMS_DATA_IND,
@@ -1200,7 +1200,7 @@ void _gsm411_sms_trans_free(struct gsm_trans *trans)
}
/* Process incoming SAPI N-REJECT from BSC */
-void gsm411_sapi_n_reject(struct gsm_subscriber_connection *conn)
+void gsm411_sapi_n_reject(struct ran_conn *conn)
{
struct gsm_network *net;
struct gsm_trans *trans, *tmp;
diff --git a/src/libmsc/gsm_04_14.c b/src/libmsc/gsm_04_14.c
index 2be534c94..8fe03a88b 100644
--- a/src/libmsc/gsm_04_14.c
+++ b/src/libmsc/gsm_04_14.c
@@ -51,12 +51,12 @@ static struct msgb *create_gsm0414_msg(uint8_t msg_type)
return msg;
}
-static int gsm0414_conn_sendmsg(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int gsm0414_conn_sendmsg(struct ran_conn *conn, struct msgb *msg)
{
return msc_tx_dtap(conn, msg);
}
-static int gsm0414_tx_simple(struct gsm_subscriber_connection *conn, uint8_t msg_type)
+static int gsm0414_tx_simple(struct ran_conn *conn, uint8_t msg_type)
{
struct msgb *msg = create_gsm0414_msg(msg_type);
@@ -65,7 +65,7 @@ static int gsm0414_tx_simple(struct gsm_subscriber_connection *conn, uint8_t msg
/* Send a CLOSE_TCH_LOOOP_CMD according to Section 8.1 */
-int gsm0414_tx_close_tch_loop_cmd(struct gsm_subscriber_connection *conn,
+int gsm0414_tx_close_tch_loop_cmd(struct ran_conn *conn,
enum gsm414_tch_loop_mode loop_mode)
{
struct msgb *msg = create_gsm0414_msg(GSM414_MT_CLOSE_TCH_LOOP_CMD);
@@ -78,25 +78,25 @@ int gsm0414_tx_close_tch_loop_cmd(struct gsm_subscriber_connection *conn,
}
/* Send a OPEN_LOOP_CMD according to Section 8.3 */
-int gsm0414_tx_open_loop_cmd(struct gsm_subscriber_connection *conn)
+int gsm0414_tx_open_loop_cmd(struct ran_conn *conn)
{
return gsm0414_tx_simple(conn, GSM414_MT_OPEN_LOOP_CMD);
}
/* Send a ACT_EMMI_CMD according to Section 8.8 */
-int gsm0414_tx_act_emmi_cmd(struct gsm_subscriber_connection *conn)
+int gsm0414_tx_act_emmi_cmd(struct ran_conn *conn)
{
return gsm0414_tx_simple(conn, GSM414_MT_ACT_EMMI_CMD);
}
/* Send a DEACT_EMMI_CMD according to Section 8.10 */
-int gsm0414_tx_deact_emmi_cmd(struct gsm_subscriber_connection *conn)
+int gsm0414_tx_deact_emmi_cmd(struct ran_conn *conn)
{
return gsm0414_tx_simple(conn, GSM414_MT_DEACT_EMMI_CMD);
}
/* Send a TEST_INTERFACE according to Section 8.11 */
-int gsm0414_tx_test_interface(struct gsm_subscriber_connection *conn,
+int gsm0414_tx_test_interface(struct ran_conn *conn,
uint8_t tested_devs)
{
struct msgb *msg = create_gsm0414_msg(GSM414_MT_TEST_INTERFACE);
@@ -105,7 +105,7 @@ int gsm0414_tx_test_interface(struct gsm_subscriber_connection *conn,
}
/* Send a RESET_MS_POSITION_STORED according to Section 8.11 */
-int gsm0414_tx_reset_ms_pos_store(struct gsm_subscriber_connection *conn,
+int gsm0414_tx_reset_ms_pos_store(struct ran_conn *conn,
uint8_t technology)
{
struct msgb *msg = create_gsm0414_msg(GSM414_MT_RESET_MS_POS_STORED);
@@ -116,7 +116,7 @@ int gsm0414_tx_reset_ms_pos_store(struct gsm_subscriber_connection *conn,
/* Entry point for incoming GSM48_PDISC_TEST received from MS */
-int gsm0414_rcv_test(struct gsm_subscriber_connection *conn,
+int gsm0414_rcv_test(struct ran_conn *conn,
struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
diff --git a/src/libmsc/gsm_04_80.c b/src/libmsc/gsm_04_80.c
index 81f200190..fb5a09189 100644
--- a/src/libmsc/gsm_04_80.c
+++ b/src/libmsc/gsm_04_80.c
@@ -36,7 +36,7 @@
/*! Send a MT RELEASE COMPLETE message with Reject component
* (see section 3.6.1) and given error code (see section 3.6.7).
*
- * \param[in] conn Active subscriber connection
+ * \param[in] conn Active RAN connection
* \param[in] transaction_id Transaction ID with TI flag set
* \param[in] invoke_id InvokeID of the request
* \param[in] problem_tag Problem code tag (table 3.13)
@@ -47,7 +47,7 @@
* failed, any incorrect value can be passed (0x00 > x > 0xff), so
* the universal NULL-tag (see table 3.6) will be used instead.
*/
-int msc_send_ussd_reject(struct gsm_subscriber_connection *conn,
+int msc_send_ussd_reject(struct ran_conn *conn,
uint8_t transaction_id, int invoke_id,
uint8_t problem_tag, uint8_t problem_code)
{
@@ -70,7 +70,7 @@ int msc_send_ussd_reject(struct gsm_subscriber_connection *conn,
return msc_tx_dtap(conn, msg);
}
-int msc_send_ussd_notify(struct gsm_subscriber_connection *conn, int level, const char *text)
+int msc_send_ussd_notify(struct ran_conn *conn, int level, const char *text)
{
struct msgb *msg = gsm0480_create_ussd_notify(level, text);
if (!msg)
@@ -78,7 +78,7 @@ int msc_send_ussd_notify(struct gsm_subscriber_connection *conn, int level, cons
return msc_tx_dtap(conn, msg);
}
-int msc_send_ussd_release_complete(struct gsm_subscriber_connection *conn)
+int msc_send_ussd_release_complete(struct ran_conn *conn)
{
struct msgb *msg = gsm0480_create_ussd_release_complete();
if (!msg)
diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c
index 63a10472c..e1ea6817a 100644
--- a/src/libmsc/gsm_09_11.c
+++ b/src/libmsc/gsm_09_11.c
@@ -53,7 +53,7 @@
static uint32_t new_callref = 0x20000001;
/* Entry point for call independent MO SS messages */
-int gsm0911_rcv_nc_ss(struct gsm_subscriber_connection *conn, struct msgb *msg)
+int gsm0911_rcv_nc_ss(struct ran_conn *conn, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
struct osmo_gsup_message gsup_msg;
@@ -113,7 +113,7 @@ int gsm0911_rcv_nc_ss(struct gsm_subscriber_connection *conn, struct msgb *msg)
/* Count active NC SS/USSD sessions */
osmo_counter_inc(conn->network->active_nc_ss);
- trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_NC_SS);
+ trans->conn = ran_conn_get(conn, MSC_CONN_USE_TRANS_NC_SS);
trans->dlci = OMSC_LINKID_CB(msg);
cm_service_request_concludes(conn, msg);
}
@@ -193,7 +193,7 @@ int gsm0911_rcv_nc_ss(struct gsm_subscriber_connection *conn, struct msgb *msg)
if (msg_type == GSM0480_MTYPE_RELEASE_COMPLETE)
trans_free(trans);
else
- msc_subscr_conn_communicating(conn);
+ ran_conn_communicating(conn);
/* Count established MS-initiated NC SS/USSD sessions */
if (msg_type == GSM0480_MTYPE_REGISTER)
@@ -217,7 +217,7 @@ error:
static int handle_paging_event(unsigned int hooknum, unsigned int event,
struct msgb *msg, void *_conn, void *_transt)
{
- struct gsm_subscriber_connection *conn = _conn;
+ struct ran_conn *conn = _conn;
enum gsm_paging_event paging_event = event;
struct gsm_trans *transt = _transt;
struct gsm48_hdr *gh;
@@ -232,7 +232,7 @@ static int handle_paging_event(unsigned int hooknum, unsigned int event,
vlr_subscr_msisdn_or_name(transt->vsub));
/* Assign connection */
- transt->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_NC_SS);
+ transt->conn = ran_conn_get(conn, MSC_CONN_USE_TRANS_NC_SS);
transt->paging_request = NULL;
/* Send stored message */
@@ -272,7 +272,7 @@ static int handle_paging_event(unsigned int hooknum, unsigned int event,
static struct gsm_trans *establish_nc_ss_trans(struct gsm_network *net,
struct vlr_subscr *vsub, struct osmo_gsup_message *gsup_msg)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct gsm_trans *trans, *transt;
int tid;
@@ -324,7 +324,7 @@ static struct gsm_trans *establish_nc_ss_trans(struct gsm_network *net,
conn = connection_for_subscr(vsub);
if (conn) {
/* Assign connection */
- trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_NC_SS);
+ trans->conn = ran_conn_get(conn, MSC_CONN_USE_TRANS_NC_SS);
trans->dlci = 0x00; /* SAPI=0, not SACCH */
return trans;
}
diff --git a/src/libmsc/gsm_subscriber.c b/src/libmsc/gsm_subscriber.c
index fb612090b..a5bf74523 100644
--- a/src/libmsc/gsm_subscriber.c
+++ b/src/libmsc/gsm_subscriber.c
@@ -59,7 +59,7 @@ int subscr_paging_dispatch(unsigned int hooknum, unsigned int event,
struct msgb *msg, void *data, void *param)
{
struct subscr_request *request, *tmp;
- struct gsm_subscriber_connection *conn = data;
+ struct ran_conn *conn = data;
struct vlr_subscr *vsub = param;
struct paging_signal_data sig_data;
@@ -189,12 +189,12 @@ void subscr_remove_request(struct subscr_request *request)
talloc_free(request);
}
-struct gsm_subscriber_connection *connection_for_subscr(struct vlr_subscr *vsub)
+struct ran_conn *connection_for_subscr(struct vlr_subscr *vsub)
{
struct gsm_network *net = vsub->vlr->user_ctx;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
- llist_for_each_entry(conn, &net->subscr_conns, entry) {
+ llist_for_each_entry(conn, &net->ran_conns, entry) {
if (conn->vsub == vsub)
return conn;
}
diff --git a/src/libmsc/iucs.c b/src/libmsc/iucs.c
index c3fea0d06..f9ed75985 100644
--- a/src/libmsc/iucs.c
+++ b/src/libmsc/iucs.c
@@ -1,4 +1,4 @@
-/* Code to manage MSC subscriber connections over IuCS interface */
+/* Code to manage MSC RAN connections over IuCS interface */
/*
* (C) 2016,2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
@@ -48,16 +48,16 @@ extern struct msgb *ranap_new_msg_rab_assign_voice(uint8_t rab_id,
#endif /* BUILD_IU */
/* For A-interface see libbsc/bsc_api.c subscr_con_allocate() */
-static struct gsm_subscriber_connection *subscr_conn_allocate_iu(struct gsm_network *network,
+static struct ran_conn *ran_conn_allocate_iu(struct gsm_network *network,
struct ranap_ue_conn_ctx *ue,
uint16_t lac)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
- DEBUGP(DIUCS, "Allocating IuCS subscriber conn: lac %d, conn_id %" PRIx32 "\n",
+ DEBUGP(DIUCS, "Allocating IuCS RAN conn: lac %d, conn_id %" PRIx32 "\n",
lac, ue->conn_id);
- conn = msc_subscr_conn_alloc(network, RAN_UTRAN_IU, lac);
+ conn = ran_conn_alloc(network, RAN_UTRAN_IU, lac);
if (!conn)
return NULL;
@@ -78,9 +78,9 @@ static inline void log_subscribers(struct gsm_network *network)
if (!log_check_level(DIUCS, LOGL_DEBUG))
return;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
int i = 0;
- llist_for_each_entry(conn, &network->subscr_conns, entry) {
+ llist_for_each_entry(conn, &network->ran_conns, entry) {
DEBUGP(DIUCS, "%3d: %s", i, vlr_subscr_name(conn->vsub));
switch (conn->via_ran) {
case RAN_UTRAN_IU:
@@ -108,19 +108,19 @@ static inline void log_subscribers(struct gsm_network *network)
DEBUGP(DIUCS, "subscribers registered: %d\n", i);
}
-/* Return an existing IuCS subscriber connection record for the given
+/* Return an existing IuCS RAN connection record for the given
* connection IDs, or return NULL if not found. */
-struct gsm_subscriber_connection *subscr_conn_lookup_iu(
+struct ran_conn *ran_conn_lookup_iu(
struct gsm_network *network,
struct ranap_ue_conn_ctx *ue)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
DEBUGP(DIUCS, "Looking for IuCS subscriber: conn_id %" PRIx32 "\n",
ue->conn_id);
log_subscribers(network);
- llist_for_each_entry(conn, &network->subscr_conns, entry) {
+ llist_for_each_entry(conn, &network->ran_conns, entry) {
if (conn->via_ran != RAN_UTRAN_IU)
continue;
if (!same_ue_conn(conn->iu.ue_ctx, ue))
@@ -143,13 +143,13 @@ int gsm0408_rcvmsg_iucs(struct gsm_network *network, struct msgb *msg,
uint16_t *lac)
{
struct ranap_ue_conn_ctx *ue_ctx;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
ue_ctx = (struct ranap_ue_conn_ctx*)msg->dst;
/* TODO: are there message types that could allow us to skip this
* search? */
- conn = subscr_conn_lookup_iu(network, ue_ctx);
+ conn = ran_conn_lookup_iu(network, ue_ctx);
if (conn && lac && (conn->lac != *lac)) {
LOGP(DIUCS, LOGL_ERROR, "IuCS subscriber has changed LAC"
@@ -157,7 +157,7 @@ int gsm0408_rcvmsg_iucs(struct gsm_network *network, struct msgb *msg,
" %s from LAC %d to %d\n",
vlr_subscr_name(conn->vsub), conn->lac, *lac);
/* Deallocate conn with previous LAC */
- msc_subscr_conn_close(conn, GSM_CAUSE_INV_MAND_INFO);
+ ran_conn_close(conn, GSM_CAUSE_INV_MAND_INFO);
/* At this point we could be tolerant and allocate a new
* connection, but changing the LAC within the same connection
* is shifty. Rather cancel everything. */
@@ -184,7 +184,7 @@ int gsm0408_rcvmsg_iucs(struct gsm_network *network, struct msgb *msg,
return -1;
}
- conn = subscr_conn_allocate_iu(network, ue_ctx, *lac);
+ conn = ran_conn_allocate_iu(network, ue_ctx, *lac);
if (!conn)
abort();
@@ -197,7 +197,7 @@ int gsm0408_rcvmsg_iucs(struct gsm_network *network, struct msgb *msg,
int iu_rab_act_cs(struct gsm_trans *trans)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct msgb *msg;
bool use_x213_nsap;
uint32_t conn_id;
diff --git a/src/libmsc/iucs_ranap.c b/src/libmsc/iucs_ranap.c
index ec0b569c7..735808060 100644
--- a/src/libmsc/iucs_ranap.c
+++ b/src/libmsc/iucs_ranap.c
@@ -43,9 +43,9 @@
#include <asn1c/asn1helpers.h>
/* To continue authorization after a Security Mode Complete */
-int gsm0408_authorize(struct gsm_subscriber_connection *conn);
+int gsm0408_authorize(struct ran_conn *conn);
-static int iucs_rx_rab_assign(struct gsm_subscriber_connection *conn, RANAP_RAB_SetupOrModifiedItemIEs_t * setup_ies)
+static int iucs_rx_rab_assign(struct ran_conn *conn, RANAP_RAB_SetupOrModifiedItemIEs_t * setup_ies)
{
uint8_t rab_id;
RANAP_RAB_SetupOrModifiedItem_t *item = &setup_ies->raB_SetupOrModifiedItem;
@@ -89,7 +89,7 @@ static int iucs_rx_rab_assign(struct gsm_subscriber_connection *conn, RANAP_RAB_
return 0;
}
-int iucs_rx_sec_mode_compl(struct gsm_subscriber_connection *conn,
+int iucs_rx_sec_mode_compl(struct ran_conn *conn,
RANAP_SecurityModeCompleteIEs_t *ies)
{
OSMO_ASSERT(conn->via_ran == RAN_UTRAN_IU);
@@ -103,9 +103,9 @@ int iucs_rx_sec_mode_compl(struct gsm_subscriber_connection *conn,
int iucs_rx_ranap_event(struct gsm_network *network,
struct ranap_ue_conn_ctx *ue_ctx, int type, void *data)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
- conn = subscr_conn_lookup_iu(network, ue_ctx);
+ conn = ran_conn_lookup_iu(network, ue_ctx);
if (!conn) {
LOGP(DRANAP, LOGL_ERROR, "Cannot find subscriber for IU event %u\n", type);
@@ -117,7 +117,7 @@ int iucs_rx_ranap_event(struct gsm_network *network,
case RANAP_IU_EVENT_LINK_INVALIDATED:
LOGP(DIUCS, LOGL_INFO, "IuCS release for %s\n",
vlr_subscr_name(conn->vsub));
- msc_subscr_conn_rx_iu_release_complete(conn);
+ ran_conn_rx_iu_release_complete(conn);
return 0;
case RANAP_IU_EVENT_SECURITY_MODE_COMPLETE:
diff --git a/src/libmsc/msc_ifaces.c b/src/libmsc/msc_ifaces.c
index b76cdb45d..8ae34fcdd 100644
--- a/src/libmsc/msc_ifaces.c
+++ b/src/libmsc/msc_ifaces.c
@@ -46,7 +46,7 @@ const struct value_string ran_type_names[] = {
{ 0, NULL }
};
-static int msc_tx(struct gsm_subscriber_connection *conn, struct msgb *msg)
+static int msc_tx(struct ran_conn *conn, struct msgb *msg)
{
if (!msg)
return -EINVAL;
@@ -77,7 +77,7 @@ static int msc_tx(struct gsm_subscriber_connection *conn, struct msgb *msg)
}
-int msc_tx_dtap(struct gsm_subscriber_connection *conn,
+int msc_tx_dtap(struct ran_conn *conn,
struct msgb *msg)
{
return msc_tx(conn, msg);
@@ -85,7 +85,7 @@ int msc_tx_dtap(struct gsm_subscriber_connection *conn,
/* 9.2.5 CM service accept */
-int msc_gsm48_tx_mm_serv_ack(struct gsm_subscriber_connection *conn)
+int msc_gsm48_tx_mm_serv_ack(struct ran_conn *conn)
{
struct msgb *msg;
struct gsm48_hdr *gh;
@@ -106,7 +106,7 @@ int msc_gsm48_tx_mm_serv_ack(struct gsm_subscriber_connection *conn)
}
/* 9.2.6 CM service reject */
-int msc_gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn,
+int msc_gsm48_tx_mm_serv_rej(struct ran_conn *conn,
enum gsm48_reject_value value)
{
struct msgb *msg;
@@ -125,7 +125,7 @@ int msc_gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn,
return msc_tx_dtap(conn, msg);
}
-int msc_tx_common_id(struct gsm_subscriber_connection *conn)
+int msc_tx_common_id(struct ran_conn *conn)
{
if (!conn)
return -EINVAL;
diff --git a/src/libmsc/msc_mgcp.c b/src/libmsc/msc_mgcp.c
index c2bbe5fc3..1ddec08af 100644
--- a/src/libmsc/msc_mgcp.c
+++ b/src/libmsc/msc_mgcp.c
@@ -280,7 +280,7 @@ static void fsm_crcx_ran_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data
struct msgb *msg;
int rc;
struct gsm_trans *trans;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
OSMO_ASSERT(mgcp_ctx);
mgcp = mgcp_ctx->mgcp;
@@ -338,7 +338,7 @@ static void mgw_crcx_ran_resp_cb(struct mgcp_response *r, void *priv)
struct mgcp_ctx *mgcp_ctx = priv;
int rc;
struct gsm_trans *trans;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
/* NOTE: In case of error, we will not be able to perform any DLCX
* operation because until we either get a parseable message that
@@ -393,7 +393,7 @@ static void fsm_crcx_cn_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
struct msgb *msg;
int rc;
struct gsm_trans *trans;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
OSMO_ASSERT(mgcp_ctx);
mgcp = mgcp_ctx->mgcp;
@@ -447,7 +447,7 @@ static void mgw_crcx_cn_resp_cb(struct mgcp_response *r, void *priv)
struct mgcp_ctx *mgcp_ctx = priv;
int rc;
struct gsm_trans *trans;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
OSMO_ASSERT(mgcp_ctx);
trans = mgcp_ctx->trans;
@@ -487,7 +487,7 @@ static void fsm_crcx_compl(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
struct mgcp_ctx *mgcp_ctx = data;
struct gsm_trans *trans;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
OSMO_ASSERT(mgcp_ctx);
trans = mgcp_ctx->trans;
@@ -548,7 +548,7 @@ static void fsm_mdcx_cn_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
struct mgcp_ctx *mgcp_ctx = data;
struct mgcp_client *mgcp;
struct gsm_trans *trans;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct mgcp_msg mgcp_msg;
struct msgb *msg;
int rc;
@@ -631,7 +631,7 @@ static void mgw_mdcx_cn_resp_cb(struct mgcp_response *r, void *priv)
static void fsm_mdcx_cn_compl_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
struct mgcp_ctx *mgcp_ctx = data;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct gsm_trans *trans;
OSMO_ASSERT(mgcp_ctx);
@@ -667,7 +667,7 @@ static void fsm_mdcx_ran_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data
struct mgcp_ctx *mgcp_ctx = data;
struct mgcp_client *mgcp;
struct gsm_trans *trans;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct mgcp_msg mgcp_msg;
struct msgb *msg;
int rc;
@@ -959,7 +959,7 @@ int msc_mgcp_call_assignment(struct gsm_trans *trans)
struct mgcp_ctx *mgcp_ctx;
char name[32];
static bool fsm_registered = false;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct mgcp_client *mgcp;
OSMO_ASSERT(trans);
@@ -1027,11 +1027,11 @@ int msc_mgcp_call_assignment(struct gsm_trans *trans)
/* Inform the FSM that the assignment (RAN connection) is now complete.
* Parameter:
- * conn: subscriber connection context.
+ * conn: RAN connection context.
* port: port number of the remote leg.
* addr: IP-address of the remote leg.
* Returns -EINVAL on error, 0 on success. */
-int msc_mgcp_ass_complete(struct gsm_subscriber_connection *conn, uint16_t port, char *addr)
+int msc_mgcp_ass_complete(struct ran_conn *conn, uint16_t port, char *addr)
{
struct mgcp_ctx *mgcp_ctx;
@@ -1081,7 +1081,7 @@ int msc_mgcp_ass_complete(struct gsm_subscriber_connection *conn, uint16_t port,
int msc_mgcp_call_complete(struct gsm_trans *trans, uint16_t port, char *addr)
{
struct mgcp_ctx *mgcp_ctx;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
OSMO_ASSERT(trans);
OSMO_ASSERT(addr);
diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c
index 401586ea3..589eca077 100644
--- a/src/libmsc/msc_vty.c
+++ b/src/libmsc/msc_vty.c
@@ -489,7 +489,7 @@ static void vty_conn_hdr(struct vty *vty)
VTY_NEWLINE);
}
-static void vty_dump_one_conn(struct vty *vty, const struct gsm_subscriber_connection *conn)
+static void vty_dump_one_conn(struct vty *vty, const struct ran_conn *conn)
{
vty_out(vty, "%08x %22s %3s %5u %3u %08x %c /%1u %27s %s",
conn->a.conn_id,
@@ -507,10 +507,10 @@ static void vty_dump_one_conn(struct vty *vty, const struct gsm_subscriber_conne
DEFUN(show_msc_conn, show_msc_conn_cmd,
"show connection", SHOW_STR "Subscriber Connections\n")
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
vty_conn_hdr(vty);
- llist_for_each_entry(conn, &gsmnet->subscr_conns, entry)
+ llist_for_each_entry(conn, &gsmnet->ran_conns, entry)
vty_dump_one_conn(vty, conn);
return CMD_SUCCESS;
@@ -628,7 +628,7 @@ static void subscr_dump_full_vty(struct vty *vty, struct vlr_subscr *vsub)
/* Connection */
if (vsub->msc_conn_ref) {
- struct gsm_subscriber_connection *conn = vsub->msc_conn_ref;
+ struct ran_conn *conn = vsub->msc_conn_ref;
vty_conn_hdr(vty);
vty_dump_one_conn(vty, conn);
}
@@ -1003,7 +1003,7 @@ DEFUN(subscriber_ussd_notify,
"Text of USSD message to send\n")
{
char *text;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
int level;
@@ -1095,7 +1095,7 @@ DEFUN(subscriber_mstest_close,
"Loop Type F\n"
"Loop Type I\n")
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
const char *loop_str;
int loop_mode;
@@ -1128,7 +1128,7 @@ DEFUN(subscriber_mstest_open,
SUBSCR_HELP "Send a TS 04.14 MS Test Command to subscriber\n"
"Open a TCH Loop inside the MS\n")
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
if (!vsub) {
diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c
index 05ac8452a..f2fe85cb0 100644
--- a/src/libmsc/osmo_msc.c
+++ b/src/libmsc/osmo_msc.c
@@ -60,7 +60,7 @@ struct gsm_network *gsm_network_init(void *ctx, mncc_recv_cb_t mncc_recv)
INIT_LLIST_HEAD(&net->trans_list);
INIT_LLIST_HEAD(&net->upqueue);
- INIT_LLIST_HEAD(&net->subscr_conns);
+ INIT_LLIST_HEAD(&net->ran_conns);
/* init statistics */
net->msc_ctrs = rate_ctr_group_alloc(net, &msc_ctrg_desc, 0);
@@ -79,7 +79,7 @@ struct gsm_network *gsm_network_init(void *ctx, mncc_recv_cb_t mncc_recv)
}
/* Receive a SAPI-N-REJECT from BSC */
-void msc_sapi_n_reject(struct gsm_subscriber_connection *conn, int dlci)
+void msc_sapi_n_reject(struct ran_conn *conn, int dlci)
{
int sapi = dlci & 0x7;
@@ -90,25 +90,25 @@ void msc_sapi_n_reject(struct gsm_subscriber_connection *conn, int dlci)
/* receive a Level 3 Complete message.
* Ownership of the conn is completely passed to the conn FSM, i.e. for both acceptance and rejection,
* the conn FSM shall decide when to release this conn. It may already be discarded before this exits. */
-void msc_compl_l3(struct gsm_subscriber_connection *conn,
+void msc_compl_l3(struct ran_conn *conn,
struct msgb *msg, uint16_t chosen_channel)
{
- msc_subscr_conn_get(conn, MSC_CONN_USE_COMPL_L3);
+ ran_conn_get(conn, MSC_CONN_USE_COMPL_L3);
gsm0408_dispatch(conn, msg);
- msc_subscr_conn_put(conn, MSC_CONN_USE_COMPL_L3);
+ ran_conn_put(conn, MSC_CONN_USE_COMPL_L3);
}
/* Receive a DTAP message from BSC */
-void msc_dtap(struct gsm_subscriber_connection *conn, struct msgb *msg)
+void msc_dtap(struct ran_conn *conn, struct msgb *msg)
{
- msc_subscr_conn_get(conn, MSC_CONN_USE_DTAP);
+ ran_conn_get(conn, MSC_CONN_USE_DTAP);
gsm0408_dispatch(conn, msg);
- msc_subscr_conn_put(conn, MSC_CONN_USE_DTAP);
+ ran_conn_put(conn, MSC_CONN_USE_DTAP);
}
/* Receive an ASSIGNMENT COMPLETE from BSC */
-void msc_assign_compl(struct gsm_subscriber_connection *conn,
+void msc_assign_compl(struct ran_conn *conn,
uint8_t rr_cause, uint8_t chosen_channel,
uint8_t encr_alg_id, uint8_t speec)
{
@@ -116,14 +116,14 @@ void msc_assign_compl(struct gsm_subscriber_connection *conn,
}
/* Receive an ASSIGNMENT FAILURE from BSC */
-void msc_assign_fail(struct gsm_subscriber_connection *conn,
+void msc_assign_fail(struct ran_conn *conn,
uint8_t cause, uint8_t *rr_cause)
{
LOGP(DRR, LOGL_DEBUG, "MSC assign failure (do nothing).\n");
}
/* Receive a CLASSMARK CHANGE from BSC */
-void msc_classmark_chg(struct gsm_subscriber_connection *conn,
+void msc_classmark_chg(struct ran_conn *conn,
const uint8_t *cm2, uint8_t cm2_len,
const uint8_t *cm3, uint8_t cm3_len)
{
@@ -154,12 +154,12 @@ void msc_classmark_chg(struct gsm_subscriber_connection *conn,
}
/* bump subscr conn FSM in case it is waiting for a Classmark Update */
- if (conn->fi->state == SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE)
- osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_CLASSMARK_UPDATE, NULL);
+ if (conn->fi->state == RAN_CONN_S_WAIT_CLASSMARK_UPDATE)
+ osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_CLASSMARK_UPDATE, NULL);
}
/* Receive a CIPHERING MODE COMPLETE from BSC */
-void msc_cipher_mode_compl(struct gsm_subscriber_connection *conn,
+void msc_cipher_mode_compl(struct ran_conn *conn,
struct msgb *msg, uint8_t alg_id)
{
struct vlr_ciph_result ciph_res = { .cause = VLR_CIPH_REJECT };
@@ -207,13 +207,13 @@ void msc_cipher_mode_compl(struct gsm_subscriber_connection *conn,
}
/* Receive a CLEAR REQUEST from BSC */
-int msc_clear_request(struct gsm_subscriber_connection *conn, uint32_t cause)
+int msc_clear_request(struct ran_conn *conn, uint32_t cause)
{
- msc_subscr_conn_close(conn, cause);
+ ran_conn_close(conn, cause);
return 1;
}
-static const char *used_ref_counts_str(struct gsm_subscriber_connection *conn)
+static const char *used_ref_counts_str(struct ran_conn *conn)
{
static char buf[256];
int bit_nr;
@@ -237,7 +237,7 @@ static const char *used_ref_counts_str(struct gsm_subscriber_connection *conn)
for (bit_nr = 0; (1 << bit_nr) <= conn->use_tokens; bit_nr++) {
if (conn->use_tokens & (1 << bit_nr)) {
- APPEND_STR("%s", get_value_string(msc_subscr_conn_use_names, bit_nr));
+ APPEND_STR("%s", get_value_string(ran_conn_use_names, bit_nr));
}
}
return buf;
@@ -245,10 +245,8 @@ static const char *used_ref_counts_str(struct gsm_subscriber_connection *conn)
}
/* increment the ref-count. Needs to be called by every user */
-struct gsm_subscriber_connection *
-_msc_subscr_conn_get(struct gsm_subscriber_connection *conn,
- enum msc_subscr_conn_use balance_token,
- const char *file, int line)
+struct ran_conn *_ran_conn_get(struct ran_conn *conn, enum ran_conn_use balance_token,
+ const char *file, int line)
{
OSMO_ASSERT(conn);
@@ -259,22 +257,22 @@ _msc_subscr_conn_get(struct gsm_subscriber_connection *conn,
LOGPSRC(DREF, LOGL_ERROR, file, line,
"%s: MSC conn use error: using an already used token: %s\n",
vlr_subscr_name(conn->vsub),
- msc_subscr_conn_use_name(balance_token));
+ ran_conn_use_name(balance_token));
conn->use_tokens |= flag;
}
conn->use_count++;
LOGPSRC(DREF, LOGL_DEBUG, file, line,
"%s: MSC conn use + %s == %u (0x%x: %s)\n",
- vlr_subscr_name(conn->vsub), msc_subscr_conn_use_name(balance_token),
+ vlr_subscr_name(conn->vsub), ran_conn_use_name(balance_token),
conn->use_count, conn->use_tokens, used_ref_counts_str(conn));
return conn;
}
/* decrement the ref-count. Once it reaches zero, we release */
-void _msc_subscr_conn_put(struct gsm_subscriber_connection *conn,
- enum msc_subscr_conn_use balance_token,
+void _ran_conn_put(struct ran_conn *conn,
+ enum ran_conn_use balance_token,
const char *file, int line)
{
OSMO_ASSERT(conn);
@@ -286,7 +284,7 @@ void _msc_subscr_conn_put(struct gsm_subscriber_connection *conn,
LOGPSRC(DREF, LOGL_ERROR, file, line,
"%s: MSC conn use error: freeing an unused token: %s\n",
vlr_subscr_name(conn->vsub),
- msc_subscr_conn_use_name(balance_token));
+ ran_conn_use_name(balance_token));
conn->use_tokens &= ~flag;
}
@@ -294,26 +292,26 @@ void _msc_subscr_conn_put(struct gsm_subscriber_connection *conn,
LOGPSRC(DREF, LOGL_ERROR, file, line,
"%s: MSC conn use - %s failed: is already 0\n",
vlr_subscr_name(conn->vsub),
- msc_subscr_conn_use_name(balance_token));
+ ran_conn_use_name(balance_token));
return;
}
conn->use_count--;
LOGPSRC(DREF, LOGL_DEBUG, file, line,
"%s: MSC conn use - %s == %u (0x%x: %s)\n",
- vlr_subscr_name(conn->vsub), msc_subscr_conn_use_name(balance_token),
+ vlr_subscr_name(conn->vsub), ran_conn_use_name(balance_token),
conn->use_count, conn->use_tokens, used_ref_counts_str(conn));
if (conn->use_count == 0)
- osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_UNUSED, NULL);
+ osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_UNUSED, NULL);
}
-bool msc_subscr_conn_used_by(struct gsm_subscriber_connection *conn, enum msc_subscr_conn_use token)
+bool ran_conn_used_by(struct ran_conn *conn, enum ran_conn_use token)
{
return conn && (conn->use_tokens & (1 << token));
}
-const struct value_string msc_subscr_conn_use_names[] = {
+const struct value_string ran_conn_use_names[] = {
{MSC_CONN_USE_UNTRACKED, "UNTRACKED"},
{MSC_CONN_USE_COMPL_L3, "compl_l3"},
{MSC_CONN_USE_DTAP, "dtap"},
diff --git a/src/libmsc/rrlp.c b/src/libmsc/rrlp.c
index 2a5c1aad6..c0747cdca 100644
--- a/src/libmsc/rrlp.c
+++ b/src/libmsc/rrlp.c
@@ -58,7 +58,7 @@ const char *msc_rrlp_mode_name(enum rrlp_mode mode)
return get_value_string(rrlp_mode_names, mode);
}
-static int send_rrlp_req(struct gsm_subscriber_connection *conn)
+static int send_rrlp_req(struct ran_conn *conn)
{
struct gsm_network *net = conn->network;
const uint8_t *req;
@@ -89,7 +89,7 @@ static int subscr_sig_cb(unsigned int subsys, unsigned int signal,
void *handler_data, void *signal_data)
{
struct vlr_subscr *vsub;
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
switch (signal) {
case S_SUBSCR_ATTACHED:
diff --git a/src/libmsc/silent_call.c b/src/libmsc/silent_call.c
index 988889440..6c6e217d2 100644
--- a/src/libmsc/silent_call.c
+++ b/src/libmsc/silent_call.c
@@ -36,7 +36,7 @@
static int paging_cb_silent(unsigned int hooknum, unsigned int event,
struct msgb *msg, void *_conn, void *_data)
{
- struct gsm_subscriber_connection *conn = _conn;
+ struct ran_conn *conn = _conn;
struct scall_signal_data sigdata;
int rc = 0;
@@ -57,7 +57,7 @@ static int paging_cb_silent(unsigned int hooknum, unsigned int event,
conn->lchan->ts->nr, conn->lchan->ts->trx->arfcn);
#endif
conn->silent_call = 1;
- msc_subscr_conn_get(conn, MSC_CONN_USE_SILENT_CALL);
+ ran_conn_get(conn, MSC_CONN_USE_SILENT_CALL);
/* increment lchan reference count */
osmo_signal_dispatch(SS_SCALL, S_SCALL_SUCCESS, &sigdata);
break;
@@ -76,7 +76,7 @@ static int paging_cb_silent(unsigned int hooknum, unsigned int event,
#if 0
/* receive a layer 3 message from a silent call */
-int silent_call_rx(struct gsm_subscriber_connection *conn, struct msgb *msg)
+int silent_call_rx(struct ran_conn *conn, struct msgb *msg)
{
/* FIXME: do something like sending it through a UDP port */
LOGP(DLSMS, LOGL_NOTICE, "Discarding L3 message from a silent call.\n");
@@ -95,7 +95,7 @@ static const struct msg_match silent_call_accept[] = {
};
/* decide if we need to reroute a message as part of a silent call */
-int silent_call_reroute(struct gsm_subscriber_connection *conn, struct msgb *msg)
+int silent_call_reroute(struct ran_conn *conn, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t pdisc = gsm48_hdr_pdisc(gh);
@@ -138,7 +138,7 @@ int gsm_silent_call_start(struct vlr_subscr *vsub, void *data, int type)
/* end a silent call with a given subscriber */
int gsm_silent_call_stop(struct vlr_subscr *vsub)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
conn = connection_for_subscr(vsub);
if (!conn) {
@@ -162,7 +162,7 @@ int gsm_silent_call_stop(struct vlr_subscr *vsub)
#endif
conn->silent_call = 0;
- msc_subscr_conn_put(conn, MSC_CONN_USE_SILENT_CALL);
+ ran_conn_put(conn, MSC_CONN_USE_SILENT_CALL);
return 0;
}
diff --git a/src/libmsc/smpp_openbsc.c b/src/libmsc/smpp_openbsc.c
index 051372c08..10f3cfaad 100644
--- a/src/libmsc/smpp_openbsc.c
+++ b/src/libmsc/smpp_openbsc.c
@@ -536,7 +536,7 @@ void smpp_cmd_flush_pending(struct osmo_esme *esme)
void smpp_cmd_ack(struct osmo_smpp_cmd *cmd)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct gsm_trans *trans;
if (cmd->is_report)
@@ -562,7 +562,7 @@ out:
void smpp_cmd_err(struct osmo_smpp_cmd *cmd, uint32_t status)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct gsm_trans *trans;
int gsm411_cause;
@@ -636,7 +636,7 @@ struct osmo_smpp_cmd *smpp_cmd_find_by_seqnum(struct osmo_esme *esme,
}
static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
- struct gsm_subscriber_connection *conn)
+ struct ran_conn *conn)
{
struct deliver_sm_t deliver;
int mode, ret;
@@ -731,13 +731,13 @@ static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
static struct smsc *g_smsc;
-int smpp_route_smpp_first(struct gsm_sms *sms, struct gsm_subscriber_connection *conn)
+int smpp_route_smpp_first(struct gsm_sms *sms, struct ran_conn *conn)
{
return g_smsc->smpp_first;
}
int smpp_try_deliver(struct gsm_sms *sms,
- struct gsm_subscriber_connection *conn)
+ struct ran_conn *conn)
{
struct osmo_esme *esme;
struct osmo_smpp_addr dst;
diff --git a/src/libmsc/smpp_smsc.h b/src/libmsc/smpp_smsc.h
index 755e68577..27a2646ab 100644
--- a/src/libmsc/smpp_smsc.h
+++ b/src/libmsc/smpp_smsc.h
@@ -158,10 +158,10 @@ int smpp_determine_scheme(uint8_t dcs, uint8_t *data_coding, int *mode);
struct gsm_sms;
-struct gsm_subscriber_connection;
+struct ran_conn;
int smpp_route_smpp_first(struct gsm_sms *sms,
- struct gsm_subscriber_connection *conn);
+ struct ran_conn *conn);
int smpp_try_deliver(struct gsm_sms *sms,
- struct gsm_subscriber_connection *conn);
+ struct ran_conn *conn);
#endif
diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c
index f9e198586..b1c8bc9e9 100644
--- a/src/libmsc/subscr_conn.c
+++ b/src/libmsc/subscr_conn.c
@@ -1,4 +1,4 @@
-/* MSC subscriber connection implementation */
+/* MSC RAN connection implementation */
/*
* (C) 2016-2018 by sysmocom s.m.f.c. <info@sysmocom.de>
@@ -40,23 +40,23 @@
#include <osmocom/msc/iu_dummy.h>
#endif
-#define SUBSCR_CONN_TIMEOUT 5 /* seconds */
-
-static const struct value_string subscr_conn_fsm_event_names[] = {
- OSMO_VALUE_STRING(SUBSCR_CONN_E_COMPLETE_LAYER_3),
- OSMO_VALUE_STRING(SUBSCR_CONN_E_CLASSMARK_UPDATE),
- OSMO_VALUE_STRING(SUBSCR_CONN_E_ACCEPTED),
- OSMO_VALUE_STRING(SUBSCR_CONN_E_COMMUNICATING),
- OSMO_VALUE_STRING(SUBSCR_CONN_E_RELEASE_WHEN_UNUSED),
- OSMO_VALUE_STRING(SUBSCR_CONN_E_MO_CLOSE),
- OSMO_VALUE_STRING(SUBSCR_CONN_E_CN_CLOSE),
- OSMO_VALUE_STRING(SUBSCR_CONN_E_UNUSED),
+#define RAN_CONN_TIMEOUT 5 /* seconds */
+
+static const struct value_string ran_conn_fsm_event_names[] = {
+ OSMO_VALUE_STRING(RAN_CONN_E_COMPLETE_LAYER_3),
+ OSMO_VALUE_STRING(RAN_CONN_E_CLASSMARK_UPDATE),
+ OSMO_VALUE_STRING(RAN_CONN_E_ACCEPTED),
+ OSMO_VALUE_STRING(RAN_CONN_E_COMMUNICATING),
+ OSMO_VALUE_STRING(RAN_CONN_E_RELEASE_WHEN_UNUSED),
+ OSMO_VALUE_STRING(RAN_CONN_E_MO_CLOSE),
+ OSMO_VALUE_STRING(RAN_CONN_E_CN_CLOSE),
+ OSMO_VALUE_STRING(RAN_CONN_E_UNUSED),
{ 0, NULL }
};
static void update_counters(struct osmo_fsm_inst *fi, bool conn_accepted)
{
- struct gsm_subscriber_connection *conn = fi->priv;
+ struct ran_conn *conn = fi->priv;
switch (conn->complete_layer3_type) {
case COMPLETE_LAYER3_LU:
rate_ctr_inc(&conn->network->msc_ctrs->ctr[
@@ -80,7 +80,7 @@ static void update_counters(struct osmo_fsm_inst *fi, bool conn_accepted)
static void evaluate_acceptance_outcome(struct osmo_fsm_inst *fi, bool conn_accepted)
{
- struct gsm_subscriber_connection *conn = fi->priv;
+ struct ran_conn *conn = fi->priv;
update_counters(fi, conn_accepted);
@@ -94,7 +94,7 @@ static void evaluate_acceptance_outcome(struct osmo_fsm_inst *fi, bool conn_acce
if (conn->complete_layer3_type == COMPLETE_LAYER3_CM_SERVICE_REQ
&& conn_accepted) {
conn->received_cm_service_request = true;
- msc_subscr_conn_get(conn, MSC_CONN_USE_CM_SERVICE);
+ ran_conn_get(conn, MSC_CONN_USE_CM_SERVICE);
}
if (conn_accepted)
@@ -110,25 +110,25 @@ static void log_close_event(struct osmo_fsm_inst *fi, uint32_t event, void *data
LOGPFSML(fi, LOGL_NOTICE, "Close event, cause: %s\n", gsm48_reject_value_name(*cause));
}
-static void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+static void ran_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
switch (event) {
- case SUBSCR_CONN_E_COMPLETE_LAYER_3:
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_AUTH_CIPH, SUBSCR_CONN_TIMEOUT, 0);
+ case RAN_CONN_E_COMPLETE_LAYER_3:
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_AUTH_CIPH, RAN_CONN_TIMEOUT, 0);
return;
- case SUBSCR_CONN_E_ACCEPTED:
+ case RAN_CONN_E_ACCEPTED:
evaluate_acceptance_outcome(fi, true);
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_ACCEPTED, SUBSCR_CONN_TIMEOUT, 0);
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_ACCEPTED, RAN_CONN_TIMEOUT, 0);
return;
- case SUBSCR_CONN_E_MO_CLOSE:
- case SUBSCR_CONN_E_CN_CLOSE:
+ case RAN_CONN_E_MO_CLOSE:
+ case RAN_CONN_E_CN_CLOSE:
log_close_event(fi, event, data);
evaluate_acceptance_outcome(fi, false);
/* fall through */
- case SUBSCR_CONN_E_UNUSED:
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_RELEASING, SUBSCR_CONN_TIMEOUT, 0);
+ case RAN_CONN_E_UNUSED:
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASING, RAN_CONN_TIMEOUT, 0);
return;
default:
@@ -136,25 +136,25 @@ static void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *
}
}
-static void subscr_conn_fsm_auth_ciph(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+static void ran_conn_fsm_auth_ciph(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
/* If accepted, transition the state, all other cases mean failure. */
switch (event) {
- case SUBSCR_CONN_E_ACCEPTED:
+ case RAN_CONN_E_ACCEPTED:
evaluate_acceptance_outcome(fi, true);
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_ACCEPTED, SUBSCR_CONN_TIMEOUT, 0);
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_ACCEPTED, RAN_CONN_TIMEOUT, 0);
return;
- case SUBSCR_CONN_E_UNUSED:
+ case RAN_CONN_E_UNUSED:
LOGPFSML(fi, LOGL_DEBUG, "Awaiting results for Auth+Ciph, overruling event %s\n",
osmo_fsm_event_name(fi->fsm, event));
return;
- case SUBSCR_CONN_E_MO_CLOSE:
- case SUBSCR_CONN_E_CN_CLOSE:
+ case RAN_CONN_E_MO_CLOSE:
+ case RAN_CONN_E_CN_CLOSE:
log_close_event(fi, event, data);
evaluate_acceptance_outcome(fi, false);
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_RELEASING, SUBSCR_CONN_TIMEOUT, 0);
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASING, RAN_CONN_TIMEOUT, 0);
return;
@@ -163,7 +163,7 @@ static void subscr_conn_fsm_auth_ciph(struct osmo_fsm_inst *fi, uint32_t event,
}
}
-int msc_classmark_request_then_cipher_mode_cmd(struct gsm_subscriber_connection *conn, bool umts_aka,
+int msc_classmark_request_then_cipher_mode_cmd(struct ran_conn *conn, bool umts_aka,
bool retrieve_imeisv)
{
int rc;
@@ -177,15 +177,15 @@ int msc_classmark_request_then_cipher_mode_cmd(struct gsm_subscriber_connection
return -EIO;
}
- osmo_fsm_inst_state_chg(conn->fi, SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE, SUBSCR_CONN_TIMEOUT, 0);
+ osmo_fsm_inst_state_chg(conn->fi, RAN_CONN_S_WAIT_CLASSMARK_UPDATE, RAN_CONN_TIMEOUT, 0);
return 0;
}
-static void subscr_conn_fsm_wait_classmark_update(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+static void ran_conn_fsm_wait_classmark_update(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
- struct gsm_subscriber_connection *conn = fi->priv;
+ struct ran_conn *conn = fi->priv;
switch (event) {
- case SUBSCR_CONN_E_CLASSMARK_UPDATE:
+ case RAN_CONN_E_CLASSMARK_UPDATE:
/* Theoretically, this event can be used for requesting Classmark in various situations.
* So far though, the only time we send a Classmark Request is during Ciphering. As soon
* as more such situations arise, we need to add state to indicate what action should
@@ -196,7 +196,7 @@ static void subscr_conn_fsm_wait_classmark_update(struct osmo_fsm_inst *fi, uint
/* During Ciphering, we needed Classmark information. The Classmark Update has come in,
* go back into the Set Ciphering Command procedure. */
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_AUTH_CIPH, SUBSCR_CONN_TIMEOUT, 0);
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_AUTH_CIPH, RAN_CONN_TIMEOUT, 0);
if (msc_geran_set_cipher_mode(conn, conn->geran_set_cipher_mode.umts_aka,
conn->geran_set_cipher_mode.retrieve_imeisv)) {
LOGPFSML(fi, LOGL_ERROR,
@@ -206,16 +206,16 @@ static void subscr_conn_fsm_wait_classmark_update(struct osmo_fsm_inst *fi, uint
}
return;
- case SUBSCR_CONN_E_UNUSED:
+ case RAN_CONN_E_UNUSED:
LOGPFSML(fi, LOGL_DEBUG, "Awaiting results for Auth+Ciph, overruling event %s\n",
osmo_fsm_event_name(fi->fsm, event));
return;
- case SUBSCR_CONN_E_MO_CLOSE:
- case SUBSCR_CONN_E_CN_CLOSE:
+ case RAN_CONN_E_MO_CLOSE:
+ case RAN_CONN_E_CN_CLOSE:
log_close_event(fi, event, data);
evaluate_acceptance_outcome(fi, false);
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_RELEASING, SUBSCR_CONN_TIMEOUT, 0);
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASING, RAN_CONN_TIMEOUT, 0);
return;
default:
@@ -223,9 +223,9 @@ static void subscr_conn_fsm_wait_classmark_update(struct osmo_fsm_inst *fi, uint
}
}
-static bool subscr_conn_fsm_has_active_transactions(struct osmo_fsm_inst *fi)
+static bool ran_conn_fsm_has_active_transactions(struct osmo_fsm_inst *fi)
{
- struct gsm_subscriber_connection *conn = fi->priv;
+ struct ran_conn *conn = fi->priv;
struct gsm_trans *trans;
if (conn->silent_call) {
@@ -260,9 +260,9 @@ static bool subscr_conn_fsm_has_active_transactions(struct osmo_fsm_inst *fi)
return false;
}
-static void subscr_conn_fsm_accepted_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+static void ran_conn_fsm_accepted_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)
{
- struct gsm_subscriber_connection *conn = fi->priv;
+ struct ran_conn *conn = fi->priv;
/* Stop Location Update expiry for this subscriber. While the subscriber
* has an open connection the LU expiry timer must remain disabled.
@@ -271,29 +271,29 @@ static void subscr_conn_fsm_accepted_enter(struct osmo_fsm_inst *fi, uint32_t pr
* The LU expiry timer will restart once the connection is closed. */
conn->vsub->expire_lu = VLR_SUBSCRIBER_NO_EXPIRATION;
- if (!subscr_conn_fsm_has_active_transactions(fi))
- osmo_fsm_inst_dispatch(fi, SUBSCR_CONN_E_UNUSED, NULL);
+ if (!ran_conn_fsm_has_active_transactions(fi))
+ osmo_fsm_inst_dispatch(fi, RAN_CONN_E_UNUSED, NULL);
}
-static void subscr_conn_fsm_accepted(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+static void ran_conn_fsm_accepted(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
switch (event) {
- case SUBSCR_CONN_E_COMPLETE_LAYER_3:
+ case RAN_CONN_E_COMPLETE_LAYER_3:
/* When Authentication is off, we may already be in the Accepted state when the code
* evaluates the Compl L3. Simply ignore. This just cosmetically mutes the error log
* about the useless event. */
return;
- case SUBSCR_CONN_E_COMMUNICATING:
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_COMMUNICATING, 0, 0);
+ case RAN_CONN_E_COMMUNICATING:
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_COMMUNICATING, 0, 0);
return;
- case SUBSCR_CONN_E_MO_CLOSE:
- case SUBSCR_CONN_E_CN_CLOSE:
+ case RAN_CONN_E_MO_CLOSE:
+ case RAN_CONN_E_CN_CLOSE:
log_close_event(fi, event, data);
/* fall through */
- case SUBSCR_CONN_E_UNUSED:
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_RELEASING, SUBSCR_CONN_TIMEOUT, 0);
+ case RAN_CONN_E_UNUSED:
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASING, RAN_CONN_TIMEOUT, 0);
return;
default:
@@ -301,19 +301,19 @@ static void subscr_conn_fsm_accepted(struct osmo_fsm_inst *fi, uint32_t event, v
}
}
-static void subscr_conn_fsm_communicating(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+static void ran_conn_fsm_communicating(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
switch (event) {
- case SUBSCR_CONN_E_COMMUNICATING:
+ case RAN_CONN_E_COMMUNICATING:
/* no-op */
return;
- case SUBSCR_CONN_E_MO_CLOSE:
- case SUBSCR_CONN_E_CN_CLOSE:
+ case RAN_CONN_E_MO_CLOSE:
+ case RAN_CONN_E_CN_CLOSE:
log_close_event(fi, event, data);
/* fall through */
- case SUBSCR_CONN_E_UNUSED:
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_RELEASING, SUBSCR_CONN_TIMEOUT, 0);
+ case RAN_CONN_E_UNUSED:
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASING, RAN_CONN_TIMEOUT, 0);
return;
default:
@@ -321,33 +321,33 @@ static void subscr_conn_fsm_communicating(struct osmo_fsm_inst *fi, uint32_t eve
}
}
-static int subscr_conn_fsm_timeout(struct osmo_fsm_inst *fi)
+static int ran_conn_fsm_timeout(struct osmo_fsm_inst *fi)
{
- struct gsm_subscriber_connection *conn = fi->priv;
- if (msc_subscr_conn_in_release(conn)) {
+ struct ran_conn *conn = fi->priv;
+ if (ran_conn_in_release(conn)) {
LOGPFSML(fi, LOGL_ERROR, "Timeout while releasing, discarding right now\n");
osmo_fsm_inst_term(fi, OSMO_FSM_TERM_TIMEOUT, NULL);
} else {
enum gsm48_reject_value cause = GSM48_REJECT_CONGESTION;
- osmo_fsm_inst_dispatch(fi, SUBSCR_CONN_E_CN_CLOSE, &cause);
+ osmo_fsm_inst_dispatch(fi, RAN_CONN_E_CN_CLOSE, &cause);
}
return 0;
}
-static void subscr_conn_fsm_releasing_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+static void ran_conn_fsm_releasing_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
{
- struct gsm_subscriber_connection *conn = fi->priv;
+ struct ran_conn *conn = fi->priv;
/* Use count for either conn->a.waiting_for_clear_complete or
* conn->iu.waiting_for_release_complete. 'get' it early, so we don't deallocate after tearing
* down active transactions. Safeguard against double-get (though it shouldn't happen). */
- if (!msc_subscr_conn_used_by(conn, MSC_CONN_USE_RELEASE))
- msc_subscr_conn_get(conn, MSC_CONN_USE_RELEASE);
+ if (!ran_conn_used_by(conn, MSC_CONN_USE_RELEASE))
+ ran_conn_get(conn, MSC_CONN_USE_RELEASE);
/* Cancel pending CM Service Requests */
if (conn->received_cm_service_request) {
conn->received_cm_service_request = false;
- msc_subscr_conn_put(conn, MSC_CONN_USE_CM_SERVICE);
+ ran_conn_put(conn, MSC_CONN_USE_CM_SERVICE);
}
/* Cancel all VLR FSMs, if any */
@@ -388,110 +388,110 @@ static void subscr_conn_fsm_releasing_onenter(struct osmo_fsm_inst *fi, uint32_t
}
}
-static void subscr_conn_fsm_releasing(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+static void ran_conn_fsm_releasing(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
- OSMO_ASSERT(event == SUBSCR_CONN_E_UNUSED);
- osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_RELEASED, 0, 0);
+ OSMO_ASSERT(event == RAN_CONN_E_UNUSED);
+ osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASED, 0, 0);
}
-static void subscr_conn_fsm_released(struct osmo_fsm_inst *fi, uint32_t prev_state)
+static void ran_conn_fsm_released(struct osmo_fsm_inst *fi, uint32_t prev_state)
{
- /* Terminate, deallocate and also deallocate the gsm_subscriber_connection, which is allocated as
+ /* Terminate, deallocate and also deallocate the ran_conn, which is allocated as
* a talloc child of fi. Also calls the cleanup function. */
osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL);
}
#define S(x) (1 << (x))
-static const struct osmo_fsm_state subscr_conn_fsm_states[] = {
- [SUBSCR_CONN_S_NEW] = {
- .name = OSMO_STRINGIFY(SUBSCR_CONN_S_NEW),
- .in_event_mask = S(SUBSCR_CONN_E_COMPLETE_LAYER_3) |
- S(SUBSCR_CONN_E_ACCEPTED) |
- S(SUBSCR_CONN_E_MO_CLOSE) |
- S(SUBSCR_CONN_E_CN_CLOSE) |
- S(SUBSCR_CONN_E_UNUSED),
- .out_state_mask = S(SUBSCR_CONN_S_AUTH_CIPH) |
- S(SUBSCR_CONN_S_ACCEPTED) |
- S(SUBSCR_CONN_S_RELEASING),
- .action = subscr_conn_fsm_new,
+static const struct osmo_fsm_state ran_conn_fsm_states[] = {
+ [RAN_CONN_S_NEW] = {
+ .name = OSMO_STRINGIFY(RAN_CONN_S_NEW),
+ .in_event_mask = S(RAN_CONN_E_COMPLETE_LAYER_3) |
+ S(RAN_CONN_E_ACCEPTED) |
+ S(RAN_CONN_E_MO_CLOSE) |
+ S(RAN_CONN_E_CN_CLOSE) |
+ S(RAN_CONN_E_UNUSED),
+ .out_state_mask = S(RAN_CONN_S_AUTH_CIPH) |
+ S(RAN_CONN_S_ACCEPTED) |
+ S(RAN_CONN_S_RELEASING),
+ .action = ran_conn_fsm_new,
},
- [SUBSCR_CONN_S_AUTH_CIPH] = {
- .name = OSMO_STRINGIFY(SUBSCR_CONN_S_AUTH_CIPH),
- .in_event_mask = S(SUBSCR_CONN_E_ACCEPTED) |
- S(SUBSCR_CONN_E_MO_CLOSE) |
- S(SUBSCR_CONN_E_CN_CLOSE) |
- S(SUBSCR_CONN_E_UNUSED),
- .out_state_mask = S(SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE) |
- S(SUBSCR_CONN_S_ACCEPTED) |
- S(SUBSCR_CONN_S_RELEASING),
- .action = subscr_conn_fsm_auth_ciph,
+ [RAN_CONN_S_AUTH_CIPH] = {
+ .name = OSMO_STRINGIFY(RAN_CONN_S_AUTH_CIPH),
+ .in_event_mask = S(RAN_CONN_E_ACCEPTED) |
+ S(RAN_CONN_E_MO_CLOSE) |
+ S(RAN_CONN_E_CN_CLOSE) |
+ S(RAN_CONN_E_UNUSED),
+ .out_state_mask = S(RAN_CONN_S_WAIT_CLASSMARK_UPDATE) |
+ S(RAN_CONN_S_ACCEPTED) |
+ S(RAN_CONN_S_RELEASING),
+ .action = ran_conn_fsm_auth_ciph,
},
- [SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE] = {
- .name = OSMO_STRINGIFY(SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE),
- .in_event_mask = S(SUBSCR_CONN_E_CLASSMARK_UPDATE) |
- S(SUBSCR_CONN_E_MO_CLOSE) |
- S(SUBSCR_CONN_E_CN_CLOSE) |
- S(SUBSCR_CONN_E_UNUSED),
- .out_state_mask = S(SUBSCR_CONN_S_AUTH_CIPH) |
- S(SUBSCR_CONN_S_RELEASING),
- .action = subscr_conn_fsm_wait_classmark_update,
+ [RAN_CONN_S_WAIT_CLASSMARK_UPDATE] = {
+ .name = OSMO_STRINGIFY(RAN_CONN_S_WAIT_CLASSMARK_UPDATE),
+ .in_event_mask = S(RAN_CONN_E_CLASSMARK_UPDATE) |
+ S(RAN_CONN_E_MO_CLOSE) |
+ S(RAN_CONN_E_CN_CLOSE) |
+ S(RAN_CONN_E_UNUSED),
+ .out_state_mask = S(RAN_CONN_S_AUTH_CIPH) |
+ S(RAN_CONN_S_RELEASING),
+ .action = ran_conn_fsm_wait_classmark_update,
},
- [SUBSCR_CONN_S_ACCEPTED] = {
- .name = OSMO_STRINGIFY(SUBSCR_CONN_S_ACCEPTED),
+ [RAN_CONN_S_ACCEPTED] = {
+ .name = OSMO_STRINGIFY(RAN_CONN_S_ACCEPTED),
/* allow everything to release for any odd behavior */
- .in_event_mask = S(SUBSCR_CONN_E_COMPLETE_LAYER_3) |
- S(SUBSCR_CONN_E_COMMUNICATING) |
- S(SUBSCR_CONN_E_RELEASE_WHEN_UNUSED) |
- S(SUBSCR_CONN_E_ACCEPTED) |
- S(SUBSCR_CONN_E_MO_CLOSE) |
- S(SUBSCR_CONN_E_CN_CLOSE) |
- S(SUBSCR_CONN_E_UNUSED),
- .out_state_mask = S(SUBSCR_CONN_S_RELEASING) |
- S(SUBSCR_CONN_S_COMMUNICATING),
- .onenter = subscr_conn_fsm_accepted_enter,
- .action = subscr_conn_fsm_accepted,
+ .in_event_mask = S(RAN_CONN_E_COMPLETE_LAYER_3) |
+ S(RAN_CONN_E_COMMUNICATING) |
+ S(RAN_CONN_E_RELEASE_WHEN_UNUSED) |
+ S(RAN_CONN_E_ACCEPTED) |
+ S(RAN_CONN_E_MO_CLOSE) |
+ S(RAN_CONN_E_CN_CLOSE) |
+ S(RAN_CONN_E_UNUSED),
+ .out_state_mask = S(RAN_CONN_S_RELEASING) |
+ S(RAN_CONN_S_COMMUNICATING),
+ .onenter = ran_conn_fsm_accepted_enter,
+ .action = ran_conn_fsm_accepted,
},
- [SUBSCR_CONN_S_COMMUNICATING] = {
- .name = OSMO_STRINGIFY(SUBSCR_CONN_S_COMMUNICATING),
+ [RAN_CONN_S_COMMUNICATING] = {
+ .name = OSMO_STRINGIFY(RAN_CONN_S_COMMUNICATING),
/* allow everything to release for any odd behavior */
- .in_event_mask = S(SUBSCR_CONN_E_RELEASE_WHEN_UNUSED) |
- S(SUBSCR_CONN_E_ACCEPTED) |
- S(SUBSCR_CONN_E_COMMUNICATING) |
- S(SUBSCR_CONN_E_MO_CLOSE) |
- S(SUBSCR_CONN_E_CN_CLOSE) |
- S(SUBSCR_CONN_E_UNUSED),
- .out_state_mask = S(SUBSCR_CONN_S_RELEASING),
- .action = subscr_conn_fsm_communicating,
+ .in_event_mask = S(RAN_CONN_E_RELEASE_WHEN_UNUSED) |
+ S(RAN_CONN_E_ACCEPTED) |
+ S(RAN_CONN_E_COMMUNICATING) |
+ S(RAN_CONN_E_MO_CLOSE) |
+ S(RAN_CONN_E_CN_CLOSE) |
+ S(RAN_CONN_E_UNUSED),
+ .out_state_mask = S(RAN_CONN_S_RELEASING),
+ .action = ran_conn_fsm_communicating,
},
- [SUBSCR_CONN_S_RELEASING] = {
- .name = OSMO_STRINGIFY(SUBSCR_CONN_S_RELEASING),
- .in_event_mask = S(SUBSCR_CONN_E_UNUSED),
- .out_state_mask = S(SUBSCR_CONN_S_RELEASED),
- .onenter = subscr_conn_fsm_releasing_onenter,
- .action = subscr_conn_fsm_releasing,
+ [RAN_CONN_S_RELEASING] = {
+ .name = OSMO_STRINGIFY(RAN_CONN_S_RELEASING),
+ .in_event_mask = S(RAN_CONN_E_UNUSED),
+ .out_state_mask = S(RAN_CONN_S_RELEASED),
+ .onenter = ran_conn_fsm_releasing_onenter,
+ .action = ran_conn_fsm_releasing,
},
- [SUBSCR_CONN_S_RELEASED] = {
- .name = OSMO_STRINGIFY(SUBSCR_CONN_S_RELEASED),
- .onenter = subscr_conn_fsm_released,
+ [RAN_CONN_S_RELEASED] = {
+ .name = OSMO_STRINGIFY(RAN_CONN_S_RELEASED),
+ .onenter = ran_conn_fsm_released,
},
};
-static void subscr_conn_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause);
+static void ran_conn_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause);
-static struct osmo_fsm subscr_conn_fsm = {
- .name = "Subscr_Conn",
- .states = subscr_conn_fsm_states,
- .num_states = ARRAY_SIZE(subscr_conn_fsm_states),
+static struct osmo_fsm ran_conn_fsm = {
+ .name = "RAN_conn",
+ .states = ran_conn_fsm_states,
+ .num_states = ARRAY_SIZE(ran_conn_fsm_states),
.allstate_event_mask = 0,
.allstate_action = NULL,
.log_subsys = DMM,
- .event_names = subscr_conn_fsm_event_names,
- .cleanup = subscr_conn_fsm_cleanup,
- .timer_cb = subscr_conn_fsm_timeout,
+ .event_names = ran_conn_fsm_event_names,
+ .cleanup = ran_conn_fsm_cleanup,
+ .timer_cb = ran_conn_fsm_timeout,
};
-char *msc_subscr_conn_get_conn_id(struct gsm_subscriber_connection *conn)
+char *ran_conn_get_conn_id(struct ran_conn *conn)
{
char *id;
@@ -511,64 +511,64 @@ char *msc_subscr_conn_get_conn_id(struct gsm_subscriber_connection *conn)
}
/* Tidy up before the FSM deallocates */
-static void subscr_conn_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+static void ran_conn_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
{
- struct gsm_subscriber_connection *conn = fi->priv;
+ struct ran_conn *conn = fi->priv;
- if (subscr_conn_fsm_has_active_transactions(fi))
+ if (ran_conn_fsm_has_active_transactions(fi))
LOGPFSML(fi, LOGL_ERROR, "Deallocating despite active transactions\n");
if (!conn) {
- LOGP(DRLL, LOGL_ERROR, "Freeing NULL subscriber connection\n");
+ LOGP(DRLL, LOGL_ERROR, "Freeing NULL RAN connection\n");
return;
}
if (conn->vsub) {
- DEBUGP(DRLL, "%s: Freeing subscriber connection\n", vlr_subscr_name(conn->vsub));
+ DEBUGP(DRLL, "%s: Freeing RAN connection\n", vlr_subscr_name(conn->vsub));
conn->vsub->lu_fsm = NULL;
conn->vsub->msc_conn_ref = NULL;
vlr_subscr_put(conn->vsub);
conn->vsub = NULL;
} else
- DEBUGP(DRLL, "Freeing subscriber connection with NULL subscriber\n");
+ DEBUGP(DRLL, "Freeing RAN connection with NULL subscriber\n");
llist_del(&conn->entry);
}
/* Signal success of Complete Layer 3. Allow to keep the conn open for Auth and Ciph. */
-void msc_subscr_conn_complete_layer_3(struct gsm_subscriber_connection *conn)
+void ran_conn_complete_layer_3(struct ran_conn *conn)
{
if (!conn)
return;
- osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_COMPLETE_LAYER_3, NULL);
+ osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_COMPLETE_LAYER_3, NULL);
}
-void subscr_conn_release_when_unused(struct gsm_subscriber_connection *conn)
+void ran_conn_release_when_unused(struct ran_conn *conn)
{
if (!conn)
return;
- if (msc_subscr_conn_in_release(conn)) {
+ if (ran_conn_in_release(conn)) {
DEBUGP(DMM, "%s: %s: conn already in release (%s)\n",
vlr_subscr_name(conn->vsub), __func__,
osmo_fsm_inst_state_name(conn->fi));
return;
}
- if (conn->fi->state == SUBSCR_CONN_S_NEW) {
+ if (conn->fi->state == RAN_CONN_S_NEW) {
DEBUGP(DMM, "%s: %s: conn still being established (%s)\n",
vlr_subscr_name(conn->vsub), __func__,
osmo_fsm_inst_state_name(conn->fi));
return;
}
- osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_RELEASE_WHEN_UNUSED, NULL);
+ osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_RELEASE_WHEN_UNUSED, NULL);
}
-static void conn_close(struct gsm_subscriber_connection *conn, uint32_t cause, uint32_t event)
+static void conn_close(struct ran_conn *conn, uint32_t cause, uint32_t event)
{
if (!conn) {
LOGP(DMM, LOGL_ERROR, "Cannot release NULL connection\n");
return;
}
- if (msc_subscr_conn_in_release(conn)) {
+ if (ran_conn_in_release(conn)) {
DEBUGP(DMM, "%s(vsub=%s, cause=%u): already in release, ignore.\n",
__func__, vlr_subscr_name(conn->vsub), cause);
return;
@@ -576,75 +576,75 @@ static void conn_close(struct gsm_subscriber_connection *conn, uint32_t cause, u
osmo_fsm_inst_dispatch(conn->fi, event, &cause);
}
-void msc_subscr_conn_close(struct gsm_subscriber_connection *conn, uint32_t cause)
+void ran_conn_close(struct ran_conn *conn, uint32_t cause)
{
- return conn_close(conn, cause, SUBSCR_CONN_E_CN_CLOSE);
+ return conn_close(conn, cause, RAN_CONN_E_CN_CLOSE);
}
-void msc_subscr_conn_mo_close(struct gsm_subscriber_connection *conn, uint32_t cause)
+void ran_conn_mo_close(struct ran_conn *conn, uint32_t cause)
{
- return conn_close(conn, cause, SUBSCR_CONN_E_MO_CLOSE);
+ return conn_close(conn, cause, RAN_CONN_E_MO_CLOSE);
}
-bool msc_subscr_conn_in_release(struct gsm_subscriber_connection *conn)
+bool ran_conn_in_release(struct ran_conn *conn)
{
if (!conn || !conn->fi)
return true;
- if (conn->fi->state == SUBSCR_CONN_S_RELEASING)
+ if (conn->fi->state == RAN_CONN_S_RELEASING)
return true;
- if (conn->fi->state == SUBSCR_CONN_S_RELEASED)
+ if (conn->fi->state == RAN_CONN_S_RELEASED)
return true;
return false;
}
-bool msc_subscr_conn_is_accepted(const struct gsm_subscriber_connection *conn)
+bool ran_conn_is_accepted(const struct ran_conn *conn)
{
if (!conn)
return false;
if (!conn->vsub)
return false;
- if (!(conn->fi->state == SUBSCR_CONN_S_ACCEPTED
- || conn->fi->state == SUBSCR_CONN_S_COMMUNICATING))
+ if (!(conn->fi->state == RAN_CONN_S_ACCEPTED
+ || conn->fi->state == RAN_CONN_S_COMMUNICATING))
return false;
return true;
}
/* Indicate that *some* communication is happening with the phone, so that the conn FSM no longer times
* out to release within a few seconds. */
-void msc_subscr_conn_communicating(struct gsm_subscriber_connection *conn)
+void ran_conn_communicating(struct ran_conn *conn)
{
- osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_COMMUNICATING, NULL);
+ osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_COMMUNICATING, NULL);
}
-void msc_subscr_conn_init(void)
+void ran_conn_init(void)
{
- osmo_fsm_register(&subscr_conn_fsm);
+ osmo_fsm_register(&ran_conn_fsm);
}
-/* Allocate a new subscriber conn and FSM.
- * Deallocation is by msc_subscr_conn_put(): when the use count reaches zero, the
- * SUBSCR_CONN_E_RELEASE_COMPLETE event is dispatched, the FSM terminates and deallocates both FSM and
+/* Allocate a new RAN conn and FSM.
+ * Deallocation is by ran_conn_put(): when the use count reaches zero, the
+ * RAN_CONN_E_RELEASE_COMPLETE event is dispatched, the FSM terminates and deallocates both FSM and
* conn. As long as the FSM is waiting for responses from the subscriber, it will itself hold a use count
* on the conn. */
-struct gsm_subscriber_connection *msc_subscr_conn_alloc(struct gsm_network *network,
+struct ran_conn *ran_conn_alloc(struct gsm_network *network,
enum ran_type via_ran, uint16_t lac)
{
- struct gsm_subscriber_connection *conn;
+ struct ran_conn *conn;
struct osmo_fsm_inst *fi;
- fi = osmo_fsm_inst_alloc(&subscr_conn_fsm, network, NULL, LOGL_DEBUG, NULL);
+ fi = osmo_fsm_inst_alloc(&ran_conn_fsm, network, NULL, LOGL_DEBUG, NULL);
if (!fi) {
LOGP(DMM, LOGL_ERROR, "Failed to allocate conn FSM\n");
return NULL;
}
- conn = talloc_zero(fi, struct gsm_subscriber_connection);
+ conn = talloc_zero(fi, struct ran_conn);
if (!conn) {
osmo_fsm_inst_free(fi);
return NULL;
}
- *conn = (struct gsm_subscriber_connection){
+ *conn = (struct ran_conn){
.network = network,
.via_ran = via_ran,
.lac = lac,
@@ -652,15 +652,15 @@ struct gsm_subscriber_connection *msc_subscr_conn_alloc(struct gsm_network *netw
};
fi->priv = conn;
- llist_add_tail(&conn->entry, &network->subscr_conns);
+ llist_add_tail(&conn->entry, &network->ran_conns);
return conn;
}
-bool msc_subscr_conn_is_establishing_auth_ciph(const struct gsm_subscriber_connection *conn)
+bool ran_conn_is_establishing_auth_ciph(const struct ran_conn *conn)
{
if (!conn)
return false;
- return conn->fi->state == SUBSCR_CONN_S_AUTH_CIPH;
+ return conn->fi->state == RAN_CONN_S_AUTH_CIPH;
}
@@ -672,7 +672,7 @@ const struct value_string complete_layer3_type_names[] = {
{ 0, NULL }
};
-void msc_subscr_conn_update_id(struct gsm_subscriber_connection *conn,
+void ran_conn_update_id(struct ran_conn *conn,
enum complete_layer3_type from, const char *id)
{
conn->complete_layer3_type = from;
@@ -680,11 +680,11 @@ void msc_subscr_conn_update_id(struct gsm_subscriber_connection *conn,
LOGPFSML(conn->fi, LOGL_DEBUG, "Updated ID\n");
}
-static void rx_close_complete(struct gsm_subscriber_connection *conn, const char *label, bool *flag)
+static void rx_close_complete(struct ran_conn *conn, const char *label, bool *flag)
{
if (!conn)
return;
- if (!msc_subscr_conn_in_release(conn)) {
+ if (!ran_conn_in_release(conn)) {
LOGPFSML(conn->fi, LOGL_ERROR, "Received unexpected %s, discarding right now\n",
label);
trans_conn_closed(conn);
@@ -693,16 +693,16 @@ static void rx_close_complete(struct gsm_subscriber_connection *conn, const char
}
if (*flag) {
*flag = false;
- msc_subscr_conn_put(conn, MSC_CONN_USE_RELEASE);
+ ran_conn_put(conn, MSC_CONN_USE_RELEASE);
}
}
-void msc_subscr_conn_rx_bssmap_clear_complete(struct gsm_subscriber_connection *conn)
+void ran_conn_rx_bssmap_clear_complete(struct ran_conn *conn)
{
rx_close_complete(conn, "BSSMAP Clear Complete", &conn->a.waiting_for_clear_complete);
}
-void msc_subscr_conn_rx_iu_release_complete(struct gsm_subscriber_connection *conn)
+void ran_conn_rx_iu_release_complete(struct ran_conn *conn)
{
rx_close_complete(conn, "Iu Release Complete", &conn->iu.waiting_for_release_complete);
}
diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c
index cffbe0dac..5c80e5f3c 100644
--- a/src/libmsc/transaction.c
+++ b/src/libmsc/transaction.c
@@ -40,7 +40,7 @@ void _gsm911_nc_ss_trans_free(struct gsm_trans *trans);
* \param[in] trans_id Transaction ID of transaction
* \returns Matching transaction, if any
*/
-struct gsm_trans *trans_find_by_id(struct gsm_subscriber_connection *conn,
+struct gsm_trans *trans_find_by_id(struct ran_conn *conn,
uint8_t proto, uint8_t trans_id)
{
struct gsm_trans *trans;
@@ -78,7 +78,7 @@ struct gsm_trans *trans_find_by_callref(struct gsm_network *net,
* \param[in] sm_rp_mr RP Message Reference (see GSM TS 04.11, section 8.2.3)
* \returns Matching transaction, NULL otherwise
*/
-struct gsm_trans *trans_find_by_sm_rp_mr(struct gsm_subscriber_connection *conn,
+struct gsm_trans *trans_find_by_sm_rp_mr(struct ran_conn *conn,
uint8_t sm_rp_mr)
{
struct gsm_network *net = conn->network;
@@ -140,8 +140,8 @@ struct gsm_trans *trans_alloc(struct gsm_network *net,
*/
void trans_free(struct gsm_trans *trans)
{
- enum msc_subscr_conn_use conn_usage_token = MSC_CONN_USE_UNTRACKED;
- struct gsm_subscriber_connection *conn;
+ enum ran_conn_use conn_usage_token = MSC_CONN_USE_UNTRACKED;
+ struct ran_conn *conn;
switch (trans->protocol) {
case GSM48_PDISC_CC:
@@ -174,7 +174,7 @@ void trans_free(struct gsm_trans *trans)
talloc_free(trans);
if (conn)
- msc_subscr_conn_put(conn, conn_usage_token);
+ ran_conn_put(conn, conn_usage_token);
}
/*! allocate an unused transaction ID for the given subscriber
@@ -220,7 +220,7 @@ int trans_assign_trans_id(struct gsm_network *net, struct vlr_subscr *vsub,
* \param[in] conn Connection to check
* \returns 1 in case there is a transaction, 0 otherwise
*/
-struct gsm_trans *trans_has_conn(const struct gsm_subscriber_connection *conn)
+struct gsm_trans *trans_has_conn(const struct ran_conn *conn)
{
struct gsm_trans *trans;
@@ -236,7 +236,7 @@ struct gsm_trans *trans_has_conn(const struct gsm_subscriber_connection *conn)
* facilities, which will then send the necessary release indications.
* \param[in] conn Connection that is going to be closed.
*/
-void trans_conn_closed(struct gsm_subscriber_connection *conn)
+void trans_conn_closed(struct ran_conn *conn)
{
struct gsm_trans *trans;