aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2020-12-29Bump version: 1.2.0.2-3868 → 1.2.11.2.1Harald Welte1-0/+10
Patch release including support for XOR-3G Related: OS#4924 Change-Id: I9b0c4851bde641f2f818302ee41dc19cef435f80
2020-12-29support the XOR algorithm for UMTS AKAHarald Welte5-1/+121
Test USIMs as specified by 3GPP use the XOR algorithm not only for 2G but also for 3G. libosmocore includes the XOR-3G support since v1.3.0, but osmo-hlr somehow never made use of it. Change-Id: I3a452af9c18cd90d00ab4766d6bd1679456bc1a2 Closes: OS#4924
2020-12-29test_nodes.vty: remove cruftNeels Hofmeyr1-64/+1
This stuff is not testing osmo-hlr specific nodes, remove. Change-Id: Ia11a209778b78ab02424e2abf3f9004fe97cf570
2020-01-03Bump version: 1.1.0.26-276c-dirty → 1.2.01.2.0Pau Espin Pedrol2-4/+46
Change-Id: I5778895237511c62903784e8bed6920ecf058a50
2019-12-10tests/auc: change back to python3osmith/fix-python3Oliver Smith2-3/+2
Change the interpreter of the python script back to python3, as it was when the script was initially added in Idff9d757ab956179aa41ada2a223fd9f439aafbd. In the meantime, it had been changed to python2 to make it work with build slaves that were missing python3, but this is not necessary anymore. This should be merged shortly after osmo-python-tests was migrated to python3, and the jenkins build slaves were (automatically) updated to have the new osmo-python-tests installed. Related: OS#2819 Depends: osmo-python-tests I3ffc3519bf6c22536a49dad7a966188ddad351a7 Change-Id: Ifbb8f8f5428657a1c2d4d6d1217f8e374be43aba
2019-12-03hlr: exit(2) on unsupported positional arguments on command lineHarald Welte1-0/+5
Change-Id: I0c2738d380a7e79622fb3db2062c17782555e82d
2019-12-03gsup_client.h: fix license header: GPLv2+Oliver Smith1-6/+5
gsup_client.c is GPLv2 too, having AGPLv3 in the header file does not make sense. Change-Id: I3827a7c70d60137ffc654c1ca53c2652bb3df147
2019-12-01AUC: Add support for setting the AMF separation bit to '1' for EUTRANHarald Welte5-16/+26
Despite LTE/EUTRAN using the same authentication procedure (UMTS AKA) as 3G, there's one difference: The "operator defined" 16bit AMF field is reduced to 15 bits, with the first bit now being used as 'separation bit'. That bit should be '0' for 2G/3G (as it is right now) and '1' for authentication vectores generated for authentication over EUTRAN/EPS. Depends: libosmocore I93850710ab55a605bf61b95063a69682a2899bb1 (OSMO_GSUP_RAT_TYPES_IE) Change-Id: Ic766bc40f6126bb479bd0a05b0e96bec3e240008
2019-11-27db v4: add column last_lu_seen_psNeels Hofmeyr6-32/+76
Location Updating procedures from both CS and PS overwrite the same last_lu_seen field of a subscriber. For upcoming D-GSM it will be important to distinguish those, because only CS attaches qualify for MSISDN lookup. Add column last_lu_seen_ps, and upon PS LU, do not overwrite last_lu_seen, so that last_lu_seen now only reflects CS LU. In the VTY, dump both LU dates distinctively. Change-Id: Id7fc50567211a0870ac0524f6dee94d4513781ba
2019-11-25test_nodes.vty: tweak: add some '?' checksNeels Hofmeyr1-3/+47
I added these "by accident" when implementing D-GSM related VTY tests, now submitting them separately. Change-Id: I92a4245cae806270b00330403cc114017ab7af53
2019-11-25remove gsup_testNeels Hofmeyr7-145/+0
The test doesn't do much: it encodes an Insert Subscriber Data request for the sole purpose to ensure the msgb is allocated large enough. A bug like that is easily avoided statically. Also, the lu functions will get refactored soon, it doesn't make sense to me to drag this test along. Change-Id: I42e1c72bf4cce8034f968cd4392773bf2b643c1b
2019-11-25Makefile convenience: add VTY_TEST var to run only one testNeels Hofmeyr1-3/+3
VTY transcript tests run all *.vty test scripts, and it is not so trivial to figure out the test-db creation and cmdline to run only one of them when debugging. Add VTY_TEST var, useful to pick one test on the cmdline: cd tests make vty-test VTY_TEST=test_nodes.vty Not all VTY tests leave files behind that match hlr_vty_test.db-*, so make sure that make does not fail it they can't be deleted (rm -f). Change-Id: I4ad7ddb31b2bfb668b3540cfef658417dd442375
2019-11-25add osmo_gsup_msgb_alloc()Neels Hofmeyr5-14/+17
Throughout osmo-hlr's code, the GSUP msgb allocation is duplicated as: msgb_alloc_headroom(1024+16, 16, "foo"); Instead, use one common function to keep the magic numbers in one place. Change-Id: I40e99b5bc4fd8f750da7643c03b2119ac3bfd95e
2019-11-25db upgrade: remove some code dupNeels Hofmeyr2-33/+17
Instead of a switch() for each version number with identical switch cases except for the function name, use an array of function pointers and loop. Also print a success message after each individual version upgrade, instead of only one in the end (see change in db_upgrade_test.ok). Change-Id: I1736af3d9a3f02e29db836966ac15ce49f94737b
2019-11-25fix upgrade test in presence of ~/.sqlitercNeels Hofmeyr1-6/+6
db_upgrade_test.sh: - If an ~/.sqliterc file exists, it causes output of '-- Loading resources from ~/.sqliterc'. Use -batch option to omit that. - To make sure that column headers are off when required, add -noheaders in some places. Change-Id: I279a39984563594a4a3914b2ce3d803ad9468fe8
2019-11-25gitignore: add tests/db_upgrade/*.dumpOliver Smith1-0/+1
Change-Id: I0dca7a94883bbe69151d919ae204edfff12288ab
2019-11-20move headers to include/osmocom/hlrNeels Hofmeyr42-90/+99
Apply the same headers structure that we keep in most Osmocom source trees: Keep noinst_HEADERS in include/osmocom/hlr and include them using #include <osmocom/hlr/*.h> The only header kept in src/ is db_bootstrap.h, because it is generated during build time. If it was built in include/osmocom/hlr, we would need db.o to depend on db_bootstrap.h in a different subdir, which automake can't do well. Change-Id: Ic912fe27f545b85443c5fb713d8c3c8aac23c9ad
2019-11-12db.c: code dup: add db_run_statements() for arrays of statementsNeels Hofmeyr1-74/+34
The db bootstrap as well as the upgrade code all execute a number of statements, and have massive code dup around each statement execution. Instead have one db_run_statements() that takes an array of strings and runs all. Change-Id: I2721dfc0a9aadcc7f5ac81a1c0fa87452098996f
2019-11-12hlr db schema 3: hlr_number -> msc_numberNeels Hofmeyr4-14/+157
The osmo-hlr DB schema indicates a hlr_number column and references it as 3GPP TS 23.008 chapter 2.4.6. However, chapter 2.4.6 refers to the "MSC number", while the "HLR number" is chapter 2.4.7. Taking a closer look, 2.4.6 says "The MSC number is [...] stored in the HLR", while 2.4.7 says "The HLR number may be stored in the VLR". As quite obvious, the HLR does not store the HLR number. This was a typo from the start. The osmo-hlr code base so far does not use the hlr_number column at all, so we get away with renaming the column without any effects on the code base. However, let's rather make this a new schema version to be safe. Change-Id: I527e8627b24b79f3e9eec32675c7f5a3a6d25440
2019-11-12tests/db_upgrade: disable for old sqlite versionsOliver Smith1-0/+3
Skip the test if the installed sqlite version is older than 3.16.2 (current version of debian 9). This prevents test failures caused by the way we dump tables in the test, which does not work with older versions. This patch is a middle ground between reverting the db upgrade patch, and spending lots of time to replace the table dumping code with something that works with old sqlite versions to fix current build failures in OBS. Usually version checking is done in configure.ac, however I could not find a good way to pass the result to testsuite.at. So I decided to use pkg-config to do the test there. Fixes: 5b65461d686327ead0cb2a6d8493dfa9173d376c ("add db_upgrade test") Related: https://lists.osmocom.org/pipermail/openbsc/2019-November/013063.html Change-Id: I348c133003a95badbd6807d1519aa669115872fb
2019-10-31add db_upgrade testNeels Hofmeyr11-0/+417
We have a database schema upgrade path, but so far nothing that verifies that we don't break it. It almost seems like the user data weren't important to us!? Add a db upgrade test: - Create a db with an .sql dump taken from a db created with an old osmo-hlr, producing DB schema version 0. - Run osmo-hlr --db-upgrade --db-check - Verify that the upgrade exited successfully. - Verify that restarting with the upgraded DB works. If python tests are enabled, also: - create a new database using the new osmo-hlr (just built). - replay a VTY transcript to create subscribers as in the old snapshot. - replay some sql modifications as done in the old snapshot. - Get a list of sorted table names, - a list of their sorted columns with all their properties, - and dump the table contents in a column- and value-sorted way. - Compare the resulting dumps and error if there are any diffs. (This is how I found the difference in the imei column that was fixed in I68a00014a3d603fcba8781470bc5285f78b538d0) Change-Id: I0961bab0e17cfde5b030576c5bc243c2b51d9dc4
2019-10-31hlr.sql: move commentNeels Hofmeyr1-1/+2
Move a comment for ind_bitlen column to a separate line, so that it doesn't show in PRAGMA_TABLE_INFO('subscriber'). An upcoming patch introduces db_upgrade_test, which dumps a sorted db schema. In newer sqlite3 versions, a comment following a 'DEFAULT' keyword actually shows up in the PRAGMA_TABLE_INFO() results (on my machine), but older versions (on the build slaves) drop that comment. The ind_bitlen column is the only one producing this odd side effect, because it is the last column and has no comma between 'DEFAULT' and the comment. The easiest way to get matching results across sqlite3 client versions is to move the comment to above ind_bitlen instead of having it on the same line. (Adding a comma doesn't work.) Change-Id: Id66ad68dd3f22d533fc3a428223ea6ad0282bde0
2019-10-31add --db-check optionNeels Hofmeyr1-6/+23
This allows starting osmo-hlr to merely open the database, do upgrades if necessary, and quit, without opening any ports. So that no ports are opened, move the telnet VTY startup to below the database check. Needed for upcoming patch that introduces a db_upgrade test, in I0961bab0e17cfde5b030576c5bc243c2b51d9dc4. Change-Id: I1a4b3360690acd2cd3cffdadffbb00a28d421316
2019-10-31fix upgrade to version 2: imei column default valueNeels Hofmeyr1-1/+1
A subsequent commit will add a db_upgrade test, which verifies that the db resulting from an upgrade is identical to one created from scratch in the new version. That test currently would show a diff: an upgraded 'imei' column has 'default NULL', where a new db created in version 2 has no default value on the imei column. Fix the upgrade path to add an imei column without 'default NULL', so that adding the upgrade test will result in success. The test is added in I0961bab0e17cfde5b030576c5bc243c2b51d9dc4 Change-Id: I68a00014a3d603fcba8781470bc5285f78b538d0
2019-10-31db upgrade to v2: log version 2, not 1Neels Hofmeyr1-2/+2
Change-Id: I9237b64e5748e693a5f039c5a5554d417eed3633
2019-10-30fix double free in osmo_gsup_client_enc_send()Neels Hofmeyr1-1/+2
Change-Id: Iee675fd498ab0867ac2411d9142358f513276182
2019-10-08tests/test_nodes.vty: check less libosmocore cmdsOliver Smith1-24/+4
Use three dots to avoid checking for exact commands between help and exit, which originate from libosmocore. This avoids test failues when we slightly change the commands, like the change from "write file" to "write file [PATH]" in [1] that is currently causing the vty tests to fail. [1] libosmocore I38edcf902a08b6bd0ebb9aa6fc1a7041421af525 Change-Id: I4a964b86195141e5a50705425206f3602f908999
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