diff options
Diffstat (limited to 'tests/db/db_test.err')
-rw-r--r-- | tests/db/db_test.err | 363 |
1 files changed, 251 insertions, 112 deletions
diff --git a/tests/db/db_test.err b/tests/db/db_test.err index 4dc77e8..dee85e0 100644 --- a/tests/db/db_test.err +++ b/tests/db/db_test.err @@ -27,7 +27,7 @@ struct hlr_subscriber { .imsi = '123456789000002', } -db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO +db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EEXIST DAUC IMSI='123456789000000': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 @@ -36,10 +36,10 @@ struct hlr_subscriber { .imsi = '123456789000000', } -db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO +db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EEXIST DAUC IMSI='123456789000001': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi -db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO +db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EEXIST DAUC IMSI='123456789000001': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0 @@ -48,10 +48,10 @@ struct hlr_subscriber { .imsi = '123456789000001', } -db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO +db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EEXIST DAUC IMSI='123456789000002': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi -db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO +db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EEXIST DAUC IMSI='123456789000002': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0 @@ -64,25 +64,21 @@ db_subscr_create(dbc, "123456789 000003", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG DAUC Cannot create subscriber: invalid IMSI: '123456789 000003' db_subscr_get_by_imsi(dbc, "123456789000003", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='123456789000003': No such subscriber db_subscr_create(dbc, "123456789000002123456", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EINVAL DAUC Cannot create subscriber: invalid IMSI: '123456789000002123456' db_subscr_get_by_imsi(dbc, "123456789000002123456", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='123456789000002123456': No such subscriber db_subscr_create(dbc, "foobar123", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EINVAL DAUC Cannot create subscriber: invalid IMSI: 'foobar123' db_subscr_get_by_imsi(dbc, "foobar123", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='foobar123': No such subscriber db_subscr_create(dbc, "123", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EINVAL DAUC Cannot create subscriber: invalid IMSI: '123' db_subscr_get_by_imsi(dbc, "123", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='123': No such subscriber db_subscr_create(dbc, short_imsi, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0 @@ -142,7 +138,6 @@ struct hlr_subscriber { } db_subscr_get_by_msisdn(dbc, "54321012345678912345678", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: MSISDN='54321012345678912345678': No such subscriber db_subscr_update_msisdn_by_imsi(dbc, imsi0, "543 21") --> -EINVAL DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '543 21' @@ -155,7 +150,6 @@ struct hlr_subscriber { } db_subscr_get_by_msisdn(dbc, "543 21", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: MSISDN='543 21': No such subscriber db_subscr_update_msisdn_by_imsi(dbc, imsi0, "foobar123") --> -EINVAL DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: 'foobar123' @@ -168,7 +162,6 @@ struct hlr_subscriber { } db_subscr_get_by_msisdn(dbc, "foobar123", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: MSISDN='foobar123': No such subscriber db_subscr_update_msisdn_by_imsi(dbc, imsi0, "5") --> 0 @@ -187,7 +180,6 @@ struct hlr_subscriber { } db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: MSISDN='54321': No such subscriber db_subscr_update_msisdn_by_imsi(dbc, imsi0, "543210123456789") --> 0 @@ -216,7 +208,6 @@ struct hlr_subscriber { } db_subscr_get_by_msisdn(dbc, "5432101234567891", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: MSISDN='5432101234567891': No such subscriber --- Check if subscriber exists (by MSISDN) @@ -232,13 +223,11 @@ db_subscr_update_msisdn_by_imsi(dbc, unknown_imsi, "99") --> -ENOENT DAUC Cannot update MSISDN: no such subscriber: IMSI='999999999' db_subscr_get_by_msisdn(dbc, "99", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: MSISDN='99': No such subscriber db_subscr_update_msisdn_by_imsi(dbc, "foobar", "99") --> -ENOENT DAUC Cannot update MSISDN: no such subscriber: IMSI='foobar' db_subscr_get_by_msisdn(dbc, "99", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: MSISDN='99': No such subscriber --- Set valid / invalid IMEI @@ -265,7 +254,6 @@ struct hlr_subscriber { } db_subscr_get_by_imei(dbc, "123456789012345", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMEI=123456789012345: No such subscriber --- Set the same IMEI again @@ -286,7 +274,6 @@ struct hlr_subscriber { db_subscr_update_imei_by_imsi(dbc, imsi0, NULL) --> 0 db_subscr_get_by_imei(dbc, "12345678901234", &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMEI=12345678901234: No such subscriber --- Set / unset nam_cs and nam_ps @@ -424,7 +411,6 @@ db_subscr_nam(dbc, unknown_imsi, false, false) --> -ENOENT DAUC Cannot disable CS: no such subscriber: IMSI='999999999' db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber db_subscr_nam(dbc, "foobar", false, true) --> -ENOENT DAUC Cannot disable PS: no such subscriber: IMSI='foobar' @@ -435,7 +421,7 @@ DAUC Cannot disable CS: no such subscriber: IMSI='foobar' --- Record LU for PS and CS (SGSN and VLR names) -db_subscr_lu(dbc, id0, "5952", true) --> 0 +db_subscr_lu_str(dbc, id0, "5952", true) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -445,7 +431,7 @@ struct hlr_subscriber { .sgsn_number = '5952', } -db_subscr_lu(dbc, id0, "712", false) --> 0 +db_subscr_lu_str(dbc, id0, "712", false) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -459,7 +445,7 @@ struct hlr_subscriber { --- Record LU for PS and CS (SGSN and VLR names) *again* -db_subscr_lu(dbc, id0, "111", true) --> 0 +db_subscr_lu_str(dbc, id0, "111", true) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -470,7 +456,7 @@ struct hlr_subscriber { .sgsn_number = '111', } -db_subscr_lu(dbc, id0, "111", true) --> 0 +db_subscr_lu_str(dbc, id0, "111", true) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -481,7 +467,7 @@ struct hlr_subscriber { .sgsn_number = '111', } -db_subscr_lu(dbc, id0, "222", false) --> 0 +db_subscr_lu_str(dbc, id0, "222", false) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -492,7 +478,7 @@ struct hlr_subscriber { .sgsn_number = '111', } -db_subscr_lu(dbc, id0, "222", false) --> 0 +db_subscr_lu_str(dbc, id0, "222", false) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -506,7 +492,7 @@ struct hlr_subscriber { --- Unset LU info for PS and CS (SGSN and VLR names) -db_subscr_lu(dbc, id0, "", true) --> 0 +db_subscr_lu_str(dbc, id0, "", true) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -516,7 +502,7 @@ struct hlr_subscriber { .vlr_number = '222', } -db_subscr_lu(dbc, id0, "", false) --> 0 +db_subscr_lu_str(dbc, id0, "", false) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -525,9 +511,9 @@ struct hlr_subscriber { .msisdn = '543210123456789', } -db_subscr_lu(dbc, id0, "111", true) --> 0 +db_subscr_lu_str(dbc, id0, "111", true) --> 0 -db_subscr_lu(dbc, id0, "222", false) --> 0 +db_subscr_lu_str(dbc, id0, "222", false) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -538,7 +524,7 @@ struct hlr_subscriber { .sgsn_number = '111', } -db_subscr_lu(dbc, id0, NULL, true) --> 0 +db_subscr_lu_str(dbc, id0, NULL, true) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -548,7 +534,7 @@ struct hlr_subscriber { .vlr_number = '222', } -db_subscr_lu(dbc, id0, NULL, false) --> 0 +db_subscr_lu_str(dbc, id0, NULL, false) --> 0 db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 struct hlr_subscriber { @@ -560,14 +546,13 @@ struct hlr_subscriber { --- Record LU for non-existent ID -db_subscr_lu(dbc, 99999, "5952", true) --> -ENOENT +db_subscr_lu_str(dbc, 99999, "5952", true) --> -ENOENT DAUC Cannot update SGSN number for subscriber ID=99999: no such subscriber -db_subscr_lu(dbc, 99999, "712", false) --> -ENOENT +db_subscr_lu_str(dbc, 99999, "712", false) --> -ENOENT DAUC Cannot update VLR number for subscriber ID=99999: no such subscriber db_subscr_get_by_id(dbc, 99999, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: ID=99999: No such subscriber --- Purge and un-purge PS and CS @@ -698,13 +683,11 @@ db_subscr_purge(dbc, unknown_imsi, true, true) --> -ENOENT DAUC Cannot purge PS: no such subscriber: IMSI='999999999' db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber db_subscr_purge(dbc, unknown_imsi, true, false) --> -ENOENT DAUC Cannot purge CS: no such subscriber: IMSI='999999999' db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber --- Delete non-existent / invalid IDs @@ -728,7 +711,6 @@ struct hlr_subscriber { db_subscr_delete_by_id(dbc, id0) --> 0 db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber db_subscr_delete_by_id(dbc, id0) --> -ENOENT DAUC Cannot delete: no such subscriber: ID=1 @@ -742,7 +724,6 @@ struct hlr_subscriber { db_subscr_delete_by_id(dbc, id1) --> 0 db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='123456789000001': No such subscriber db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0 struct hlr_subscriber { @@ -753,7 +734,6 @@ struct hlr_subscriber { db_subscr_delete_by_id(dbc, id2) --> 0 db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='123456789000002': No such subscriber db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> 0 struct hlr_subscriber { @@ -764,7 +744,6 @@ struct hlr_subscriber { db_subscr_delete_by_id(dbc, id_short) --> 0 db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='123456': No such subscriber --- Create and delete subscribers with non-default nam_cs and nam_ps @@ -814,7 +793,7 @@ db_get_auth_data(dbc, unknown_imsi, &g_aud2g, &g_aud3g, &g_id) --> -2 DAUC IMSI='999999999': No such subscriber -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> -2 DAUC IMSI='123456789000000': No such subscriber @@ -828,12 +807,12 @@ struct hlr_subscriber { .imsi = '123456789000000', } -db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126 +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data @@ -845,14 +824,14 @@ db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "01234567 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 3G Auth Data -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v1, .u.gsm.ki = '0123456789abcdef0123456789abcdef', } 3G: none -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> 3 DAUC IMSI='123456789000000': No 3G Auth Data DAUC IMSI='123456789000000': Calling to generate 3 vectors DAUC IMSI='123456789000000': Generated 3 vectors @@ -862,7 +841,7 @@ db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "01234567 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 3G Auth Data -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v1, .u.gsm.ki = '0123456789abcdef0123456789abcdef', @@ -874,7 +853,7 @@ db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v2, "BeadedBe db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 3G Auth Data -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v2, .u.gsm.ki = 'beadedbeeaced1ebbeddefacedfacade', @@ -886,21 +865,21 @@ db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v3, "DeafBedd db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 3G Auth Data -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'deafbeddedbabeacceededfadeddecaf', } 3G: none -db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "CededEffacedAceFacedBadFadedBeef")) --> 0 +db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR_2G, "CededEffacedAceFacedBadFadedBeef")) --> 0 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 3G Auth Data -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, - .algo = XOR, + .algo = XOR-2G, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } 3G: none @@ -910,37 +889,37 @@ DAUC IMSI='123456789000000': No 3G Auth Data db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> 0 -db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126 +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> -ENOENT -db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "CededEffacedAceFacedBadFadedBeef")) --> 0 +db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR_2G, "CededEffacedAceFacedBadFadedBeef")) --> 0 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 3G Auth Data -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, - .algo = XOR, + .algo = XOR-2G, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } 3G: none db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, "f000000000000f00000000000f000000")) --> 0 -db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126 +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data @@ -953,7 +932,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -963,7 +942,7 @@ DAUC IMSI='123456789000000': No 2G Auth Data .u.umts.ind_bitlen = 5, } -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> 3 DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': Calling to generate 3 vectors DAUC IMSI='123456789000000': Generated 3 vectors @@ -975,7 +954,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -991,7 +970,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'deaf0ff1ced0d0dabbedd1ced1cef00d', @@ -1006,7 +985,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1022,7 +1001,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'cededeffacedacefacedbadfadedbeef', @@ -1037,12 +1016,12 @@ DAUC IMSI='123456789000000': No 2G Auth Data db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, NULL, false, NULL, 0)) --> 0 -db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126 +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data @@ -1054,7 +1033,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'cededeffacedacefacedbadfadedbeef', @@ -1064,7 +1043,7 @@ DAUC IMSI='123456789000000': No 2G Auth Data .u.umts.ind_bitlen = 5, } -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> 3 DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': Calling to generate 3 vectors DAUC IMSI='123456789000000': Generated 3 vectors @@ -1072,12 +1051,12 @@ DAUC IMSI='123456789000000': Updating SQN=0 in DB db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, "asdfasdfasd", false, "asdfasdfasdf", 99999)) --> 0 -db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126 +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data @@ -1090,12 +1069,12 @@ db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCaf db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1105,7 +1084,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 .u.umts.ind_bitlen = 5, } -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> 3 DAUC IMSI='123456789000000': Calling to generate 3 vectors DAUC IMSI='123456789000000': Generated 3 vectors DAUC IMSI='123456789000000': Updating SQN=0 in DB @@ -1118,12 +1097,12 @@ DAUC Cannot update auth tokens: Unknown auth algo: 99999 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1133,17 +1112,17 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 .u.umts.ind_bitlen = 5, } -db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "f000000000000f00000000000f000000f00000000")) --> -EINVAL +db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR_2G, "f000000000000f00000000000f000000f00000000")) --> -EINVAL DAUC Cannot update auth tokens: Invalid KI: 'f000000000000f00000000000f000000f00000000' db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1153,17 +1132,17 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 .u.umts.ind_bitlen = 5, } -db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "f00")) --> -EINVAL +db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR_2G, "f00")) --> -EINVAL DAUC Cannot update auth tokens: Invalid KI: 'f00' db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1178,12 +1157,12 @@ DAUC Cannot update auth tokens: auth algo not suited for 2G: MILENAGE db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1198,12 +1177,12 @@ DAUC Cannot update auth tokens: Invalid OP/OPC: '0f000000000000f00000000000f0000 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1218,12 +1197,12 @@ DAUC Cannot update auth tokens: Invalid K: '000000000000f00000000000f000000' db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1238,12 +1217,12 @@ DAUC Cannot update auth tokens: Invalid ind_bitlen: 29 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1258,12 +1237,12 @@ DAUC Cannot update auth tokens: Invalid OP/OPC: 'X000000000000f00000000000f00000 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1278,12 +1257,12 @@ DAUC Cannot update auth tokens: Invalid K: 'f000000000000 f00000000000 f000000' db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 -2G: struct osmo_sub_auth_data { +2G: struct osmo_sub_auth_data2 { .type = GSM, .algo = COMP128v3, .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef', } -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1305,7 +1284,6 @@ struct hlr_subscriber { db_subscr_delete_by_id(dbc, id) --> 0 db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber --- Re-add subscriber and verify auth data didn't come back @@ -1318,26 +1296,110 @@ struct hlr_subscriber { .imsi = '123456789000000', } -db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126 +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data db_subscr_delete_by_id(dbc, id) --> 0 db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber -db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2 +db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL, false) --> -2 DAUC IMSI='123456789000000': No such subscriber ===== test_subscr_aud: SUCCESS +===== test_subscr_aud_invalid_len + +--- Create subscriber + +db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', +} + + +--- Set auth data, 2G only, with invalid Ki length + +db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "0123456789abcdef0123456789abcdef")) --> 0 + +raw SQL: UPDATE auc_2g SET ki = '0123456789abcdef0123456789abcde' +sqlite3_prepare_v2(dbc->db, sql, -1, &stmt, NULL) --> SQLITE_OK + +sqlite3_step(stmt) --> SQLITE_DONE + +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY +DAUC IMSI='123456789000000': Error reading Ki, expected min length 16 but has length 15 +DAUC IMSI='123456789000000': No 3G Auth Data + + + +--- Remove 2G auth data + +db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> 0 + + +--- Set auth data, 3G only, with invalid K length + +db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0 + +raw SQL: UPDATE auc_3g SET k = 'C01ffedC1cadaeAc1d1f1edAcac1aB0' +sqlite3_prepare_v2(dbc->db, sql, -1, &stmt, NULL) --> SQLITE_OK + +sqlite3_step(stmt) --> SQLITE_DONE + +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -5 +DAUC IMSI='123456789000000': No 2G Auth Data +DAUC IMSI='123456789000000': Error reading K, expected min length 16 but has length 15 + + + +--- Set auth data, 3G only, with invalid OP length + +db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0 + +raw SQL: UPDATE auc_3g SET op = 'BeefedCafeFaceAcedAddedDecadeFe' +sqlite3_prepare_v2(dbc->db, sql, -1, &stmt, NULL) --> SQLITE_OK + +sqlite3_step(stmt) --> SQLITE_DONE + +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -5 +DAUC IMSI='123456789000000': No 2G Auth Data +DAUC IMSI='123456789000000': Error reading OP, expected min length 16 but has length 15 + + + +--- Set auth data, 3G only, with invalid OPC length + +db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", false, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0 + +raw SQL: UPDATE auc_3g SET opc = 'BeefedCafeFaceAcedAddedDecadeFe' +sqlite3_prepare_v2(dbc->db, sql, -1, &stmt, NULL) --> SQLITE_OK + +sqlite3_step(stmt) --> SQLITE_DONE + +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -5 +DAUC IMSI='123456789000000': No 2G Auth Data +DAUC IMSI='123456789000000': Error reading OPC, expected min length 16 but has length 15 + + + +--- Delete subscriber + +db_subscr_delete_by_id(dbc, id) --> 0 + +===== test_subscr_aud_invalid_len: SUCCESS + + ===== test_subscr_sqn --- Set SQN for unknown subscriber @@ -1346,13 +1408,11 @@ db_update_sqn(dbc, 99, 999) --> -ENOENT DAUC Cannot update SQN for subscriber ID=99: no auc_3g entry for such subscriber db_subscr_get_by_id(dbc, 99, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: ID=99: No such subscriber db_update_sqn(dbc, 9999, 99) --> -ENOENT DAUC Cannot update SQN for subscriber ID=9999: no auc_3g entry for such subscriber db_subscr_get_by_id(dbc, 9999, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: ID=9999: No such subscriber --- Create subscriber @@ -1365,7 +1425,7 @@ struct hlr_subscriber { .imsi = '123456789000000', } -db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126 +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data @@ -1376,7 +1436,7 @@ DAUC IMSI='123456789000000': No 3G Auth Data db_update_sqn(dbc, id, 123) --> -ENOENT DAUC Cannot update SQN for subscriber ID=1: no auc_3g entry for such subscriber -db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126 +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data @@ -1384,7 +1444,7 @@ DAUC IMSI='123456789000000': No 3G Auth Data db_update_sqn(dbc, id, 543) --> -ENOENT DAUC Cannot update SQN for subscriber ID=1: no auc_3g entry for such subscriber -db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126 +db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY DAUC IMSI='123456789000000': No 2G Auth Data DAUC IMSI='123456789000000': No 3G Auth Data @@ -1398,7 +1458,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1417,7 +1477,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1435,7 +1495,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1453,7 +1513,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1474,7 +1534,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1490,7 +1550,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1508,7 +1568,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1526,7 +1586,7 @@ db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0 DAUC IMSI='123456789000000': No 2G Auth Data 2G: none -3G: struct osmo_sub_auth_data { +3G: struct osmo_sub_auth_data2 { .type = UMTS, .algo = MILENAGE, .u.umts.opc = 'beefedcafefaceacedaddeddecadefee', @@ -1550,7 +1610,86 @@ struct hlr_subscriber { db_subscr_delete_by_id(dbc, id) --> 0 db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT -DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber ===== test_subscr_sqn: SUCCESS + +===== test_ind +db_ind(dbc, &vlr, &ind) --> 0 + +"msc-23\0" ind = 1 + +db_ind(dbc, &vlr, &ind) --> 0 + +"sgsn-11\0" ind = 2 + +db_ind(dbc, &vlr, &ind) --> 0 + +"msc-42\0" ind = 3 + +db_ind(dbc, &vlr, &ind) --> 0 + +"sgsn-22\0" ind = 4 + +db_ind(dbc, &vlr, &ind) --> 0 + +"msc-0x17\0" ind = 5 + +db_ind(dbc, &vlr, &ind) --> 0 + +"sgsn-0xaa\0" ind = 6 + +db_ind(dbc, &vlr, &ind) --> 0 + +"msc-42\0" ind = 3 + +db_ind(dbc, &vlr, &ind) --> 0 + +"sgsn-22\0" ind = 4 + +db_ind(dbc, &vlr, &ind) --> 0 + +"msc-0x17\0" ind = 5 + +db_ind(dbc, &vlr, &ind) --> 0 + +"sgsn-0xaa\0" ind = 6 + +db_ind(dbc, &vlr, &ind) --> 0 + +"sgsn-0xbb\0" ind = 7 + +db_ind(dbc, &vlr, &ind) --> 0 + +"msc-0x2a\0" ind = 8 + +db_ind(dbc, &vlr, &ind) --> 0 + +"msc-42\0" ind = 3 + +db_ind(dbc, &vlr, &ind) --> 0 + +"sgsn-22\0" ind = 4 + +db_ind(dbc, &vlr, &ind) --> 0 + +"msc-23\0" ind = 1 + +db_ind(dbc, &vlr, &ind) --> 0 + +"sgsn-11\0" ind = 2 + +db_ind_del(dbc, &vlr) --> 0 + +"msc-0x17\0" ind deleted + +db_ind(dbc, &vlr, &ind) --> 0 + +"msc-0x2a\0" ind = 8 + +db_ind(dbc, &vlr, &ind) --> 0 + +"any-unknown\0" ind = 9 + +===== test_ind: SUCCESS + |