diff options
author | Keith Whyte <keith@rhizomatica.org> | 2022-10-06 23:29:57 +0100 |
---|---|---|
committer | Keith Whyte <keith@rhizomatica.org> | 2022-10-15 01:55:55 +0100 |
commit | 28c5a7dea0b1ff3b81666020f0c0206a01fa1b34 (patch) | |
tree | 79bf0e045aeddc274c72d99689a4750800de253c | |
parent | 89a52cdd1c37f6315682451d7a2edc7fce5c2536 (diff) |
Add support for MSC initiated LCLS-CONNECT-CTRL
Change-Id: Ib30ee53ded8f09e819eae770489a92cc60b2c9a3
-rw-r--r-- | include/osmocom/msc/ran_msg.h | 5 | ||||
-rw-r--r-- | src/libmsc/ran_msg.c | 1 | ||||
-rw-r--r-- | src/libmsc/ran_msg_a.c | 20 |
3 files changed, 26 insertions, 0 deletions
diff --git a/include/osmocom/msc/ran_msg.h b/include/osmocom/msc/ran_msg.h index 86bf63a5b..2b026a0bd 100644 --- a/include/osmocom/msc/ran_msg.h +++ b/include/osmocom/msc/ran_msg.h @@ -69,6 +69,7 @@ enum ran_msg_type { RAN_MSG_HANDOVER_SUCCEEDED, RAN_MSG_HANDOVER_COMPLETE, RAN_MSG_HANDOVER_FAILURE, + RAN_MSG_LCLS_CONNECT_CTRL, }; extern const struct value_string ran_msg_type_names[]; @@ -268,6 +269,10 @@ struct ran_msg { } handover_failure; struct ran_handover_request handover_request; struct ran_handover_request_ack handover_request_ack; + struct { + enum gsm0808_lcls_config config; + enum gsm0808_lcls_control control; + } lcls_config_ctrl; }; }; diff --git a/src/libmsc/ran_msg.c b/src/libmsc/ran_msg.c index e050303db..f4cacb050 100644 --- a/src/libmsc/ran_msg.c +++ b/src/libmsc/ran_msg.c @@ -51,6 +51,7 @@ const struct value_string ran_msg_type_names[] = { { RAN_MSG_HANDOVER_DETECT, "HANDOVER_DETECT" }, { RAN_MSG_HANDOVER_COMPLETE, "HANDOVER_COMPLETE" }, { RAN_MSG_HANDOVER_FAILURE, "HANDOVER_FAILURE" }, + { RAN_MSG_LCLS_CONNECT_CTRL, "LCLS_CONNECT_CTRL" }, {} }; diff --git a/src/libmsc/ran_msg_a.c b/src/libmsc/ran_msg_a.c index 6af229041..aadc01135 100644 --- a/src/libmsc/ran_msg_a.c +++ b/src/libmsc/ran_msg_a.c @@ -388,6 +388,11 @@ static int ran_a_decode_sapi_n_reject(struct ran_dec *ran_dec, struct msgb *msg, return ran_decoded(ran_dec, &ran_dec_msg); } +static int ran_a_decode_lcls_connect_ctrl_ack(struct ran_dec *ran_dec, const struct msgb *msg, const struct tlv_parsed *tp) +{ + return 0; +} + static int ran_a_decode_lcls_notification(struct ran_dec *ran_dec, const struct msgb *msg, const struct tlv_parsed *tp) { const struct tlv_p_entry *ie_lcls_bss_status = TLVP_GET(tp, GSM0808_IE_LCLS_BSS_STATUS); @@ -816,6 +821,8 @@ static int ran_a_decode_bssmap(struct ran_dec *ran_dec, struct msgb *bssmap) return ran_a_decode_sapi_n_reject(ran_dec, bssmap, tp); case BSS_MAP_MSG_LCLS_NOTIFICATION: return ran_a_decode_lcls_notification(ran_dec, bssmap, tp); + case BSS_MAP_MSG_LCLS_CONNECT_CTRL_ACK: + return ran_a_decode_lcls_connect_ctrl_ack(ran_dec, bssmap, tp); /* From current RAN peer, the Handover origin: */ case BSS_MAP_MSG_HANDOVER_REQUIRED: @@ -921,6 +928,15 @@ static void _gsm0808_assignment_extend_osmux(struct msgb *msg, uint8_t cid) msg->l3h[1] = msgb_l3len(msg) - 2; } +static struct msgb *ran_a_make_lcls_conn_ctrl_command(enum gsm0808_lcls_config config, + enum gsm0808_lcls_control control) +{ + struct msgb *msg; + + msg = gsm0808_create_lcls_conn_ctrl(config, control); + return msg; +} + /* Compose a BSSAP Assignment Command. * Passing an RTP address is optional. * The msub is passed merely for error logging. */ @@ -1278,6 +1294,10 @@ static struct msgb *_ran_a_encode(struct osmo_fsm_inst *caller_fi, const struct case RAN_MSG_HANDOVER_FAILURE: return ran_a_make_handover_failure(caller_fi, ran_enc_msg); + case RAN_MSG_LCLS_CONNECT_CTRL: + return ran_a_make_lcls_conn_ctrl_command(ran_enc_msg->lcls_config_ctrl.config, + ran_enc_msg->lcls_config_ctrl.control); + default: LOG_RAN_A_ENC(caller_fi, LOGL_ERROR, "Unimplemented RAN-encode message type: %s\n", ran_msg_type_name(ran_enc_msg->msg_type)); |