aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2020-04-26SMS-over-GSUP: notify sender in case of RPL delivery failureVadim Yanitskiy1-1/+1
Change-Id: I8436601c4314395e28829960dc753778c37b1125
2020-04-26SMS-over-GSUP: notify sender about malformed GSUP messagesVadim Yanitskiy1-4/+3
Change-Id: I27f00e69ff045cbf641ef21adf44fcd55cb8f889
2020-04-26SMS-over-GSUP: notify sender about unhandled GSUP messagesVadim Yanitskiy1-0/+1
Change-Id: I7970349bd9d5c56a64c409e619e8b581682fef0b
2020-04-26SMS-over-GSUP: respond with error if net->sms_over_gsup is falseVadim Yanitskiy1-1/+1
Change-Id: If14f8a394e691f86e0acbffb283c3862fe62ffd2
2020-04-26SMS-over-GSUP: move net->sms_over_gsup check to gsm411_gsup_rx()Vadim Yanitskiy1-16/+8
Change-Id: I89988b7148b164af304ecae1f53b74f322fdc7bd
2020-04-26SMS-over-GSUP: clarify error message about unexpected MO/MT SMSVadim Yanitskiy1-4/+4
Change-Id: I34b25764f9ce9b09ccd28cf23fea01028d0828e0
2020-04-20vlr_auth_fsm: Fix compilation with gcc-10Harald Welte1-1/+1
See also: https://alioth-lists.debian.net/pipermail/debian-mobcom-maintainers/Week-of-Mon-20200413/000650.html Change-Id: If3fdbfa20dec02ba57c582700dff12ebbb7d9439
2020-03-09fix segfault: unsolicited Paging ResponseNeels Hofmeyr1-0/+5
Do not crash when a Paging Response could not be associated with a VLR subscriber. Related: OS#4449 Change-Id: Ie117949dd6da86afaa1a0a6ac57bf2111f6cff43
2020-02-09libmsc/sdp: cosmetic: fix less-than-zero comparison of an unsigned valueVadim Yanitskiy1-1/+1
Change-Id: I57ed17d8457ada69a3c22233f30339d2c0f65bce Fixes: CID#206075
2020-01-29osmo-msc: use stderr to print error messages, not stdoutVadim Yanitskiy1-11/+12
Change-Id: I702dd054d2e881b526f701ca482ec0f64ba8da28
2020-01-27libmsc/gsm_04_08: use DRR in gsm48_rx_rr_pag_resp(), not DMMVadim Yanitskiy1-3/+3
Change-Id: I006c2b4c684dc6b96e98dbb82063a0aa37e33c66
2020-01-27libmsc/gsm_04_08: make use of msc_a in gsm48_rx_rr_app_info()Vadim Yanitskiy1-2/+3
Change-Id: I2a0991c9bbf86b7eb248d74334f9472c56a3c964
2020-01-27VTY: cosmetic: make struct cmd_node for GSMNET_NODE staticVadim Yanitskiy1-1/+1
We don't need to expose it anyway. Change-Id: Icbaed6b3b15aa719a19bb4be8fed347073025a22
2020-01-27vlr_sgs_fsm: add missing break, do not call to_null() twiceVadim Yanitskiy1-0/+1
Change-Id: Ib5d1d7633ca6c32d7d63bb1481f51355c97b90fb
2020-01-27vlr: remove unused parameter 'log_level' of auth_fsm_start()Vadim Yanitskiy4-4/+2
We unconditionally use logging level of the parent FSM anyway. All callers of auth_fsm_start() always pass fi->log_level. Change-Id: If2fdf2564eb56d3d94ec3800bdcb0aabcad4e48d
2020-01-25libmsc: move subscriber expiration timer T3212 to libvlrVadim Yanitskiy3-39/+41
Since the split of OsmoNiTB, OsmoMSC does not deal with the radio access network directly. Therefore the only purpose of T3212 is to control subscriber expiration in the local VLR. The timeout value indicated in System Information Type 3 needs to be configured separately in the BSC/RNC. This means that we don't need to store it in deci-hours anymore. Let's move T3212 to the group of VLR specific timers, so it can be configured and introspected using the generic 'timer' command, and deprecate the old '[no] periodic location update' command. It should be also noted that in the old code subscriber expiration timeout was actually set to twice the T3212 value plus one minute. After this change, we apply the configured value 'as-is', but keep the old behaviour for 'periodic location update' command. Change-Id: I9b12066599a7c834a53a93acf5902d91273bc74f
2020-01-25libvlr: use generic osmo_tdef API for T3250, T3260, and T3270Vadim Yanitskiy2-16/+14
These timers so far were implemented as a list of unsigned integers, which has never been initialized to any reasonable defaults. Since they are used as state timeouts in several FSMs, we might end up staying in some state forever. Let's migrate to generic osmo_tdef API and use default values from table 11.2 of 3GPP TS 24.008. This way the user can introspect and change their values from the VTY / configuration file. Change-Id: Ia8cf98da0aea0e626c5ff088a833d7359c43847f Related: OS#4368
2020-01-25VTY: add osmo_tdef introspection and configuration commandsVadim Yanitskiy2-0/+22
This change introduces several new VTY commands letting the user a possibility to introspect and reconfigure some of the existing timers implemented using libosmocore's osmo_tdef API. At the moment this covers the following timers: - MGW specific timers: - X1 - MGCP response timeout, - X2 - RTP stream establishing timeout, - RAN specific timers (same names for GERAN and UTRAN): - X1 - Authentication and Ciphering timeout, - X2 - RAN connection release sanity timeout, - X3 - Handover procedure timeout. The following commands are introduced: - 'enable' node: - show timer [(mgw|mncc|sccp|geran|utran|sgs)] [TNNNN] - 'config-msc' node: - timer [(mgw|mncc|sccp|geran|utran|sgs)] [TNNNN] [(<0-2147483647>|default)] Both MNCC and SCCP related timer definitions are empty at the moment. Achieved by using osmo_tdef_group API of libosmovty. Change-Id: I6024c104b6101666c8aa1108a043910eb75db9a5 Related: OS#4368
2020-01-25VTY: mark 'subscriber create imsi' command as deprecatedVadim Yanitskiy1-7/+6
Neither it should appear in the interactive VTY nor in documentation. Change-Id: I208faab69a40948af5d081edbeaf75f586dfb2e4
2020-01-19osmo-msc: fix: properly initialize default values for MGW timersVadim Yanitskiy1-1/+3
Otherwise they're all set to 0, if not configured in the VTY. Change-Id: I4a0823c2f0ca50ed7407fb0457c54a485799c585
2020-01-15libmsc: SMS, Avoid premature RP-ACK to MSPablo Neira Ayuso2-2/+12
There was one libmsc commit to openbsc that was thus far missing in osmo-msc. This commit completes the work on delayed response from an ESME. Without this patch, the SMR sends an RP-ACK to the mobile station, and subsequently a DELIVER_SM_REPONSE from the ESME provokes either a second RP-ACK, or an RP-ERROR; both of which result in "unhandled at this state (IDLE)" from the SMR After this patch, we have two things corrected: 1) RP-ERROR respects Deliver-SM error cause. 2) No more "unhandled as this state" error from the SMR Extract from original commit message: -------- libmsc: annotate esme route in the sms object from deliver_to_esme() Annotate this esme route, so we can use it to return -EINPROGRESS to skip sending premature RP-ACK to the mobile station, in case we're handling sms routes through SMPP. -------- Fixes: #OS4351 Change-Id: Ic34d398e0a850856e20380ae35e5c2ae5e3c539b
2020-01-13Trivial: code simplification, return earlyKeith Whyte1-19/+19
This commit also, (for what it is worth) removes a difference to the same file in openbsc, which I found while looking for changes that affected SMPP delivery. This is essentially a "forward-port" of [1] [1] https://gerrit.osmocom.org/#/c/openbsc/+/3899/ Change-Id: I350c19f5bb70b2656171c096334c2ee83f49df7e
2020-01-11Use GSM411_RP_* and not GSM48_CC_*Keith Whyte1-2/+3
d34ed5768cccab57e879bd32f38872d290c9ae89 introduced comparison of GSM411_RP_CAUSE_MO_NUM_UNASSIGNED with GSM48_CC_CAUSE_UNASSIGNED_NR For consistency lets use the GSM411_RP constants in SMS related code. Change-Id: Ie54966560f66d2dcde905feb2eb19ef90406acd1
2020-01-06vlr.c: fix condition to check MSISDN presenceNeels Hofmeyr1-1/+1
msisdn_enc is a buffer, its address is always != 0 Change-Id: Ib2294d2cd339c36df599d7d134f979a572ac308a
2020-01-06vlr_gsup_rx: fix uninitialized rcNeels Hofmeyr1-1/+1
Change-Id: Id7776a473b8356d1d136d78736698f20accc7a36
2020-01-05libmsc/gsm_04_08.c: fix: verify MI before calling vlr_subscr_rx_id_resp()Vadim Yanitskiy1-0/+36
During the last congress, we have noticed that OsmoMSC crashes on receipt of malformed MM Identity Response messages: BSSAP Message Type: Direct Transfer (0x01) Data Link Connection Identifier 00.. .... = Control Channel: not further specified (0x0) ..00 0... = Spare: 0x0 .... .000 = SAPI: RR/MM/CC (0x0) Length: 11 GSM A-I/F DTAP - Identity Response Protocol Discriminator: Mobility Management messages (5) .... 0101 = Protocol discriminator: Mobility Management messages (0x5) 0000 .... = Skip Indicator: No indication of selected PLMN (0) 01.. .... = Sequence number: 1 ..01 1001 = DTAP Mobility Management Message Type: Identity Response (0x19) Mobile Identity - Format Unknown Length: 8 .... 1... = Odd/even indication: Odd number of identity digits .... .111 = Mobile Identity Type: Unknown (7) <-- This makes OsmoMSC crash [Expert Info (Warning/Protocol): Unknown format 7] [Unknown format 7] [Severity level: Warning] [Group: Protocol] The value '111'B is not a valid Mobile Identity type, and shall be considered as reserved according to 3GPP TS 24.008, section 10.5.1.4. Later on it was discovered that '000'B also crashes OsmoMSC in the same way. The crash itself is provoked by OSMO_ASSERT(0) in vlr_subscr_rx_id_resp(). Let's keep that assert in there, and make sure that: - on receipt of MM Identity Response, Mobile Identity type matches the one in MM Identity Request; - on receipt of RR Ciphering Mode Complete, Mobile Identity contains IMEI(SV) if present. Change-Id: Ica4c90b8eb4d90325313c6eb400fa4a6bc5df825 TTCN-3 test case: I62f23355eb91df2edf9dc837c928cb86b530b743 Fixes: OS#4340
2019-12-19libmsc/gsm_04_11_gsup.c: fix SM-RP-OA encoding for MO SMS over GSUPVadim Yanitskiy1-6/+12
We shall not include additional BCD length octet into the value part of SM-RP-OA (Originating Address) IE. Instead, there should be ToA/NPI header (1 octet). Since we do not get ToN/NPI fields from the VLR/HLR, let's assume the following default values: 1... .... = Extension: No extension .001 .... = Type of number: International (1) .... 0001 = Numbering plan: ISDN/telephone (E.164/E.163) (1) Change-Id: I0f32e2af0ed2d2fea6addf45efbdfee120c2425d TTCN-3 test case: Ib467eeca6439bc6cce72293fbb5bb48f6d233db9 Related: OS#4324
2019-12-19libmsc/gsm_04_11_gsup.c: do not init a buffer in gsm411_gsup_mo_fwd_sm_req()Vadim Yanitskiy1-1/+1
Because there is no real need for that. Change-Id: I19d4d0de0d5a46bf1de194b966f18ea8a84ced94
2019-12-12sms log tweakNeels Hofmeyr1-1/+1
Change-Id: I77e7a1501f74b9045f032c5b6c2322025a11fd59
2019-12-12sms db: when storing an SMS, retrieve the IDNeels Hofmeyr1-0/+3
seemed like a good idea, but not sure if we need it at all. Change-Id: I5fa55307a6abb8bbfe56619235d7b79fbbda6caf
2019-12-12gsup: indicate CN-Domain in SendAuthInfo RequestsNeels Hofmeyr1-0/+1
In order for osmo-hlr to be able to 100% guarantee distinct INDs for CS and PS, set CN-Domain = CS in all SendAuthInfo Requests. In Milenage auth, it is highly desirable that osmo-hlr guarantees use of distinct INDs for CS and PS domains. If an MSC and SGSN attached at the same time use the same IND bucket to generate Milenage SQN, that collision would rapidly waste SQNs and load osmo-hlr with requesting new auth tuples on each CS/PS Complete-Layer3. So far, osmo-msc did not indicate the CN domain in the GSUP SendAuthInfo Request, which was neither required nor evaluated. The CN-Domain is only sent for the UpdateLocation Request that usually follows later. Related: OS#4318 Change-Id: I22f44068268e62801cadbf6542efaf153423cd65
2019-12-03msc: exit(2) on unsupported positional arguments on command lineHarald Welte1-0/+5
Change-Id: Iad858974e9d97ae14f3da6dc21267aafafcda0ef
2019-12-02libmsc: fix potential NULL-pointer dereferences detected by GCC's LTOVadim Yanitskiy2-1/+9
Change-Id: Ib7ba8909dce64d1b8ff3a53495fe3eefc446ed8e
2019-12-01Check for osmo_fsm_register() error return valueHarald Welte2-2/+2
Change-Id: I4cce3d6798fe3184a3085d114b749b4645620978
2019-12-01check for osmo_ss7_init() error return valueHarald Welte1-1/+1
Change-Id: I2bc34f3962ca7355f20757e36a86ab2fd1a7aef6
2019-11-28MNCC v6: add optional SDP to the socket protocolNeels Hofmeyr1-8/+30
Add a char buffer of 1024 characters length as space for SDP to pass to / receive from MNCC. Actually support receiving MNCC without such an SDP tail. The main reason for this is to avoid the need to adjust the ttcn3 implementation of MNCC: it would stop working for older osmo-msc. Older or non-SIP MNCC peers could operate the previous MNCC protocol unchanged (save the protocol number bump) without having to implement SDP. The SDP part in the MNCC protocol will be used in upcoming patch I8c3b2de53ffae4ec3a66b9dabf308c290a2c999f. This patch must be merged at the same time as osmo-sip-connector patch Iaca9ed6611fc5ca8ca749bbbefc31f54bea5e925, so that both sides have a matching MNCC protocol version number. Change-Id: Ie16f0804c4d99760cd4a0c544d0889b6313eebb7
2019-11-28add sdp_msg API: SDP parsing/compositionNeels Hofmeyr2-0/+577
Rationale: in order to add full SDP to the MNCC protocol (upcoming patch I8c3b2de53ffae4ec3a66b9dabf308c290a2c999f), we need to parse and compose SDP messages. Obviously, libosmo-mgcp-client already contains similar code, but that is unfortunately heavily glued to the actual MGCP implementation. The simplest solution is to create this separate implementation, copy-pasting from the existing libosmo-mgcp-client code as is convenient. This API is added here to probe whether it works well. When it does, the intention is to "move it up" to osmo-mgw and overhaul the SDP parsing in our MGCP client and MGCP server APIs using this same API. Change-Id: If3ce23cd5bab15e2ab4c52ef3e4c75979dffe931
2019-11-28fix incoming call while PagingNeels Hofmeyr1-10/+2
Do not free the CC transaction when an MT subscriber is already being Paged. Instead, invoke another paging request, which paging.c will correctly add to the list of pending paging response callbacks to run. A ttcn3 test is linked in the related patch (s.b.). Related: OS#4240 Related: Ieeae6322d4e80893ea3408c6b74bf8e32bea8e46 Change-Id: Idd4537b5f4817d17e5c87d9a93775a32aee0e7be
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 Hauke17-35/+35
Fix typos and common misspellings in code comments and log messages. Change-Id: Ie66b89065f2100c1d2125ce5a6c9b1d58df7c8ad
2019-11-05BSSMAP: decode Codec List (BSS Supported)Neels Hofmeyr1-0/+30
Actually decode the Codec List (BSS Supported) in BSSMAP, in both the Complete Layer 3 Information and the Assignment Complete messages. An upcoming patch improves codec negotiation and requires the BSS supported codecs, which are so far ignored (which is/was a pity as osmo-bsc goes at great lengths to compose those IEs). Change-Id: I66c735c79e982388f06b5de783aa584c9d13569e
2019-11-05cc trans: remove unused tch_rtp_createNeels Hofmeyr1-14/+0
Use of this flag was dropped when adding inter-BSC and inter-MSC Handover support, I forgot to remove it. Change-Id: I5ec78e30eb36fbe78a3f7c46bfa44af5a4eb7bf2
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-11-01use osmo_sockaddr_str_is_nonzero()Neels Hofmeyr6-19/+19
Also regard an RTP port as invalid if the IP address is 0.0.0.0. Achieve this by using osmo_sockaddr_str_is_nonzero() instead of osmo_sockaddr_str_is_set(). Depends: I73cbcab90cffcdc9a5f8d5281c57c1f87b2c3550 (libosmocore) Change-Id: I53ddb19a70fda3deb906464e1b89c12d9b4c7cbd
2019-11-01rtp_stream: sanely cancel MGW endpoint FSM notifyNeels Hofmeyr1-0/+1
libosmo-mgcp-client recently introduced osmo_mgcpc_ep_cancel_notify() to cancel notification if a notify target FSM deallocates. Use it for sanity in rtp_stream FSM cleanup, the notify target for endpoint FSMs. Depends: I41687d7f3a808587ab7f7520f46dcc3c29cff92d (osmo-mgw) I14f7a46031327fb2b2047b998eae6ad0bb7324ad (osmo-mgw) Change-Id: I351bb8e8fbc46eb629bcd599f6453e2c84c15015
2019-11-01fsm: use deferred deallocationNeels Hofmeyr1-2/+2
Since osmo-bsc uses the MGCP client FSMs, it is required to enable this new feature to guarantee safe operation. The issue is described in detail in commit logs linked below. Notably, osmo-msc currently chooses to omit error handling during MGCP events (marked "FIXME"). An upcoming patch implements this error handling, and would make osmo-msc vulnerable to crash from unexpected MGCP messages without this. Deferred FSM deallocation is a more general, simpler approach to osmo_fsm_term_safely(), so we can switch that off now. Depends: Ief4dba9ea587c9b4aea69993e965fbb20fb80e78 (libosmocore), I0adc13a1a998e953b6c850efa2761350dd07e03a (libosmocore) Related: I7df2e9202b04e7ca7366bb0a8ec53cf3bb14faf3 (osmo-mgw) Change-Id: I08c03946605aa12e0a5ce8b3c773704ef5327a7a
2019-10-29send MNCC REL only if MNCC has actually startedNeels Hofmeyr1-3/+8
Change-Id: I07b2b6c0ee33f5d3e0a060c10cf36d5c7c9f0d9b
2019-10-29log: ran_msg_a: tweak a message nameNeels Hofmeyr1-1/+1
Change-Id: I691025cb957e9b87c8af2dc8eb741dcba6ca26e2
2019-10-29log: RANAP encode: use RANAP message names instead of BSSAPNeels Hofmeyr1-2/+5
Change-Id: Ib0e0630d775a28958ea86802f70cbeec07087f91