Harald Welte | 52b1f98 | 2008-12-23 20:25:15 +0000 | [diff] [blame] | 1 | #ifndef _GSM_SUBSCR_H |
| 2 | #define _GSM_SUBSCR_H |
| 3 | |
| 4 | #include <sys/types.h> |
| 5 | #include "gsm_data.h" |
Holger Freyther | 12aa50d | 2009-01-01 18:02:05 +0000 | [diff] [blame] | 6 | #include "linuxlist.h" |
Harald Welte | 52b1f98 | 2008-12-23 20:25:15 +0000 | [diff] [blame] | 7 | |
Jan Luebbe | fac25fc | 2008-12-27 18:04:34 +0000 | [diff] [blame] | 8 | #define GSM_IMEI_LENGTH 17 |
Jan Luebbe | 5c15c85 | 2008-12-27 15:59:25 +0000 | [diff] [blame] | 9 | #define GSM_IMSI_LENGTH 17 |
| 10 | #define GSM_TMSI_LENGTH 17 |
| 11 | #define GSM_NAME_LENGTH 128 |
Jan Luebbe | 391d86e | 2008-12-27 22:33:34 +0000 | [diff] [blame] | 12 | #define GSM_EXTENSION_LENGTH 128 |
Jan Luebbe | 5c15c85 | 2008-12-27 15:59:25 +0000 | [diff] [blame] | 13 | |
Harald Welte | 52b1f98 | 2008-12-23 20:25:15 +0000 | [diff] [blame] | 14 | struct gsm_subscriber { |
Jan Luebbe | fac25fc | 2008-12-27 18:04:34 +0000 | [diff] [blame] | 15 | u_int64_t id; |
Jan Luebbe | 5c15c85 | 2008-12-27 15:59:25 +0000 | [diff] [blame] | 16 | char imsi[GSM_IMSI_LENGTH]; |
| 17 | char tmsi[GSM_TMSI_LENGTH]; |
| 18 | u_int16_t lac; |
| 19 | char name[GSM_NAME_LENGTH]; |
Jan Luebbe | 391d86e | 2008-12-27 22:33:34 +0000 | [diff] [blame] | 20 | char extension[GSM_EXTENSION_LENGTH]; |
Jan Luebbe | 6e2e545 | 2008-12-27 16:47:55 +0000 | [diff] [blame] | 21 | int authorized; |
Holger Freyther | 12aa50d | 2009-01-01 18:02:05 +0000 | [diff] [blame] | 22 | |
| 23 | /* for internal management */ |
| 24 | int use_count; |
| 25 | struct llist_head entry; |
Harald Welte | 52b1f98 | 2008-12-23 20:25:15 +0000 | [diff] [blame] | 26 | }; |
| 27 | |
Jan Luebbe | 5c15c85 | 2008-12-27 15:59:25 +0000 | [diff] [blame] | 28 | enum gsm_subscriber_field { |
| 29 | GSM_SUBSCRIBER_IMSI, |
| 30 | GSM_SUBSCRIBER_TMSI, |
Holger Freyther | 9c564b8 | 2009-02-09 23:39:20 +0000 | [diff] [blame] | 31 | GSM_SUBSCRIBER_EXTENSION, |
Jan Luebbe | 5c15c85 | 2008-12-27 15:59:25 +0000 | [diff] [blame] | 32 | }; |
Harald Welte | 52b1f98 | 2008-12-23 20:25:15 +0000 | [diff] [blame] | 33 | |
Holger Freyther | 12aa50d | 2009-01-01 18:02:05 +0000 | [diff] [blame] | 34 | struct gsm_subscriber *subscr_get(struct gsm_subscriber *subscr); |
| 35 | struct gsm_subscriber *subscr_put(struct gsm_subscriber *subscr); |
Holger Freyther | a471a41 | 2009-01-04 03:47:05 +0000 | [diff] [blame] | 36 | struct gsm_subscriber *subscr_get_by_tmsi(const char *tmsi); |
| 37 | struct gsm_subscriber *subscr_get_by_imsi(const char *imsi); |
Holger Freyther | 9c564b8 | 2009-02-09 23:39:20 +0000 | [diff] [blame] | 38 | struct gsm_subscriber *subscr_get_by_extension(const char *ext); |
Holger Freyther | ca362a6 | 2009-01-04 21:05:01 +0000 | [diff] [blame] | 39 | int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts); |
Holger Freyther | a471a41 | 2009-01-04 03:47:05 +0000 | [diff] [blame] | 40 | |
| 41 | /* internal */ |
| 42 | struct gsm_subscriber *subscr_alloc(void); |
Holger Freyther | 12aa50d | 2009-01-01 18:02:05 +0000 | [diff] [blame] | 43 | |
Harald Welte | 52b1f98 | 2008-12-23 20:25:15 +0000 | [diff] [blame] | 44 | #endif /* _GSM_SUBSCR_H */ |