aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2017-03-04remove all 3G authentication dev hacks -- it works!Neels Hofmeyr2-44/+2
Change-Id: I1204f388cf1311ec98b3eaf7505d7e18e73f03d0
2017-03-04implement utran security mode with vlrNeels Hofmeyr4-19/+70
Change-Id: I199b4a9f07cb33cebc6e90a924cff84926f15e34
2017-03-04move iucs_ranap.[hc] to include / libmsc to use in msc_vlr testsNeels Hofmeyr6-9/+6
Change-Id: I99ca36857f5e4c9ae113017955611fd92256123c
2017-03-04implement utran security mode with vlrNeels Hofmeyr7-30/+84
Change-Id: Ib1e285b54cd7aaa0895e9c51a47720f446a07183
2017-03-04Always assign TMSI on UTRANNeels Hofmeyr6-28/+139
Change-Id: I016d6530cd1d96bb852f5881f6b192c2464c296d
2017-03-04ensure authentication is required on UTRANNeels Hofmeyr3-5/+16
Change-Id: I9b9ad1379324f1405bd02a05fcd7ef8c53bacbde
2017-03-04vlr on utran: transmit CommonIDNeels Hofmeyr8-4/+45
Change-Id: Ice3c71f048b097f2c2de8bd4f4508a7ca2cb1cf5
2017-03-03decouple from bsc_api and btsNeels Hofmeyr13-60/+61
Change-Id: I3564291a6d20da13a8d75c71b0c425da4948d412
2017-03-03make python tests pass for new OsmoMSCNeels Hofmeyr9-288/+72
Change-Id: I59bf6503a2f822e9b6078c0fd24643df9a2dab3c
2017-03-03python tests: vty and smpp: speed up >10 timesNeels Hofmeyr2-2/+0
osmo-python-tests now includes code that retries connecting the VTY socket and needs no external sleep()ing. This flies through most tests without any sleep() at all. See osmo-python-tests.git change-id Icc337f52a93d5fe31fc4ff235ccaf4e0fe75fa39 Change-Id: I42161d9716fe5bb0ef1c56e4bfb770bb99bbca7a
2017-03-03vty tests: allow picking specific tests to run by nameNeels Hofmeyr1-0/+5
Depends: osmo-python-tests change-id I92f90c334169f31920c63dd5c5ac8dac215065e6 Change-Id: I849455e0423e1a63d6890aef7f9c6075ad53a920
2017-03-03python tests: allow running from separate build dirNeels Hofmeyr3-4/+9
The VTY tests assume that $top_builddir == $top_srcdir. Use the script's location from sys.path[0] to find the correct locations of example configs even when building in another directory. Change-Id: I2731f361e3b72d0980968e6cf83594ea450db7c2
2017-03-03wipNeels Hofmeyr1-13/+8
Change-Id: Ie8814d856bbe4c111007a696a4d26576854c134f
2017-03-03wip: make msc_vlr tests passNeels Hofmeyr22-482/+325
Change-Id: Icd11b20d1c7d7e1b7f619a844e9c24ef5835f6b6
2017-03-03wip pagingNeels Hofmeyr7-20/+28
Change-Id: Ida8438a44a6daa5a4df999aff1e39f9a1c5261fc
2017-03-02wipNeels Hofmeyr23-378/+161
Change-Id: Ife95dfebe4cea20bb61c9216991e964b2d51d07b
2017-03-02wipNeels Hofmeyr6-13/+14
Change-Id: I4101b102145a011cec1eb8b92863f38ff7db57b2
2017-03-02mark fixme: rate countersNeels Hofmeyr1-0/+3
Change-Id: I45651fd4cf3f4da8ad67251bbb3b627888e76d9c
2017-03-02mgcp: log payload type changeNeels Hofmeyr1-0/+2
Change-Id: Iee5fa667dece12174b1933345c1ed640a264ed97
2017-03-02comment: fixme: rab failureNeels Hofmeyr1-0/+1
Change-Id: I6e21f2d7dd560ab15675f3e432c37a13c4ab6792
2017-03-02mgcp parsing, set port from mgcp responseNeels Hofmeyr1-2/+4
Change-Id: I90e2c1aa7575d5fa6e0374f5022cbb25fc3f7699
2017-03-02mgcp parsing, mgcp testNeels Hofmeyr11-137/+510
Change-Id: Ibe2ab17b3fa3a506a2e841ba979ea4175e3a21e8
2017-03-02mgcp: handle responses from the MGCP GWNeels Hofmeyr8-69/+309
Change-Id: I5c0493feaec775461b5a017c36b93cc2ad63c896
2017-03-02IuPS: cosmetic: explicitly check RAN type; move commentNeels Hofmeyr1-1/+3
Change-Id: I8375ba42dd47d7ccd9ce9290767d6f8653a23b94
2017-03-02IuCS and IuPS: add VTY config for RAB Assignment address kindNeels Hofmeyr10-5/+88
To accomodate the ip.access nano3G without having to recompile, make the RAB Assignment's Transport Layer Address IE's format configurable, in both osmo-msc and osmo-sgsn. The long term perspective is to somehow detect which address encoding a given 3G cell prefers, but for the time being just configure it globally and set each ue_conn_ctx to the global setting upon creation. Add VTY command to iu_vty.c, with args passed to iu_vty_init() to insert at an arbitrary VTY node, so that it can be used both for osmo-msc and osmo-sgsn. Add generic iu_vty_config_write() to write out the config. Call iu_vty_init() from msc_vty_init(); msc_vty_init() is in libmsc, hence linking of osmo-msc now needs libiu to come after libmsc, so move that further down. Change-Id: I93728314742b327336f3fb6de98e6457f687e1f9
2017-03-02IuCS, IuPS: move flag to use X.213 NSAP addr into ue_conn_ctxNeels Hofmeyr7-7/+19
The future perspective is to remember the preferred RAB Transport Layer Address encoding for each 3G cell that is connected, so store per UE conn instead of globally hardcoding. Add rab_assign_addr_enc member to ue_conn_ctx. Thus the iu_rab_act_cs() and iu_rab_act_ps() functions no longer need the explicit use_x213_nsap argument. Add include/openbsc/common.h in order to define the enum nsap_addr_enc, in a separate file to be able to easily include it in all of libmsc, libiu and gprs/* without creating include cycles. Set the rab_assign_addr_enc when an MM ctx is created for iu, and whenever the ue_conn_ctx for an Iu MM ctx is updated. This looks a bit clumsy so far, the hope is that there will be a nice way to setup the ue_conn_ctx prior to that. Change-Id: I49bb5736df7bdfdd55d3e7b74ee559595cfd2f7d
2017-03-02sgsn init: pass sgsn_config pointer to sgsn_vty_init(), not sgsn_parse_configNeels Hofmeyr3-7/+10
It makes sense semantically, and prepares for an upcoming commit that uses the internal global config pointer in sgsn_vty_init(), which would not be defined yet without this. Change-Id: Ie4cf1c0a1c9e6330a134ff4b7b2e6d5699c12bd7
2017-03-02iu: sort out confusion around asn_debug and asn1_xer_printNeels Hofmeyr5-22/+34
Before, I confused asn_debug with asn1_xer_print. Have two distinct VTY commands and fix documentation. Put the asn_debug and asn1_xer_print implementations in iu.c. Since they are globally defined, don't pass a pointer to iu_vty_init() but just use it directly. Might be considered less clean, but is also less bloat. Change-Id: Iccbadfe1585ba224f74cdfb5273b5ce29b6d78f0
2017-03-02iu.h: add missing includes and type defsNeels Hofmeyr1-1/+6
So far it was included only in files that also include all needed headers, but make it so that it can be included on its own. Change-Id: I08a756031b995bd01a6e15c678b845fd98de960b
2017-03-02IuCS: rapidly release connectionsNeels Hofmeyr5-8/+31
Do the same as we do in 2G: release the connection as soon as nothing else is pending for a given subscriber. Before, osmo-msc would wait for the UE "to get bored" and send an Iu release. But the CN should stay lean on connections. Also, 25.413[1] in section 7, 6th point states: "While the Iu release is managed from the CN, the RNC has the capability to request the release of all Iu connection resources from the corresponding Iu connection." So far we did not manage Iu release from osmo-msc at all. Use the same mechanism we use in 2G: from msc_release_connection(), just before freeing the gsm_subscriber_conn, invoke a CN initiated Iu Release command to the UE. This works around OS#1816 ("USSD only works when IuCS is released", on nano3G), because the Iu conn is now released right after every signalling, so that typically no two requests will use the same conn. In iu.h/iu.c, add iu_tx_release(), absorbing almost all of the code from ranap_handle_co_iu_rel_req(). Add stub to db_test.c, necessary to build it without linking libiu. [1] 3GPP TS 25.413 v12.4.0 Release 12 / ETSI TS 125 413 V12.4.0 (2015-04) Related: OS#1816 Change-Id: Ic12bd6f3666f6fd42bd6d9fdae1c93abee3b6786
2017-03-02IuCS: don't remove Iu conn until releaseNeels Hofmeyr1-0/+4
Don't remove the gsm_subscriber_connection without an Iu Release. From the 2G paradigm to close a subscriber connection as soon as nothing else is pending, osmo-msc frequently calls msc_release_connection() to see whether a conn has anything pending, or discards it. In 3G however, we so far don't actively release IuCS connections from the MSC side, but wait until the IuCS is released from the UE side. So the conn is often discarded even though the IuCS stays open and valid, which confuses the situation: before the UE releases a bit later, we would try to page the subscriber unsuccessfully, because the UE expects to already be connected. To first fix the discrepancy of Iu vs. subscr release, never discard gsm_subscriber_connections when msc_release_connection() is called. This creates a "lazy" CN that keeps connections open as long as the UE will tolerate. It is really fast in sending many SMS in close succession, but is certainly a bad CN design choice: we should rather stay lean on connections. A subsequent commit will change this, but I decided to keep this commit as a reference, for when we'd like to test situations that should re-use an established connection. Change-Id: I012378cfa432d791146db387554ec1909de05297
2017-03-02mgcp dbg logNeels Hofmeyr2-6/+98
Change-Id: I56fda48edaa92abfc6e3886cdfce733bb0686f73
2017-03-02sgsn_ranap_iu_event: handle some events without valid MM contextNeels Hofmeyr1-5/+13
Change-Id: Ia7e74087d56996104b6d3935b1cf12166ff67f3a
2017-03-02IuCS: store assigned rab_id in gsm_subscriber_connectionNeels Hofmeyr2-2/+4
Change-Id: I7fda4304631fc24bbd1bebe911b8403a942fcf53
2017-03-02bridge calls via mgcpgwNeels Hofmeyr4-2/+35
Change-Id: Ie259e30bc532fe9817c96562022ac33443d5747a
2017-03-02also do call assignment for MT calls, upon Call ConfirmedNeels Hofmeyr1-0/+2
Change-Id: I863fa73948f61aaffd7f4472f3abc3e44228e31f
2017-03-02IuCS: implement msc_call_assignment() for IuCSNeels Hofmeyr4-1/+110
Send IuCS RAB Activation upon MNCC_CALL_PROC_REQ. Implement function msc_call_assignment(): decide between sending A-iface BSSMAP Assignment Request or IuCS RAB Assignment Request. Implement iu_rab_act_cs() to send the IuCS RAB Assignment Request. The IP address and port of the MGCPGW sent in the RAB Assignment are still hardcoded. The A-interface extension is not implemented yet. Declare ranap_new_msg_rab_assign_voice() to avoid including ranap_msg_factory.h, which would require adding ASN1 CFLAGS to Makefile.am. The mgcpgw_client as well as some more osmo-iuh functions are now linked from libmsc, hence add some dummy stubs to libiudummy and db_test.c. Change-Id: Iaae51d1fbbfc28fad1c0b85e161d53d80a420a19
2017-03-02msc: add mgcpgw client (with dummy read cb so far)Neels Hofmeyr4-0/+28
Store the mgcpgw client data in struct gsm_network. Initialize VTY and bind the client. Change-Id: Ifc4efb1ca44fa34c29bf23b35addb54155296d68
2017-03-02libmgcp: add mgcpgw client APINeels Hofmeyr5-0/+475
Add an API to send MGCP messages to an MGCP GW, from the perspective of an MSC instructing the GW to setup RTP streams. Rationale: the mgcp_protocol.h is mostly for the MGCP GW itself, other implementations forward incoming MGCP messages. So a simpler approach for an MGCP GW client is useful. Add general VTY commands that can be used to configure mgcpgw_client. osmo-msc is going to use this to route RTP streams (for 3G at first). Change-Id: I6fe365c4c89207f2172943cc456b508a207b1135
2017-03-02libmgcp: add value strings for mgcp_connection_modeNeels Hofmeyr3-0/+40
Add file mgcp_common.c to implement the value strings for the mgcp_connection_mode. Add in a separate file because of the upcoming mgcpgw_client.c implementation, introducing a file that contains implementations commonly used in MGCP GW as well as its clients. Change-Id: I6fe365c4c89207f2172943cc456b508a207b1135
2017-03-02libmgcp: move mgcp_connection_mode to public headerNeels Hofmeyr2-8/+8
mgcp_connection_mode will be used by the upcoming mgcpgw_client.h API. Change-Id: I7a3f8905723320d968f1a53c1036904107b4fb2d
2017-03-02IuCS: cosmetic prep for msc_call_assignment()Neels Hofmeyr3-3/+15
Rename gsm48_cc_tx_call_proc() to gsm48_cc_tx_call_proc_and_assign() to mark the place where the A-interface will send a BSSAP Assignment Request / where the IuCS-interface will send a RAB Assignment Request. Add function msc_call_assignment() to decide between A-iface and IuCS assignment, to be implemented in subsequent commit. Change-Id: I0695e233d57d13658793b0e63bb7c3ff224909a0
2017-03-02IuCS: send RANAP CommonIDNeels Hofmeyr6-0/+50
Add libiu function to send a CommonID message down a UE connection, iu_tx_common_id(); add also a corresponding stub to libiudummy for linking with tests. Add libmsc function msc_tx_common_id() to call the above. Add this mostly to clearly indicate in msc_ifaces.h that libmsc is calling out of the MSC; also to do conn->via_iface checking. Call msc_tx_common_id() after ciphering is established, in _gsm48_rx_mm_serv_req_sec_cb()'s GSM_SECURITY_SUCCEEDED case. Change-Id: I576ddd5bbabfc989149debd2f8a9743db6d26043
2017-03-02cosmetic: msc_handler, bsc_handler: drop extra whitespaceNeels Hofmeyr1-1/+1
The extra ws made me not find these lines when grepping for 'dtap ='. Change-Id: I45e5c9e7df4704546872aab15adf407298943435
2017-03-02SGSN: Don't indicate GERAN in Iu mode PDP CTX ACT REQ to GGSNHarald Welte1-10/+20
2017-03-02cosmetic: make gsm0408_loc_upd_rej() staticNeels Hofmeyr1-1/+1
2017-03-02LU counters: count completion and failure, not messages sentNeels Hofmeyr3-12/+8
From a human admin viewpoint it doesn't make sense to count the messages sent: When we use TMSIs, we first send a LU Accept with a new TMSI, and then expect the MS to respond with a TMSI Realloc Complete message. When that fails to come through, the LU actually ends in failure, even though a LU Accept was sent. In 3G, if a UE sends an Iu Release during LU (e.g. user enables flight mode), we cancel the LU without sending any reply at all, so nothing would be counted. Instead, count Location Updating results, i.e. completion and failures.
2017-03-02remove handle_abisip_signal()Neels Hofmeyr1-71/+0
Change-Id: I9cf80f9c2c8a53a29e42f000029e680a9922cb41
2017-03-02gsm0408_clear_request(): actually free the released connNeels Hofmeyr1-0/+2
By having conn->in_release == 1, calling msc_release_connection() has no effect and thus never frees the conn. So, after all pending requests have been discarded, also discard and free the unused connection.
2017-03-02add iu.h to gsm_subscriber.cNeels Hofmeyr1-0/+1
Change-Id: I398aaa4a7328a58fb0d563725f3bea26482929ef