diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-10-04 08:35:11 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-10-13 13:44:54 +0200 |
commit | 7634ec1de178f8bf0459973b0e863a6dc9949762 (patch) | |
tree | 3191458c92dd10b74e193218d8f499fcc8edebc3 /openbsc/src/libmsc/gsm_subscriber.c | |
parent | 0c48fc7c62e947f2934f7bfe10f2d01cbc0349c1 (diff) |
db: Remove the struct gsm_network from the database layer
The database code should not know about the network. Move the
setting of the network pointer into the subscriber layer.
Diffstat (limited to 'openbsc/src/libmsc/gsm_subscriber.c')
-rw-r--r-- | openbsc/src/libmsc/gsm_subscriber.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/openbsc/src/libmsc/gsm_subscriber.c b/openbsc/src/libmsc/gsm_subscriber.c index 5ace8f666..bc6f3cf55 100644 --- a/openbsc/src/libmsc/gsm_subscriber.c +++ b/openbsc/src/libmsc/gsm_subscriber.c @@ -78,6 +78,15 @@ enum { REQ_STATE_DISPATCHED, }; +static struct gsm_subscriber *get_subscriber(struct gsm_network *net, + int type, const char *ident) +{ + struct gsm_subscriber *subscr = db_get_subscriber(type, ident); + if (subscr) + subscr->net = net; + return subscr; +} + /* * We got the channel assigned and can now hand this channel * over to one of our callbacks. @@ -266,6 +275,14 @@ void subscr_put_channel(struct gsm_subscriber *subscr) subscr_send_paging_request(subscr); } +struct gsm_subscriber *subscr_create_subscriber(struct gsm_network *net, + const char *imsi) +{ + struct gsm_subscriber *subscr = db_create_subscriber(imsi); + if (subscr) + subscr->net = net; + return subscr; +} struct gsm_subscriber *subscr_get_by_tmsi(struct gsm_network *net, uint32_t tmsi) @@ -280,7 +297,7 @@ struct gsm_subscriber *subscr_get_by_tmsi(struct gsm_network *net, } sprintf(tmsi_string, "%u", tmsi); - return db_get_subscriber(net, GSM_SUBSCRIBER_TMSI, tmsi_string); + return get_subscriber(net, GSM_SUBSCRIBER_TMSI, tmsi_string); } struct gsm_subscriber *subscr_get_by_imsi(struct gsm_network *net, @@ -293,7 +310,7 @@ struct gsm_subscriber *subscr_get_by_imsi(struct gsm_network *net, return subscr_get(subscr); } - return db_get_subscriber(net, GSM_SUBSCRIBER_IMSI, imsi); + return get_subscriber(net, GSM_SUBSCRIBER_IMSI, imsi); } struct gsm_subscriber *subscr_get_by_extension(struct gsm_network *net, @@ -306,7 +323,7 @@ struct gsm_subscriber *subscr_get_by_extension(struct gsm_network *net, return subscr_get(subscr); } - return db_get_subscriber(net, GSM_SUBSCRIBER_EXTENSION, ext); + return get_subscriber(net, GSM_SUBSCRIBER_EXTENSION, ext); } struct gsm_subscriber *subscr_get_by_id(struct gsm_network *net, @@ -321,7 +338,7 @@ struct gsm_subscriber *subscr_get_by_id(struct gsm_network *net, return subscr_get(subscr); } - return db_get_subscriber(net, GSM_SUBSCRIBER_ID, buf); + return get_subscriber(net, GSM_SUBSCRIBER_ID, buf); } int subscr_update_expire_lu(struct gsm_subscriber *s, struct gsm_bts *bts) |