blob: 1948561ee77bb0e897326f04562ff1f7b2cffc55 [file] [log] [blame]
Stefan Sperling8f3a7cc2018-11-27 12:10:45 +01001CREATE TABLE subscriber (
Neels Hofmeyr88c91f62017-10-25 00:26:29 +02002-- OsmoHLR's DB scheme is modelled roughly after TS 23.008 version 13.3.0
Harald Weltee72cf552016-04-28 07:18:49 +02003 id INTEGER PRIMARY KEY,
4 -- Chapter 2.1.1.1
Neels Hofmeyrcc785f02017-02-01 17:08:56 +01005 imsi VARCHAR(15) UNIQUE NOT NULL,
Harald Weltee72cf552016-04-28 07:18:49 +02006 -- Chapter 2.1.2
Neels Hofmeyrcc785f02017-02-01 17:08:56 +01007 msisdn VARCHAR(15) UNIQUE,
Oliver Smith81db3892019-01-09 12:03:51 +01008 -- Chapter 2.2.3: Most recent / current IMEISV
Harald Weltee72cf552016-04-28 07:18:49 +02009 imeisv VARCHAR,
Oliver Smith81db3892019-01-09 12:03:51 +010010 -- Chapter 2.1.9: Most recent / current IMEI
11 imei VARCHAR(14),
Harald Weltee72cf552016-04-28 07:18:49 +020012 -- Chapter 2.4.5
13 vlr_number VARCHAR(15),
14 -- Chapter 2.4.6
Neels Hofmeyra8045da2019-10-31 01:19:44 +010015 msc_number VARCHAR(15),
Harald Weltee72cf552016-04-28 07:18:49 +020016 -- Chapter 2.4.8.1
17 sgsn_number VARCHAR(15),
18 -- Chapter 2.13.10
19 sgsn_address VARCHAR,
20 -- Chapter 2.4.8.2
21 ggsn_number VARCHAR(15),
22 -- Chapter 2.4.9.2
23 gmlc_number VARCHAR(15),
24 -- Chapter 2.4.23
25 smsc_number VARCHAR(15),
26 -- Chapter 2.4.24
27 periodic_lu_tmr INTEGER,
28 -- Chapter 2.13.115
29 periodic_rau_tau_tmr INTEGER,
30 -- Chapter 2.1.1.2: network access mode
Harald Welte61229152016-05-03 18:47:08 +020031 nam_cs BOOLEAN NOT NULL DEFAULT 1,
32 nam_ps BOOLEAN NOT NULL DEFAULT 1,
Harald Weltee72cf552016-04-28 07:18:49 +020033 -- Chapter 2.1.8
34 lmsi INTEGER,
35
Harald Welteb18f0e02016-05-05 21:03:03 +020036 -- The below purged flags might not even be stored non-volatile,
37 -- refer to TS 23.012 Chapter 3.6.1.4
Harald Weltee72cf552016-04-28 07:18:49 +020038 -- Chapter 2.7.5
Harald Welte61229152016-05-03 18:47:08 +020039 ms_purged_cs BOOLEAN NOT NULL DEFAULT 0,
Harald Weltee72cf552016-04-28 07:18:49 +020040 -- Chapter 2.7.6
Stefan Sperling638ba8c2018-12-04 15:07:29 +010041 ms_purged_ps BOOLEAN NOT NULL DEFAULT 0,
42
43 -- Timestamp of last location update seen from subscriber
44 -- The value is a string which encodes a UTC timestamp in granularity of seconds.
Neels Hofmeyr07e16022019-11-20 02:36:35 +010045 last_lu_seen TIMESTAMP default NULL,
Neels Hofmeyrf6c8f042019-11-25 03:59:50 +010046 last_lu_seen_ps TIMESTAMP default NULL,
47
48 -- When a LU was received via a proxy, that proxy's hlr_number is stored here,
49 -- while vlr_number reflects the MSC on the far side of that proxy.
50 vlr_via_proxy VARCHAR,
51 sgsn_via_proxy VARCHAR
Harald Weltee72cf552016-04-28 07:18:49 +020052);
53
Stefan Sperling8f3a7cc2018-11-27 12:10:45 +010054CREATE TABLE subscriber_apn (
Harald Weltee72cf552016-04-28 07:18:49 +020055 subscriber_id INTEGER, -- subscriber.id
56 apn VARCHAR(256) NOT NULL
57);
58
Stefan Sperling8f3a7cc2018-11-27 12:10:45 +010059CREATE TABLE subscriber_multi_msisdn (
Neels Hofmeyr88c91f62017-10-25 00:26:29 +020060-- Chapter 2.1.3
Harald Weltee72cf552016-04-28 07:18:49 +020061 subscriber_id INTEGER, -- subscriber.id
62 msisdn VARCHAR(15) NOT NULL
63);
64
Stefan Sperling8f3a7cc2018-11-27 12:10:45 +010065CREATE TABLE auc_2g (
Harald Weltee72cf552016-04-28 07:18:49 +020066 subscriber_id INTEGER PRIMARY KEY, -- subscriber.id
Neels Hofmeyr8089d512017-01-30 13:49:49 +010067 algo_id_2g INTEGER NOT NULL, -- enum osmo_auth_algo value
68 ki VARCHAR(32) NOT NULL -- hex string: subscriber's secret key (128bit)
Harald Weltee72cf552016-04-28 07:18:49 +020069);
70
Stefan Sperling8f3a7cc2018-11-27 12:10:45 +010071CREATE TABLE auc_3g (
Neels Hofmeyr2116ce22017-01-19 15:50:59 +010072 subscriber_id INTEGER PRIMARY KEY, -- subscriber.id
Neels Hofmeyr8089d512017-01-30 13:49:49 +010073 algo_id_3g INTEGER NOT NULL, -- enum osmo_auth_algo value
74 k VARCHAR(32) NOT NULL, -- hex string: subscriber's secret key (128bit)
75 op VARCHAR(32), -- hex string: operator's secret key (128bit)
76 opc VARCHAR(32), -- hex string: derived from OP and K (128bit)
Neels Hofmeyrcab2fcd2017-03-15 00:07:43 +010077 sqn INTEGER NOT NULL DEFAULT 0, -- sequence number of key usage
Neels Hofmeyrf8ad67e2019-10-31 19:43:36 +010078 -- nr of index bits at lower SQN end
79 ind_bitlen INTEGER NOT NULL DEFAULT 5
Harald Weltee72cf552016-04-28 07:18:49 +020080);
81
Neels Hofmeyrdd73ccf2019-12-12 04:04:53 +010082CREATE TABLE ind (
83 -- 3G auth IND pool to be used for this VLR
84 ind INTEGER PRIMARY KEY,
85 -- VLR identification, usually the GSUP source_name
86 vlr TEXT NOT NULL,
87 UNIQUE (vlr)
88);
89
Neels Hofmeyr1971b672020-01-23 04:40:51 +010090CREATE TABLE proxy_auth_cache {
91 id INTEGER PRIMARY KEY,
92 vlr TEXT NOT NULL,
93 imsi TEXT NOT NULL,
94 sent_count INTEGER
95};
96
97CREATE TABLE proxy_auth_cache_vector {
98 -- belongs to this proxy_auth_cache entry
99 proxy_auth_cache_id INTEGER,
100 rand VARCHAR(32),
101 autn VARCHAR(32),
102 ck VARCHAR(32),
103 ik VARCHAR(32),
104 res VARCHAR(32),
105 kc[8] VARCHAR(16),
106 sres[4] VARCHAR(8),
107 -- enum osmo_sub_auth_type bitmask
108 auth_types INTEGER
109};
110
Stefan Sperling8f3a7cc2018-11-27 12:10:45 +0100111CREATE UNIQUE INDEX idx_subscr_imsi ON subscriber (imsi);
112
113-- Set HLR database schema version number
Stefan Sperling638ba8c2018-12-04 15:07:29 +0100114-- Note: This constant is currently duplicated in src/db.c and must be kept in sync!
Neels Hofmeyrdd73ccf2019-12-12 04:04:53 +0100115PRAGMA user_version = 6;