aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc/msc_a.c
AgeCommit message (Collapse)AuthorFilesLines
2023-04-053G: decapsulate IuUP to AMR at the MGW; allow 3G<-AMR->2GNeels Hofmeyr1-22/+21
For all 3G calls, convert IuUP <-> plain AMR/RTP on the MSC's MGW hop like this: Before this patch: hNodeB <--IuUP--> MGW@hnbgw <--IuUP--> MGW@msc <--IuUP--> other call leg After this patch: hNodeB <--IuUP--> MGW@hnbgw <--IuUP--> MGW@msc <--AMR--> other call leg ^ This allows, in principle, 2G to 3G calls without expensive transcoding, like this: hNodeB <--IuUP--> MGW@hnbgw <--IuUP--> MGW@msc <--AMR--> MGW@msc <--AMR--> MGW@bsc <--AMR--> 2G-BTS ^ (So far only proven to work with AMR-FR at 12k2.) 3G to 3G calls now look like this: hNodeB <--IuUP--> MGW@hnbgw <--IuUP--> MGW@MSC <--AMR--> MGW@MSC <--IuUP--> MGW@hnbgw <--IuUP--> hNodeB ^ Implementatino: get rid of the shim that was put in place to still send IuUP (VND.3GPP.IUFP) to the CN. So now, for all 3G voice, the IuUP gets decapsulated to plain AMR/RTP at the MSC's MGW hop. What is proven to work with this patch: successful voice call between 2G and 3G with these conditions: - a hNodeB that stubbornly accepts only 12k2 AMR; - a 2G BTS configured to use only TCH/F and only FR3, with only 12k2 as allowed AMR rate. We have not yet seen a call working for TCH/H HR3 <-> 3G, because of the lab hNodeB's limitation to 12k2. Future work we probably need: - properly request and negotiate AMR rates via SDP fmtp:mode-set. - request more RFCIs in our RANAP RAB Assignment requests (see I61e0e9e75e3239662846fd797532acdefa9f73dc). - Convert IuUP to AMR already at the HNBGW's MGW? Solving this is not part of this patch. Related: SYS#5092 Change-Id: I386a6a426c318040b019ab5541689c67e94672a1
2023-03-18do CN CRCX firstNeels Hofmeyr1-53/+99
In order to send the MSC's RTP endpoint IP address+port in the initial SDP, move the MGCP CRCX up to an earlier point in the sequence of establishing a voice call. Update the voice call sequence chart to show the effects. Though the semantic change is rather simple, the patch is rather huge -- things have to happen in a different order, and async waits have to happen at different times. The new codec filter helps to carry codec resolution information across the newly arranged code paths. Related: SYS#5066 Change-Id: Ie433db1ba0c46d4b97538a969233c155cefac21c
2023-03-18[codecs filter] use codecs filter on crcx okNeels Hofmeyr1-4/+15
Change-Id: I03753df567d1dc24852e6fbb681fbba81d2a545d
2023-03-18[codecs filter] send + receive SDP via MNCCNeels Hofmeyr1-0/+3
Transmit and receive full SDP information via MNCC, to accurately pass codecs choices between the call legs. In msc_vlr_test_call.c test_call_mt(), show that when receiving MNCC, the codec information in SDP overrules the Bearer Cap codec information -- we expect to still receive inaccurate Bearer Cap from e.g. osmo-sip-connector, because we have chosen to add SDP to MNCC instead of trying to fix the codecs represented in Bearer Cap. For internal MNCC, the MT call leg now knows which codec the MO has chosen and assigned. For external MNCC, osmo-sip-connector receives SDP about our codecs choices and sends it in SIP messages, and we also receive the full SDP information from the remote SIP leg. Update the SDP in codec_filter every time it is received, to always have the latest SDP information from the remote leg. CC MNCC | ---ALERTING--> | add local side SDP to MNCC msg | <--ALERTING--- | store remote side SDP | <--SETUP-RESP- | store remote side SDP | --SETUP-CNF--> | add local side SDP to MNCC msg | -RTP-CREATE--> | use codec_filter, add local side SDP to MNCC msg | <-RTP-CONNECT- | store remote side SDP There still is one problem: when initiating MNCC, we do not yet know the RTP address and port to be used for the CN side, because the CN CRCX happens later. So far we send 0.0.0.0:0 as RTP endpoint in the SDP, until the CN CRCX is done. A subsequent patch moves CN CRCX to an earlier time, adding proper RTP information right from the start. Related: SYS#5066 Change-Id: Ie0668c0e079ec69da1532b52d00621efe114fc2c
2023-03-18in ran_msg, return gsm0808_speech_codec (intra-MSC)Neels Hofmeyr1-10/+27
Do not convert to enum mgcp_codecs, but directly pass the gsm0808_speech_codec IE from the A interface to codecs handling. For Iu: - RAN side: use ran_infra.force_mgw_codecs_to_ran to keep the MGW endpoint towards RAN on IUFP. - CN side: introduce flag ran_msg.assignment_complete.codec_with_iuup, so to decide whether to forward IUFP towards CN, we don't need to test the RAN type, but use the flag from the ran_msg implementation. In msc_vlr_tests, use the SDP codec string instead of enum mgcp_codecs. So far limit to intra-MSC related messaging, adjusting inter-MSC handover follows in a separate patch. Change-Id: Ia666cb697fbd140d7239089628faed93860ce671
2023-03-18rtp_stream: allow multiple codecs / use codec filter from AssignmentNeels Hofmeyr1-16/+34
Allow configuring MGW conns with multiple codecs. The new codecs filter can have multiple results, and MGCP can configure multiple codecs. Get rid of this bottleneck, that so far limits to a single codec to MGW. On Assignment Complete, set codec_filter.assignment to the assigned codec, and use that to set the resulting codec (possibly multiple codecs in the future) to create the CN side MGW endpoint. Related: SYS#5066 Change-Id: If9c67b298b30f893ec661f84c9fc622ad01b5ee5
2023-03-18add ran_infra.force_mgw_codecs_to_ranNeels Hofmeyr1-0/+2
Indicate in the ran_infra data structure whether a RAN needs specific codecs to be set up on the RAN facing MGW endpoint. This allows setting forced RAN codecs as first-class citizen in the ran_infra data structure, instead of special cases in the code (for IuUP on IuCS). Will be used in subsequent commit I37f65c36af2679ecba1040a11a9aa0eb9481d817, submitted separately for easier readability. Change-Id: I37f65c36af2679ecba1040a11a9aa0eb9481d817
2023-03-14[codecs filter] apply BSS codecs from Assignment CompleteNeels Hofmeyr1-0/+5
Codec List (BSS Supported) is received once in Complete Layer 3 and again in Assignment Complete messages. Use the most recent one, i.e. the one from Assignment Complete, when it occurs. Related: SYS#5066 Change-Id: I5e66ecc7987fa926f39d8be8eaf5799b931ab20a
2023-03-14[codecs filter] store BSS codec list from Compl L3Neels Hofmeyr1-0/+13
The initial Compl L3 happens long before we establish a CC transaction. Remember the Codec List (BSS Supported), so that we can feed the new codecs filter with it. Subsequent patches implement feeding the filter. Related: SYS#5066 Change-Id: I7cdc348218433141a43d2e42750af02591688240
2023-03-04IuCS: remove IuUP LOOPBACK hackNeels Hofmeyr1-6/+0
Since osmo-mgw now supports IuUP properly, and since we indicate IUFP in the MGCP CRCX towars an IuCS RAN [1], we should no longer place the MGW endpoint in loopback mode to hack up an IuUP Initialization. This hack should have been removed along with [1]. [1] IUFP sent to MGW since this commit: commit 3a02d298049149f126fecc51e8445392cdb3b950 Refs: 1.8.0-13-g3a02d2980 Announce IuFP audio codec for UTRAN conns in CRCX towards MGW I7aca671e00ed27ac03f0d106b5a6b665a9bed4c1 Change-Id: I6446c64421e3e13e2b829293d031c98b99cd39a7
2023-03-04comment: clarify L3 Info processingNeels Hofmeyr1-0/+2
Related: SYS#5066 Change-Id: Ia9180eeb88b31a2cf7dea72b43affd0c7b239ccb
2022-10-27msc_a,vlr: add is_ciphering_required (accurately named)Neels Hofmeyr1-0/+12
For establishing Layer 3, pass a flag from msc_a to VLR that indicates to fail if encryption is not possible. An earlier patch [1] renamed a previously existing flag require_ciphering to is_ciphering_to_be_attempted, because the naming was not accurate. This new flag now indicates what its name suggests. This new flag is needed for upcoming patch [2] to distinguish between optional and mandatory encryption. [1] Ia55085e3b36feb275bcf92fc91a4be7d1c24a6b9 [2] I5feda196fa481dd8a46b0e4721c64b7c6600f0d1 Related: OS#4830 Change-Id: I52090c5f5db997030da7c2ed9beca9c51f55f4cf
2022-10-27msc_a,vlr: rename ciphering_required to is_ciphering_to_be_attemptedNeels Hofmeyr1-1/+1
Clarify the name to avoid confusion in upcoming patches. This function actually returns whether any ciphering mode besides A5/0 is enabled, and does not imply that ciphering is mandatory. A5/0 may well be allowed when this function returns true. Related: OS#4830 Change-Id: Ia55085e3b36feb275bcf92fc91a4be7d1c24a6b9
2022-07-22err log: fix reverse statement in msc_a call handlingNeels Hofmeyr1-1/+1
Change-Id: I937abe25ba87d0fcddc3351ac391cf6e7e776de6
2022-05-04fix crash on CM Serv Rej: fix use count mismatchNeels Hofmeyr1-0/+4
With comments, clarify the code paths where a CM Service use count has not yet been placed on the conn (just send CM Service Reject) and where the use count is placed (decrement count on CM Service Reject). Place the CM Service use count slightly earlier: - it is then correctly present when checking the mobile identity in cm_serv_reuse_conn(), avoiding the crash reported in OS#5532. - there is only one place incrementing the use count instead of two. Related: OS#5532 Change-Id: I6c735b79b67108bcaadada3f01c7046e262f939b
2022-01-07Avoid setting audio codec if not available during assignment_complete (MDCX)Pau Espin Pedrol1-2/+5
RAB Assignment Complete contains no codec info, hence assignment_complete.codec is not set and assignment_complete.codec_present is false. As a result a wrong value is passed to rtp_stream_set_codec. This fixes osmo-msc sending "a=rtpmap:112 AMR/8000/1" during MDCX in the RAT-side connection of the call leg after having properly sent VND.3GPP.IUFP/16000 in CRCX. Change-Id: Ic028d35893d29f7d72f22f82ef89695229c9b01b
2022-01-05Announce IuFP audio codec for UTRAN conns in CRCX towards MGWPau Espin Pedrol1-2/+9
This way the MGW knows it has to handle IuUP in that connection (answer IuUP Initialization, etc.). Depends: osmo-mgw.git 1de5ed6f979bd4c1380789c9a82f8e396f05c5f8 Change-Id: I7aca671e00ed27ac03f0d106b5a6b665a9bed4c1
2021-12-07libmsc: fix memory leak (struct msgb) in msc_i_ran_enc()Vadim Yanitskiy1-4/+1
Function msc_i_ran_enc() calls msc_role_ran_encode(), but unlike the other callers of this function it does not free() the encoded message. A simple solution would be to call msgb_free(), like it's done in the other places. But a more elegant solution is to modify function msc_role_ran_encode(), so that it attaches the msgb to OTC_SELECT. This way there is no need to call msgb_free() here and there. This change fixes a memleak observed while running ttcn3-msc-test. Change-Id: I741e082badc32ba9a97c1495c894e1d22e122e3a Related: OS#5340
2021-11-27libmsc/gsm_04_08: refactor require ciphering into an own functionAlexander Couzens1-0/+10
Make it more readable. Change-Id: I9e407f65b282e645feabe714f7f4c3e44fae21e9
2021-11-05Validate the choosen UTRAN encryption algorithmAlexander Couzens1-1/+20
RANAP Security Command can include an encryption IE. If it includes it the RNC can still ignore it (e.g. unsupported encryption) and return the Security Command Complete with an choosen encryption IE: "no encryption". Validate the encryption element and ensure the encryption is included in the encryption mask. Closes: OS#4144 Change-Id: Icfc135c8b8ae862defe7114db492af600c26407f
2021-11-05Make UTRAN encryption algorithms configurableHarald Welte1-2/+2
Allow the user fine-grained control over which UMTS encryption algorithms are permitted, rather than always permitting UEA1 and UEA2 or neither. This brings the handling of UEA in line with the handling of A5 for GERAN. Change-Id: I91f9e50f9c1439aa19528f887b83ae9de628fcfd Closes: OS#4144 Depends: osmo-iuh.git I6d2d033b0427bdc84fee61e0f3cb7b29935214bf
2021-11-05Fix enabling of UMTS UEA encryptionHarald Welte1-0/+3
The existing code allowed the user to configure UMTS encryption in the vty, but we never actually passed this information down to RANAP. As a result, the RAN had no chance of ever enabling encryption on the air interface. Change-Id: Ieaaa6b23b7337b7edb902fad8031e195e0c5e9d2 Related: OS#4144
2021-10-25Add support for LCLS to the MSCKeith Whyte1-0/+8
This commit is largely based on work by Max <msuraev@sysmocom.de> Adds LCLS parameters for A-interface transactions This commit also adds a vty option to facilitate globally disabling LCLS for all calls on this MSC. Add a global call reference (GCR) to MNCC and therefore bump the MNCC version to version 8. (This commit has to be merged at the same time as the corresponing commit in the osmo-sip-connector for mncc-external use.) Depends: osmo-sip-connector Id40d7e0fed9356f801b3627c118150055e7232b1 Change-Id: I705c860e51637b4537cad65a330ecbaaca96dd5b
2021-07-29implement CM Re-Establish for voice callsNeels Hofmeyr1-0/+15
Related: SYS#5130 Change-Id: I6fa37d6ca9fcb1637742b40e37b68d67664c9b60
2021-07-12msc_a.c: Allow MSC_A_EV_CN_CLOSE in state MSC_A_ST_RELEASINGPau Espin Pedrol1-0/+1
As seen in a running osmo-msc: "vlr_access_req_fsm.c:153 msc_a(IMSI-....:MSISDN-...:TMSI-0x...:GERAN-A-8:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Event MSC_A_EV_CN_CLOSE not permitted" Also seen in several unit tests, which need update. The action event handler for that state is actually already expecting/handling the event by ignoring it, so we should allow it. Change-Id: I4d30cffab693529aab3ba736419dec116a4dd7ef
2021-06-24improve logging on encryption, for Ciphering and HOneels/a54Neels Hofmeyr1-2/+6
log the algorithm and all keys instead of just Kc. Change-Id: If7871dedda2b1fb115e6f00da1379ff2e3d68a10
2021-06-24support A5/4 in Cipher Mode CommandNeels Hofmeyr1-1/+9
Related: SYS#5324 Change-Id: I780a739b9bfbefd4f58be051794fe1a491823e67
2021-06-06msc_tx_common_id(): fix potential NULL pointer dereferenceVadim Yanitskiy1-0/+2
Reported by GCC 11.1.0. msc_a_vsub() may return NULL. Change-Id: Iebdd6399e819a03258398e6b7b453bda37e45a20
2021-06-04Use new osmo stat items/ctr APIsPau Espin Pedrol1-9/+3
Generated using several semantinc patches with spatch. Change-Id: I3ee853539949a763a309856bf2e7196415b23741
2021-04-29Fill Last Used E-UTRAN PLMN Id when in CSFBPau Espin Pedrol1-0/+5
Since recently, osmo-bsc behaves strictly as per specs, meaning it will only send the "Cell selection indicator after release of all TCH and SDCCH IE" in RR Channel Release iff: * "Last Used E-UTRAN PLMN Id" was received in the CommonID sent MSC->BSC * "Last Used E-UTRAN PLMN Id" was received insider "old BSS to new BSS Information" in the HandoverRequest sent MSC->BSC. On the other hand, CSFB_Indicator from ClearCommand MSC->BSC is nw ignored and not taken into account. Hence, let's update osmo-msc to also behave correctly by sending the Last Used E-UTRAN PLMN ID at CommonID tx time to avoid regressions in CSFB support when running against newer osmo-bsc. Let's keep sending the CSFB Indicator in ClearCommand as we used too, in order to keep compatibility with older BSCs (as per spec). Related: SYS#5337 Change-Id: Ic5f175b179973d0a50d94f00e15f5a3e332605fc
2020-07-28Clear Command: set cause value to "Call Control"Neels Hofmeyr1-0/+3
So far, by failing to initialize the cause value, we always send a Clear Command cause == 0, which actually means "Radio Interface Message Failure". This is seen in all my logged network traces of osmo-msc lab testing. "Call Control" seems to be the only cause value that remotely fits a normal release procedure, even if it was not voice call related, see 3GPP TS 48.008 3.2.1.21. Related: OS#4664 Change-Id: I1347ed72ae7d7ea73a557b866e764819c5ef8c42
2020-06-24propagate Compl L3 Info Cell ID to the VLR subscriber recordNeels Hofmeyr1-0/+6
As soon as the subscriber is authenticated, update the VLR entry with the MSC-A's full CGI, including the Cell Id received from the Complete Layer 3 Information. Thus the Cell Id will be shown by vty 'show subscriber cache' and 'show connection'. This is tested by osmo-ttcn3-hacks Ie410714a96353f74a52a104c56fa0a08683e0004. Related: OS#4627 Change-Id: Iee1781985fb25b21ce27526c6a3768bf70d4dc9a
2020-06-24add comments to clarify some complete l3 detailsNeels Hofmeyr1-0/+2
Change-Id: I6e289900d38d97c346d615b71d36656254e6f2b5
2020-06-22msc_a: add callref as call id to ASSIGNMENT REQ.Philipp Maier1-0/+2
The BSSMAP message ASSIGNMENT REQUEST may contain an optional CALL IDENTIFIER IE. While this IE is optional some BSC implementions may require it. Change-Id: I4288f47e4a6d61ec672f431723f6e72c7c6b0799 Related: OS#4582
2020-06-19use new osmo_mobile_identity API everywhereNeels Hofmeyr1-2/+2
Depends: Ic3f969e739654c1e8c387aedeeba5cce07fe2307 (libosmocore) Change-Id: Idfc8e576e10756aeaacf5569f6178068313eb7ea
2019-11-28msc_a CC: add some basic sanity testsNeels Hofmeyr1-0/+10
Change-Id: I9d7d7d4073282abc6c02a6a297c807dc70c5154c
2019-11-28fail on invalid RTP address from MGWNeels Hofmeyr1-0/+6
When the CRCX OK returns an invalid RTP address, abort the call; fixes MSC_Tests.TC_invalid_mgcp_crash. The original crash happened when adding this error handling without this commit I08c03946605aa12e0a5ce8b3c773704ef5327a7a ("fsm: use deferred deallocation" for osmo-mgw I7df2e9202b04e7ca7366bb0a8ec53cf3bb14faf3 "fix use-after-free: require new fsm deferred dealloc, check for term"). With this error handling added, even though avoiding a crash, the test does not pass yet, because instead of rejecting the call, it currently composes an Assignment Command without a Transport Layer Address. Fix that. Change-Id: I00c3b5ff74c05bcc2b7c39375c33419916a57193
2019-11-19Fix some typosMartin Hauke1-2/+2
Fix typos and common misspellings in code comments and log messages. Change-Id: Ie66b89065f2100c1d2125ce5a6c9b1d58df7c8ad
2019-11-01CC: add error handling for CRCX responsesNeels Hofmeyr1-3/+3
Fix three 'FIXME: ERROR HANDLING' occurences in the code that reacts upon the MGW providing (or failing to provide) an RTP port for the RAN side. From an earlier stage of the code, the cleanup for this situation was extremely complex, and hence the choice was to simply wait for the call to time out and fail. But since we have implemented safe deallocation of nested FSMs in libosmocore, the situation has become rather trivial: simply free the CC transactions, and all the rest will immediately release, and terminate correctly without crashing. A ttcn3 test for this is MSC_Tests:TC_invalid_mgcp_crash, which actually also needs the change to osmo_sockaddr_str_is_nonzero() in preceding patch I53ddb19a70fda3deb906464e1b89c12d9b4c7cbd, so that a seemingly valid MGCP message ends up causing a failure in the on_success() branch of mgcp_client_endpoint_fsm.c. Change-Id: I8313bed1d782100bebeac7d8fc040557c4cb653e
2019-10-21log which DTAP messages are sent to RANNeels Hofmeyr1-2/+5
So far, the logging said only "RAN encode: BSSMAP: DTAP", but not *which* DTAP message, which is in fact a very interesting detail when reading osmo-msc logs. Change-Id: I0cb8d1e3307737ffe53730c64bb984adacedb2da
2019-09-18fix error on BSSMAP Cipher Mode Complete L3 msg IENeels Hofmeyr1-0/+12
When an MS returns the IMEISV in the BSSMAP Cipher Mode Complete message in the Layer 3 Message Contents IE, do not re-invoke the decode_cb() a second time, but instead point to it from the ran_msg.cipher_mode_complete struct. When the MSC-A decodes the Ciphering Mode Complete message, it always wants to also decode the enclosed DTAP from the Layer 3 Message Contents IE. However, when the MSC-I preliminarily decodes messages, it often just wants to identify specific messages without fully acting on them, let alone dispatching RAN_UP_L2 events more than once. So leave it up to the supplied decode_cb passed to ran_dec_l2() implementations to decide whether to decode the DTAP. In msc_a.c hence evaluate the DTAP by passing a msgb to msc_a_up_l3(), which will evaluate the RR Ciphering Mode Complete message found in the BSSMAP Cipher Mode Complete's Layer 3 Message Contents IE. Particularly, the previous choice of calling the decode_cb a second time for the enclosed DTAP caused a header/length parsing error: the second decode_cb call tried to mimick DTAP by overwriting the l3h pointer and truncating the length of the msgb, but subsequently ran_a_decode_l2() would again derive the l3h from the l2h, obliterating the intended re-interpretation as DTAP, and hence the previous truncation caused error messages on each and every Cipher Mode Complete message, like: DBSSAP ERROR libmsc/ran_msg_a.c:764 msc_a(IMSI-26242340300XXXX:MSISDN-XXXX:TMSI-0xA73E055A:GERAN-A-77923:LU)[0x5563947521e0]{MSC_A_ST_AUTH_CIPH}: RAN decode: BSSMAP: BSSMAP data truncated, discarding message This error was seen a lot at CCCamp2019. Modifying the msgb was a bad idea to begin with, the approach taken in this patch is much cleaner. Note that apparently many phones include the IMEISV in the Cipher Mode Complete message even though the BSSMAP Cipher Mode Command did not include the Cipher Response Mode IE. So, even though we did not specifically ask for the Cipher Mode Complete to include any identity, many MS default to including the IMEISV of their own accord. Reproduce: attach to osmo-msc with ciphering enabled using a Samsung Galaxy S4mini. Related: OS#4168 Change-Id: Icd8dad18d6dda24d075dd8da72c3d6db1302090d
2019-09-03msc_a fsm: ignore state chg to same stateNeels Hofmeyr1-2/+8
We sometimes see errors like libmsc/msc_a.c:361 msc_a(...){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted! i.e. changing state to the state msc_a is already in. Ignore re-entering the same state for most state changes. However, there is one state change in msc_a where re-entering the MSC_A_ST_VALIDATE_L3 is necessary to start the timeout. Hence add msc_a_state_chg_always() and use that for re-entering MSC_A_ST_VALIDATE_L3. Change msc_a_state_chg() to skip no-op state changes. This should silence all no-op state change error messages for msc_a. Related: OS#4169 Change-Id: I0c74c10b5fa7bbdd6ae3674926cc0393edf15a35
2019-09-02msc_a.c, CC trans: change a comment to a debug logNeels Hofmeyr1-1/+1
Change-Id: I5a3cc6219080910119b0c9ff11fc2b9eb96a06e5
2019-08-29fix segfault: don't send CC REL on NULL msc_aNeels Hofmeyr1-0/+9
Apparently, if a conn disappears during an ongoing call, the CC code tried to send a CC REL on a NULL msc_a during cleanup, which lead to a crash (cccamp2019). Guard against that. Crash: #0 msc_a_tx_dtap_to_i (msc_a=0x0, dtap=0x55a4bf2fa0f0) at ../../../../src/osmo-msc/src/libmsc/msc_a.c:1565 #1 0x000055a4be1bb03c in trans_tx_gsm48 (trans=0x55a4bf2d52a0, trans=0x55a4bf2d52a0, trans=0x55a4bf2d52a0, msg=<optimized out>) at ../../../../src/osmo-msc/src/libmsc/gsm_04_08_cc.c:82 #2 gsm48_cc_tx_release (trans=trans@entry=0x55a4bf2d52a0, arg=arg@entry=0x7ffdd731a0e0) at ../../../../src/osmo-msc/src/libmsc/gsm_04_08_cc.c:1101 #3 0x000055a4be1bee65 in _gsm48_cc_trans_free (trans=trans@entry=0x55a4bf2d52a0) at ../../../../src/osmo-msc/src/libmsc/gsm_04_08_cc.c:278 #4 0x000055a4be1ab654 in trans_free (trans=trans@entry=0x55a4bf2d52a0) at ../../../../src/osmo-msc/src/libmsc/transaction.c:170 #5 0x000055a4be1bd091 in mncc_tx_to_gsm_cc (net=<optimized out>, msg=msg@entry=0x55a4bf2d3b68) at ../../../../src/osmo-msc/src/libmsc/gsm_04_08_cc.c:1971 #6 0x000055a4be1bf1e5 in mncc_tx_to_cc (net=<optimized out>, arg=arg@entry=0x55a4bf2d3b68) at ../../../../src/osmo-msc/src/libmsc/gsm_04_08_cc.c:2049 #7 0x000055a4be18ed63 in mncc_sock_read (bfd=0x55a4bf2563b8, bfd=0x55a4bf2563b8) at ../../../../src/osmo-msc/src/libmsc/mncc_sock.c:121 #8 mncc_sock_cb (bfd=0x55a4bf2563b8, flags=1) at ../../../../src/osmo-msc/src/libmsc/mncc_sock.c:189 #9 0x00007fcfad607ce1 in osmo_fd_disp_fds (_eset=0x7ffdd731a9a0, _wset=0x7ffdd731a920, _rset=0x7ffdd731a8a0) at ../../../src/libosmocore/src/select.c:223 #10 osmo_select_main (polling=<optimized out>) at ../../../src/libosmocore/src/select.c:263 #11 0x000055a4be17dd56 in main (argc=3, argv=<optimized out>) at ../../../../src/osmo-msc/src/osmo-msc/msc_main.c:723 Change-Id: Ia1bb0410ad0618c182a5f6da06af342b6d483eff
2019-08-19msc_a: switch RAN type back to SGs when a CSFB-Call is clearedPhilipp Maier1-0/+5
When a CSFB call is over the MS changes back to LTE after the call is cleared. However, at the moment the MSC does not change the cs.attached_via_ran flag. This may cause problems with the next call. Lets make sure that if there is an SGs association present, the ran type is set back to SGs when the call is cleared. Related: SYS#4624 Change-Id: I104adecb0645b81b90ee230c57bf8b463c9e7045
2019-06-16libmsc/msc_a.c: fix: remove dummy allstate_action of msc_a_fsmVadim Yanitskiy1-13/+0
Since [1] has been merged to libosmocore, it was discovered that the 'msc_a' FSM has a dummy 'allstate_action' handler assigned, but 'allstate_event_mask' is 0x00 at the same time. It basically doesn't make any sense, and moreover does cause warnings and build failures. [1] https://git.osmocom.org/libosmocore/commit/?id=b3f94eb39e19366c3458643ee329a73155d46ff8 [1] https://gerrit.osmocom.org/#/c/libosmocore/+/14361/ Change-Id: Ieb81b7a07ced1c40ba70d2adb0df68160ee62118
2019-05-21Request Osmux CID and forward it in Assign Req and Assign ComplPau Espin Pedrol1-2/+28
Related: OS#2551 Depends: osmo-mgw.git I73b4c62baf39050da81d65553cbea07bc51163de Change-Id: I5b14e34481e890669c9ee02dba81eba84293cebb
2019-05-13libmsc/msc_a.c: fix possible NULL-pointer dereferencesVadim Yanitskiy1-7/+25
Change-Id: Id5c95fbf318a2e51e7ffee2e08ceab3042b26cc9 Fixes: CID#198411, CID#198414
2019-05-12silence error messages about HANDOVER_END not permittedNeels Hofmeyr1-0/+12
The MSC_A_EV_HANDOVER_END exists as parent term event for the msc_ho_fsm, but it is not actually required as functional event, since all cleanup is handled in msc_ho_fsm_cleanup(). That's why I never bothered to add the event to msc_a_fsm, but of course that means we get an error message after each (successful and unsuccessful) handover, that the MSC_A_EV_HANDOVER_END is not permitted. Allow the event and ignore it to silence the error message. Explain in a comment. Change-Id: Ie8dc0c0a631b7da43111f329562007766a21b134
2019-05-10call_leg: remove unused event MSC_EV_CALL_LEG_RTP_RELEASEDNeels Hofmeyr1-21/+2
The event is actually never dispatched and useless, because when an RTP stream releases, the call_leg terminates directly anyway (which wasn't apparent when starting to design the call_leg FSM yet). Change-Id: I6b2fc1225c960fa2f7c46adf241520217a07821c