diff options
Diffstat (limited to 'include/osmocom/bsc/gsm_data.h')
-rw-r--r-- | include/osmocom/bsc/gsm_data.h | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index c730d9641..04dc69673 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -25,6 +25,7 @@ #include <osmocom/gsm/protocol/gsm_12_21.h> #include <osmocom/abis/e1_input.h> #include <osmocom/bsc/meas_rep.h> +#include <osmocom/bsc/bsc_msg_filter.h> struct mgcp_client_conf; struct mgcp_client; @@ -80,6 +81,12 @@ struct gsm_classmark { uint8_t classmark3[14]; /* if cm3 gets extended by spec, it will be truncated */ }; +enum subscr_sccp_state { + SUBSCR_SCCP_ST_NONE, + SUBSCR_SCCP_ST_WAIT_CONN_CONF, + SUBSCR_SCCP_ST_CONNECTED +}; + /* active radio connection of a mobile subscriber */ struct gsm_subscriber_connection { /* global linked list of subscriber_connections */ @@ -88,9 +95,6 @@ struct gsm_subscriber_connection { /* libbsc subscriber information (if available) */ struct bsc_subscr *bsub; - /* SCCP connection associatd with this subscriber_connection */ - struct osmo_bsc_sccp_con *sccp_con; - /* back pointers */ struct gsm_network *network; @@ -121,6 +125,47 @@ struct gsm_subscriber_connection { * capabilities, which the MSC is required to translate into the codec list. */ struct gsm0808_speech_codec_list codec_list; bool codec_list_present; + + /* flag to prevent multiple simultaneous ciphering commands */ + int ciphering_handled; + + /* state related to welcome USSD */ + uint8_t new_subscriber; + + /* state related to osmo_bsc_filter.c */ + struct bsc_filter_state filter_state; + + /* SCCP connection associatd with this subscriber_connection */ + struct { + /* for advanced ping/pong */ + int send_ping; + + /* SCCP connection realted */ + struct bsc_msc_data *msc; + + /* Sigtran connection ID */ + int conn_id; + enum subscr_sccp_state state; + } sccp; + + /* for audio handling */ + struct { + uint16_t cic; + uint32_t rtp_ip; + int rtp_port; + /* RTP address of the remote end (assigned by MSC through assignment request) */ + struct sockaddr_storage aoip_rtp_addr_remote; + + /* Local RTP address (reported back to the MSC by us with the + * assignment complete message) */ + struct sockaddr_storage aoip_rtp_addr_local; + + /* storage to keep states of the MGCP connection handler, the + * handler is created when an assignment request is received + * and is terminated when the assignment complete message is + * sent */ + struct mgcp_ctx *mgcp_ctx; + } user_plane; }; |