blob: b6ea9d2cb9ed6f11c7639c49d733ee612afb4fb7 [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
Jan Luebbe5c15c852008-12-27 15:59:25 +000023#include <sys/types.h>
Holger Hans Peter Freyther81863cd2011-04-12 21:33:35 +020024#include "gsm_subscriber.h"
Jan Luebbefaaa49c2008-12-27 01:07:07 +000025
Holger Hans Peter Freyther28dcbc52010-12-22 18:21:14 +010026struct gsm_equipment;
27struct gsm_network;
28struct gsm_auth_info;
29struct gsm_auth_tuple;
30struct gsm_sms;
31struct gsm_subscriber;
32
Holger Freyther12aa50d2009-01-01 18:02:05 +000033/* one time initialisation */
Holger Freytherc7b86f92009-06-06 13:54:20 +000034int db_init(const char *name);
Jan Luebbefaaa49c2008-12-27 01:07:07 +000035int db_prepare();
36int db_fini();
37
Holger Freyther12aa50d2009-01-01 18:02:05 +000038/* subscriber management */
Holger Hans Peter Freyther76c64162010-10-04 23:28:28 +080039struct gsm_subscriber *db_create_subscriber(struct gsm_network *net,
Harald Welte9176bd42009-07-23 18:46:00 +020040 char *imsi);
Holger Hans Peter Freyther76c64162010-10-04 23:28:28 +080041struct gsm_subscriber *db_get_subscriber(struct gsm_network *net,
Harald Welte9176bd42009-07-23 18:46:00 +020042 enum gsm_subscriber_field field,
43 const char *subscr);
Holger Hans Peter Freyther76c64162010-10-04 23:28:28 +080044int db_sync_subscriber(struct gsm_subscriber *subscriber);
45int db_subscriber_alloc_tmsi(struct gsm_subscriber *subscriber);
46int db_subscriber_alloc_exten(struct gsm_subscriber *subscriber);
Holger Hans Peter Freytherc42ad8b2011-04-18 17:04:00 +020047int db_subscriber_alloc_token(struct gsm_subscriber *subscriber, uint32_t* token);
Holger Hans Peter Freyther76c64162010-10-04 23:28:28 +080048int db_subscriber_assoc_imei(struct gsm_subscriber *subscriber, char *imei);
Holger Hans Peter Freyther34e97492009-08-10 07:54:02 +020049int db_sync_equipment(struct gsm_equipment *equip);
Holger Hans Peter Freytherabd0cac2010-12-22 18:12:11 +010050int db_subscriber_update(struct gsm_subscriber *subscriber);
Jan Luebbefaaa49c2008-12-27 01:07:07 +000051
Sylvain Munautc5f488b2009-12-27 19:25:22 +010052/* auth info */
Sylvain Munaut92b2ff52010-06-09 11:32:51 +020053int db_get_authinfo_for_subscr(struct gsm_auth_info *ainfo,
54 struct gsm_subscriber *subscr);
55int db_sync_authinfo_for_subscr(struct gsm_auth_info *ainfo,
Sylvain Munautc614a6a2010-06-09 13:03:39 +020056 struct gsm_subscriber *subscr);
Sylvain Munaut92b2ff52010-06-09 11:32:51 +020057int db_get_lastauthtuple_for_subscr(struct gsm_auth_tuple *atuple,
58 struct gsm_subscriber *subscr);
59int db_sync_lastauthtuple_for_subscr(struct gsm_auth_tuple *atuple,
60 struct gsm_subscriber *subscr);
Sylvain Munautc5f488b2009-12-27 19:25:22 +010061
Harald Welte7e310b12009-03-30 20:56:32 +000062/* SMS store-and-forward */
63int db_sms_store(struct gsm_sms *sms);
Holger Hans Peter Freyther812dad02010-12-24 23:18:31 +010064struct gsm_sms *db_sms_get(struct gsm_network *net, unsigned long long id);
Holger Hans Peter Freytherb464fb42010-03-25 09:59:30 +010065struct gsm_sms *db_sms_get_unsent(struct gsm_network *net, unsigned long long min_id);
Holger Hans Peter Freyther73b878a2010-12-25 00:33:40 +010066struct 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 +020067struct gsm_sms *db_sms_get_unsent_for_subscr(struct gsm_subscriber *subscr);
Harald Welte7e310b12009-03-30 20:56:32 +000068int db_sms_mark_sent(struct gsm_sms *sms);
Holger Hans Peter Freyther212e1052010-09-17 00:35:46 +080069int db_sms_inc_deliver_attempts(struct gsm_sms *sms);
Harald Welte (local)026531e2009-08-16 10:40:10 +020070
71/* APDU blob storage */
72int db_apdu_blob_store(struct gsm_subscriber *subscr,
Holger Hans Peter Freytherc42ad8b2011-04-18 17:04:00 +020073 uint8_t apdu_id_flags, uint8_t len,
74 uint8_t *apdu);
Harald Welteffa55a42009-12-22 19:07:32 +010075
76/* Statistics counter storage */
Harald Weltef2b4cd72010-05-13 11:45:07 +020077struct counter;
Harald Welteffa55a42009-12-22 19:07:32 +010078int db_store_counter(struct counter *ctr);
Harald Weltef2b4cd72010-05-13 11:45:07 +020079struct rate_ctr_group;
80int db_store_rate_ctr_group(struct rate_ctr_group *ctrg);
Harald Welteffa55a42009-12-22 19:07:32 +010081
Jan Luebbefaaa49c2008-12-27 01:07:07 +000082#endif /* _DB_H */