aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bsc/osmo_bsc_lcls.c
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2018-11-01 11:55:15 +0100
committerMax <msuraev@sysmocom.de>2018-11-06 22:14:55 +0000
commit5962f23181bddd7f9f23cac496483a4ec3fc1a0c (patch)
treeaaaed5c9f091f126674621d4a5af338a5ced3a27 /src/osmo-bsc/osmo_bsc_lcls.c
parent5a5c7fd428701fb55d3bfde8c29e8970c1cf48e8 (diff)
LCLS: move MGCP MDCX into separate function
Move code using MDCX via MGCP into separate function to make adding alternative MDCX variants easier. Change-Id: I5fafa3b12a39c83bdf64e16e192dd2454d069cf4 Related: OS#3659
Diffstat (limited to 'src/osmo-bsc/osmo_bsc_lcls.c')
-rw-r--r--src/osmo-bsc/osmo_bsc_lcls.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/osmo-bsc/osmo_bsc_lcls.c b/src/osmo-bsc/osmo_bsc_lcls.c
index b8bf60103..e64297611 100644
--- a/src/osmo-bsc/osmo_bsc_lcls.c
+++ b/src/osmo-bsc/osmo_bsc_lcls.c
@@ -227,6 +227,15 @@ void lcls_apply_config(struct gsm_subscriber_connection *conn)
osmo_fsm_inst_dispatch(conn->lcls.fi, LCLS_EV_APPLY_CFG_CSC, NULL);
}
+/* Close the loop for LCLS using MGCP */
+static inline void lcls_mdcx(const struct gsm_subscriber_connection *conn, struct mgcp_conn_peer *mdcx_info)
+{
+ mgcp_pick_codec(mdcx_info, conn->lchan, false);
+
+ mgw_endpoint_ci_request(conn->user_plane.mgw_endpoint_ci_msc, MGCP_VERB_MDCX, mdcx_info,
+ NULL, 0, 0, NULL);
+}
+
static void lcls_break_local_switching(struct gsm_subscriber_connection *conn)
{
struct mgcp_conn_peer mdcx_info;
@@ -242,11 +251,7 @@ static void lcls_break_local_switching(struct gsm_subscriber_connection *conn)
.port = conn->user_plane.msc_assigned_rtp_port,
};
osmo_strlcpy(mdcx_info.addr, conn->user_plane.msc_assigned_rtp_addr, sizeof(mdcx_info.addr));
- mgcp_pick_codec(&mdcx_info, conn->lchan, false);
-
- mgw_endpoint_ci_request(conn->user_plane.mgw_endpoint_ci_msc,
- MGCP_VERB_MDCX, &mdcx_info,
- NULL, 0, 0, NULL);
+ lcls_mdcx(conn, &mdcx_info);
}
static bool lcls_enable_possible(struct gsm_subscriber_connection *conn)
@@ -596,10 +601,7 @@ static void lcls_locally_switched_onenter(struct osmo_fsm_inst *fi, uint32_t pre
mdcx_info = *other_mgw_info;
/* Make sure the request doesn't want to use the other side's endpoint string. */
mdcx_info.endpoint[0] = 0;
- mgcp_pick_codec(&mdcx_info, conn->lchan, false);
- mgw_endpoint_ci_request(conn->user_plane.mgw_endpoint_ci_msc,
- MGCP_VERB_MDCX, &mdcx_info,
- NULL, 0, 0, NULL);
+ lcls_mdcx(conn, &mdcx_info);
}
static void lcls_locally_switched_wait_break_fn(struct osmo_fsm_inst *fi, uint32_t event, void *data)