blob: bb90705abb00558515f3db0d697088d0f8ec9d43 [file] [log] [blame]
Jan Luebbefaaa49c2008-12-27 01:07:07 +00001/* (C) 2008 by Jan Luebbe <jluebbe@debian.org>
Holger Freyther12aa50d2009-01-01 18:02:05 +00002 * (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
Jan Luebbefaaa49c2008-12-27 01:07:07 +00003 * All Rights Reserved
4 *
5 * This program is free software; you can redistribute it and/or modify
Harald Welte9af6ddf2011-01-01 15:25:50 +01006 * it under the terms of the GNU Affero General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
Jan Luebbefaaa49c2008-12-27 01:07:07 +00008 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Harald Welte9af6ddf2011-01-01 15:25:50 +010013 * GNU Affero General Public License for more details.
Jan Luebbefaaa49c2008-12-27 01:07:07 +000014 *
Harald Welte9af6ddf2011-01-01 15:25:50 +010015 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
Jan Luebbefaaa49c2008-12-27 01:07:07 +000017 *
18 */
19
20#ifndef _DB_H
21#define _DB_H
22
Maxe6052c42016-06-30 10:25:49 +020023#include <stdbool.h>
24
Holger Hans Peter Freyther81863cd2011-04-12 21:33:35 +020025#include "gsm_subscriber.h"
Jan Luebbefaaa49c2008-12-27 01:07:07 +000026
Holger Hans Peter Freyther28dcbc52010-12-22 18:21:14 +010027struct gsm_equipment;
28struct gsm_network;
29struct gsm_auth_info;
30struct gsm_auth_tuple;
31struct gsm_sms;
32struct gsm_subscriber;
33
Holger Freyther12aa50d2009-01-01 18:02:05 +000034/* one time initialisation */
Holger Freytherc7b86f92009-06-06 13:54:20 +000035int db_init(const char *name);
Harald Welted1476bc2011-07-16 13:24:09 +020036int db_prepare(void);
37int db_fini(void);
Jan Luebbefaaa49c2008-12-27 01:07:07 +000038
Holger Freyther12aa50d2009-01-01 18:02:05 +000039/* subscriber management */
Max0fcd2e22016-06-07 15:32:16 +020040struct gsm_subscriber *db_create_subscriber(const char *imsi, uint64_t smin,
Maxe6052c42016-06-30 10:25:49 +020041 uint64_t smax, bool alloc_exten);
Holger Hans Peter Freyther7634ec12013-10-04 08:35:11 +020042struct gsm_subscriber *db_get_subscriber(enum gsm_subscriber_field field,
Harald Welte9176bd42009-07-23 18:46:00 +020043 const char *subscr);
Holger Hans Peter Freyther76c64162010-10-04 23:28:28 +080044int db_sync_subscriber(struct gsm_subscriber *subscriber);
Jan Luebbebfbdeec2012-12-27 00:27:16 +010045int db_subscriber_expire(void *priv, void (*callback)(void *priv, long long unsigned int id));
Holger Hans Peter Freyther76c64162010-10-04 23:28:28 +080046int db_subscriber_alloc_tmsi(struct gsm_subscriber *subscriber);
Max0fcd2e22016-06-07 15:32:16 +020047int db_subscriber_alloc_exten(struct gsm_subscriber *subscriber, uint64_t smin,
48 uint64_t smax);
Holger Hans Peter Freytherc42ad8b2011-04-18 17:04:00 +020049int db_subscriber_alloc_token(struct gsm_subscriber *subscriber, uint32_t* token);
Holger Hans Peter Freyther76c64162010-10-04 23:28:28 +080050int db_subscriber_assoc_imei(struct gsm_subscriber *subscriber, char *imei);
Holger Hans Peter Freyther2d99eeb2014-03-23 14:01:08 +010051int db_subscriber_delete(struct gsm_subscriber *subscriber);
Holger Hans Peter Freyther34e97492009-08-10 07:54:02 +020052int db_sync_equipment(struct gsm_equipment *equip);
Holger Hans Peter Freytherabd0cac2010-12-22 18:12:11 +010053int db_subscriber_update(struct gsm_subscriber *subscriber);
Holger Hans Peter Freytherd883db02014-03-23 16:22:55 +010054int db_subscriber_list_active(void (*list_cb)(struct gsm_subscriber*,void*), void*);
Jan Luebbefaaa49c2008-12-27 01:07:07 +000055
Sylvain Munautc5f488b2009-12-27 19:25:22 +010056/* auth info */
Sylvain Munaut92b2ff52010-06-09 11:32:51 +020057int db_get_authinfo_for_subscr(struct gsm_auth_info *ainfo,
58 struct gsm_subscriber *subscr);
59int db_sync_authinfo_for_subscr(struct gsm_auth_info *ainfo,
Sylvain Munautc614a6a2010-06-09 13:03:39 +020060 struct gsm_subscriber *subscr);
Sylvain Munaut92b2ff52010-06-09 11:32:51 +020061int db_get_lastauthtuple_for_subscr(struct gsm_auth_tuple *atuple,
62 struct gsm_subscriber *subscr);
63int db_sync_lastauthtuple_for_subscr(struct gsm_auth_tuple *atuple,
64 struct gsm_subscriber *subscr);
Sylvain Munautc5f488b2009-12-27 19:25:22 +010065
Harald Welte7e310b12009-03-30 20:56:32 +000066/* SMS store-and-forward */
67int db_sms_store(struct gsm_sms *sms);
Holger Hans Peter Freyther812dad02010-12-24 23:18:31 +010068struct gsm_sms *db_sms_get(struct gsm_network *net, unsigned long long id);
Holger Hans Peter Freytherb464fb42010-03-25 09:59:30 +010069struct gsm_sms *db_sms_get_unsent(struct gsm_network *net, unsigned long long min_id);
Holger Hans Peter Freyther73b878a2010-12-25 00:33:40 +010070struct gsm_sms *db_sms_get_unsent_by_subscr(struct gsm_network *net, unsigned long long min_subscr_id, unsigned int failed);
Harald Welte2ebabca2009-08-09 19:05:21 +020071struct gsm_sms *db_sms_get_unsent_for_subscr(struct gsm_subscriber *subscr);
Alexander Chemeris1e77e3d2014-03-08 21:27:37 +010072int db_sms_mark_delivered(struct gsm_sms *sms);
Holger Hans Peter Freyther212e1052010-09-17 00:35:46 +080073int db_sms_inc_deliver_attempts(struct gsm_sms *sms);
Harald Welte (local)026531e2009-08-16 10:40:10 +020074
75/* APDU blob storage */
76int db_apdu_blob_store(struct gsm_subscriber *subscr,
Holger Hans Peter Freytherc42ad8b2011-04-18 17:04:00 +020077 uint8_t apdu_id_flags, uint8_t len,
78 uint8_t *apdu);
Harald Welteffa55a42009-12-22 19:07:32 +010079
80/* Statistics counter storage */
Pablo Neira Ayusodfb342c2011-05-06 12:13:10 +020081struct osmo_counter;
82int db_store_counter(struct osmo_counter *ctr);
Harald Weltef2b4cd72010-05-13 11:45:07 +020083struct rate_ctr_group;
84int db_store_rate_ctr_group(struct rate_ctr_group *ctrg);
Harald Welteffa55a42009-12-22 19:07:32 +010085
Jan Luebbefaaa49c2008-12-27 01:07:07 +000086#endif /* _DB_H */