From f14aaa4ba1a744d74d431344e23932214bc42a08 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Tue, 23 Apr 2019 18:37:37 +0200 Subject: move mgw endpoint FSM to osmo-mgw.git osmo-mgw.git also includes fixes of the MGW endpoint FSM, for example I92a9944acc96398acd6649f9c3c5badec5dd6dcc. Depends: I9a3effd38e72841529df6c135c077116981dea36 (osmo-mgw) Change-Id: I03e6b48d9b0a5370310d5f56809259ff7909cf9d --- include/osmocom/bsc/Makefile.am | 1 - include/osmocom/bsc/bsc_subscr_conn_fsm.h | 10 +++--- include/osmocom/bsc/gsm_data.h | 15 ++++---- include/osmocom/bsc/lchan_rtp_fsm.h | 5 ++- include/osmocom/bsc/mgw_endpoint_fsm.h | 59 ------------------------------- 5 files changed, 17 insertions(+), 73 deletions(-) delete mode 100644 include/osmocom/bsc/mgw_endpoint_fsm.h (limited to 'include') diff --git a/include/osmocom/bsc/Makefile.am b/include/osmocom/bsc/Makefile.am index 21e53d702..89323c0f2 100644 --- a/include/osmocom/bsc/Makefile.am +++ b/include/osmocom/bsc/Makefile.am @@ -33,7 +33,6 @@ noinst_HEADERS = \ meas_feed.h \ meas_rep.h \ misdn.h \ - mgw_endpoint_fsm.h \ neighbor_ident.h \ network_listen.h \ openbscdefines.h \ diff --git a/include/osmocom/bsc/bsc_subscr_conn_fsm.h b/include/osmocom/bsc/bsc_subscr_conn_fsm.h index f5ed7bdd8..5475272b0 100644 --- a/include/osmocom/bsc/bsc_subscr_conn_fsm.h +++ b/include/osmocom/bsc/bsc_subscr_conn_fsm.h @@ -43,7 +43,7 @@ enum gscon_fsm_event { struct gsm_subscriber_connection; struct gsm_network; struct msgb; -struct mgwep_ci; +struct osmo_mgcpc_ep_ci; struct assignment_request; struct gsm_lchan; @@ -57,15 +57,15 @@ void gscon_submit_rsl_dtap(struct gsm_subscriber_connection *conn, struct msgb *msg, int link_id, int allow_sacch); int gscon_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *msg); -struct mgw_endpoint *gscon_ensure_mgw_endpoint(struct gsm_subscriber_connection *conn, - uint16_t msc_assigned_cic); +struct osmo_mgcpc_ep *gscon_ensure_mgw_endpoint(struct gsm_subscriber_connection *conn, + uint16_t msc_assigned_cic); bool gscon_connect_mgw_to_msc(struct gsm_subscriber_connection *conn, struct gsm_lchan *for_lchan, const char *addr, uint16_t port, struct osmo_fsm_inst *notify, uint32_t event_success, uint32_t event_failure, void *notify_data, - struct mgwep_ci **created_ci); + struct osmo_mgcpc_ep_ci **created_ci); void gscon_start_assignment(struct gsm_subscriber_connection *conn, struct assignment_request *req); @@ -76,7 +76,7 @@ void gscon_release_lchans(struct gsm_subscriber_connection *conn, bool do_rr_rel void gscon_lchan_releasing(struct gsm_subscriber_connection *conn, struct gsm_lchan *lchan); void gscon_forget_lchan(struct gsm_subscriber_connection *conn, struct gsm_lchan *lchan); -void gscon_forget_mgw_endpoint_ci(struct gsm_subscriber_connection *conn, struct mgwep_ci *ci); +void gscon_forget_mgw_endpoint_ci(struct gsm_subscriber_connection *conn, struct osmo_mgcpc_ep_ci *ci); bool gscon_is_aoip(struct gsm_subscriber_connection *conn); bool gscon_is_sccplite(struct gsm_subscriber_connection *conn); diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index 7b813a621..dacc63b15 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -39,7 +39,7 @@ struct mgcp_client_conf; struct mgcp_client; struct gsm0808_cell_id; -struct mgw_endpoint; +struct osmo_mgcpc_ep; /** annotations for msgb ownership */ #define __uses @@ -136,7 +136,7 @@ struct assignment_fsm_data { /* Whether this assignment triggered creation of the MGW endpoint: if the assignment * fails, we will release that again as soon as possible. (If false, the endpoint already * existed before or isn't needed at all.)*/ - struct mgwep_ci *created_ci_for_msc; + struct osmo_mgcpc_ep_ci *created_ci_for_msc; enum gsm0808_cause failure_cause; enum gsm48_rr_cause rr_cause; @@ -205,7 +205,7 @@ struct handover { struct gsm_lchan *new_lchan; bool async; struct handover_in_req inter_bsc_in; - struct mgwep_ci *created_ci_for_msc; + struct osmo_mgcpc_ep_ci *created_ci_for_msc; }; /* active radio connection of a mobile subscriber */ @@ -287,11 +287,11 @@ struct gsm_subscriber_connection { /* The endpoint at the MGW used to join both BTS and MSC side connections, e.g. * "rtpbridge/23@mgw". */ - struct mgw_endpoint *mgw_endpoint; + struct osmo_mgcpc_ep *mgw_endpoint; - /* The connection identifier of the mgw_endpoint used to transceive RTP towards the MSC. + /* The connection identifier of the osmo_mgcpc_ep used to transceive RTP towards the MSC. * (The BTS side CI is handled by struct gsm_lchan and the lchan_fsm.) */ - struct mgwep_ci *mgw_endpoint_ci_msc; + struct osmo_mgcpc_ep_ci *mgw_endpoint_ci_msc; } user_plane; /* LCLS (local call, local switch) related state */ @@ -554,7 +554,7 @@ struct gsm_lchan { struct osmo_fsm_inst *fi; struct osmo_fsm_inst *fi_rtp; - struct mgwep_ci *mgw_endpoint_ci_bts; + struct osmo_mgcpc_ep_ci *mgw_endpoint_ci_bts; struct { struct lchan_activate_info info; @@ -1535,6 +1535,7 @@ struct gsm_network { struct { struct mgcp_client_conf *conf; struct mgcp_client *client; + struct osmo_tdef *tdefs; } mgw; /* Remote BSS Cell Identifier Lists */ diff --git a/include/osmocom/bsc/lchan_rtp_fsm.h b/include/osmocom/bsc/lchan_rtp_fsm.h index fa0e74636..6ff8fe362 100644 --- a/include/osmocom/bsc/lchan_rtp_fsm.h +++ b/include/osmocom/bsc/lchan_rtp_fsm.h @@ -10,6 +10,7 @@ } while(0) struct gsm_lchan; +struct mgcp_conn_peer; enum lchan_rtp_fsm_state { LCHAN_RTP_ST_WAIT_MGW_ENDPOINT_AVAILABLE, @@ -40,6 +41,8 @@ enum lchan_rtp_fsm_event { }; void lchan_rtp_fsm_start(struct gsm_lchan *lchan); -struct mgwep_ci *lchan_use_mgw_endpoint_ci_bts(struct gsm_lchan *lchan); +struct osmo_mgcpc_ep_ci *lchan_use_mgw_endpoint_ci_bts(struct gsm_lchan *lchan); bool lchan_rtp_established(struct gsm_lchan *lchan); void lchan_forget_mgw_endpoint(struct gsm_lchan *lchan); + +void mgcp_pick_codec(struct mgcp_conn_peer *verb_info, const struct gsm_lchan *lchan, bool bss_side); diff --git a/include/osmocom/bsc/mgw_endpoint_fsm.h b/include/osmocom/bsc/mgw_endpoint_fsm.h deleted file mode 100644 index f86a7cd10..000000000 --- a/include/osmocom/bsc/mgw_endpoint_fsm.h +++ /dev/null @@ -1,59 +0,0 @@ -/* osmo-bsc API to manage all sides of an MGW endpoint */ -#pragma once - -#include - -#include - -/* This macro automatically includes a final \n, if omitted. */ -#define LOG_MGWEP(mgwep, level, fmt, args...) do { \ - LOGPFSML(mgwep->fi, level, "(%s) " fmt, \ - mgw_endpoint_name(mgwep), ## args); \ - } while(0) - -enum mgwep_fsm_state { - MGWEP_ST_UNUSED, - MGWEP_ST_WAIT_MGW_RESPONSE, - MGWEP_ST_IN_USE, -}; - -enum mgwep_fsm_event { - _MGWEP_EV_LAST, - /* and MGW response events are allocated dynamically */ -}; - -struct mgw_endpoint; -struct mgwep_ci; -struct osmo_tdef; - -void mgw_endpoint_fsm_init(struct osmo_tdef *T_defs); - -struct mgw_endpoint *mgw_endpoint_alloc(struct osmo_fsm_inst *parent, uint32_t parent_term_event, - struct mgcp_client *mgcp_client, - const char *fsm_id, - const char *endpoint_str_fmt, ...); - -struct mgwep_ci *mgw_endpoint_ci_add(struct mgw_endpoint *mgwep, - const char *label_fmt, ...); -const struct mgcp_conn_peer *mgwep_ci_get_rtp_info(const struct mgwep_ci *ci); -bool mgwep_ci_get_crcx_info_to_sockaddr(const struct mgwep_ci *ci, struct sockaddr_storage *dest); - -void mgw_endpoint_ci_request(struct mgwep_ci *ci, - enum mgcp_verb verb, const struct mgcp_conn_peer *verb_info, - struct osmo_fsm_inst *notify, - uint32_t event_success, uint32_t event_failure, - void *notify_data); - -static inline void mgw_endpoint_ci_dlcx(struct mgwep_ci *ci) -{ - mgw_endpoint_ci_request(ci, MGCP_VERB_DLCX, NULL, NULL, 0, 0, NULL); -} - -void mgw_endpoint_clear(struct mgw_endpoint *mgwep); - -const char *mgw_endpoint_name(const struct mgw_endpoint *mgwep); -const char *mgwep_ci_name(const struct mgwep_ci *ci); -const char *mgcp_conn_peer_name(const struct mgcp_conn_peer *info); - -enum mgcp_codecs chan_mode_to_mgcp_codec(enum gsm48_chan_mode chan_mode, bool full_rate); -void mgcp_pick_codec(struct mgcp_conn_peer *verb_info, const struct gsm_lchan *lchan, bool bss_side); -- cgit v1.2.3