aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2019-04-23 18:37:37 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2019-04-30 02:24:18 +0200
commitf14aaa4ba1a744d74d431344e23932214bc42a08 (patch)
tree96951088d517116bc00f753a3b869b6d6550111c /include
parenta6078fe1d8701d15262e7eb5b3d50d13d1702bbc (diff)
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
Diffstat (limited to 'include')
-rw-r--r--include/osmocom/bsc/Makefile.am1
-rw-r--r--include/osmocom/bsc/bsc_subscr_conn_fsm.h10
-rw-r--r--include/osmocom/bsc/gsm_data.h15
-rw-r--r--include/osmocom/bsc/lchan_rtp_fsm.h5
-rw-r--r--include/osmocom/bsc/mgw_endpoint_fsm.h59
5 files changed, 17 insertions, 73 deletions
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 <osmocom/mgcp_client/mgcp_client_fsm.h>
-
-#include <osmocom/bsc/debug.h>
-
-/* 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);