Change-Id: I4b87c074bc986668d7831fef6122c03b7209b049
This commit is contained in:
Neels Hofmeyr 2020-11-24 06:06:17 +01:00
parent 17d225492c
commit 36a3753ed0
3 changed files with 23 additions and 1 deletions

View File

@ -161,6 +161,11 @@ struct gsm_mncc {
unsigned char lchan_type;
unsigned char lchan_mode;
struct osmo_gcr_parsed gcr;
// or maybe as encoded buffer? has to pass the mncc_sock to osmo-sip-connector at some point
// uint8_t gcr_enc[15];
// uint8_t gcr_enc_len;
/* A buffer to contain SDP ('\0' terminated) */
char sdp[1024];
};
@ -171,7 +176,9 @@ struct gsm_data_frame {
unsigned char data[0];
};
#define MNCC_SOCK_VERSION 7
#define MNCC_SOCK_VERSION 8
// this version bump has to also happen in osmo-sip-connector
struct gsm_mncc_hello {
uint32_t msg_type;
uint32_t version;

View File

@ -567,6 +567,9 @@ static int gsm48_cc_rx_setup(struct gsm_trans *trans, struct msgb *msg)
//if (lcls_compose(&trans-lcls, trans, true)
// LOG_TRANS(trans, LOGL_ERROR, "LCLS Error\n");
/* pass the LCLS GCR on to the MT call leg via MNCC */
setup.gcr = trans->lcls->gcr;
tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
/* emergency setup is identified by msg_type */
if (msg_type == GSM48_MT_CC_EMERG_SETUP) {
@ -2008,6 +2011,12 @@ static int mncc_tx_to_gsm_cc(struct gsm_network *net, const union mncc_msg *msg)
return -ENOMEM;
}
/* Get the GCR from the MO call leg (if any).
* First make room for the LCLS info, then insert the MO call leg's GCR. */
trans->lcls = lcls_compose(...);
trans->lcls->gcr = data->gcr;
trans->lcls->gcr_available = true;
/* If subscriber has no conn */
if (!msc_a) {
/* This condition will return before the common logging of the received MNCC message below, so

View File

@ -604,6 +604,12 @@ static void msc_a_call_leg_ran_local_addr_available(struct msc_a *msc_a)
}
if (cc_trans->lcls) {
/* LCLS: for the MO call leg, the LCLS GCR has been created in gsm48_cc_rx_setup() where the DTAP CC
* SETUP was received from the MO MS.
* For the MT call leg, the LCLS GCR has been received from the MO call leg via MNCC, in
* mncc_tx_to_gsm_cc(), where the MNCC SETUP was received from the CN side (PBX/sipcon or via internal
* MNCC).
*/
LOG_MSC_A(msc_a, LOGL_ERROR, "We already have LCLS GCR: %s\n", osmo_gcr_dump(cc_trans->lcls));
} else {