Changes of Revision 3

osmo-hlr.spec Changed
x
 
1
@@ -15,13 +15,13 @@
2
 
3
 Name:           osmo-hlr
4
 Requires: osmocom-latest
5
-Version:  1.4.0
6
+Version:  1.5.0
7
 Release:        0
8
 Summary:        Osmocom Home Location Register for GSUP protocol towards OsmoSGSN and OsmoCSCN
9
 License:        AGPL-3.0-or-later AND GPL-2.0-or-later
10
 Group:          Productivity/Telephony/Servers
11
 URL:            https://osmocom.org/projects/osmo-hlr
12
-Source:  osmo-hlr_1.4.0.tar.xz
13
+Source:  osmo-hlr_1.5.0.tar.xz
14
 BuildRequires:  autoconf
15
 BuildRequires:  automake
16
 BuildRequires:  libtool
17
@@ -30,11 +30,11 @@
18
 %if 0%{?suse_version}
19
 BuildRequires:  systemd-rpm-macros
20
 %endif
21
-BuildRequires:  pkgconfig(libosmoabis) >= 1.1.0
22
-BuildRequires:  pkgconfig(libosmocore) >= 1.5.0
23
-BuildRequires:  pkgconfig(libosmoctrl) >= 1.5.0
24
-BuildRequires:  pkgconfig(libosmogsm) >= 1.5.0
25
-BuildRequires:  pkgconfig(libosmovty) >= 1.5.0
26
+BuildRequires:  pkgconfig(libosmoabis) >= 1.3.0
27
+BuildRequires:  pkgconfig(libosmocore) >= 1.7.0
28
+BuildRequires:  pkgconfig(libosmoctrl) >= 1.7.0
29
+BuildRequires:  pkgconfig(libosmogsm) >= 1.7.0
30
+BuildRequires:  pkgconfig(libosmovty) >= 1.7.0
31
 BuildRequires:  pkgconfig(sqlite3)
32
 BuildRequires:  pkgconfig(talloc) >= 2.0.1
33
 # only needed for populate_hlr_db.pl
34
osmo-hlr_1.4.0.dsc -> osmo-hlr_1.5.0.dsc Changed
35
 
1
@@ -1,14 +1,14 @@
2
 Format: 3.0 (native)
3
 Source: osmo-hlr
4
-Binary: osmo-hlr, osmo-hlr-dbg, libosmo-gsup-client0, libosmo-gsup-client-dev, libosmo-mslookup0, libosmo-mslookup-dev, osmo-hlr-doc
5
+Binary: osmo-hlr, osmo-hlr-dbg, libosmo-gsup-client0, libosmo-gsup-client-dev, libosmo-mslookup0, libosmo-mslookup-dev, osmo-mslookup-utils, osmo-hlr-doc
6
 Architecture: any all
7
-Version: 1.4.0
8
+Version: 1.5.0
9
 Maintainer: Osmocom team <openbsc@lists.osmocom.org>
10
 Homepage: https://projects.osmocom.org/projects/osmo-hlr
11
 Standards-Version: 3.9.6
12
-Vcs-Browser: http://cgit.osmocom.org/osmo-hlr
13
-Vcs-Git: git://git.osmocom.org/osmo-hlr
14
-Build-Depends: debhelper (>= 9), pkg-config, dh-autoreconf, autotools-dev, python3-minimal, libosmocore-dev (>= 1.5.0), libosmo-abis-dev (>= 1.1.0), libosmo-netif-dev (>= 1.1.0), libsqlite3-dev, sqlite3, osmo-gsm-manuals-dev (>= 1.1.0)
15
+Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-hlr
16
+Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-hlr
17
+Build-Depends: debhelper (>= 9), pkg-config, dh-autoreconf, autotools-dev, python3-minimal, libosmocore-dev (>= 1.7.0), libosmo-abis-dev (>= 1.3.0), libosmo-netif-dev (>= 1.2.0), libsqlite3-dev, sqlite3, osmo-gsm-manuals-dev (>= 1.3.0)
18
 Package-List:
19
  libosmo-gsup-client-dev deb net optional arch=any
20
  libosmo-gsup-client0 deb libs optional arch=any
21
@@ -17,9 +17,10 @@
22
  osmo-hlr deb net optional arch=any
23
  osmo-hlr-dbg deb debug extra arch=any
24
  osmo-hlr-doc deb doc optional arch=all
25
+ osmo-mslookup-utils deb utils optional arch=any
26
 Checksums-Sha1:
27
- b277ccc94f9ae1ae69b0e64be3f4bcf09a2a492a 169536 osmo-hlr_1.4.0.tar.xz
28
+ 0670110acba6b51b9e1f9f27cafb4cb0c7b1581a 171872 osmo-hlr_1.5.0.tar.xz
29
 Checksums-Sha256:
30
- 103389ab0fdb433d258bd1afd8e4dec9e460467336ab41721d5b63e51ff9a71f 169536 osmo-hlr_1.4.0.tar.xz
31
+ 8cf694124d443619b05a12838e308b137a5b7a0c10766db01860cd8731c1dbb5 171872 osmo-hlr_1.5.0.tar.xz
32
 Files:
33
- f9f234b357d3f272f1fa009645247e03 169536 osmo-hlr_1.4.0.tar.xz
34
+ b80a9edb0732c6c5b4c9b315a729bd8e 171872 osmo-hlr_1.5.0.tar.xz
35
osmo-hlr_1.4.0.tar.xz/.tarball-version -> osmo-hlr_1.5.0.tar.xz/.tarball-version Changed
6
 
1
@@ -1 +1 @@
2
-1.4.0
3
\ No newline at end of file
4
+1.5.0
5
\ No newline at end of file
6
osmo-hlr_1.4.0.tar.xz/README.md -> osmo-hlr_1.5.0.tar.xz/README.md Changed
14
 
1
@@ -23,10 +23,9 @@
2
 
3
 You can clone from the official osmo-hlr.git repository using
4
 
5
-   git clone git://git.osmocom.org/osmo-hlr.git
6
-   git clone https://git.osmocom.org/osmo-hlr.git
7
+   git clone https://gitea.osmocom.org/cellular-infrastructure/osmo-hlr
8
 
9
-There is a cgit interface at https://git.osmocom.org/osmo-hlr/
10
+There is a web interface at <https://gitea.osmocom.org/cellular-infrastructure/osmo-hlr>
11
 
12
 Documentation
13
 -------------
14
osmo-hlr_1.4.0.tar.xz/configure.ac -> osmo-hlr_1.5.0.tar.xz/configure.ac Changed
27
 
1
@@ -41,11 +41,11 @@
2
 
3
 PKG_CHECK_MODULES(TALLOC, talloc >= 2.0.1)
4
 
5
-PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.5.0)
6
-PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.5.0)
7
-PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.5.0)
8
-PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.5.0)
9
-PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 1.1.0)
10
+PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.7.0)
11
+PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.7.0)
12
+PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.7.0)
13
+PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.7.0)
14
+PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 1.3.0)
15
 
16
 PKG_CHECK_MODULES(SQLITE3, sqlite3)
17
 
18
@@ -107,7 +107,7 @@
19
    AM_PATH_PYTHON
20
    AC_CHECK_PROG(OSMOTESTEXT_CHECK,osmotestvty.py,yes)
21
     if test "x$OSMOTESTEXT_CHECK" != "xyes" ; then
22
-       AC_MSG_ERROR(Please install git://osmocom.org/python/osmo-python-tests to run the VTY/CTRL tests.)
23
+       AC_MSG_ERROR(Please install https://gitea.osmocom.org/cellular-infrastructure/osmo-python-tests to run the VTY/CTRL tests.)
24
    fi
25
 fi
26
 AC_MSG_CHECKING(whether to enable VTY/CTRL tests)
27
osmo-hlr_1.4.0.tar.xz/contrib/osmo-hlr.spec.in -> osmo-hlr_1.5.0.tar.xz/contrib/osmo-hlr.spec.in Changed
18
 
1
@@ -29,11 +29,11 @@
2
 %if 0%{?suse_version}
3
 BuildRequires:  systemd-rpm-macros
4
 %endif
5
-BuildRequires:  pkgconfig(libosmoabis) >= 1.1.0
6
-BuildRequires:  pkgconfig(libosmocore) >= 1.5.0
7
-BuildRequires:  pkgconfig(libosmoctrl) >= 1.5.0
8
-BuildRequires:  pkgconfig(libosmogsm) >= 1.5.0
9
-BuildRequires:  pkgconfig(libosmovty) >= 1.5.0
10
+BuildRequires:  pkgconfig(libosmoabis) >= 1.3.0
11
+BuildRequires:  pkgconfig(libosmocore) >= 1.7.0
12
+BuildRequires:  pkgconfig(libosmoctrl) >= 1.7.0
13
+BuildRequires:  pkgconfig(libosmogsm) >= 1.7.0
14
+BuildRequires:  pkgconfig(libosmovty) >= 1.7.0
15
 BuildRequires:  pkgconfig(sqlite3)
16
 BuildRequires:  pkgconfig(talloc) >= 2.0.1
17
 # only needed for populate_hlr_db.pl
18
osmo-hlr_1.4.0.tar.xz/debian/changelog -> osmo-hlr_1.5.0.tar.xz/debian/changelog Changed
33
 
1
@@ -1,3 +1,31 @@
2
+osmo-hlr (1.5.0) unstable; urgency=medium
3
+
4
+   Oliver Smith 
5
+  * treewide: remove FSF address
6
+
7
+   Vadim Yanitskiy 
8
+  * fixup: debian: remove unneeded dependency libdbd-sqlite3
9
+  * debian: add new 'osmo-mslookup-utils' package
10
+  * tests: use 'check_PROGRAMS' instead of 'noinst_PROGRAMS'
11
+
12
+   Pau Espin Pedrol 
13
+  * ctrl: Mark function as static
14
+  * tests: Allow specyfing specific ctrl test to run
15
+  * tests/ctrl: Move ERROR test scenario to proper file
16
+  * Fix db_subscr_create() not returning -EEXIST expected by VTY subscriber create cmd
17
+  * ctrl: Introduce cmd SET subscriber.create <imsi>
18
+  * ctrl: Introduce CTRL command subscriber.by-*.msisdn
19
+  * cosmetic: hlr_vty_subscr.c: Fix trailing whitespace
20
+  * ctrl: Introduce cmd SET subscriber.delete <imsi>
21
+  * ctrl: Introduce CTRL command subscriber.by-*.aud2g <algo,ki>
22
+  * ctrl: Introduce CTRL command subscriber.by-*.aud3g <algo,KI,(op|opc),OP_C,ind_bitlen>
23
+  * doc: Document new subscriber CTRL commands
24
+
25
+   Harald Welte 
26
+  * update git URLs (git -> https; gitea)
27
+
28
+ -- Pau Espin Pedrol <pespin@sysmocom.de>  Tue, 28 Jun 2022 18:38:31 +0200
29
+
30
 osmo-hlr (1.4.0) unstable; urgency=medium
31
 
32
    Keith 
33
osmo-hlr_1.4.0.tar.xz/debian/control -> osmo-hlr_1.5.0.tar.xz/debian/control Changed
46
 
1
@@ -7,20 +7,20 @@
2
                dh-autoreconf,
3
                autotools-dev,
4
                python3-minimal,
5
-               libosmocore-dev (>= 1.5.0),
6
-               libosmo-abis-dev (>= 1.1.0),
7
-               libosmo-netif-dev (>= 1.1.0),
8
+               libosmocore-dev (>= 1.7.0),
9
+               libosmo-abis-dev (>= 1.3.0),
10
+               libosmo-netif-dev (>= 1.2.0),
11
                libsqlite3-dev,
12
                sqlite3,
13
-               osmo-gsm-manuals-dev (>= 1.1.0)
14
+               osmo-gsm-manuals-dev (>= 1.3.0)
15
 Standards-Version: 3.9.6
16
-Vcs-Browser: http://cgit.osmocom.org/osmo-hlr
17
-Vcs-Git: git://git.osmocom.org/osmo-hlr
18
+Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-hlr
19
+Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-hlr
20
 Homepage: https://projects.osmocom.org/projects/osmo-hlr
21
 
22
 Package: osmo-hlr
23
 Architecture: any
24
-Depends: osmocom-latest, ${shlibs:Depends}, ${misc:Depends}, libdbd-sqlite3
25
+Depends: osmocom-latest, ${shlibs:Depends}, ${misc:Depends}
26
 Description: Osmocom Home Location Register
27
  OsmoHLR is a Osmocom implementation of HLR (Home Location Registrar) which works over GSUP
28
  protocol. The subscribers are store in sqlite DB. It supports both 2G and 3G authentication.
29
@@ -80,6 +80,16 @@
30
   .
31
   This package contains the development headers.
32
 
33
+Package: osmo-mslookup-utils
34
+Architecture: any
35
+Section: utils
36
+Depends: osmocom-latest, ${shlibs:Depends},
37
+    libosmo-mslookup0 (= ${binary:Version}),
38
+         ${misc:Depends}
39
+Multi-Arch: same
40
+Description: Utilities for Osmocom MS lookup
41
+  This package contains a simple MS lookup client utility.
42
+
43
 Package: osmo-hlr-doc
44
 Architecture: all
45
 Section: doc
46
osmo-hlr_1.5.0.tar.xz/debian/osmo-mslookup-utils.install Added
3
 
1
@@ -0,0 +1 @@
2
+usr/bin/osmo-mslookup-client
3
osmo-hlr_1.4.0.tar.xz/doc/manuals/Makefile.am -> osmo-hlr_1.5.0.tar.xz/doc/manuals/Makefile.am Changed
13
 
1
@@ -1,6 +1,10 @@
2
-EXTRA_DIST = example_subscriber_add_update_delete.vty \
3
+EXTRA_DIST = \
4
+    example_subscriber_add_update_delete.vty \
5
+    example_subscriber_aud2g.ctrl \
6
+    example_subscriber_aud3g.ctrl \
7
     example_subscriber_cs_ps_enabled.ctrl \
8
     example_subscriber_info.ctrl \
9
+    example_subscriber_msisdn.ctrl \
10
     osmohlr-usermanual.adoc \
11
     osmohlr-usermanual-docinfo.xml \
12
     osmohlr-vty-reference.xml \
13
osmo-hlr_1.4.0.tar.xz/doc/manuals/chapters/control.adoc -> osmo-hlr_1.5.0.tar.xz/doc/manuals/chapters/control.adoc Changed
92
 
1
@@ -5,6 +5,16 @@
2
 to all programs using it are described in <<ctrl_common_vars>>. This section
3
 describes the CTRL interface variables specific to OsmoHLR.
4
 
5
+Subscribers can be created and deleted using the following SET commands:
6
+
7
+.Subscriber management commands available on OsmoHLR's Control interface
8
+options="header",width="100%",cols="35%,65%"
9
+|===
10
+|Command|Comment
11
+|subscriber.create '123456'|Create a new subscriber with IMSI "123456" to the database. Returns database ID of the subscriber being created.
12
+|subscriber.delete '123456'|Delete subscriber with IMSI "123456" from database. Returns database ID of the subscriber being deleted.
13
+|===
14
+
15
 All subscriber variables are available by different selectors, which are freely
16
 interchangeable:
17
 
18
@@ -28,6 +38,9 @@
19
 |subscriber.by-\*.*info-all*|R|No||List both 'info' and 'info-aud' in one
20
 |subscriber.by-\*.*cs-enabled*|RW|No|'1' or '0'|Enable/disable circuit-switched access
21
 |subscriber.by-\*.*ps-enabled*|RW|No|'1' or '0'|Enable/disable packet-switched access
22
+|subscriber.by-\*.*msisdn*|RW|No|valid MSISDN string|Get/Set assigned MSISDN
23
+|subscriber.by-\*.*aud2g*|RW|No|'algo,KI'|Get/Set 2g Authentication Data
24
+|subscriber.by-\*.*aud2g*|RW|No|'algo,KI,("op"|"opc"),OP_C,ind_bitlen'|Get/Set 3g Authentication Data
25
 |===
26
 
27
 === subscriber.by-*.info, info-aud, info-all
28
@@ -104,3 +117,63 @@
29
 ----
30
 include::../example_subscriber_cs_ps_enabled.ctrl
31
 ----
32
+
33
+=== subscriber.by-*.msisdn
34
+
35
+Get or set the MSISDN currently assigned to a subscriber.
36
+
37
+
38
+This is an example transcript that illustrates use of this command:
39
+
40
+----
41
+include::../example_subscriber_msisdn.ctrl
42
+----
43
+
44
+=== subscriber.by-*.aud2g
45
+
46
+Get or set the 2G Authentication data of a subscriber.
47
+
48
+The information is stored/retrieved as a comma separated list of fields:
49
+
50
+----
51
+algo,KI
52
+----
53
+
54
+Where::
55
+* *KI* is the KI as a hexadecimal string.
56
+* *algo* is one of the following algorithms: _none, xor, comp128v1, comp128v2,
57
+  comp128v3_.
58
+
59
+All values are case insensitive.
60
+
61
+This is an example transcript that illustrates use of this command:
62
+
63
+----
64
+include::../example_subscriber_aud2g.ctrl
65
+----
66
+
67
+=== subscriber.by-*.aud3g
68
+
69
+Get or set the 3G Authentication data of a subscriber.
70
+
71
+The information is stored/retrieved as a comma separated list of fields:
72
+
73
+----
74
+algo,KI,("op"|"opc"),OP_C,ind_bitlen
75
+----
76
+
77
+Where:
78
+* *KI* is the KI as a hexadecimal string.
79
+* *algo* is one of the following algorithms: _none, xor, milenage_.
80
+* "op" or "opc" indicates whether next field is an OP or OPC value.
81
+* *OP_C* contains an OP or OPC values as hexadecimal string, based on what the
82
+  previous field specifies.
83
+* *ind_bitlen* is set to 5 by default if not provided.
84
+
85
+All values are case insensitive.
86
+
87
+This is an example transcript that illustrates use of this command:
88
+
89
+----
90
+include::../example_subscriber_aud3g.ctrl
91
+----
92
osmo-hlr_1.5.0.tar.xz/doc/manuals/example_subscriber_aud2g.ctrl Added
16
 
1
@@ -0,0 +1,14 @@
2
+GET 1 subscriber.by-imsi-901991234567891.aud2g
3
+GET_REPLY 1 subscriber.by-imsi-901991234567891.aud2g none
4
+
5
+SET 2 subscriber.by-imsi-901991234567891.aud2g xor,c01ffedc1cadaeac1d1f1edacac1ab0a
6
+SET_REPLY 2 subscriber.by-imsi-901991234567891.aud2g OK
7
+
8
+GET 3 subscriber.by-imsi-901991234567891.aud2g
9
+GET_REPLY 3 subscriber.by-imsi-901991234567891.aud2g XOR,c01ffedc1cadaeac1d1f1edacac1ab0a
10
+
11
+SET 4 subscriber.by-imsi-901991234567891.aud2g none
12
+SET_REPLY 4 subscriber.by-imsi-901991234567891.aud2g OK
13
+
14
+GET 5 subscriber.by-imsi-901991234567891.aud2g
15
+GET_REPLY 5 subscriber.by-imsi-901991234567891.aud2g none
16
osmo-hlr_1.5.0.tar.xz/doc/manuals/example_subscriber_aud3g.ctrl Added
22
 
1
@@ -0,0 +1,20 @@
2
+GET 117 subscriber.by-imsi-901991234567891.aud3g
3
+GET_REPLY 117 subscriber.by-imsi-901991234567891.aud3g none
4
+
5
+SET 118 subscriber.by-imsi-901991234567891.aud3g milenage,c01ffedc1cadaeac1d1f1edacac1ab0a,OP,FB2A3D1B360F599ABAB99DB8669F8308
6
+SET_REPLY 118 subscriber.by-imsi-901991234567891.aud3g OK
7
+
8
+GET 119 subscriber.by-imsi-901991234567891.aud3g
9
+GET_REPLY 119 subscriber.by-imsi-901991234567891.aud3g MILENAGE,c01ffedc1cadaeac1d1f1edacac1ab0a,OP,fb2a3d1b360f599abab99db8669f8308,5
10
+
11
+SET 120 subscriber.by-imsi-901991234567891.aud3g milenage,c01ffedc1cadaeac1d1f1edacac1ab0a,OPC,FB2A3D1B360F599ABAB99DB8669F8308,7
12
+SET_REPLY 120 subscriber.by-imsi-901991234567891.aud3g OK
13
+
14
+GET 121 subscriber.by-imsi-901991234567891.aud3g
15
+GET_REPLY 121 subscriber.by-imsi-901991234567891.aud3g MILENAGE,c01ffedc1cadaeac1d1f1edacac1ab0a,OPC,fb2a3d1b360f599abab99db8669f8308,7
16
+
17
+SET 122 subscriber.by-imsi-901991234567891.aud3g none
18
+SET_REPLY 122 subscriber.by-imsi-901991234567891.aud3g OK
19
+
20
+GET 123 subscriber.by-imsi-901991234567891.aud3g
21
+GET_REPLY 123 subscriber.by-imsi-901991234567891.aud3g none
22
osmo-hlr_1.5.0.tar.xz/doc/manuals/example_subscriber_msisdn.ctrl Added
10
 
1
@@ -0,0 +1,8 @@
2
+GET 1 subscriber.by-imsi-901991234567891.msisdn
3
+GET_REPLY 1 subscriber.by-imsi-901991234567891.msisdn none
4
+
5
+SET 2 subscriber.by-imsi-901991234567891.msisdn 555666
6
+SET_REPLY 2 subscriber.by-imsi-901991234567891.msisdn OK
7
+
8
+GET 3 subscriber.by-imsi-901991234567891.msisdn
9
+GET_REPLY 3 subscriber.by-imsi-901991234567891.msisdn 555666
10
osmo-hlr_1.4.0.tar.xz/include/osmocom/hlr/ctrl.h -> osmo-hlr_1.5.0.tar.xz/include/osmocom/hlr/ctrl.h Changed
7
 
1
@@ -30,5 +30,4 @@
2
    _LAST_CTRL_NODE_HLR
3
 };
4
 
5
-int hlr_ctrl_cmds_install();
6
 struct ctrl_handle *hlr_controlif_setup(struct hlr *hlr);
7
osmo-hlr_1.4.0.tar.xz/include/osmocom/hlr/hlr_vty.h -> osmo-hlr_1.5.0.tar.xz/include/osmocom/hlr/hlr_vty.h Changed
14
 
1
@@ -37,6 +37,12 @@
2
    MSLOOKUP_CLIENT_NODE,
3
 };
4
 
5
+
6
+#define A38_XOR_MIN_KEY_LEN    12
7
+#define A38_XOR_MAX_KEY_LEN    16
8
+#define A38_COMP128_KEY_LEN    16
9
+#define MILENAGE_KEY_LEN   16
10
+
11
 int hlr_vty_is_config_node(struct vty *vty, int node);
12
 int hlr_vty_go_parent(struct vty *vty);
13
 void hlr_vty_init(void);
14
osmo-hlr_1.4.0.tar.xz/include/osmocom/hlr/logging.h -> osmo-hlr_1.5.0.tar.xz/include/osmocom/hlr/logging.h Changed
9
 
1
@@ -11,6 +11,7 @@
2
    DMSLOOKUP,
3
    DLU,
4
    DDGSM,
5
+   DCTRL,
6
 };
7
 
8
 extern const struct log_info hlr_log_info;
9
osmo-hlr_1.4.0.tar.xz/src/ctrl.c -> osmo-hlr_1.5.0.tar.xz/src/ctrl.c Changed
201
 
1
@@ -31,12 +31,16 @@
2
 #include <osmocom/hlr/hlr.h>
3
 #include <osmocom/hlr/ctrl.h>
4
 #include <osmocom/hlr/db.h>
5
+#include <osmocom/hlr/hlr_vty.h>
6
 
7
 #define SEL_BY "by-"
8
 #define SEL_BY_IMSI SEL_BY "imsi-"
9
 #define SEL_BY_MSISDN SEL_BY "msisdn-"
10
 #define SEL_BY_ID SEL_BY "id-"
11
 
12
+extern bool auth_algo_parse(const char *alg_str, enum osmo_auth_algo *algo,
13
+               int *minlen, int *maxlen);
14
+
15
 #define hexdump_buf(buf) osmo_hexdump_nospc((void*)buf, sizeof(buf))
16
 
17
 static bool startswith(const char *str, const char *start)
18
@@ -197,6 +201,77 @@
19
        aud->u.umts.sqn);
20
 }
21
 
22
+CTRL_CMD_DEFINE_WO_NOVRF(subscr_create, "create");
23
+static int set_subscr_create(struct ctrl_cmd *cmd, void *data)
24
+{
25
+   struct hlr_subscriber subscr;
26
+   struct hlr *hlr = data;
27
+   const char *imsi = cmd->value;
28
+   int rc;
29
+
30
+   if (!osmo_imsi_str_valid(imsi)) {
31
+       cmd->reply = "Invalid IMSI value.";
32
+       return CTRL_CMD_ERROR;
33
+   }
34
+
35
+   /* Create the subscriber in the DB */
36
+   rc = db_subscr_create(g_hlr->dbc, imsi, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS);
37
+   if (rc) {
38
+       if (rc == -EEXIST)
39
+           cmd->reply = "Subscriber already exists.";
40
+       else
41
+           cmd->reply = "Cannot create subscriber.";
42
+       return CTRL_CMD_ERROR;
43
+   }
44
+
45
+   LOGP(DCTRL, LOGL_INFO, "Created subscriber IMSI='%s'\n",
46
+        imsi);
47
+
48
+   /* Retrieve data of newly created subscriber: */
49
+   rc = db_subscr_get_by_imsi(hlr->dbc, imsi, &subscr);
50
+   if (rc < 0) {
51
+       cmd->reply = "Failed retrieving ID of newly created subscriber.";
52
+       return CTRL_CMD_ERROR;
53
+   }
54
+
55
+   cmd->reply = talloc_asprintf(cmd, "%" PRIu64, subscr.id);
56
+   return CTRL_CMD_REPLY;
57
+}
58
+
59
+CTRL_CMD_DEFINE_WO_NOVRF(subscr_delete, "delete");
60
+static int set_subscr_delete(struct ctrl_cmd *cmd, void *data)
61
+{
62
+   struct hlr_subscriber subscr;
63
+   struct hlr *hlr = data;
64
+   const char *imsi = cmd->value;
65
+   int rc;
66
+
67
+   if (!osmo_imsi_str_valid(imsi)) {
68
+       cmd->reply = "Invalid IMSI value.";
69
+       return CTRL_CMD_ERROR;
70
+   }
71
+
72
+   /* Retrieve data of newly created subscriber: */
73
+   rc = db_subscr_get_by_imsi(hlr->dbc, imsi, &subscr);
74
+   if (rc < 0) {
75
+       cmd->reply = "Subscriber doesn't exist.";
76
+       return CTRL_CMD_ERROR;
77
+   }
78
+
79
+   /* Create the subscriber in the DB */
80
+   rc = db_subscr_delete_by_id(g_hlr->dbc, subscr.id);
81
+   if (rc) {
82
+       cmd->reply = "Cannot delete subscriber.";
83
+       return CTRL_CMD_ERROR;
84
+   }
85
+
86
+   LOGP(DCTRL, LOGL_INFO, "Deleted subscriber IMSI='%s'\n",
87
+        imsi);
88
+
89
+   cmd->reply = talloc_asprintf(cmd, "%" PRIu64, subscr.id);
90
+   return CTRL_CMD_REPLY;
91
+}
92
+
93
 CTRL_CMD_DEFINE_RO(subscr_info, "info");
94
 static int get_subscr_info(struct ctrl_cmd *cmd, void *data)
95
 {
96
@@ -351,17 +426,302 @@
97
    return set_subscr_cs_ps_enabled(cmd, data, false);
98
 }
99
 
100
-int hlr_ctrl_cmds_install()
101
+CTRL_CMD_DEFINE(subscr_msisdn, "msisdn");
102
+static int verify_subscr_msisdn(struct ctrl_cmd *cmd, const char *value, void *data)
103
 {
104
-   int rc = 0;
105
+   struct hlr_subscriber subscr;
106
+   if (!value)
107
+       return 1;
108
+   if (strlen(value) > sizeof(subscr.msisdn) - 1)
109
+       return 1;
110
+   if (strcmp(value, "none") != 0 && !osmo_msisdn_str_valid(value))
111
+       return 1;
112
+   return 0;
113
+}
114
+static int get_subscr_msisdn(struct ctrl_cmd *cmd, void *data)
115
+{
116
+   struct hlr_subscriber subscr;
117
+   struct hlr *hlr = data;
118
+   const char *by_selector = cmd->node;
119
 
120
-   rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_info);
121
-   rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_info_aud);
122
-   rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_info_all);
123
-   rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_ps_enabled);
124
-   rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_cs_enabled);
125
+   if (!get_subscriber(hlr->dbc, by_selector, &subscr, cmd))
126
+       return CTRL_CMD_ERROR;
127
 
128
-   return rc;
129
+   if (strlen(subscr.msisdn) == 0)
130
+       snprintf(subscr.msisdn, sizeof(subscr.msisdn), "none");
131
+
132
+   cmd->reply = talloc_asprintf(cmd, "%s", subscr.msisdn);
133
+   return CTRL_CMD_REPLY;
134
+}
135
+static int set_subscr_msisdn(struct ctrl_cmd *cmd, void *data)
136
+{
137
+   struct hlr_subscriber subscr;
138
+   struct hlr *hlr = data;
139
+   const char *by_selector = cmd->node;
140
+   const char *msisdn;
141
+
142
+   if (!get_subscriber(hlr->dbc, by_selector, &subscr, cmd))
143
+       return CTRL_CMD_ERROR;
144
+
145
+   if (strcmp(cmd->value, "none") == 0)
146
+       msisdn = NULL;
147
+   else
148
+       msisdn = cmd->value;
149
+
150
+   if (db_subscr_update_msisdn_by_imsi(g_hlr->dbc, subscr.imsi, msisdn)) {
151
+       cmd->reply = "Update MSISDN failed";
152
+       return CTRL_CMD_ERROR;
153
+   }
154
+
155
+   cmd->reply = "OK";
156
+   return CTRL_CMD_REPLY;
157
+}
158
+
159
+/* value format: <algo,KI> */
160
+CTRL_CMD_DEFINE(subscr_aud2g, "aud2g");
161
+static int verify_subscr_aud2g(struct ctrl_cmd *cmd, const char *value, void *data)
162
+{
163
+   if (!value)
164
+       return 1;
165
+   if (strcasecmp(value, "none") != 0 && !strchr(value, ','))
166
+       return 1;
167
+   return 0;
168
+}
169
+static int get_subscr_aud2g(struct ctrl_cmd *cmd, void *data)
170
+{
171
+   struct hlr_subscriber subscr;
172
+   struct hlr *hlr = data;
173
+   const char *by_selector = cmd->node;
174
+   struct osmo_sub_auth_data aud2g;
175
+   struct osmo_sub_auth_data aud3g_unused;
176
+   int rc;
177
+
178
+   if (!get_subscriber(hlr->dbc, by_selector, &subscr, cmd))
179
+       return CTRL_CMD_ERROR;
180
+
181
+   rc = db_get_auth_data(hlr->dbc, subscr.imsi, &aud2g, &aud3g_unused, NULL);
182
+   switch (rc) {
183
+   case 0:
184
+       break;
185
+   case -ENOENT:
186
+   case -ENOKEY:
187
+       aud2g.algo = OSMO_AUTH_ALG_NONE;
188
+       break;
189
+   default:
190
+       cmd->reply = "Error retrieving data from database.";
191
+       return CTRL_CMD_ERROR;
192
+   }
193
+
194
+   if (aud2g.algo ==  OSMO_AUTH_ALG_NONE) {
195
+       cmd->reply = "none";
196
+       return CTRL_CMD_REPLY;
197
+   }
198
+
199
+   cmd->reply = talloc_asprintf(cmd, "%s,%s", osmo_auth_alg_name(aud2g.algo),
200
+                    hexdump_buf(aud2g.u.gsm.ki));
201
osmo-hlr_1.4.0.tar.xz/src/db_hlr.c -> osmo-hlr_1.5.0.tar.xz/src/db_hlr.c Changed
20
 
1
@@ -45,7 +45,8 @@
2
  * \paramin,out dbc  database context.
3
  * \paramin imsi  ASCII string of IMSI digits, is validated.
4
  * \paramin flags  Bitmask of DB_SUBSCR_FLAG_*.
5
- * \returns 0 on success, -EINVAL on invalid IMSI, -EIO on database error.
6
+ * \returns 0 on success, -EINVAL on invalid IMSI, -EEXIST if subscriber with
7
+ *          provided imsi already exists, -EIO on other database errors.
8
  */
9
 int db_subscr_create(struct db_context *dbc, const char *imsi, uint8_t flags)
10
 {
11
@@ -73,6 +74,8 @@
12
    if (rc != SQLITE_DONE) {
13
        LOGHLR(imsi, LOGL_ERROR, "Cannot create subscriber: SQL error: (%d) %s\n",
14
               rc, sqlite3_errmsg(dbc->db));
15
+       if (rc == SQLITE_CONSTRAINT_UNIQUE)
16
+           return -EEXIST;
17
        return -EIO;
18
    }
19
 
20
osmo-hlr_1.4.0.tar.xz/src/dbd_decode_binary.c -> osmo-hlr_1.5.0.tar.xz/src/dbd_decode_binary.c Changed
12
 
1
@@ -18,10 +18,6 @@
2
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
3
  * Lesser General Public License for more details.
4
  * 
5
- * You should have received a copy of the GNU Lesser General Public
6
- * License along with this library; if not, write to the Free Software
7
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
8
- * 
9
  * $Id: dbd_helper.c,v 1.44 2011/08/09 11:14:14 mhoenicka Exp $
10
  */
11
 
12
osmo-hlr_1.4.0.tar.xz/src/hlr_vty_subscr.c -> osmo-hlr_1.5.0.tar.xz/src/hlr_vty_subscr.c Changed
44
 
1
@@ -31,6 +31,7 @@
2
 #include <osmocom/hlr/hlr.h>
3
 #include <osmocom/hlr/db.h>
4
 #include <osmocom/hlr/timestamp.h>
5
+#include <osmocom/hlr/hlr_vty.h>
6
 
7
 struct vty;
8
 
9
@@ -346,7 +347,7 @@
10
    int rc;
11
    struct hlr_subscriber subscr;
12
    const char *imsi = argv0;
13
-   
14
+
15
    if (!osmo_imsi_str_valid(imsi)) {
16
        vty_out(vty, "%% Not a valid IMSI: %s%s", imsi, VTY_NEWLINE);
17
        return CMD_WARNING;
18
@@ -470,14 +471,8 @@
19
 #define AUTH_ALG_TYPES_3G_HELP \
20
    "Use Milenage algorithm\n"
21
 
22
-#define A38_XOR_MIN_KEY_LEN    12
23
-#define A38_XOR_MAX_KEY_LEN    16
24
-#define A38_COMP128_KEY_LEN    16
25
-
26
-#define MILENAGE_KEY_LEN 16
27
-
28
-static bool auth_algo_parse(const char *alg_str, enum osmo_auth_algo *algo,
29
-               int *minlen, int *maxlen)
30
+bool auth_algo_parse(const char *alg_str, enum osmo_auth_algo *algo,
31
+            int *minlen, int *maxlen)
32
 {
33
    if (!strcasecmp(alg_str, "none")) {
34
        *algo = OSMO_AUTH_ALG_NONE;
35
@@ -636,7 +631,7 @@
36
            .ind_bitlen = ind_bitlen,
37
        },
38
    };
39
-   
40
+
41
    if (!auth_algo_parse(alg_type, &aud3g.algo, &minlen, &maxlen)) {
42
        vty_out(vty, "%% Unknown auth algorithm: '%s'%s", alg_type, VTY_NEWLINE);
43
        return CMD_WARNING;
44
osmo-hlr_1.4.0.tar.xz/src/logging.c -> osmo-hlr_1.5.0.tar.xz/src/logging.c Changed
14
 
1
@@ -43,6 +43,12 @@
2
        .color = "\0331;35m",
3
        .enabled = 1, .loglevel = LOGL_NOTICE,
4
    },
5
+   DCTRL = {
6
+       .name = "DCTRL",
7
+       .description = "Osmocom CTRL interface",
8
+       .color = "\0331;30m",
9
+       .enabled = 1, .loglevel = LOGL_NOTICE,
10
+   },
11
 };
12
 
13
 const struct log_info hlr_log_info = {
14
osmo-hlr_1.4.0.tar.xz/tests/Makefile.am -> osmo-hlr_1.5.0.tar.xz/tests/Makefile.am Changed
20
 
1
@@ -69,6 +69,9 @@
2
 
3
 CTRL_TEST_DB = hlr_ctrl_test.db
4
 
5
+# Run a specific test with: 'make ctrl-test CTRL_TEST=test_subscriber.ctrl'
6
+CTRL_TEST ?= *.ctrl
7
+
8
 # To update the CTRL script from current application behavior,
9
 # pass -u to ctrl_script_runner.py by doing:
10
 #   make ctrl-test U=-u
11
@@ -79,7 +82,7 @@
12
    osmo_verify_transcript_ctrl.py -v \
13
        -p 4259 \
14
        -r "$(top_builddir)/src/osmo-hlr -c $(top_srcdir)/doc/examples/osmo-hlr.cfg -l $(CTRL_TEST_DB)" \
15
-       $(U) $(srcdir)/*.ctrl
16
+       $(U) $(srcdir)/$(CTRL_TEST)
17
    -rm -f $(CTRL_TEST_DB)
18
    -rm $(CTRL_TEST_DB)-*
19
 
20
osmo-hlr_1.4.0.tar.xz/tests/auc/Makefile.am -> osmo-hlr_1.5.0.tar.xz/tests/auc/Makefile.am Changed
12
 
1
@@ -23,9 +23,7 @@
2
    auc_ts_55_205_test_sets.err \
3
    $(NULL)
4
 
5
-check_PROGRAMS = auc_ts_55_205_test_sets
6
-
7
-noinst_PROGRAMS = auc_test
8
+check_PROGRAMS = auc_test auc_ts_55_205_test_sets
9
 
10
 auc_test_SOURCES = \
11
    auc_test.c \
12
osmo-hlr_1.4.0.tar.xz/tests/db/db_test.c -> osmo-hlr_1.5.0.tar.xz/tests/db/db_test.c Changed
20
 
1
@@ -262,13 +262,13 @@
2
    ASSERT_RC(db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), 0);
3
    ASSERT_SEL(imsi, imsi2, 0);
4
    id2 = g_subscr.id;
5
-   ASSERT_RC(db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EIO);
6
+   ASSERT_RC(db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EEXIST);
7
    ASSERT_SEL(imsi, imsi0, 0);
8
-   ASSERT_RC(db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EIO);
9
-   ASSERT_RC(db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EIO);
10
+   ASSERT_RC(db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EEXIST);
11
+   ASSERT_RC(db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EEXIST);
12
    ASSERT_SEL(imsi, imsi1, 0);
13
-   ASSERT_RC(db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EIO);
14
-   ASSERT_RC(db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EIO);
15
+   ASSERT_RC(db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EEXIST);
16
+   ASSERT_RC(db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EEXIST);
17
    ASSERT_SEL(imsi, imsi2, 0);
18
 
19
    ASSERT_RC(db_subscr_create(dbc, "123456789 000003", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS), -EINVAL);
20
osmo-hlr_1.4.0.tar.xz/tests/db/db_test.err -> osmo-hlr_1.5.0.tar.xz/tests/db/db_test.err Changed
36
 
1
@@ -27,7 +27,7 @@
2
   .imsi = '123456789000002',
3
 }
4
 
5
-db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO
6
+db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EEXIST
7
 DAUC IMSI='123456789000000': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
8
 
9
 db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
10
@@ -36,10 +36,10 @@
11
   .imsi = '123456789000000',
12
 }
13
 
14
-db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO
15
+db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EEXIST
16
 DAUC IMSI='123456789000001': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
17
 
18
-db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO
19
+db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EEXIST
20
 DAUC IMSI='123456789000001': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
21
 
22
 db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0
23
@@ -48,10 +48,10 @@
24
   .imsi = '123456789000001',
25
 }
26
 
27
-db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO
28
+db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EEXIST
29
 DAUC IMSI='123456789000002': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
30
 
31
-db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO
32
+db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EEXIST
33
 DAUC IMSI='123456789000002': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
34
 
35
 db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0
36
osmo-hlr_1.4.0.tar.xz/tests/gsup/Makefile.am -> osmo-hlr_1.5.0.tar.xz/tests/gsup/Makefile.am Changed
10
 
1
@@ -17,7 +17,7 @@
2
    gsup_test.err \
3
    $(NULL)
4
 
5
-noinst_PROGRAMS = \
6
+check_PROGRAMS = \
7
    gsup_test \
8
    $(NULL)
9
 
10
osmo-hlr_1.4.0.tar.xz/tests/test_subscriber.ctrl -> osmo-hlr_1.5.0.tar.xz/tests/test_subscriber.ctrl Changed
106
 
1
@@ -610,5 +610,102 @@
2
 periodic_rau_tau_timer 0
3
 lmsi   00000000
4
 
5
-GET 101 subscriber.by-id-0x0123.info
6
-ERROR 101 Invalid value part of 'by-xxx-value' selector.
7
+SET 101 subscriber.create 901991234567891
8
+SET_REPLY 101 subscriber.create 124
9
+
10
+GET 102 subscriber.by-id-124.info
11
+GET_REPLY 102 subscriber.by-id-124.info 
12
+id 124
13
+imsi   901991234567891
14
+nam_cs 1
15
+nam_ps 1
16
+ms_purged_cs   0
17
+ms_purged_ps   0
18
+periodic_lu_timer  0
19
+periodic_rau_tau_timer 0
20
+lmsi   00000000
21
+
22
+GET 103 subscriber.by-imsi-901991234567891.msisdn
23
+GET_REPLY 103 subscriber.by-imsi-901991234567891.msisdn none
24
+
25
+SET 104 subscriber.by-imsi-901991234567891.msisdn 555666
26
+SET_REPLY 104 subscriber.by-imsi-901991234567891.msisdn OK
27
+
28
+GET 105 subscriber.by-imsi-901991234567891.msisdn
29
+GET_REPLY 105 subscriber.by-imsi-901991234567891.msisdn 555666
30
+
31
+SET 106 subscriber.by-imsi-901991234567891.msisdn 888000
32
+SET_REPLY 106 subscriber.by-imsi-901991234567891.msisdn OK
33
+
34
+GET 107 subscriber.by-imsi-901991234567891.msisdn
35
+GET_REPLY 107 subscriber.by-imsi-901991234567891.msisdn 888000
36
+
37
+GET 108 subscriber.by-imsi-901991234567891.info
38
+GET_REPLY 108 subscriber.by-imsi-901991234567891.info 
39
+id 124
40
+imsi   901991234567891
41
+msisdn 888000
42
+nam_cs 1
43
+nam_ps 1
44
+ms_purged_cs   0
45
+ms_purged_ps   0
46
+periodic_lu_timer  0
47
+periodic_rau_tau_timer 0
48
+lmsi   00000000
49
+
50
+SET 109 subscriber.by-imsi-901991234567891.msisdn none
51
+SET_REPLY 109 subscriber.by-imsi-901991234567891.msisdn OK
52
+
53
+GET 110 subscriber.by-imsi-901991234567891.msisdn
54
+GET_REPLY 110 subscriber.by-imsi-901991234567891.msisdn none
55
+
56
+GET 111 subscriber.by-imsi-901991234567891.info
57
+GET_REPLY 111 subscriber.by-imsi-901991234567891.info 
58
+id 124
59
+imsi   901991234567891
60
+nam_cs 1
61
+nam_ps 1
62
+ms_purged_cs   0
63
+ms_purged_ps   0
64
+periodic_lu_timer  0
65
+periodic_rau_tau_timer 0
66
+lmsi   00000000
67
+
68
+GET 112 subscriber.by-imsi-901991234567891.aud2g
69
+GET_REPLY 112 subscriber.by-imsi-901991234567891.aud2g none
70
+
71
+SET 113 subscriber.by-imsi-901991234567891.aud2g xor,c01ffedc1cadaeac1d1f1edacac1ab0a
72
+SET_REPLY 113 subscriber.by-imsi-901991234567891.aud2g OK
73
+
74
+GET 114 subscriber.by-imsi-901991234567891.aud2g
75
+GET_REPLY 114 subscriber.by-imsi-901991234567891.aud2g XOR,c01ffedc1cadaeac1d1f1edacac1ab0a
76
+
77
+SET 115 subscriber.by-imsi-901991234567891.aud2g none
78
+SET_REPLY 115 subscriber.by-imsi-901991234567891.aud2g OK
79
+
80
+GET 116 subscriber.by-imsi-901991234567891.aud2g
81
+GET_REPLY 116 subscriber.by-imsi-901991234567891.aud2g none
82
+
83
+GET 117 subscriber.by-imsi-901991234567891.aud3g
84
+GET_REPLY 117 subscriber.by-imsi-901991234567891.aud3g none
85
+
86
+SET 118 subscriber.by-imsi-901991234567891.aud3g milenage,c01ffedc1cadaeac1d1f1edacac1ab0a,OP,FB2A3D1B360F599ABAB99DB8669F8308
87
+SET_REPLY 118 subscriber.by-imsi-901991234567891.aud3g OK
88
+
89
+GET 119 subscriber.by-imsi-901991234567891.aud3g
90
+GET_REPLY 119 subscriber.by-imsi-901991234567891.aud3g MILENAGE,c01ffedc1cadaeac1d1f1edacac1ab0a,OP,fb2a3d1b360f599abab99db8669f8308,5
91
+
92
+SET 120 subscriber.by-imsi-901991234567891.aud3g milenage,c01ffedc1cadaeac1d1f1edacac1ab0a,OPC,FB2A3D1B360F599ABAB99DB8669F8308,7
93
+SET_REPLY 120 subscriber.by-imsi-901991234567891.aud3g OK
94
+
95
+GET 121 subscriber.by-imsi-901991234567891.aud3g
96
+GET_REPLY 121 subscriber.by-imsi-901991234567891.aud3g MILENAGE,c01ffedc1cadaeac1d1f1edacac1ab0a,OPC,fb2a3d1b360f599abab99db8669f8308,7
97
+
98
+SET 122 subscriber.by-imsi-901991234567891.aud3g none
99
+SET_REPLY 122 subscriber.by-imsi-901991234567891.aud3g OK
100
+
101
+GET 123 subscriber.by-imsi-901991234567891.aud3g
102
+GET_REPLY 123 subscriber.by-imsi-901991234567891.aud3g none
103
+
104
+SET 124 subscriber.delete 901991234567891
105
+SET_REPLY 124 subscriber.delete 124
106
osmo-hlr_1.4.0.tar.xz/tests/test_subscriber_errors.ctrl -> osmo-hlr_1.5.0.tar.xz/tests/test_subscriber_errors.ctrl Changed
53
 
1
@@ -105,3 +105,51 @@
2
 ERROR 46 Invalid value part of 'by-xxx-value' selector.
3
 GET 47 subscriber.by-imsi-1234567890123456.cs-enabled
4
 ERROR 47 Invalid value part of 'by-xxx-value' selector.
5
+
6
+GET 48 subscriber.by-id-0x0123.info
7
+ERROR 48 Invalid value part of 'by-xxx-value' selector.
8
+
9
+SET 49 subscriber.create zzz
10
+ERROR 49 Invalid IMSI value.
11
+
12
+SET 50 subscriber.create 901990000000001
13
+ERROR 50 Subscriber already exists.
14
+
15
+SET 51 subscriber.by-imsi-1234567890123456.msisdn hellobadmsisdn
16
+ERROR 51 Value failed verification.
17
+
18
+SET 52 subscriber.delete 100000
19
+ERROR 52 Subscriber doesn't exist.
20
+
21
+SET 53 subscriber.delete zzz
22
+ERROR 53 Invalid IMSI value.
23
+
24
+SET 54 subscriber.by-imsi-901990000000003.aud2g foobar
25
+ERROR 54 Value failed verification.
26
+
27
+SET 55 subscriber.by-imsi-901990000000003.aud2g foobar,2134
28
+ERROR 55 Unknown auth algorithm.
29
+
30
+SET 56 subscriber.by-imsi-901990000000003.aud2g xor,2134
31
+ERROR 56 Invalid KI.
32
+
33
+SET 57 subscriber.by-imsi-901990000000003.aud3g foobar
34
+ERROR 57 Value failed verification.
35
+
36
+SET 58 subscriber.by-imsi-901990000000003.aud3g foobar,2134
37
+ERROR 58 Unknown auth algorithm.
38
+
39
+SET 60 subscriber.by-imsi-901990000000003.aud3g milenage,2134
40
+ERROR 60 Invalid KI.
41
+
42
+SET 61 subscriber.by-imsi-901990000000003.aud3g milenage,c01ffedc1cadaeac1d1f1edacac1ab0a,AAA
43
+ERROR 61 Invalid format.
44
+
45
+SET 62 subscriber.by-imsi-901990000000003.aud3g milenage,c01ffedc1cadaeac1d1f1edacac1ab0a,OPC
46
+ERROR 62 Invalid format.
47
+
48
+SET 63 subscriber.by-imsi-901990000000003.aud3g milenage,c01ffedc1cadaeac1d1f1edacac1ab0a,OPC,zzz
49
+ERROR 63 Invalid OP/OPC.
50
+
51
+SET 64 subscriber.by-imsi-901990000000003.aud3g milenage,c01ffedc1cadaeac1d1f1edacac1ab0a,OPC,fb2a3d1b360f599abab99db8669f8308,
52
+ERROR 64 Invalid format.
53