aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2017-03-09move t3212 to network level (periodic lu)Neels Hofmeyr4-8/+12
Set the T3212 default value in struct gsm_network and take that value when creating a BTS. Adjust VTY accordingly. Change-Id: Ifb730f9d0106fe195adc30459a39290a07313b50
2017-03-09libmsc: iucs dev: disable large parts of the codeNeels Hofmeyr5-0/+91
Change-Id: I3ef6ca26150b6102a0fa22a88a60d9a442d640b4
2017-03-09Prepare entry/exit point for MSC -> BSC and MSC -> RNC communication.Neels Hofmeyr6-0/+141
Add msc_ifaces.[hc], a_iface.c, with a general msc_tx_dtap() to redirect to different interfaces depending on the actual subscriber connection. While iu_tx() is going to be functional fairly soon, the a_tx() is going to be just a dummy for some time (see comment). Add Iu specific fields in gsm_subscriber_connection: the UE connection pointer and an indicator for the Integrity Protection status on Iu (to be fully implemented in later commits). Add lac member to gsm_subscriber_connection, to allow decoupling from bts->location_area_code. The conn->lac will actually be set in iu.c in an upcoming commit ("add iucs.[hc]"). Change-Id: Idf8020a30562426e8f939706bf5c2188d5a09798
2017-03-09don't use lchan in libmscNeels Hofmeyr2-12/+12
Change-Id: Ic7ed7faa2bcc7aae799f41ed4abc2c001bfb61b7
2017-03-09gsm_04_08.c: Don't set msg->lchan nor msg->dstHarald Welte1-34/+0
the BSC-side of the API behind gsm0808_submit_dtap() is doing this resolving again anyway. So let's avoid doing it twice, and avoid having more dependency of the MSC down into the lchan details. Conflicts: openbsc/src/libmsc/gsm_04_08.c Change-Id: I14254be68ee1a48e9f1ce968233414d86c6ba9d5
2017-03-09vlr: fix: don't send CM Service Accept after Ciphering CommandNeels Hofmeyr3-11/+12
Ciphering Mode Command is an implicit CM Service Accept, if we're sending both we're confusing the MS. Change-Id: I3a04debe9b01c086e7f44b6139cb8796fcc71d38 Conflicts: openbsc/tests/msc_vlr/msc_vlr_test_umts_authen.c openbsc/tests/msc_vlr/msc_vlr_test_umts_authen.err
2017-03-09fix: vlr: clear last_tuple when receiving auth tuplesNeels Hofmeyr3-6/+21
When receiving more than one auth tuple during AUTS resync, the VLR would go on to send the second tuple instead of the first. The unit test didn't catch that because its fake HLR message contained only one tuple. Adjust the test to send two tuples to catch this error. Fix the code to clear vlr_subscr->last_tuple whenever new auth tuples are received. Change-Id: I1f84e7d2619aa8d9a0dcdfb50745feeb040264b9
2017-03-09gsup_client: allow passing a unit id to identify with HLRNeels Hofmeyr8-15/+29
Before, each GSUP client would contact the HLR with an identical unit id, i.e. "SGSN-00-00-00-00-00-00", with the result that some messages were sucked off by the wrong client. Pass explicit unit name from each gsup client user, so that OsmoMSC is "MSC" and OsmoSGSN is "SGSN". Hence the HLR can properly route the messages. Todo: also set some values instead of the zeros. Change-Id: I3f8d6dd47c7013920e2a4bde006ed77afd974e80
2017-03-09SI3: indicate R99+ MSC to GSM MS to enable UMTS AKANeels Hofmeyr1-0/+3
Change-Id: Iaf11218327f139e8cabfbc5f9916505c66eadbd8
2017-03-09vlr: get SMS working, by SMS recipient MSISDN round-robinNeels Hofmeyr12-59/+463
The SQL based lookup of SMS for attached subscribers no longer works since the SQL database no longer has the subscriber data. Replace with a round-robin on the SMS recipient MSISDNs paired with a VLR subscriber RAM lookup whether the subscriber is currently attached. If there are many SMS for not-attached subscribers in the SMS database, this will become inefficient: a DB hit returns a pending SMS, the RAM lookup will reveal that the subscriber is not attached, after which the DB is hit for the next SMS. It would become more efficient e.g. by having an MSISDN based hash list for the VLR subscribers and by marking non-attached SMS recipients in the SMS database so that they can be excluded with the SQL query already. There is a sanity limit to do at most 100 db hits per attempt to find a pending SMS. So if there are more than 100 stored SMS waiting for their recipients to actually attach to the MSC, it may take more than one SMS queue trigger to deliver SMS for subscribers that are actually attached. This is not very beautiful, but is merely intended to carry us over to a time when we have a proper separate SMSC entity. Change-Id: I1acf9debb6ba9164e6edcfd5bc5e48e8c98f2b01
2017-03-09msc_vlr tests: add tests to reject concurrenct connsNeels Hofmeyr9-112/+2006
Change-Id: I5c04b1cf0ad302c35968e0f8dfb122997f3f7bf1
2017-03-09Add msc_vlr test suite for MSC+VLR end-to-end testsNeels Hofmeyr33-4/+12976
Change-Id: Ic073f3a069a7f5e7e421e0e56140f069ee9b10b8
2017-03-09Use libvlr in libmsc (large refactoring)Neels Hofmeyr61-3543/+1627
Original libvlr code is by Harald Welte <laforge@gnumonks.org>, polished and tweaked by Neels Hofmeyr <nhofmeyr@sysmocom.de>. This is a long series of development collapsed in one patch. The original history may still be available as branch neels/vlr_orig. TODO: This commit may be split in several smaller changes before merging to master. Related: OS#1592 Change-Id: I702ba504ce2de93507312c28eca8d11f09f4ee8b
2017-03-09Add libvlr implementationHarald Welte17-0/+5394
Original libvlr code is by Harald Welte <laforge@gnumonks.org>, polished and tweaked by Neels Hofmeyr <nhofmeyr@sysmocom.de>. This is a long series of development collapsed in one patch. The original history may still be available as branch neels/vlr_orig. Related: OS#1592 Change-Id: I3f75de5f0cc2ff77f276fd39832dd3621309c4b9
2017-03-09Introduce subscriber_connection ref-countingHarald Welte8-20/+64
This introduces a reference count for gsm_subscriber_connection. Every user of the connection needs to hold a reference until done. Once the reference count dorps to zero, the connection is cleared towards the BSC (which subsequently will clear any logical channels associated with it). Related: OS#1592 Change-Id: I8c05e6c81f246ff8b5bf91312f80410b1a85f15e
2017-03-09logging: auth request: use hexdump without spaces for RAND, AUTNNeels Hofmeyr1-2/+2
Change-Id: I656d8619a1adc93e2f627f4e1ba21512a7374279
2017-03-08add struct bsc_subscr, separating libbsc from gsm_subscriberNeels Hofmeyr30-115/+615
In a future commit, gsm_subscriber will be replaced by vlr_subscr, and it will not make sense to use vlr_subscr in libbsc. Thus we need a dedicated BSC subscriber: struct bsc_subscr. Add rf_policy arg to bsc_grace_paging_request() because the bsc_subscr will no longer have a backpointer to gsm_network (used to be via subscr->group). Create a separate logging filter for the new BSC subscriber. The implementation of adjusting the filter context is added in libbsc to not introduce bsc_subscr_get/_put() dependencies to libcommon. During Paging Response, fetch a bsc_subscr from the mobile identity, like we do for the gsm_subscriber. It looks like a duplication now, but will make sense for the VLR as well as for future MSC split patches. Naming: it was requested to not name the new struct bsc_sub, because 'sub' is too ambiguous. At the same time it would be fine to have 'bsc_sub_' as function prefix. Instead of struct bsc_subscriber and bsc_sub_ prefix, I decided to match both up as struct bsc_subscr and bsc_subscr_ function prefix. It's fast to type, relatively short, unambiguous, and the naming is consistent. Add bsc_subscr unit test. Related: OS#1592, OS#1594 Change-Id: Ia61cc00e8bb186b976939a4fc8f7cf9ce6aa3d8e
2017-03-07Add MS time. offset to gsm_lchanMax1-0/+6
Add MS TIMING OFFSET (3GPP TS 48.058 § 8.4.8) and P offset (3GPP TS 45.010 § 1.2) which can be used to compute MS TO from known TA. This will be used by osmo-bts (see I4dfe5c48834a083e757d5de3236a02e15a238b28) to provide MS TO as part of RSL MEASUREMENT RESULT. Change-Id: I8bda57c8d6c15bbb803eca708931556dae118a00 Related: OS#1574
2017-03-05vty tests: close msc socket after nat_msc_testNeels Hofmeyr1-23/+27
Change-Id: Ib64cf8690627803e1b4a8497ea63f1e766960478
2017-03-05sgsn: fix problem with leading-zero-IMSIsPhilipp Maier1-2/+11
When the IMSI ACL is maintained via the VTY, users may enter IMSIs without leading zeros. Especially in test environments, where MCC=001 and MNC=01 is common, it is likely that someone enters the corresponding IMSI (001010000000001) without the two zeros at the beginning. This patch fixes the problem by sanitizing the IMSI, eventually missing zeros in the beginning will be automatically added. Change-Id: I56ba0da61978bbdce71d0e320166c52b20b42517
2017-03-02vty tests: allow picking specific tests to run by nameNeels Hofmeyr1-0/+5
Depends: osmo-python-tests change-id I92f90c334169f31920c63dd5c5ac8dac215065e6 Change-Id: I849455e0423e1a63d6890aef7f9c6075ad53a920
2017-03-02Fix potential segfault in sgsn_libgtp.cMax1-3/+5
* print pdp->address instead of mm->imsi if mm is NULL * print mm->imsi in debug log (move it below NULL check) Change-Id: I4fbf5a54019a46612fbc528d61120182738f9205
2017-03-02subscriber conn: add indicator for originating RANNeels Hofmeyr3-1/+10
Add via_ran to gsm_subscriber_connection to indicate whether a conn is coming in via 2G/GERAN/A-Interface or 3G/UTRAN/Iu-Interface. Prepares for Iu, but also for libvlr to decide between GSM or UMTS Auth. Until actual Iu support is merged to master, this indicator will aid VLR unit testing. At some point we may also add RAN_GERAN_IU; it's not on the agenda yet, but to clearly distinguish the names if we want to add it, explicitly name the ones we have RAN_GERAN_A and RAN_UTRAN_IU. Change-Id: I93b870522f725170e4265a5543f6b680383d7465
2017-03-02fix: gprs_gmm, gprs_llc_vty: two unterminated value_string arraysNeels Hofmeyr2-0/+2
Change-Id: Icc4163ac4f962fe88bbebeb3310a557ba0834e84
2017-03-01meas_json: fix NEIGH: missing array bracesKeith1-1/+2
Make NEIGH an array of Javascript objects, otherwise the JSON is not parseable when neighbours exist Change-Id: I42029f40bf357adbb2f3c71cdcbafbc21090e348
2017-02-28libmsc/update_db_revision_3(): free memleaking db resultAlexander Couzens1-0/+2
Found by ASAN Change-Id: I2680c60e26b9876b428d4b75323f884f9ecd95b3
2017-02-28silent_call: remove unfinished fuzzer interfacePhilipp Maier3-0/+9
Remove the fuzzer interface that was partially implemented in gsm_04_08.c and silent_call.c is causing problems when an SMS is sent during an active silent call. The reason for this is that gsm0408_dispatch() in gsm_04_08.c would decide to rout all uplink traffic to silent_call_rx() in silent_call.c. silent_call_rx() is a stub function that discards the data. This patch removes the fuzzer interface code by placing ifdefs around it, so that it can be re-activated by experimentators. Change-Id: Id500197d58663b3f4b1756136343670388b0a4bc
2017-02-28ctrl_test_runner: speed up more than 10 fold by sleeping lessNeels Hofmeyr1-3/+13
Similar to a recent patch in osmo-python-tests for VTY based tests, but this is for the Ctrl tests. The TestCtrlBase tests gave a constant sleep(2) grace period for the process to startup. This causes tests to take minutes for no reason at all. Add code to TestCtrlBase to try and connect right away, retrying up to three seconds in .1 second intervals. This flies through most tests without any sleep() at all. Change-Id: I06569767153838bd9cd3edac001df5f6c567874c
2017-02-28vty test: nat_msc_test: setsockopt REUSE to avoid TIME_WAIT problemsNeels Hofmeyr1-0/+1
When running the testBSCreload test in close succession, I get a "Connection refused" error because the socket is still in TIME_WAIT state. Passing the SO_REUSEADDR flag allows reusing the addr despite a TIME_WAIT socket. Change-Id: I941851b062999ab4b962430f7b27c19935993e0a
2017-02-27XID: resend xid with pdp-ctx-ack messagesPhilipp Maier1-1/+15
If a pdp context is created a xid request is sent right after the pdp-context-ack message. The sending of the pdp-context-ack and the xid message is triggered from the GGSN via the GTP interface. When the pdp-context-ack message is not received by the MS, it will send the pdp-context-request again. A lost pdp-context-ack is resent by the SGSN directly so that the mechanism described above does not work for pdp-context-ack resents. This commit adds code to trigger the sending of xid messages also for resent pdp-context-ack messages. Change-Id: Ice66790803154310a61a70a54be76cec539c97a7
2017-02-27SGSN VTY: make missing GSUP server address+port fatalNeels Hofmeyr2-12/+10
On 'auth-policy remote', the SGSN requires GSUP server address and port. If it was missing, the SGSN would print a VTY warning and run anyway. Make this error more fatal: print an error (flattened a bit) to stderr and abort the program. Move validation of the GSUP server data presence out of the VTY command itself and into the config reading function. This way the GSUP server config can be given anywhere, including below the auth-policy config (was required above). Don't care about setting the auth-policy to remote with a telnet VTY, because in that case the GSUP client won't be started anyway. Change-Id: I4d8db910c32abd8579d3c9b9f0b2cb3a9a6dfe4c
2017-02-27SGSN: Integrate support for UMTS AKANeels Hofmeyr5-30/+205
The general infrastructure for UMTS AKA is already in place: * GSUP with capability to send us auth_vectors that contain either triplets or quintuples * mm_context that holds such auth_vectors Add: * capability to send UMTS AUTN in GMM AUTH REQ * parse extended UMTS RES * on auth response, validate expected AKA with vector and received res/sres * add Auth Failure message to receive resync AUTS token and * send to HLR * clear out-of-sync auth tuple * enter new state for when we're waiting for HLR to resync and send new tuples so that the next Auth Request will be handled Original first half of this patch by: Harald Welte <laforge@gnumonks.org> Full UMTS AKA procedure including AUTS resync tested to work against OsmoHLR with R99 USIM and Milenage algorithm. The sgsn_test.c needs adjustment because we're checking the vector's auth_types now. Depends: libosmocore change-ids I277fb3d407396dffa5c07a9c5454d87a415d393f If943731a78089f0aac3d55245de80596d01314a4 Related: OS#1956 Change-Id: Ie6a0cefba5e4e7f02cc2eaf6ec006ac07d5c1816
2017-02-25smpp_test_runner.py: fix socket leakNeels Hofmeyr1-0/+2
Each running test would open up another socket without ever closing unused ones. Close the sockets after each test is done. Change-Id: I0a42caab3bb8c9c9d04b033e4de9efe0ca8fd2af
2017-02-25python tests: remove process 'Launch' message, now at osmoutilNeels Hofmeyr3-3/+0
Change-Id: Id8eb70ddfdc1d0d9f90aa5343a4ea522042c34ee
2017-02-25vty_rest_runner.py: remove debug monitoring for TCP socketsNeels Hofmeyr1-22/+0
Change-Id: I7361bb0ce5302d00ccb18dc04eeb75ee1f6844a8
2017-02-25utils: 'meas_json' utility to convert measurement feed into a JSON feed.Alexander Chemeris2-0/+206
Change-Id: I56631969384da245eed8ffc14845c76a5d4de8d4
2017-02-25add struct gprs_subscr, separating gprs from gsm_subscriberNeels Hofmeyr13-151/+269
Prepare for replacing gsm_subscriber with vlr_subscriber. vlr_subscriber will not make sense to be used in gprs, so have a dedicated GPRS subscriber struct. (Could change if the gprs code were to use libvlr; is currently independent). Related: OS#1592 Change-Id: Ia8b391ee009c8545763cba04505be3947835120e
2017-02-24cosmetic: rename struct osmo_msc_data to bsc_msc_dataNeels Hofmeyr14-107/+107
With the OsmoMSC program coming up, the name osmo_msc_data becomes even more confusing than it already is. Clearly indicate it as libbsc's data of a remote MSC by prefixing with bsc_. Also, the Osmocom community has in the meantime agreed to have the osmo_ prefix only in libosmocore, to avoid naming conflicts in case things are moved there. So while renaming anyway, also drop the osmo_ prefix. Change-Id: I0dfbcb7d1a579211180f71319982820d8700afab
2017-02-24cosmetic: rename osmo_msc_data.h to bsc_msc_data.hNeels Hofmeyr19-18/+18
With the OsmoMSC program coming up, the name osmo_msc_data becomes even more confusing than it already is. Clearly indicate it as libbsc's data of a remote MSC by prefixing with bsc_. Also, the Osmocom community has in the meantime agreed to have the osmo_ prefix only in libosmocore, to avoid naming conflicts in case things are moved there. So while renaming anyway, also drop the osmo_ prefix. Change-Id: I13554563ce9289de126ba0d4cf329bafcda35607
2017-02-24cosmetic: clarify BSC's remote MSC data vs. OsmoMSCNeels Hofmeyr1-0/+6
Change-Id: I74dd2b3f935d39b8caa718e2c8a51cc81bddf1b9
2017-02-24cosmetic: gsm_data.h, README: rename CSCN to MSCNeels Hofmeyr2-2/+2
We're discarding the name OsmoCSCN for the benefit of OsmoMSC. But "CSCN" has already crept into the master branch in two places; apply the rename. See OS#1958 Change-Id: Ib4274eb3c172ada1fe7f05746740b456370bc93d
2017-02-24vty: fix subscr ref count leak in 'subscriber name' cmdNeels Hofmeyr1-0/+1
Change-Id: I3d19518c94a7f302bf108f2ad945983cdc8db0b1
2017-02-24vty_test_runner.py: fix socket leakNeels Hofmeyr1-0/+2
Each running test would open up another socket without ever closing unused ones. Close the sockets after each test is done. Change-Id: Ie433c8560de54f9a9d05fa07c44bae3126d19b30
2017-02-23cosmetic: remove unused scall_signal_data.subscrNeels Hofmeyr1-1/+0
Doesn't make sense to switch this to struct vlr_subscr when it isn't used at all. So let's remove it. Change-Id: Ifa5901f8bf1aed3981841d24d4ec8d659f3de7a9
2017-02-23logging fixup: shorter names for LOGGING_FILTER_* and LOGGING_CTX_*Neels Hofmeyr5-26/+26
In libosmocore, my patch was merged to master a bit too soon. To accomodate the request for naming that matches the general "LOG" prefix instead of "LOGGING", a fixup was committed to libosmocore. Adjust for that. Original patch: change-id I5c343630020f4b108099696fd96c2111614c8067 The fixup: change-id I424fe3f12ea620338902b2bb8230544bde3f1a93 Change-Id: Ib2ec5e4884aa90f48051ee2f832af557aa525991
2017-02-22debug.h/c: remove unused cruft / cosmetic tweaksNeels Hofmeyr2-13/+2
Change-Id: I9601d478763569933bcc46bf4eaaff70a9843be9
2017-02-22logging: use central filter and ctx consts from libosmocoreNeels Hofmeyr7-55/+32
The LCHAN and BTS filter contexts are actually never used, so drop them until someone adds them properly. For now use only LOGGING_{FILTER,CTX}_VLR_SUBSCR. Some of these will change to _BSC_SUBSCR once struct bsc_subscriber is introduced, and later on, struct gsm_subscriber will be replaced by vlr_subscriber so that the names will match. Depends: libosmocore change-id I5c343630020f4b108099696fd96c2111614c8067 Change-Id: Ifa82f6a461ad4c0eeddb8a38fb3833460432d16b
2017-02-21Handle DSD from HLRMax2-10/+27
Handle Delete Subscriber Data GSUP message from HLR to disable Packet Services for a given IMSI. Change-Id: I6b9b494fa58bcb95bd550c49f8204f00f8fdf628 Related: OS#1645
2017-02-19subscr_update_expire_lu(): fix (obscure) segfaultNeels Hofmeyr1-0/+10
To be paranoid, catch a NULL subscriber and/or bts in subscr_update_expire_lu(): print an error log and avoid segfault. (I'm not sure this would really happen in a normal situation.) During aggressive testing of Paging timeout, I came across this segfault in msc_release_connection() when conn->expire_timer_stopped is set but conn->subscr is NULL, at the subscr dereference after: if (conn->expire_timer_stopped) subscr_update_expire_lu(conn->subscr, conn->bts); I brought this situation about by a fabricated Paging fault, i.e. in gsm48_rx_rr_pag_resp() return 0 and don't call gsm48_handle_paging_resp() at all. Thus conn->subscr is still NULL when expire_timer_stopped is 1. When looking at CM Service Request handling, the conn->subscr is set before setting expire_timer_stopped = 1, which is a saner thing to do. But without my mad 'return 0', there is in fact no way to have a NULL subscriber there. It looks like all other code paths already do the same, but it's not that obvious (e.g. _gsm48_rx_mm_serv_req_sec_cb()). So rather catch this case of NULL conn->subscr, and while at it catch NULL bts as well. Change-Id: I430dd952b2b928bea7f8360f1e01bb3cccb0a395
2017-02-19Add support for extended SI2q parametersMax1-31/+71
* add vty command to set E-UTRAN_PRIORITY, THRESH_E-UTRAN_low and E-UTRAN_QRXLEVMIN according to 3GPP TS 44.018 Table 10.5.2.33b.1 * remove old command which does not support those parameters Change-Id: I36dcc79f7b7a02036e74720923d0df1a2a2db504 Fixes: RT#8792