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; |
Holger Freyther | 4a49e77 | 2009-04-12 05:37:29 +0000 | [diff] [blame] | 26 | struct gsm_bts *current_bts; |
Harald Welte | 52b1f98 | 2008-12-23 20:25:15 +0000 | [diff] [blame] | 27 | }; |
| 28 | |
Jan Luebbe | 5c15c85 | 2008-12-27 15:59:25 +0000 | [diff] [blame] | 29 | enum gsm_subscriber_field { |
| 30 | GSM_SUBSCRIBER_IMSI, |
| 31 | GSM_SUBSCRIBER_TMSI, |
Holger Freyther | 9c564b8 | 2009-02-09 23:39:20 +0000 | [diff] [blame] | 32 | GSM_SUBSCRIBER_EXTENSION, |
Jan Luebbe | 5c15c85 | 2008-12-27 15:59:25 +0000 | [diff] [blame] | 33 | }; |
Harald Welte | 52b1f98 | 2008-12-23 20:25:15 +0000 | [diff] [blame] | 34 | |
Holger Freyther | 4a49e77 | 2009-04-12 05:37:29 +0000 | [diff] [blame] | 35 | enum gsm_subscriber_update_reason { |
| 36 | GSM_SUBSCRIBER_UPDATE_ATTACHED, |
| 37 | GSM_SUBSCRIBER_UPDATE_DETACHED, |
| 38 | }; |
| 39 | |
Holger Freyther | 12aa50d | 2009-01-01 18:02:05 +0000 | [diff] [blame] | 40 | struct gsm_subscriber *subscr_get(struct gsm_subscriber *subscr); |
| 41 | struct gsm_subscriber *subscr_put(struct gsm_subscriber *subscr); |
Holger Freyther | a471a41 | 2009-01-04 03:47:05 +0000 | [diff] [blame] | 42 | struct gsm_subscriber *subscr_get_by_tmsi(const char *tmsi); |
| 43 | struct gsm_subscriber *subscr_get_by_imsi(const char *imsi); |
Holger Freyther | 9c564b8 | 2009-02-09 23:39:20 +0000 | [diff] [blame] | 44 | struct gsm_subscriber *subscr_get_by_extension(const char *ext); |
Holger Freyther | 4a49e77 | 2009-04-12 05:37:29 +0000 | [diff] [blame] | 45 | int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts, int reason); |
Holger Freyther | a1f92f0 | 2009-04-12 05:37:52 +0000 | [diff] [blame] | 46 | void subscr_put_channel(struct gsm_lchan *lchan); |
Holger Freyther | a471a41 | 2009-01-04 03:47:05 +0000 | [diff] [blame] | 47 | |
| 48 | /* internal */ |
| 49 | struct gsm_subscriber *subscr_alloc(void); |
Holger Freyther | 12aa50d | 2009-01-01 18:02:05 +0000 | [diff] [blame] | 50 | |
Harald Welte | 52b1f98 | 2008-12-23 20:25:15 +0000 | [diff] [blame] | 51 | #endif /* _GSM_SUBSCR_H */ |