blob: 27726a8f5fa5a0d41befaf18b62bec30355985a6 [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,
31};
Harald Welte52b1f982008-12-23 20:25:15 +000032
Holger Freyther12aa50d2009-01-01 18:02:05 +000033struct gsm_subscriber *subscr_get(struct gsm_subscriber *subscr);
34struct gsm_subscriber *subscr_put(struct gsm_subscriber *subscr);
Holger Freythera471a412009-01-04 03:47:05 +000035struct gsm_subscriber *subscr_get_by_tmsi(const char *tmsi);
36struct gsm_subscriber *subscr_get_by_imsi(const char *imsi);
37
38/* internal */
39struct gsm_subscriber *subscr_alloc(void);
Holger Freyther12aa50d2009-01-01 18:02:05 +000040
Harald Welte52b1f982008-12-23 20:25:15 +000041#endif /* _GSM_SUBSCR_H */