diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-05-30 15:06:55 +0200 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2017-02-23 22:27:37 +0100 |
commit | d3d7b3d517daade98d6981deee1e7c0e0d52be2e (patch) | |
tree | 56804d6a6e0da3893e13c54a7c36b9d1df5a240a /openbsc/src/libmsc/gsm_04_08.c | |
parent | 02ea176dff9e5b776a1c32499bdd8cb70aaac274 (diff) |
move subscr auth check to gsm_subscriber.c
add subscr_authorized(), subscr_authorized_imsi()
Change-Id: If2ef06b1229351127c61477ca14653d6ae4cb6bb
Diffstat (limited to 'openbsc/src/libmsc/gsm_04_08.c')
-rw-r--r-- | openbsc/src/libmsc/gsm_04_08.c | 37 |
1 files changed, 3 insertions, 34 deletions
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c index f643472e7..d92d570de 100644 --- a/openbsc/src/libmsc/gsm_04_08.c +++ b/openbsc/src/libmsc/gsm_04_08.c @@ -29,8 +29,6 @@ #include <errno.h> #include <time.h> #include <netinet/in.h> -#include <regex.h> -#include <sys/types.h> #include <openssl/rand.h> #include "bscconfig.h" @@ -300,19 +298,8 @@ int gsm48_secure_channel(struct gsm_subscriber_connection *conn, int key_seq, return -EINVAL; /* not reached */ } -static bool subscr_regexp_check(const struct gsm_network *net, const char *imsi) -{ - if (!net->authorized_reg_str) - return false; - - if (regexec(&net->authorized_regexp, imsi, 0, NULL, 0) != REG_NOMATCH) - return true; - - return false; -} - static bool authorize_subscriber(struct gsm_loc_updating_operation *loc, - struct gsm_subscriber *subscriber) + struct gsm_subscriber *subscriber) { if (!subscriber) { LOGP(DMM, LOGL_DEBUG, "authorize_subscriber() on NULL subscriber\n"); @@ -333,25 +320,7 @@ static bool authorize_subscriber(struct gsm_loc_updating_operation *loc, return false; } - switch (subscriber->group->net->auth_policy) { - case GSM_AUTH_POLICY_CLOSED: - return subscriber->authorized; - case GSM_AUTH_POLICY_REGEXP: - if (subscriber->authorized) - return true; - if (subscr_regexp_check(subscriber->group->net, - subscriber->imsi)) - subscriber->authorized = 1; - return subscriber->authorized; - case GSM_AUTH_POLICY_TOKEN: - if (subscriber->authorized) - return subscriber->authorized; - return (subscriber->flags & GSM_SUBSCRIBER_FIRST_CONTACT); - case GSM_AUTH_POLICY_ACCEPT_ALL: - return true; - default: - return false; - } + return subscr_authorized(subscriber); } static void release_loc_updating_req(struct gsm_subscriber_connection *conn, int release) @@ -599,7 +568,7 @@ static struct gsm_subscriber *subscr_create(const struct gsm_network *net, if (!net->auto_create_subscr) return NULL; - if (!subscr_regexp_check(net, imsi)) + if (!subscr_authorized_imsi(net, imsi)) return NULL; return subscr_create_subscriber(net->subscr_group, imsi); |