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
This commit is contained in:
Neels Hofmeyr 2018-11-29 22:37:51 +01:00
parent d03e728915
commit c036b79918
57 changed files with 3841 additions and 3850 deletions

View File

@ -66,7 +66,7 @@ int a_init(struct osmo_sccp_instance *sccp, struct gsm_network *network);
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);
/* Page a subscriber via A-interface */
@ -76,11 +76,11 @@ int a_iface_tx_paging(const char *imsi, uint32_t tmsi, uint16_t lac);
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);
int a_iface_tx_classmark_request(const struct gsm_subscriber_connection *conn);
int a_iface_tx_classmark_request(const struct ran_conn *conn);
/* Clear all subscriber connections on a specified BSC
/* Clear all RAN connections on a specified BSC
* (Helper function for a_iface_bssap.c) */
void a_clear_all(struct osmo_sccp_user *scu, const struct osmo_sccp_addr *bsc_addr);

View File

@ -9,7 +9,7 @@ struct msgb;
struct gsm_bts;
struct gsm_network;
struct gsm_trans;
struct gsm_subscriber_connection;
struct ran_conn;
struct amr_multirate_conf;
struct amr_mode;
@ -22,29 +22,29 @@ static inline struct msgb *gsm48_msgb_alloc_name(const char *name)
name);
}
void cm_service_request_concludes(struct gsm_subscriber_connection *conn,
void cm_service_request_concludes(struct ran_conn *conn,
struct msgb *msg);
/* config options controlling the behaviour of the lower leves */
void gsm0408_clear_all_trans(struct gsm_network *net, int protocol);
int gsm0408_dispatch(struct gsm_subscriber_connection *conn, struct msgb *msg);
int gsm0408_dispatch(struct ran_conn *conn, struct msgb *msg);
int gsm0408_rcvmsg(struct msgb *msg, uint8_t link_id);
/* don't use "enum gsm_chreq_reason_t" to avoid circular dependency */
void gsm_net_update_ctype(struct gsm_network *net);
int gsm48_tx_simple(struct gsm_subscriber_connection *conn,
int gsm48_tx_simple(struct ran_conn *conn,
uint8_t pdisc, uint8_t msg_type);
int gsm48_tx_mm_info(struct gsm_subscriber_connection *conn);
int gsm48_tx_mm_auth_req(struct gsm_subscriber_connection *conn, uint8_t *rand,
int gsm48_tx_mm_info(struct ran_conn *conn);
int gsm48_tx_mm_auth_req(struct ran_conn *conn, uint8_t *rand,
uint8_t *autn, int key_seq);
int gsm48_tx_mm_auth_rej(struct gsm_subscriber_connection *conn);
int gsm48_tx_mm_serv_ack(struct gsm_subscriber_connection *conn);
int gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn,
int gsm48_tx_mm_auth_rej(struct ran_conn *conn);
int gsm48_tx_mm_serv_ack(struct ran_conn *conn);
int gsm48_tx_mm_serv_rej(struct ran_conn *conn,
enum gsm48_reject_value value);
int gsm48_send_rr_release(struct gsm_lchan *lchan);
int gsm48_send_rr_ciph_mode(struct gsm_lchan *lchan, int want_imeisv);
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);
int gsm48_send_rr_ass_cmd(struct gsm_lchan *dest_lchan, struct gsm_lchan *lchan, uint8_t power_class);
int gsm48_send_ho_cmd(struct gsm_lchan *old_lchan, struct gsm_lchan *new_lchan,
@ -70,12 +70,12 @@ struct msgb *gsm48_create_loc_upd_rej(uint8_t cause);
void gsm48_lchan2chan_desc(struct gsm48_chan_desc *cd,
const struct gsm_lchan *lchan);
void release_security_operation(struct gsm_subscriber_connection *conn);
void allocate_security_operation(struct gsm_subscriber_connection *conn);
void release_security_operation(struct ran_conn *conn);
void allocate_security_operation(struct ran_conn *conn);
int gsm48_multirate_config(uint8_t *lv, const struct amr_multirate_conf *mr, const struct amr_mode *modes);
int gsm48_tch_rtp_create(struct gsm_trans *trans);
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);
#endif

View File

@ -4,7 +4,7 @@
#include <osmocom/gsm/protocol/gsm_04_11.h>
struct vlr_subscr;
struct gsm_subscriber_connection;
struct ran_conn;
struct gsm_trans;
#define UM_SAPI_SMS 3 /* See GSM 04.05/04.06 */
@ -30,7 +30,7 @@ struct sms_deliver {
struct gsm_network;
struct msgb;
int gsm0411_rcv_sms(struct gsm_subscriber_connection *conn, struct msgb *msg);
int gsm0411_rcv_sms(struct ran_conn *conn, struct msgb *msg);
struct gsm_sms *sms_alloc(void);
void sms_free(struct gsm_sms *sms);
@ -41,7 +41,7 @@ struct gsm_sms *sms_from_text(struct vlr_subscr *receiver,
int gsm411_send_sms(struct gsm_network *net,
struct vlr_subscr *vsub,
struct gsm_sms *sms);
void gsm411_sapi_n_reject(struct gsm_subscriber_connection *conn);
void gsm411_sapi_n_reject(struct ran_conn *conn);
int gsm411_send_rp_ack(struct gsm_trans *trans, uint8_t msg_ref);
int gsm411_send_rp_error(struct gsm_trans *trans, uint8_t msg_ref,

View File

@ -2,14 +2,14 @@
#include <osmocom/gsm/protocol/gsm_04_14.h>
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);
int gsm0414_tx_open_loop_cmd(struct gsm_subscriber_connection *conn);
int gsm0414_tx_act_emmi_cmd(struct gsm_subscriber_connection *conn);
int gsm0414_tx_test_interface(struct gsm_subscriber_connection *conn,
int gsm0414_tx_open_loop_cmd(struct ran_conn *conn);
int gsm0414_tx_act_emmi_cmd(struct ran_conn *conn);
int gsm0414_tx_test_interface(struct ran_conn *conn,
uint8_t tested_devs);
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);
int gsm0414_rcv_test(struct gsm_subscriber_connection *conn,
int gsm0414_rcv_test(struct ran_conn *conn,
struct msgb *msg);

View File

@ -2,12 +2,12 @@
#include <stdint.h>
struct gsm_subscriber_connection;
struct ran_conn;
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);
int msc_send_ussd_notify(struct gsm_subscriber_connection *conn, int level,
int msc_send_ussd_notify(struct ran_conn *conn, int level,
const char *text);
int msc_send_ussd_release_complete(struct gsm_subscriber_connection *conn);
int msc_send_ussd_release_complete(struct ran_conn *conn);

View File

@ -3,5 +3,5 @@
#include <osmocom/core/msgb.h>
#include <osmocom/gsm/gsup.h>
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);
int gsm0911_gsup_handler(struct vlr_subscr *vsub, struct osmo_gsup_message *gsup);

View File

@ -90,11 +90,11 @@ static inline const char *complete_layer3_type_name(enum complete_layer3_type va
}
/* active radio connection of a mobile subscriber */
struct gsm_subscriber_connection {
/* global linked list of subscriber_connections */
struct ran_conn {
/* global linked list of ran_conn instances */
struct llist_head entry;
/* FSM instance to control the subscriber connection's permissions and lifetime. */
/* FSM instance to control the RAN connection's permissions and lifetime. */
struct osmo_fsm_inst *fi;
enum complete_layer3_type complete_layer3_type;
@ -168,12 +168,12 @@ struct gsm_subscriber_connection {
struct osmo_sccp_user *scu;
/* The address of the BSC that is associated
* with this subscriber connection */
* with this RAN connection */
struct osmo_sccp_addr bsc_addr;
/* The connection identifier that is used
* to reference the SCCP connection that is
* associated with this subscriber connection */
* associated with this RAN connection */
uint32_t conn_id;
bool waiting_for_clear_complete;
@ -293,9 +293,9 @@ struct gsm_network {
mncc_recv_cb_t mncc_recv;
struct llist_head upqueue;
/*
* TODO: Move the trans_list into the subscriber connection and
* TODO: Move the trans_list into the RAN connection and
* create a pending list for MT transactions. These exist before
* we have a subscriber connection.
* we have a RAN connection.
*/
struct llist_head trans_list;
@ -311,8 +311,8 @@ struct gsm_network {
/* control interface */
struct ctrl_handle *ctrl;
/* all active subscriber connections. */
struct llist_head subscr_conns;
/* all active RAN connections. */
struct llist_head ran_conns;
/* if override is nonzero, this timezone data is used for all MM
* contexts. */

View File

@ -58,13 +58,13 @@ struct subscr_request *subscr_request_conn(struct vlr_subscr *vsub,
void subscr_remove_request(struct subscr_request *req);
int subscr_rx_paging_response(struct msgb *msg,
struct gsm_subscriber_connection *conn);
struct ran_conn *conn);
void subscr_paging_cancel(struct vlr_subscr *vsub, enum gsm_paging_event event);
int subscr_paging_dispatch(unsigned int hooknum, unsigned int event,
struct msgb *msg, void *data, void *param);
/* Find an allocated channel for a specified subscriber */
struct gsm_subscriber_connection *connection_for_subscr(struct vlr_subscr *vsub);
struct ran_conn *connection_for_subscr(struct vlr_subscr *vsub);
#endif /* _GSM_SUBSCR_H */

View File

@ -5,8 +5,8 @@
int gsm0408_rcvmsg_iucs(struct gsm_network *network, struct msgb *msg,
uint16_t *lac);
struct gsm_subscriber_connection *subscr_conn_lookup_iu(struct gsm_network *network,
struct ranap_ue_conn_ctx *ue);
struct ran_conn *ran_conn_lookup_iu(struct gsm_network *network,
struct ranap_ue_conn_ctx *ue);
int iu_rab_act_cs(struct gsm_trans *trans);
uint32_t iu_get_conn_id(const struct ranap_ue_conn_ctx *ue);

View File

@ -29,11 +29,11 @@
/* Each main linkage must implement this function (see comment above). */
extern int iu_tx(struct msgb *msg, uint8_t sapi);
int msc_tx_dtap(struct gsm_subscriber_connection *conn,
int msc_tx_dtap(struct ran_conn *conn,
struct msgb *msg);
int msc_gsm48_tx_mm_serv_ack(struct gsm_subscriber_connection *conn);
int msc_gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn,
int msc_gsm48_tx_mm_serv_ack(struct ran_conn *conn);
int msc_gsm48_tx_mm_serv_rej(struct ran_conn *conn,
enum gsm48_reject_value value);
int msc_tx_common_id(struct gsm_subscriber_connection *conn);
int msc_tx_common_id(struct ran_conn *conn);

View File

@ -25,8 +25,8 @@
/* MGCP state handler context. This context information stores all information
* to handle the direction of the RTP streams via MGCP. There is one instance
* of this context struct per subscriber connection.
* (see also struct gsm_subscriber_connection) */
* of this context struct per RAN connection.
* (see also struct ran_conn) */
struct mgcp_ctx {
/* FSM instance, which handles the connection switching procedure */
struct osmo_fsm_inst *fsm;
@ -56,6 +56,6 @@ struct mgcp_ctx {
};
int msc_mgcp_call_assignment(struct gsm_trans *trans);
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);
int msc_mgcp_call_complete(struct gsm_trans *trans, uint16_t port, char *addr);
int msc_mgcp_call_release(struct gsm_trans *trans);

View File

@ -11,77 +11,74 @@
#define MSC_HLR_REMOTE_IP_DEFAULT "127.0.0.1"
#define MSC_HLR_REMOTE_PORT_DEFAULT OSMO_GSUP_PORT
enum subscr_conn_fsm_event {
enum ran_conn_fsm_event {
/* Accepted the initial Complete Layer 3 (starting to evaluate Authentication and Ciphering) */
SUBSCR_CONN_E_COMPLETE_LAYER_3,
RAN_CONN_E_COMPLETE_LAYER_3,
/* Received Classmark Update, typically neede for Ciphering Mode Command */
SUBSCR_CONN_E_CLASSMARK_UPDATE,
RAN_CONN_E_CLASSMARK_UPDATE,
/* LU or Process Access FSM has determined that this conn is good */
SUBSCR_CONN_E_ACCEPTED,
RAN_CONN_E_ACCEPTED,
/* received first reply from MS in "real" CC, SMS, USSD communication */
SUBSCR_CONN_E_COMMUNICATING,
RAN_CONN_E_COMMUNICATING,
/* Some async action has completed, check again whether all is done */
SUBSCR_CONN_E_RELEASE_WHEN_UNUSED,
RAN_CONN_E_RELEASE_WHEN_UNUSED,
/* MS/BTS/BSC originated close request */
SUBSCR_CONN_E_MO_CLOSE,
RAN_CONN_E_MO_CLOSE,
/* MSC originated close request, e.g. failed authentication */
SUBSCR_CONN_E_CN_CLOSE,
RAN_CONN_E_CN_CLOSE,
/* The usage count for the conn has reached zero */
SUBSCR_CONN_E_UNUSED,
RAN_CONN_E_UNUSED,
};
enum subscr_conn_fsm_state {
SUBSCR_CONN_S_NEW,
SUBSCR_CONN_S_AUTH_CIPH,
SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE,
SUBSCR_CONN_S_ACCEPTED,
SUBSCR_CONN_S_COMMUNICATING,
SUBSCR_CONN_S_RELEASING,
SUBSCR_CONN_S_RELEASED,
enum ran_conn_fsm_state {
RAN_CONN_S_NEW,
RAN_CONN_S_AUTH_CIPH,
RAN_CONN_S_WAIT_CLASSMARK_UPDATE,
RAN_CONN_S_ACCEPTED,
RAN_CONN_S_COMMUNICATING,
RAN_CONN_S_RELEASING,
RAN_CONN_S_RELEASED,
};
struct gsm_subscriber_connection *msc_subscr_conn_alloc(struct gsm_network *network,
enum ran_type via_ran, uint16_t lac);
struct ran_conn *ran_conn_alloc(struct gsm_network *network, enum ran_type via_ran, uint16_t lac);
void msc_subscr_conn_update_id(struct gsm_subscriber_connection *conn,
enum complete_layer3_type from, const char *id);
char *msc_subscr_conn_get_conn_id(struct gsm_subscriber_connection *conn);
void ran_conn_update_id(struct ran_conn *conn, enum complete_layer3_type from, const char *id);
char *ran_conn_get_conn_id(struct ran_conn *conn);
void msc_subscr_conn_complete_layer_3(struct gsm_subscriber_connection *conn);
void ran_conn_complete_layer_3(struct ran_conn *conn);
int msc_vlr_alloc(struct gsm_network *net);
int msc_vlr_start(struct gsm_network *net);
void msc_sapi_n_reject(struct gsm_subscriber_connection *conn, int dlci);
int msc_clear_request(struct gsm_subscriber_connection *conn, uint32_t cause);
void msc_compl_l3(struct gsm_subscriber_connection *conn,
void msc_sapi_n_reject(struct ran_conn *conn, int dlci);
int msc_clear_request(struct ran_conn *conn, uint32_t cause);
void msc_compl_l3(struct ran_conn *conn,
struct msgb *msg, uint16_t chosen_channel);
void msc_dtap(struct gsm_subscriber_connection *conn, struct msgb *msg);
int msc_classmark_request_then_cipher_mode_cmd(struct gsm_subscriber_connection *conn, bool umts_aka,
void msc_dtap(struct ran_conn *conn, struct msgb *msg);
int msc_classmark_request_then_cipher_mode_cmd(struct ran_conn *conn, bool umts_aka,
bool retrieve_imeisv);
int msc_geran_set_cipher_mode(struct gsm_subscriber_connection *conn, bool umts_aka, bool retrieve_imeisv);
void msc_cipher_mode_compl(struct gsm_subscriber_connection *conn,
int msc_geran_set_cipher_mode(struct ran_conn *conn, bool umts_aka, bool retrieve_imeisv);
void msc_cipher_mode_compl(struct ran_conn *conn,
struct msgb *msg, uint8_t alg_id);
void msc_rx_sec_mode_compl(struct gsm_subscriber_connection *conn);
void msc_classmark_chg(struct gsm_subscriber_connection *conn,
void msc_rx_sec_mode_compl(struct ran_conn *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);
void msc_assign_fail(struct gsm_subscriber_connection *conn,
void msc_assign_fail(struct ran_conn *conn,
uint8_t cause, uint8_t *rr_cause);
void msc_subscr_conn_init(void);
bool msc_subscr_conn_is_accepted(const struct gsm_subscriber_connection *conn);
bool msc_subscr_conn_is_establishing_auth_ciph(const struct gsm_subscriber_connection *conn);
void msc_subscr_conn_communicating(struct gsm_subscriber_connection *conn);
void msc_subscr_conn_close(struct gsm_subscriber_connection *conn,
uint32_t cause);
void msc_subscr_conn_mo_close(struct gsm_subscriber_connection *conn, uint32_t cause);
bool msc_subscr_conn_in_release(struct gsm_subscriber_connection *conn);
void ran_conn_init(void);
bool ran_conn_is_accepted(const struct ran_conn *conn);
bool ran_conn_is_establishing_auth_ciph(const struct ran_conn *conn);
void ran_conn_communicating(struct ran_conn *conn);
void ran_conn_close(struct ran_conn *conn, uint32_t cause);
void ran_conn_mo_close(struct ran_conn *conn, uint32_t cause);
bool ran_conn_in_release(struct ran_conn *conn);
void msc_subscr_conn_rx_bssmap_clear_complete(struct gsm_subscriber_connection *conn);
void msc_subscr_conn_rx_iu_release_complete(struct gsm_subscriber_connection *conn);
void ran_conn_rx_bssmap_clear_complete(struct ran_conn *conn);
void ran_conn_rx_iu_release_complete(struct ran_conn *conn);
enum msc_subscr_conn_use {
enum ran_conn_use {
MSC_CONN_USE_UNTRACKED = -1,
MSC_CONN_USE_COMPL_L3,
MSC_CONN_USE_DTAP,
@ -94,23 +91,19 @@ enum msc_subscr_conn_use {
MSC_CONN_USE_RELEASE,
};
extern const struct value_string msc_subscr_conn_use_names[];
static inline const char *msc_subscr_conn_use_name(enum msc_subscr_conn_use val)
{ return get_value_string(msc_subscr_conn_use_names, val); }
extern const struct value_string ran_conn_use_names[];
static inline const char *ran_conn_use_name(enum ran_conn_use val)
{ return get_value_string(ran_conn_use_names, val); }
#define msc_subscr_conn_get(conn, balance_token) \
_msc_subscr_conn_get(conn, balance_token, __FILE__, __LINE__)
#define msc_subscr_conn_put(conn, balance_token) \
_msc_subscr_conn_put(conn, balance_token, __FILE__, __LINE__)
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);
void _msc_subscr_conn_put(struct gsm_subscriber_connection *conn,
enum msc_subscr_conn_use balance_token,
const char *file, int line);
bool msc_subscr_conn_used_by(struct gsm_subscriber_connection *conn,
enum msc_subscr_conn_use token);
#define ran_conn_get(conn, balance_token) \
_ran_conn_get(conn, balance_token, __FILE__, __LINE__)
#define ran_conn_put(conn, balance_token) \
_ran_conn_put(conn, balance_token, __FILE__, __LINE__)
struct ran_conn * _ran_conn_get(struct ran_conn *conn, enum ran_conn_use balance_token,
const char *file, int line);
void _ran_conn_put(struct ran_conn *conn, enum ran_conn_use balance_token,
const char *file, int line);
bool ran_conn_used_by(struct ran_conn *conn, enum ran_conn_use token);
void msc_stop_paging(struct vlr_subscr *vsub);

View File

@ -83,11 +83,11 @@ struct paging_signal_data {
int paging_result;
/* NULL in case the paging didn't work */
struct gsm_subscriber_connection *conn;
struct ran_conn *conn;
};
struct scall_signal_data {
struct gsm_subscriber_connection *conn;
struct ran_conn *conn;
void *data;
};
struct sms_signal_data {

View File

@ -1,15 +1,15 @@
#ifndef _SILENT_CALL_H
#define _SILENT_CALL_H
struct gsm_subscriber_connection;
struct ran_conn;
extern int gsm_silent_call_start(struct vlr_subscr *vsub,
void *data, int type);
extern int gsm_silent_call_stop(struct vlr_subscr *vsub);
#if 0
extern int silent_call_rx(struct gsm_subscriber_connection *conn, struct msgb *msg);
extern int silent_call_reroute(struct gsm_subscriber_connection *conn, struct msgb *msg);
extern int silent_call_rx(struct ran_conn *conn, struct msgb *msg);
extern int silent_call_reroute(struct ran_conn *conn, struct msgb *msg);
#endif
#endif /* _SILENT_CALL_H */

View File

@ -38,7 +38,7 @@ struct gsm_trans {
struct vlr_subscr *vsub;
/* The associated connection we are using to transmit messages */
struct gsm_subscriber_connection *conn;
struct ran_conn *conn;
/* reference from MNCC or other application */
uint32_t callref;
@ -98,11 +98,11 @@ struct gsm_trans {
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_find_by_callref(struct gsm_network *net,
uint32_t callref);
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_trans *trans_alloc(struct gsm_network *net,
@ -113,7 +113,7 @@ void trans_free(struct gsm_trans *trans);
int trans_assign_trans_id(struct gsm_network *net, struct vlr_subscr *vsub,
uint8_t protocol, uint8_t ti_flag);
struct gsm_trans *trans_has_conn(const struct gsm_subscriber_connection *conn);
void trans_conn_closed(struct gsm_subscriber_connection *conn);
struct gsm_trans *trans_has_conn(const struct ran_conn *conn);
void trans_conn_closed(struct ran_conn *conn);
#endif

View File

@ -289,7 +289,7 @@ void vlr_loc_update_cancel(struct osmo_fsm_inst *fi,
enum osmo_fsm_term_cause fsm_cause,
uint8_t gsm48_cause);
/* tell the VLR that the subscriber connection is gone */
/* tell the VLR that the RAN connection is gone */
int vlr_subscr_disconnected(struct vlr_subscr *vsub);
bool vlr_subscr_expire(struct vlr_subscr *vsub);
int vlr_subscr_rx_id_resp(struct vlr_subscr *vsub, const uint8_t *mi, size_t mi_len);

View File

@ -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);

View File

@ -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;
}

View File

@ -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);

View File

@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -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)

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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:

View File

@ -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;

View File

@ -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);

View File

@ -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) {

View File

@ -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"},

View File

@ -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:

View File

@ -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;
}

View File

@ -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;

View File

@ -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

View File

@ -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 */
#define RAN_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),
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);
}

View File

@ -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;

View File

@ -1168,7 +1168,7 @@ int vlr_subscr_rx_imsi_detach(struct vlr_subscr *vsub)
* message before the entire connection is torn down.
* \param[in] vsub subscriber to tear down
*/
void vlr_subscr_conn_timeout(struct vlr_subscr *vsub)
void vlr_ran_conn_timeout(struct vlr_subscr *vsub)
{
vlr_subscr_cancel_attach_fsm(vsub, OSMO_FSM_TERM_TIMEOUT, GSM48_REJECT_CONGESTION);
}

View File

@ -642,7 +642,7 @@ TODO: we probably want some of the _net_ ctrl commands from bsc_base_ctrl_cmds_i
exit(1);
}
msc_subscr_conn_init();
ran_conn_init();
if (db_prepare()) {
printf("DB: Failed to prepare database.\n");

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -5,14 +5,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -28,11 +28,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020102
@ -49,8 +49,8 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
- sending LU Reject for IMSI:901700000004620, cause 2
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr IMSI:901700000004620 usage increases to: 3
DREF VLR subscr IMSI:901700000004620 usage decreases to: 2
@ -62,20 +62,20 @@ DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL IMSI:901700000004620: Freeing subscriber connection
DRLL IMSI:901700000004620: Freeing RAN connection
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
DREF freeing VLR subscr IMSI:901700000004620
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
===== test_hlr_rej_auth_info_unknown_imsi: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
@ -85,14 +85,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -108,11 +108,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _SEND_AUTH_INFO_ERROR = net fail
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020111
@ -129,8 +129,8 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
- sending LU Reject for IMSI:901700000004620, cause 17
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr IMSI:901700000004620 usage increases to: 3
DREF VLR subscr IMSI:901700000004620 usage decreases to: 2
@ -142,20 +142,20 @@ DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL IMSI:901700000004620: Freeing subscriber connection
DRLL IMSI:901700000004620: Freeing RAN connection
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
DREF freeing VLR subscr IMSI:901700000004620
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
===== test_hlr_rej_auth_info_net_fail: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
@ -167,14 +167,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -190,11 +190,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
@ -237,8 +237,8 @@ DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -286,10 +286,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -301,19 +301,19 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
lu_result_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
---
- Now one auth tuple is available, but used.
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -324,14 +324,14 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -345,11 +345,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF MSISDN:46071: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _SEND_AUTH_INFO_ERROR = net fail
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020111
@ -392,8 +392,8 @@ DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -440,10 +440,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -455,19 +455,19 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
lu_result_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
DREF freeing VLR subscr MSISDN:46071
===== test_hlr_rej_auth_info_net_fail_reuse_tuples: SUCCESS
@ -480,14 +480,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -503,11 +503,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
@ -550,8 +550,8 @@ DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -599,10 +599,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -614,19 +614,19 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
lu_result_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
---
- Now one auth tuple is available, but used.
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -637,14 +637,14 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -658,11 +658,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF MSISDN:46071: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _SEND_AUTH_INFO_ERROR = net fail
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020111
@ -679,8 +679,8 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
- sending LU Reject for MSISDN:46071, cause 17
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -692,19 +692,19 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
DREF freeing VLR subscr MSISDN:46071
===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples: SUCCESS
@ -717,14 +717,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -740,11 +740,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
@ -787,8 +787,8 @@ DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -836,10 +836,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -851,19 +851,19 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
lu_result_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
---
- Now one auth tuple is available, but used.
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -875,14 +875,14 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -896,11 +896,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF MSISDN:46071: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020102
@ -917,8 +917,8 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
- sending LU Reject for MSISDN:46071, cause 2
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -930,19 +930,19 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
DREF freeing VLR subscr MSISDN:46071
===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: SUCCESS
@ -953,14 +953,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -976,11 +976,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT but it lacks auth tuples
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f0
@ -996,8 +996,8 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
- sending LU Reject for IMSI:901700000004620, cause 17
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr IMSI:901700000004620 usage increases to: 3
DREF VLR subscr IMSI:901700000004620 usage decreases to: 2
@ -1009,20 +1009,20 @@ DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL IMSI:901700000004620: Freeing subscriber connection
DRLL IMSI:901700000004620: Freeing RAN connection
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
DREF freeing VLR subscr IMSI:901700000004620
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
===== test_hlr_acc_but_no_auth_tuples: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
@ -1032,14 +1032,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP LU request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -1058,11 +1058,11 @@ DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD
DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends UPDATE_LOCATION_ERROR
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: 05010809710000004026f0020102
@ -1079,8 +1079,8 @@ DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
- sending LU Reject for IMSI:901700000004620, cause 2
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr IMSI:901700000004620 usage increases to: 3
DREF VLR subscr IMSI:901700000004620 usage decreases to: 2
@ -1091,20 +1091,20 @@ DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL IMSI:901700000004620: Freeing subscriber connection
DRLL IMSI:901700000004620: Freeing RAN connection
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
DREF freeing VLR subscr IMSI:901700000004620
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
===== test_hlr_rej_lu: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
@ -1114,14 +1114,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP LU request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -1140,11 +1140,11 @@ DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD
DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends only _UPDATE_LOCATION_RESULT, no INSERT DATA
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
@ -1181,10 +1181,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr IMSI:901700000004620 usage increases to: 4
DREF VLR subscr IMSI:901700000004620 usage decreases to: 3
@ -1196,19 +1196,19 @@ DREF VLR subscr IMSI:901700000004620 usage decreases to: 2
lu_result_sent == 1
- BSS sends BSSMAP Clear Complete
DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL IMSI:901700000004620: Freeing subscriber connection
DRLL IMSI:901700000004620: Freeing RAN connection
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
DREF freeing VLR subscr IMSI:901700000004620
===== test_hlr_no_insert_data: SUCCESS

View File

@ -55,7 +55,7 @@ static void test_hlr_timeout_lu_auth_info()
EXPECT_CONN_COUNT(1);
expect_bssap_clear();
fake_time_passes(1, 235);
btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone.");
btw("RAN_CONN_TIMEOUT has passed, conn is gone.");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
bss_sends_clear_complete();
EXPECT_CONN_COUNT(0);
@ -103,7 +103,7 @@ static void test_hlr_timeout_lu_upd_loc_result()
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
expect_bssap_clear();
fake_time_passes(1, 235);
btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone.");
btw("RAN_CONN_TIMEOUT has passed, conn is gone.");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
bss_sends_clear_complete();
EXPECT_CONN_COUNT(0);

View File

@ -6,14 +6,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -29,60 +29,60 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
---
- HLR never replies
- At first, we're still waiting
- Total time passed: 0.000423 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
- Total time passed: 1.000658 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
- Total time passed: 2.000893 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
- Total time passed: 3.001128 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
- Total time passed: 4.001363 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
- Total time passed: 5.001598 s
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Timeout of T0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr IMSI:901700000004620 usage increases to: 2
- sending LU Reject for IMSI:901700000004620, cause 22
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Event RAN_CONN_E_CN_CLOSE not permitted
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
- BSSAP Clear --RAN_GERAN_A--> MS
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
- RAN_CONN_TIMEOUT has passed, conn is gone.
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Removing from parent vlr_lu_fsm(LU:901700000004620)
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Freeing instance
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL IMSI:901700000004620: Freeing subscriber connection
DRLL IMSI:901700000004620: Freeing RAN connection
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
DREF freeing VLR subscr IMSI:901700000004620
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
lu_result_sent == 2
===== test_hlr_timeout_lu_auth_info: SUCCESS
@ -94,14 +94,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP LU request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -120,11 +120,11 @@ DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD
DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -141,55 +141,55 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
- HLR never sends GSUP _UPDATE_LOCATION_RESULT
- At first, we're still waiting
- Total time passed: 0.000423 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 1.000658 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 2.000893 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 3.001128 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 4.001363 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 5.001598 s
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Timeout of T0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 2
- sending LU Reject for MSISDN:46071, cause 22
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Event RAN_CONN_E_CN_CLOSE not permitted
DREF VLR subscr MSISDN:46071 usage decreases to: 1
- BSSAP Clear --RAN_GERAN_A--> MS
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
- RAN_CONN_TIMEOUT has passed, conn is gone.
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Removing from parent vlr_lu_fsm(LU:901700000004620)
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Freeing instance
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 0
DREF freeing VLR subscr MSISDN:46071
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
lu_result_sent == 2
===== test_hlr_timeout_lu_upd_loc_result: SUCCESS

View File

@ -75,7 +75,7 @@ static void test_ms_timeout_lu_auth_resp()
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
expect_bssap_clear();
fake_time_passes(1, 235);
btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone.");
btw("RAN_CONN_TIMEOUT has passed, conn is gone.");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
bss_sends_clear_complete();
EXPECT_CONN_COUNT(0);
@ -175,7 +175,7 @@ static void test_ms_timeout_cm_auth_resp()
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
expect_bssap_clear();
fake_time_passes(1, 235);
btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone.");
btw("RAN_CONN_TIMEOUT has passed, conn is gone.");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
bss_sends_clear_complete();
EXPECT_CONN_COUNT(0);
@ -351,7 +351,7 @@ static void test_classmark_update_timeout()
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
expect_bssap_clear();
fake_time_passes(1, 235);
btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone.");
btw("RAN_CONN_TIMEOUT has passed, conn is gone.");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
bss_sends_clear_complete();
EXPECT_CONN_COUNT(0);

View File

@ -6,14 +6,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -29,11 +29,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
@ -54,55 +54,55 @@ DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
- MS fails to send an Authentication Response
- At first, we're still waiting
- Total time passed: 0.000423 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 1.000658 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 2.000893 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 3.001128 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 4.001363 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 5.001598 s
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Timeout of T0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr IMSI:901700000004620 usage increases to: 2
- sending LU Reject for IMSI:901700000004620, cause 22
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Event RAN_CONN_E_CN_CLOSE not permitted
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
- BSSAP Clear --RAN_GERAN_A--> MS
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
- RAN_CONN_TIMEOUT has passed, conn is gone.
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Removing from parent vlr_lu_fsm(LU:901700000004620)
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Freeing instance
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL IMSI:901700000004620: Freeing subscriber connection
DRLL IMSI:901700000004620: Freeing RAN connection
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
DREF freeing VLR subscr IMSI:901700000004620
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
lu_result_sent == 2
===== test_ms_timeout_lu_auth_resp: SUCCESS
@ -114,14 +114,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -137,11 +137,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
@ -184,8 +184,8 @@ DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -233,10 +233,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -248,30 +248,30 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
lu_result_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
---
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_NEW}: Updated ID
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: Allocated
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: is child of RAN_conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -287,36 +287,36 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: got
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
- ...expecting sres=20bde240
DREF VLR subscr MSISDN:46071 usage decreases to: 2
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF MSISDN:46071: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
cm_service_result_sent == 0
auth_request_sent == 1
---
- MS fails to send an Authentication Response
- At first, we're still waiting
- Total time passed: 0.000423 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
cm_service_result_sent == 0
- Total time passed: 1.000658 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
cm_service_result_sent == 0
- Total time passed: 2.000893 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
cm_service_result_sent == 0
- Total time passed: 3.001128 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
cm_service_result_sent == 0
- Total time passed: 4.001363 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
cm_service_result_sent == 0
- Total time passed: 5.001598 s
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_AUTH_CIPH}: Timeout of T0
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 3
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Cancel: OSMO_FSM_TERM_ERROR
@ -324,30 +324,30 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AU
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: CONGESTION
- sending CM Service Reject for MSISDN:46071, cause: CONGESTION
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASING}: Event RAN_CONN_E_CN_CLOSE not permitted
DREF VLR subscr MSISDN:46071 usage decreases to: 2
- BSSAP Clear --RAN_GERAN_A--> MS
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
- RAN_CONN_TIMEOUT has passed, conn is gone.
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620)
DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Freeing instance
DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Deallocated
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent RAN_conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
cm_service_result_sent == 2
DREF freeing VLR subscr MSISDN:46071
===== test_ms_timeout_cm_auth_resp: SUCCESS
@ -360,14 +360,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP LU request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -386,11 +386,11 @@ DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD
DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -438,10 +438,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -453,19 +453,19 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
---
- an SMS is sent, MS is paged
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -526,7 +526,7 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 4
- subscriber detaches, pagings are canceled
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
@ -542,8 +542,8 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DREF VLR subscr MSISDN:46071 usage decreases to: 0
DREF freeing VLR subscr MSISDN:46071
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
- BSSAP Clear --RAN_GERAN_A--> MS
DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
@ -551,13 +551,13 @@ DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
paging_stopped == 1
- BSS sends BSSMAP Clear Complete
DREF unknown: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DRLL Freeing subscriber connection with NULL subscriber
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DRLL Freeing RAN connection with NULL subscriber
DMM RAN_conn{RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
===== test_ms_timeout_paging: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
@ -568,14 +568,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -591,11 +591,11 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event
DVLR GSUP tx: 08010809710000004026f0
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
@ -632,61 +632,61 @@ DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth(
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
DMM IMSI:901700000004620: to determine whether A5/3 is supported, first ask for a Classmark Update to obtain Classmark 2
BSC <--BSSAP-BSS-MANAGEMENT-- MSC: CLASSMARK REQ [L3]> 00 01 58
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_WAIT_CLASSMARK_UPDATE
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
---
- But the BSSMAP Classmark Update never arrives
- At first, we're still waiting
- Total time passed: 0.000423 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 1.000658 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 2.000893 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 3.001128 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 4.001363 s
llist_count(&net->subscr_conns) == 1
llist_count(&net->ran_conns) == 1
lu_result_sent == 0
- Total time passed: 5.001598 s
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE}: Timeout of T0
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE}: Close event, cause: CONGESTION
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_WAIT_CLASSMARK_UPDATE}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Timeout of T0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Close event, cause: CONGESTION
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: state_chg to RAN_CONN_S_RELEASING
DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr IMSI:901700000004620 usage increases to: 2
- sending LU Reject for IMSI:901700000004620, cause 22
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Event RAN_CONN_E_CN_CLOSE not permitted
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
- BSSAP Clear --RAN_GERAN_A--> MS
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
- RAN_CONN_TIMEOUT has passed, conn is gone.
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL IMSI:901700000004620: Freeing subscriber connection
DRLL IMSI:901700000004620: Freeing RAN connection
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
DREF freeing VLR subscr IMSI:901700000004620
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
lu_result_sent == 2
===== test_classmark_update_timeout: SUCCESS

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,7 @@
static void test_reject_2nd_conn()
{
struct gsm_subscriber_connection *conn1;
struct ran_conn *conn1;
comment_start();
btw("Location Update Request on one connection");

File diff suppressed because it is too large Load Diff

View File

@ -31,12 +31,12 @@ static void test_early_stage()
EXPECT_ACCEPTED(false);
btw("freshly allocated conn");
g_conn = msc_subscr_conn_alloc(net, RAN_GERAN_A, 123);
g_conn = ran_conn_alloc(net, RAN_GERAN_A, 123);
EXPECT_ACCEPTED(false);
btw("conn_fsm present, in state NEW");
OSMO_ASSERT(g_conn->fi);
OSMO_ASSERT(g_conn->fi->state == SUBSCR_CONN_S_NEW);
OSMO_ASSERT(g_conn->fi->state == RAN_CONN_S_NEW);
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
@ -47,13 +47,13 @@ static void test_early_stage()
OSMO_ASSERT(g_conn->vsub);
/* mark as silent call so it sticks around */
g_conn->silent_call = 1;
osmo_fsm_inst_state_chg(g_conn->fi, SUBSCR_CONN_S_ACCEPTED, 0, 0);
osmo_fsm_inst_state_chg(g_conn->fi, RAN_CONN_S_ACCEPTED, 0, 0);
EXPECT_CONN_COUNT(1);
EXPECT_ACCEPTED(true);
btw("CLOSE event marks conn_fsm as released and frees the conn");
expect_bssap_clear();
osmo_fsm_inst_dispatch(g_conn->fi, SUBSCR_CONN_E_CN_CLOSE, NULL);
osmo_fsm_inst_dispatch(g_conn->fi, RAN_CONN_E_CN_CLOSE, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
bss_sends_clear_complete();
EXPECT_CONN_COUNT(0);

View File

@ -3,12 +3,12 @@ talloc_total_blocks(tall_bsc_ctx) == 12
===== test_early_stage
- NULL conn
msc_subscr_conn_is_accepted() == false
ran_conn_is_accepted() == false
- freshly allocated conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
msc_subscr_conn_is_accepted() == false
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
ran_conn_is_accepted() == false
- conn_fsm present, in state NEW
msc_subscr_conn_is_accepted() == false
ran_conn_is_accepted() == false
requests shall be thwarted
DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
DRLL subscr unknown: Message not permitted for initial conn: GSM48_MT_CC_SETUP
@ -20,13 +20,13 @@ DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
DRLL subscr unknown: Message not permitted for initial conn: SMS:0x01
- fake: acceptance
DREF VLR subscr unknown usage increases to: 1
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn{SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_has_active_transactions: silent call still active
llist_count(&net->subscr_conns) == 1
msc_subscr_conn_is_accepted() == true
DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn{RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: silent call still active
llist_count(&net->ran_conns) == 1
ran_conn_is_accepted() == true
- CLOSE event marks conn_fsm as released and frees the conn
DMM Subscr_Conn{SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn{SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn{RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn{RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF unknown: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr unknown usage increases to: 2
DREF VLR subscr unknown usage decreases to: 1
@ -34,17 +34,17 @@ DREF VLR subscr unknown usage decreases to: 1
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF unknown: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: subscr_conn_fsm_has_active_transactions: silent call still active
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocating despite active transactions
DRLL unknown: Freeing subscriber connection
DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn{RAN_CONN_S_RELEASED}: ran_conn_fsm_has_active_transactions: silent call still active
DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocating despite active transactions
DRLL unknown: Freeing RAN connection
DREF VLR subscr unknown usage decreases to: 0
DREF freeing VLR subscr unknown
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn{RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
===== test_early_stage: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
@ -54,21 +54,21 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- CM Service Request without a prior Location Updating
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_NEW}: Updated ID
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: Allocated
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: is child of RAN_conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(IMSI_UNKNOWN_IN_VLR)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: IMSI_UNKNOWN_IN_VLR
- sending CM Service Reject for unknown, cause: IMSI_UNKNOWN_IN_VLR
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
- BSSAP Clear --RAN_GERAN_A--> MS
DRR 901700000004620: subscriber not allowed to do a CM Service Request
@ -77,17 +77,17 @@ DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
- conn was released
- BSS sends BSSMAP Clear Complete
DREF unknown: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent RAN_conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated
DRLL Freeing subscriber connection with NULL subscriber
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DRLL Freeing RAN connection with NULL subscriber
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
===== test_cm_service_without_lu: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
@ -97,14 +97,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP LU request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -123,11 +123,11 @@ DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD
DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -141,7 +141,7 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
lu_result_sent == 0
- having received subscriber data does not mean acceptance
msc_subscr_conn_is_accepted() == false
ran_conn_is_accepted() == false
requests shall be thwarted
DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
@ -187,10 +187,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -202,32 +202,32 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
lu_result_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
---
- verify that the MS can send another LU request
- Location Update request causes a GSUP LU request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -244,11 +244,11 @@ DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD
DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF MSISDN:46071: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -262,7 +262,7 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
lu_result_sent == 0
- having received subscriber data does not mean acceptance
msc_subscr_conn_is_accepted() == false
ran_conn_is_accepted() == false
requests shall be thwarted
DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
@ -307,10 +307,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -322,24 +322,24 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
lu_result_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
---
- subscriber detaches
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
@ -350,21 +350,21 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DREF VLR subscr MSISDN:46071 usage decreases to: 0
DREF freeing VLR subscr MSISDN:46071
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
- BSSAP Clear --RAN_GERAN_A--> MS
DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
bssap_clear_sent == 1
- BSS sends BSSMAP Clear Complete
DREF unknown: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DRLL Freeing subscriber connection with NULL subscriber
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DRLL Freeing RAN connection with NULL subscriber
DMM RAN_conn{RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
===== test_two_lu: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
@ -374,14 +374,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request with unknown TMSI sends ID Request for IMSI
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:591536962){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(TMSI)=591536962 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:591536962)
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:591536962)
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -393,13 +393,13 @@ DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMSI
DMSC msc_tx 3 bytes to TMSI:0x23422342 via RAN_GERAN_A
- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051801
- DTAP matches expected message
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:591536962){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:591536962){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF TMSI:0x23422342: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:591536962){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:591536962){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
msc_subscr_conn_is_accepted() == false
ran_conn_is_accepted() == false
requests shall be thwarted
DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
DRLL subscr TMSI:0x23422342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
@ -429,8 +429,8 @@ DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:591536962){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0: )
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:591536962){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:591536962){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -444,7 +444,7 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
lu_result_sent == 0
- having received subscriber data does not mean acceptance
msc_subscr_conn_is_accepted() == false
ran_conn_is_accepted() == false
requests shall be thwarted
DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
@ -490,10 +490,10 @@ DVLR lu_compl_vlr_fsm(LU:591536962){LU_COMPL_VLR_S_DONE}: Removing from parent v
DVLR lu_compl_vlr_fsm(LU:591536962){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:591536962){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:591536962){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:591536962){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:591536962){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:591536962){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -505,19 +505,19 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
lu_result_sent == 1
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:591536962){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:591536962){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:591536962){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:591536962)
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:591536962)
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:591536962){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:591536962){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:591536962){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:591536962){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
DREF freeing VLR subscr MSISDN:46071
===== test_lu_unknown_tmsi: SUCCESS

View File

@ -5,14 +5,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP LU request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -31,11 +31,11 @@ DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD
DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -83,10 +83,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -103,30 +103,30 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3
DREF VLR subscr MSISDN:46071 usage decreases to: 2
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
---
- after a while, a new conn sends a CM Service Request
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_NEW}: Updated ID
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: Allocated
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: is child of RAN_conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -142,15 +142,15 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}:
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED
- sending CM Service Accept for MSISDN:46071
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9: compl_l3,cm_service)
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
DREF VLR subscr MSISDN:46071 usage decreases to: 2
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DREF MSISDN:46071: MSC conn use - compl_l3 == 1 (0x8: cm_service)
cm_service_result_sent == 1
msc_subscr_conn_is_accepted() == true
ran_conn_is_accepted() == true
MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER
DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b)
@ -162,8 +162,8 @@ DREF MSISDN:46071: MSC conn use + trans_nc_ss == 3 (0x4a: dtap,cm_service,trans_
DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false
DREF MSISDN:46071: MSC conn use - cm_service == 2 (0x42: dtap,trans_nc_ss)
GSUP --> HLR: OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200000013101013515a11302010102013b300b04010f0406aa510c061b01
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
DREF MSISDN:46071: MSC conn use - dtap == 1 (0x40: trans_nc_ss)
<-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200000013101033527a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
DVLR GSUP rx 61: 20010809710000004026f03004200000013101033527a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
@ -174,8 +174,8 @@ DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
- DTAP matches expected message
DREF VLR subscr MSISDN:46071 usage decreases to: 3
DREF MSISDN:46071: MSC conn use - trans_nc_ss == 0 (0x0: )
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -187,18 +187,18 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
- all requests serviced, conn has been released
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent RAN_conn(CM_SERVICE_REQ:901700000004620)
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance
DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(CM_SERVICE_REQ:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
DREF freeing VLR subscr MSISDN:46071
===== test_ss_ussd_mo_geran: SUCCESS
@ -209,14 +209,14 @@ talloc_total_blocks(tall_bsc_ctx) == 12
- Location Update request causes a GSUP LU request to HLR
MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Updated ID
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
DMM LU/new-LAC: 1/23
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Allocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: is child of RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown usage increases to: 1
@ -235,11 +235,11 @@ DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD
DVLR GSUP tx: 04010809710000004026f0280102
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
DVLR upd_hlr_vlr_fsm(LU:901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
DREF IMSI:901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event SUBSCR_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
@ -287,10 +287,10 @@ DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Removing from pa
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
DVLR lu_compl_vlr_fsm(LU:901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -307,19 +307,19 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3
DREF VLR subscr MSISDN:46071 usage decreases to: 2
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Removing from parent RAN_conn(LU:901700000004620)
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Freeing instance
DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(LU:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
---
- after a while, HLR initiates SS/USSD session
DREF VLR subscr MSISDN:46071 usage increases to: 2
@ -349,13 +349,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 3
- MS replies with Paging Response, we deliver the NC/USSD
MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
new conn
DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Allocated
DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
DRR PAGING RESPONSE: MI(IMSI)=901700000004620
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Updated ID
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_NEW}: Updated ID
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: Allocated
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000004620)
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: is child of RAN_conn(PAGING_RESP:901700000004620)
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr MSISDN:46071 usage increases to: 4
@ -370,7 +370,7 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _pr
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
DPAG Paging success for MSISDN:46071 (event=0)
DPAG Calling paging cbfn.
DMM Paging subscr 46071 succeeded!
@ -379,10 +379,10 @@ DMSC msc_tx 25 bytes to MSISDN:46071 via RAN_GERAN_A
- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_REGISTER: 0b3b1c15a11302010102013b300b04010f0406aa510c061b01
- DTAP matches expected message
DREF VLR subscr MSISDN:46071 usage decreases to: 4
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_has_active_transactions: connection still has active transaction: NCSS
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: NCSS
DREF VLR subscr MSISDN:46071 usage decreases to: 3
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
DREF MSISDN:46071: MSC conn use - compl_l3 == 1 (0x40: trans_nc_ss)
dtap_tx_confirmed == 1
paging_stopped == 1
@ -392,8 +392,8 @@ DREF MSISDN:46071: MSC conn use + dtap == 2 (0x42: dtap,trans_nc_ss)
DRLL Dispatching 04.08 message GSM0480_MTYPE_FACILITY (0xb:0x3a)
DMM Received SS/USSD data (trans_id=0, msg_type=GSM0480_MTYPE_FACILITY)
GSUP --> HLR: OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200001013101023527a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
DREF MSISDN:46071: MSC conn use - dtap == 1 (0x40: trans_nc_ss)
dtap_tx_confirmed == 1
paging_stopped == 1
@ -407,8 +407,8 @@ DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
- DTAP matches expected message
DREF VLR subscr MSISDN:46071 usage decreases to: 3
DREF MSISDN:46071: MSC conn use - trans_nc_ss == 0 (0x0: )
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASING
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
DREF MSISDN:46071: MSC conn use + release == 1 (0x100: release)
DREF VLR subscr MSISDN:46071 usage increases to: 4
DREF VLR subscr MSISDN:46071 usage decreases to: 3
@ -420,18 +420,18 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 2
- all requests serviced, conn has been released
- BSS sends BSSMAP Clear Complete
DREF MSISDN:46071: MSC conn use - release == 0 (0x0: )
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(PAGING_RESP:901700000004620)
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Removing from parent RAN_conn(PAGING_RESP:901700000004620)
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Freeing instance
DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Deallocated
DRLL MSISDN:46071: Freeing subscriber connection
DRLL MSISDN:46071: Freeing RAN connection
DREF VLR subscr MSISDN:46071 usage decreases to: 1
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
llist_count(&net->subscr_conns) == 0
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_RELEASED}: Freeing instance
DMM RAN_conn(PAGING_RESP:901700000004620){RAN_CONN_S_RELEASED}: Deallocated
llist_count(&net->ran_conns) == 0
DREF freeing VLR subscr MSISDN:46071
===== test_ss_ussd_no_geran: SUCCESS

File diff suppressed because it is too large Load Diff

View File

@ -161,14 +161,14 @@ void gsup_rx(const char *rx_hex, const char *expect_tx_hex)
OSMO_ASSERT(gsup_tx_confirmed);
}
bool conn_exists(const struct gsm_subscriber_connection *conn)
bool conn_exists(const struct ran_conn *conn)
{
struct gsm_subscriber_connection *c;
struct ran_conn *c;
if (!conn)
return false;
llist_for_each_entry(c, &net->subscr_conns, entry) {
llist_for_each_entry(c, &net->ran_conns, entry) {
if (c == conn)
return true;
}
@ -177,7 +177,7 @@ bool conn_exists(const struct gsm_subscriber_connection *conn)
}
/* Simplified version of the cm_service_request_concludes() */
void conn_conclude_cm_service_req(struct gsm_subscriber_connection *conn,
void conn_conclude_cm_service_req(struct ran_conn *conn,
enum ran_type via_ran)
{
btw("Concluding CM Service Request");
@ -186,17 +186,17 @@ void conn_conclude_cm_service_req(struct gsm_subscriber_connection *conn,
OSMO_ASSERT(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);
ASSERT_RELEASE_CLEAR(via_ran);
}
enum ran_type rx_from_ran = RAN_GERAN_A;
struct gsm_subscriber_connection *conn_new(void)
struct ran_conn *conn_new(void)
{
struct gsm_subscriber_connection *conn;
conn = msc_subscr_conn_alloc(net, rx_from_ran, 23);
struct ran_conn *conn;
conn = ran_conn_alloc(net, rx_from_ran, 23);
if (conn->via_ran == RAN_UTRAN_IU) {
struct ranap_ue_conn_ctx *ue_ctx = talloc_zero(conn, struct ranap_ue_conn_ctx);
*ue_ctx = (struct ranap_ue_conn_ctx){
@ -207,7 +207,7 @@ struct gsm_subscriber_connection *conn_new(void)
return conn;
}
struct gsm_subscriber_connection *g_conn = NULL;
struct ran_conn *g_conn = NULL;
void rx_from_ms(struct msgb *msg)
{
@ -643,8 +643,8 @@ int __wrap_a_iface_tx_dtap(struct msgb *msg)
}
/* override, requires '-Wl,--wrap=a_iface_tx_clear_cmd' */
int __real_a_iface_tx_clear_cmd(struct gsm_subscriber_connection *conn);
int __wrap_a_iface_tx_clear_cmd(struct gsm_subscriber_connection *conn)
int __real_a_iface_tx_clear_cmd(struct ran_conn *conn);
int __wrap_a_iface_tx_clear_cmd(struct ran_conn *conn)
{
btw("BSSAP Clear --%s--> MS", ran_type_name(RAN_GERAN_A));
OSMO_ASSERT(bssap_clear_expected);
@ -679,7 +679,7 @@ void __wrap_msc_mgcp_call_release(struct gsm_trans *trans)
static int fake_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;
if (send_tmsi == GSM_RESERVED_TMSI)
btw("sending LU Accept for %s", vlr_subscr_name(conn->vsub));
else
@ -691,7 +691,7 @@ static int fake_vlr_tx_lu_acc(void *msc_conn_ref, uint32_t send_tmsi)
static int fake_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;
btw("sending LU Reject for %s, cause %u", vlr_subscr_name(conn->vsub), cause);
lu_result_sent |= RES_REJECT;
return 0;
@ -699,7 +699,7 @@ static int fake_vlr_tx_lu_rej(void *msc_conn_ref, enum gsm48_reject_value cause)
static int fake_vlr_tx_cm_serv_acc(void *msc_conn_ref)
{
struct gsm_subscriber_connection *conn = msc_conn_ref;
struct ran_conn *conn = msc_conn_ref;
btw("sending CM Service Accept for %s", vlr_subscr_name(conn->vsub));
cm_service_result_sent |= RES_ACCEPT;
return 0;
@ -707,7 +707,7 @@ static int fake_vlr_tx_cm_serv_acc(void *msc_conn_ref)
static int fake_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;
btw("sending CM Service Reject for %s, cause: %s",
vlr_subscr_name(conn->vsub), gsm48_reject_value_name(cause));
cm_service_result_sent |= RES_REJECT;
@ -717,7 +717,7 @@ static int fake_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value c
static int fake_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;
char *hex;
bool ok = true;
btw("sending %s Auth Request for %s: tuple use_count=%d key_seq=%d auth_types=0x%x and...",
@ -761,15 +761,15 @@ static int fake_vlr_tx_auth_req(void *msc_conn_ref, struct gsm_auth_tuple *at,
static int fake_vlr_tx_auth_rej(void *msc_conn_ref)
{
struct gsm_subscriber_connection *conn = msc_conn_ref;
struct ran_conn *conn = msc_conn_ref;
btw("sending Auth Reject for %s", vlr_subscr_name(conn->vsub));
return 0;
}
/* override, requires '-Wl,--wrap=a_iface_tx_cipher_mode' */
int __real_a_iface_tx_cipher_mode(const struct gsm_subscriber_connection *conn,
int __real_a_iface_tx_cipher_mode(const struct ran_conn *conn,
struct gsm0808_encrypt_info *ei, int include_imeisv);
int __wrap_a_iface_tx_cipher_mode(const struct gsm_subscriber_connection *conn,
int __wrap_a_iface_tx_cipher_mode(const struct ran_conn *conn,
struct gsm0808_encrypt_info *ei, int include_imeisv)
{
int i;
@ -824,7 +824,7 @@ static int fake_vlr_tx_ciph_mode_cmd(void *msc_conn_ref, bool umts_aka, bool ret
#ifndef BUILD_IU
/* If we built without support for IU, fake the IU part here. The root cause is that we don't
* have differing sets of expected outputs for --enable-iu and --disable-iu. */
struct gsm_subscriber_connection *conn = msc_conn_ref;
struct ran_conn *conn = msc_conn_ref;
if (conn->via_ran == RAN_UTRAN_IU) {
DEBUGP(DMM, "-> SECURITY MODE CONTROL %s\n", vlr_subscr_name(conn->vsub));
rc = __wrap_ranap_iu_tx_sec_mode_cmd(conn->iu.ue_ctx, &conn->vsub->last_tuple->vec,
@ -850,7 +850,7 @@ void bss_sends_clear_complete()
btw("BSS sends BSSMAP Clear Complete");
OSMO_ASSERT(g_conn);
OSMO_ASSERT(g_conn->via_ran == RAN_GERAN_A);
msc_subscr_conn_rx_bssmap_clear_complete(g_conn);
ran_conn_rx_bssmap_clear_complete(g_conn);
}
void rnc_sends_release_complete()
@ -858,7 +858,7 @@ void rnc_sends_release_complete()
btw("RNC sends Iu Release Complete");
OSMO_ASSERT(g_conn);
OSMO_ASSERT(g_conn->via_ran == RAN_UTRAN_IU);
msc_subscr_conn_rx_iu_release_complete(g_conn);
ran_conn_rx_iu_release_complete(g_conn);
}
const struct timeval fake_time_start_time = { 123, 456 };
@ -1026,7 +1026,7 @@ int main(int argc, char **argv)
osmo_fsm_log_addr(false);
msc_subscr_conn_init();
ran_conn_init();
clear_vlr();

View File

@ -49,7 +49,7 @@ extern bool _log_lines;
#define comment_start() fprintf(stderr, "===== %s\n", __func__);
#define comment_end() fprintf(stderr, "===== %s: SUCCESS\n\n", __func__);
extern struct gsm_subscriber_connection *g_conn;
extern struct ran_conn *g_conn;
extern struct gsm_network *net;
extern struct gsm_bts *the_bts;
extern void *msgb_ctx;
@ -152,8 +152,8 @@ extern msc_vlr_test_func_t msc_vlr_tests[];
struct msgb *msgb_from_hex(const char *label, uint16_t size, const char *hex);
void clear_vlr();
bool conn_exists(const struct gsm_subscriber_connection *conn);
void conn_conclude_cm_service_req(struct gsm_subscriber_connection *conn,
bool conn_exists(const struct ran_conn *conn);
void conn_conclude_cm_service_req(struct ran_conn *conn,
enum ran_type via_ran);
void dtap_expect_tx(const char *hex);
@ -177,8 +177,8 @@ void thwart_rx_non_initial_requests();
#define EXPECT_ACCEPTED(expect_accepted) do { \
if (g_conn) \
OSMO_ASSERT(conn_exists(g_conn)); \
bool accepted = msc_subscr_conn_is_accepted(g_conn); \
fprintf(stderr, "msc_subscr_conn_is_accepted() == %s\n", \
bool accepted = ran_conn_is_accepted(g_conn); \
fprintf(stderr, "ran_conn_is_accepted() == %s\n", \
accepted ? "true" : "false"); \
OSMO_ASSERT(accepted == expect_accepted); \
} while (false)
@ -189,7 +189,7 @@ void thwart_rx_non_initial_requests();
OSMO_ASSERT((val) expect_op); \
} while (0);
#define EXPECT_CONN_COUNT(N) VERBOSE_ASSERT(llist_count(&net->subscr_conns), == N, "%d")
#define EXPECT_CONN_COUNT(N) VERBOSE_ASSERT(llist_count(&net->ran_conns), == N, "%d")
#define gsup_expect_tx(hex) do \
{ \