aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2019-08-22Enabling/disabling 4G RAN for given subscriberptrkrysik/lte_on_offPiotr Krysik6-7/+80
The change adds support for enabling and disabling connection through 4G RAN by a subscriber with use of USSD codes. Change-Id: Idf964d9c770a0a1cb5c486eb2a7592d6bf44171c
2019-08-22Revert "mention *#201#, *#301# in USSD get_ran (HACK)"Neels Hofmeyr1-2/+1
This reverts commit 05e888ed7c73206c4587180a6d783bc270a55132. Change-Id: I68ecbddb409ca5ca5cec656b043286924987ec48
2019-08-20mention *#201#, *#301# in USSD get_ran (HACK)Neels Hofmeyr1-1/+2
Change-Id: Idbedbc679868a88dae1c85f82527f3f20067b879
2019-08-20send GMM_CAUSE_ROAMING_NOTALLOWED instead of GMM_CAUSE_IMSI_UNKNOWN HARDCODEDgsmevent admin1-2/+2
2019-08-20add USSD handlers to enable/disable 2G accessNeels Hofmeyr3-1/+63
Change-Id: Ib266bf6ebc7692362a443efbf9b4ae69aee671d6
2019-08-20for ussd_get_ran, show current RATNeels Hofmeyr2-11/+16
Change-Id: I81adb1785c1a46e9153a6914ef2c699e9c90b731
2019-08-20auto upgrade hlr.db in the service fileNeels Hofmeyr1-1/+1
Change-Id: Icd3af5160e6d8f31fed5e84055fbb09322c54c2b
2019-08-20add column 'last_lu_rat', show last RAN typeNeels Hofmeyr8-37/+142
Change-Id: I5d73b1d928b61175d3198326706b7f49ba50e16f
2019-08-20SS/USSD: update configuretion exampleVadim Yanitskiy1-0/+3
Change-Id: I3801968d29bae917bf8669bb4ac03a9c4f3cb96c
2019-08-20SS/USSD: add IUSEs to enable / disable UMTSVadim Yanitskiy2-2/+64
Change-Id: Icf85ec8dd71813a9bbf359b9011456844f398337
2019-08-20SS/USSD: implement an IUSE for getting RAN type(s)Vadim Yanitskiy2-2/+42
Change-Id: I8d95413784b039df50a4cdcac49289060f0414c6
2019-08-20Add DB storage for enabling / disabling arbitrary RAT types.Neels Hofmeyr8-7/+300
So far we have only GERAN-A and UTRAN-Iu, but to be future compatible, implement an arbitrary length list of RAT types: add DB table subscriber_rat. Backwards compatibility: if there is no entry in subscriber_rat, all RAT types shall be allowed. As soon as there is an entry, it can either be false to forbid a RAT or true to still allow a RAT type. Depends: I93850710ab55a605bf61b95063a69682a2899bb1 (libosmocore) Change-Id: I3e399ca8a85421f77a9a15e608413d1507722955
2019-08-19change format of 'last LU seen'Neels Hofmeyr1-10/+8
So far, the time string format comes from ctime_r, and we manually add "UTC" to it. The ctime_r format is wildly chaotic IMHO, mixing weekday, day-of-month and hour and year in very unsorted ways. Adding "UTC" to it is non-standard. Instead use an ISO-8601 standardized time string via strftime(). Change-Id: I6731968f05050399f4dd43b241290186e0c59e1a
2019-08-13tests: Fix db_test err file to expect error code name instead of valuePau Espin Pedrol1-1/+1
Previous commit changed db_test to output code names to fix issues on some platforms (I guess due to different error code values), but somehow this log line was not updated. Fixes: 8b860e54be3dbb6587611a9d61f6d28b4c825697 Change-Id: I598de6f83a86d528174d3d188596314572f5d70d
2019-08-12fix spelling errors detected by lintianThorsten Alteholz1-1/+1
Change-Id: I2a1a21aceabc20fadc5dd28985a94689d2b873a2
2019-08-12Fix test for return codes on mipsel and alpha archsRuben Undheim2-17/+27
Change-Id: Ia64f1d9f39fe2b1fb704f7b6c4d9cce93ab708cd
2019-08-07Bump version: 1.0.0.49-e493-dirty → 1.1.01.1.0Pau Espin Pedrol1-0/+66
Change-Id: If53bdb2e216cb98df4d5a482cbbf24096db536ed
2019-08-07configure.ac: Require libosmocore 1.2.0Pau Espin Pedrol1-4/+4
Current code uses GSM23003_MSISDN_MAX_DIGITS, which is only available in libosmocore 1.2.0 onwards. Let's update configure.ac accordingly. Fixes: 2e403d6c3f0caa4fd40e8cab8acd6586deadfdf8 Change-Id: Iad03a8cf7a36bdc824ec2acc8fb8f9c27a1c0421
2019-08-05Remove undefined param passed to logging_vty_add_cmdsPau Espin Pedrol3-4/+4
Since March 15th 2017, libosmocore API logging_vty_add_cmds() had its parameter removed (c65c5b4ea075ef6cef11fff9442ae0b15c1d6af7). However, definition in C file doesn't contain "(void)", which means number of parameters is undefined and thus compiler doesn't complain. Let's remove parameters from all callers before enforcing "(void)" on it. Related: OS#4138 Change-Id: I6d0dbbd83ce17ee798bfb6e30378ed1dbae19134
2019-07-30src/db.c: integrate SQLite3 with talloc allocatorVadim Yanitskiy6-0/+126
This change introduces an optional feature that allows to make SQLite3 use talloc for all internal allocations. This would facilitate finding memleaks. OsmoHLR needs to be configured with '--enable-sqlite-talloc'. full talloc report on 'OsmoHLR' (total 292168 bytes in 449 blocks) struct osmo_gsup_server contains 162 bytes in 3 blocks (ref 0) ... struct db_context contains 288407 bytes in 420 blocks (ref 0) hlr.db contains 7 bytes in 1 blocks (ref 0) SQLite3 contains 288192 bytes in 418 blocks (ref 0) db.c:95 contains 48 bytes in 1 blocks (ref 0) db.c:95 contains 2 bytes in 1 blocks (ref 0) ... Unfortunately, old SQLite3 versions (such as 3.8.2) run out of memory when trying to initialize a new database: DDB ERROR db.c:88 (7) statement aborts at 3: [] DDB ERROR db.c:420 Unable to set Write-Ahead Logging: out of memory DDB ERROR db.c:88 (7) statement aborts at 3: [] DDB ERROR db.c:238 Unable to prepare SQL statement 'SELECT name FROM sqlite_master WHERE type='table' AND name=?' ... I've noticed a huge difference in heap usage footprint compared to generic malloc. At the same time, the recent versions (at least 3.24.0), work just fine. Change-Id: Icfe67ed0f063b63e6794f9516da3003d01cf20a7
2019-07-30tests/db_test: close the database when test is finishedVadim Yanitskiy1-0/+1
Change-Id: I96fedf9181e89e4d68815b04f494a9c2ecc0e057
2019-07-30build: fix mess with 'db_test_SOURCES' and 'db_test_LDADD'Vadim Yanitskiy2-19/+4
Somehow both 'db_test_SOURCES' and 'db_test_LDADD' ended up in 'src/Makefile.am'. This causes automake / autoconf to complain. Let's get rid of both useless declarations. Furthermore, the actual 'db_test_LDADD' in 'tests/Makefile.am' contained references to the source files from '$(top_srcdir)'. Most likely, the original intention was to depend on the object files in '$(top_builddir)'. Let's also fix this. Change-Id: Ib2e436ed91d9b7551dc5b205329d468c2b0ced04
2019-07-25db_auc.c: verify hex key sizes read from DBOliver Smith3-29/+201
Replace commented out size check for Ki with a real check, and use it consistently for Ki, K, OP and OPC. Add a test that sets all keys to the wrong size and tries to read them. Related: OS#2565 Change-Id: Ib8e8e9394fb65c6e7932ce9f8bebc321b99f7696
2019-07-25gitignore: ignore everything generated in db_testOliver Smith1-0/+3
Change-Id: I3545be056cc7e4f72f6f86e772f9cc70a8e5c03c
2019-07-24hlr_ussd.c: rx_proc_ss_req(): fix NULL pointer dereferenceVadim Yanitskiy1-6/+16
The SS payload is mandatory for GSUP PROC_SS_{REQ,RSP} messages with session state BEGIN or CONTINUE, and optional for the END. Make sure that it's present for both BEGIN and CONTINUE, consider received message as incorrect otherwise. In case of the END, call handle_ussd() / handle_ss() only if SS payload is present. Change-Id: Ia71cabbf396bd1388e764a1749e953ac1782e307 Fixes: CID#188841
2019-07-23hlr_ussd.c: fix: properly pass invokeID in handle_ussd_own_msisdn()Vadim Yanitskiy1-2/+2
Change-Id: I06845c2c9ebee61671477ee1c9d82010f1f37b7b
2019-07-15manuals: improve subscribers create on demandOliver Smith1-5/+44
Write all VTY commands in monospace and add configuration example blocks. Add an example VTY session for enabling CS and PS NAM. Realted: OS#2542 Change-Id: I54f80810db3dac7a4a56ad42c5d2154b6006108c
2019-07-15VTY: add subscriber update network-access-modeOliver Smith3-4/+82
Allow updating the NAM (Network Access Mode) of subscribers with the VTY. This is important for the subscriber create on demand use case where subscribers get created without access to PS and CS NAM by default. Regenerate hlr_vty_reference.xml. Related: OS#2542 Change-Id: I231e03219355ebe6467d62ae2e40bef9d8303e3b
2019-07-10contrib/jenkins.sh: run "make maintainer-clean"Oliver Smith1-0/+1
Related: OS#3047 Change-Id: I63808c5c2724b8f4c3cf40db682f74eec54f1e76
2019-06-17manuals: Update vty documentationDaniel Willmann1-23/+276
Related: OS#1700 Change-Id: Ia650ec9ab97dcb64e4b701328bc7e88d691d427a
2019-06-17manuals: Add script to update vty/counter documentation from dockerDaniel Willmann2-0/+18
Related: OS#1700 Change-Id: Id57c34214396b02fafa55da223764748086290e8
2019-06-11rx_check_imei_req(): fix IMEI bounds checkingOliver Smith1-7/+17
IMEIs (without the checksum) always have 14 digits. Replace the previous check (length <= 14) with a proper one (length == 14) and set the buffer to the right size. While at it, add the return code of gsm48_decode_bc_number2() to the error log message. I have tested with new TTCN3 tests, that the length check is working properly now. Related: OS#2541 Change-Id: I060a8db98fb882e4815d1709a5d85bc0143a73a6
2019-06-04db_hlr: zero-initialize "struct tm"Oliver Smith2-4/+2
The last LU time gets read from the database as string, parsed with strptime to "struct tm", and then gets converted to time_t with mktime. A recent behavior change in glibc's mktime implementation unconvered, that we don't have tm.tm_isdst (daylight saving time) set properly. As "struct tm" was not initialized, and strptime did not write to tm_isdst, it was set to a random value. When it was not 0, db_test failed on UTC systems with a more recent glibc (e.g. Ubuntu 19.04). Fix this by zero-initializing "struct tm" and remove the previous workaround that made db_test pass on UTC systems. Related: OS#4026 Change-Id: Iebbbe42fc5cd43324206d9433ede67b39251389c
2019-06-03db_test: set timezone to work around mktime bugOliver Smith1-1/+3
Apply workaround for db_test failure on ubuntu 19.04 in OBS. When the timezone is set to UTC (default in OBS), and the glibc version is 2.29, the test case is failing sometimes (not always) with the following errors in the test log: DAUC Cannot convert LU timestamp '2019-05-26 03:05:03' to time_t: Value too large for defined Force the timezone to be CET when running the test, so it passes again. I found this workaround in a Fedora bugreport [1], and tested with an ubuntu 19.04 system running in docker, that setting the environment variable like this makes the test pass 25 times in a row. Without it, it fails every two or three times. Then I verified in my OBS namespace, that the test also passes in OBS again. [1] https://bugzilla.redhat.com/show_bug.cgi?id=1653340 Related: OS#4026 Change-Id: Ic8080ba1914bb364169ab0c563b132a4ab9a9aab
2019-05-29debian: create -doc subpackage with pdf manualsOliver Smith4-2/+18
I have verified, that the resulting debian packages build in my own OBS namespace (see the -doc packages): https://download.opensuse.org/repositories/home:/osmith42/Debian_9.0/all/ https://build.opensuse.org/project/show/home:osmith42 Depends: Ib7251cca9116151e473798879375cd5eb48ff3ad (osmo-ci) Related: OS#3899 Change-Id: I4a327bac68769892634236c573c313c7859c6199
2019-05-25src/hlr.c: fix deprecation warning: use gsm48_decode_bcd_number2()Vadim Yanitskiy1-1/+1
Change-Id: I84fc1a0a6a334805b5dc1cef994f70b01a5ffcd4
2019-05-25src/db.h: use GSM23003_MSISDN_MAX_DIGITS for MSISDN buffer sizeVadim Yanitskiy1-1/+1
Change-Id: I253e6a04a77c29f62d3c696515d115f8a829283b Depends on: Idc74f4d94ad44b9fc1b6d43178f5f33d551ebfb1
2019-05-19Document subscribers create on demand featureOliver Smith1-0/+21
Add a new section in the subscribers chapter, with detailed explanation of the use cases and related OsmoHLR and OsmoMSC configuration. Related: OS#2542 Change-Id: I2dd4a56f7b8be8b5d0e6fc32e04459e5e278d0a9
2019-05-19Create subscribers on demandOliver Smith5-0/+186
Add a new vty option and allow to optionally generate a random msisdn, as well as setting the default NAM: subscriber-create-on-demand (no-msisdn|<3-15>) (none|cs|ps|both) Thanks to Vadim for the random MSISDN patch [1], which was squashed into this one. [1] Change-Id: I475c71f9902950fa7498855a616e1ec231fad6ac Depends on: Idc74f4d94ad44b9fc1b6d43178f5f33d551ebfb1 (libosmocore) Change-Id: I0c9fe93f5c24b5e9fefb513c4d049fb7ebd47ecd Related: OS#2542
2019-05-13db_hlr.c: add db_subscr_exists_by_msisdn()Vadim Yanitskiy5-0/+42
Check if a subscriber exists without generating an error log entry if it does not. This is cheaper than db_subscr_get_by_msisdn(), as it does not fetch the subscriber entry. subscriber-create-on-demand will use this function to generate a random unique MSISDN for new subscribers. Related: OS#2542 Change-Id: Ibfbc408c966197682ba2b12d166ade4bfeb7abc2
2019-05-13db_hlr.c: add db_subscr_exists_by_imsi()Oliver Smith5-0/+40
Check if a subscriber exists without generating an error log entry if it does not. This is cheaper than db_subscr_get_by_imsi(), as it does not fetch the subscriber entry. subscriber-create-on-demand will use this function. Related: OS#2542 Change-Id: I63818c0dd4fd22b41dadeeba2a07a651b5454c54
2019-05-13db_hlr.c: db_subscr_create(): add flags argumentOliver Smith7-37/+99
Allow creating new subscribers without giving them access to CS or PS. This will be used by the create-subscriber-on-demand feature. Related: OS#2542 Change-Id: I1a6dd85387723dab5487c53b33d2d9ec6d05d006
2019-05-08use new OSMO_IMSI_BUF_SIZENeels Hofmeyr1-1/+1
Depends: Id11ada4c96b79f7f0ad58185ab7dbf24622fb770 (libosmocore) Change-Id: I8e8fa221e97303df3c6cce96b25d31a53f67b939
2019-05-08osmo-hlr: allow configuring db path from cfg fileNeels Hofmeyr4-3/+25
So far, the cmdline argument was the only way to set a database config file. Add a similar config to VTY as 'hlr' / 'database'. The cmdline arg is stronger than the 'database' cfg item. DB is not reloaded from VTY command. Change-Id: I87b8673324e1e6225afb758fb4963ff3279ea3d8
2019-05-07hlr.c: fix possible msgb memleaks in read_cb()Vadim Yanitskiy1-4/+8
Change-Id: I1226eeb24d7657e2782760fab1b49d5581ab53e2
2019-05-07hlr.c: check the presence of msgb->l2h in read_cb()Vadim Yanitskiy1-6/+6
Checking the presence of msgb->l2h in read_cb_forward() doesn't make sense, since in read_cb() we pass it to osmo_gsup_decode(). Let's rather do this before calling osmo_gsup_decode(). Fix for Change-Id: Ia4f345abc877baaf0a8f73b8988e6514d9589bf5 Change-Id: I69a3d31aacbbb1abef3d83e42e46c899fe2f914b
2019-05-07hlr.c: fix: properly print the original message type in read_cb_forward()Vadim Yanitskiy1-1/+2
Printing 'OSMO_GSUP_MSGT_E_ROUTING_ERROR' in routing error messages instead of the original message type may be confusing. Let's store the original message type, and change just before sending. Fix for Change-Id: Ia4f345abc877baaf0a8f73b8988e6514d9589bf5 Change-Id: Ic1db1e089fc0f8e03653a9f05058e95d2adaee39
2019-05-07hlr.c: fix: also store the session state in read_cb_forward()Vadim Yanitskiy1-0/+1
If the session state is not set (OSMO_GSUP_SESSION_STATE_NONE), osmo_gsup_encode() would omit the OSMO_GSUP_SESSION_ID_IE. Fix for Change-Id: Ia4f345abc877baaf0a8f73b8988e6514d9589bf5 Change-Id: Idcd209a59d1ee5230104f3101740140d366b0646
2019-04-18hlr.c: forward GSUP messages between clientsOliver Smith1-0/+79
Allow clients to forward any GSUP message between clients. Determine the sender and receiver from the new {source,dest}_name{,_len} IEs. Reject messages with a forged source name. This will be used for the inter-MSC handover. Depends: Ic00b0601eacff6d72927cea51767801142ee75db (libosmocore.git) Related: OS#3793 Change-Id: Ia4f345abc877baaf0a8f73b8988e6514d9589bf5
2019-04-18add missing error log: invalid IMSINeels Hofmeyr1-1/+3
Change-Id: I65e9ecac06dc6d1abb9802d621c385d3b4fab83a