blob: e0c621bfa4816d9ecbca0798f75b06dba3c97fc5 [file] [log] [blame]
Harald Welte52b1f982008-12-23 20:25:15 +00001#ifndef _GSM_SUBSCR_H
2#define _GSM_SUBSCR_H
3
4#include <sys/types.h>
5#include "gsm_data.h"
Holger Freyther12aa50d2009-01-01 18:02:05 +00006#include "linuxlist.h"
Harald Welte52b1f982008-12-23 20:25:15 +00007
Jan Luebbefac25fc2008-12-27 18:04:34 +00008#define GSM_IMEI_LENGTH 17
Jan Luebbe5c15c852008-12-27 15:59:25 +00009#define GSM_IMSI_LENGTH 17
10#define GSM_TMSI_LENGTH 17
11#define GSM_NAME_LENGTH 128
Jan Luebbe391d86e2008-12-27 22:33:34 +000012#define GSM_EXTENSION_LENGTH 128
Jan Luebbe5c15c852008-12-27 15:59:25 +000013
Harald Welte52b1f982008-12-23 20:25:15 +000014struct gsm_subscriber {
Jan Luebbefac25fc2008-12-27 18:04:34 +000015 u_int64_t id;
Jan Luebbe5c15c852008-12-27 15:59:25 +000016 char imsi[GSM_IMSI_LENGTH];
17 char tmsi[GSM_TMSI_LENGTH];
18 u_int16_t lac;
19 char name[GSM_NAME_LENGTH];
Jan Luebbe391d86e2008-12-27 22:33:34 +000020 char extension[GSM_EXTENSION_LENGTH];
Jan Luebbe6e2e5452008-12-27 16:47:55 +000021 int authorized;
Holger Freyther12aa50d2009-01-01 18:02:05 +000022
23 /* for internal management */
24 int use_count;
25 struct llist_head entry;
Harald Welte52b1f982008-12-23 20:25:15 +000026};
27
Jan Luebbe5c15c852008-12-27 15:59:25 +000028enum gsm_subscriber_field {
29 GSM_SUBSCRIBER_IMSI,
30 GSM_SUBSCRIBER_TMSI,
Holger Freyther9c564b82009-02-09 23:39:20 +000031 GSM_SUBSCRIBER_EXTENSION,
Jan Luebbe5c15c852008-12-27 15:59:25 +000032};
Harald Welte52b1f982008-12-23 20:25:15 +000033
Holger Freyther12aa50d2009-01-01 18:02:05 +000034struct gsm_subscriber *subscr_get(struct gsm_subscriber *subscr);
35struct gsm_subscriber *subscr_put(struct gsm_subscriber *subscr);
Holger Freythera471a412009-01-04 03:47:05 +000036struct gsm_subscriber *subscr_get_by_tmsi(const char *tmsi);
37struct gsm_subscriber *subscr_get_by_imsi(const char *imsi);
Holger Freyther9c564b82009-02-09 23:39:20 +000038struct gsm_subscriber *subscr_get_by_extension(const char *ext);
Holger Freytherca362a62009-01-04 21:05:01 +000039int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts);
Holger Freythera471a412009-01-04 03:47:05 +000040
41/* internal */
42struct gsm_subscriber *subscr_alloc(void);
Holger Freyther12aa50d2009-01-01 18:02:05 +000043
Harald Welte52b1f982008-12-23 20:25:15 +000044#endif /* _GSM_SUBSCR_H */