sgsn: Remove explicit sgsn_instance parameters
Currently the function in sgsn_auth.c either have an sgsn_config or an sgsn_instance parameter. Since then global sgsn variable is already being used in that file and since other parts of the SGSN related code also rely on a global sgsn singleton, these parameters pretend to provide a flexibility that is not really supported. Therefore this patch removes these parameters except for the ACL related functions, which do not call code that uses the sgsn variable. Sponsored-by: On-Waves ehf
This commit is contained in:
parent
f951a01bb2
commit
a0b6efb368
|
@ -271,15 +271,14 @@ struct sgsn_config;
|
||||||
struct sgsn_instance;
|
struct sgsn_instance;
|
||||||
extern const struct value_string *sgsn_auth_state_names;
|
extern const struct value_string *sgsn_auth_state_names;
|
||||||
|
|
||||||
void sgsn_auth_init(struct sgsn_instance *sgi);
|
void sgsn_auth_init(void);
|
||||||
struct imsi_acl_entry *sgsn_acl_lookup(const char *imsi, struct sgsn_config *cfg);
|
struct imsi_acl_entry *sgsn_acl_lookup(const char *imsi, struct sgsn_config *cfg);
|
||||||
int sgsn_acl_add(const char *imsi, struct sgsn_config *cfg);
|
int sgsn_acl_add(const char *imsi, struct sgsn_config *cfg);
|
||||||
int sgsn_acl_del(const char *imsi, struct sgsn_config *cfg);
|
int sgsn_acl_del(const char *imsi, struct sgsn_config *cfg);
|
||||||
/* Request authorization */
|
/* Request authorization */
|
||||||
int sgsn_auth_request(struct sgsn_mm_ctx *mm, struct sgsn_config *cfg);
|
int sgsn_auth_request(struct sgsn_mm_ctx *mm);
|
||||||
enum sgsn_auth_state sgsn_auth_state(struct sgsn_mm_ctx *mm,
|
enum sgsn_auth_state sgsn_auth_state(struct sgsn_mm_ctx *mm);
|
||||||
struct sgsn_config *cfg);
|
void sgsn_auth_update(struct sgsn_mm_ctx *mm);
|
||||||
void sgsn_auth_update(struct sgsn_mm_ctx *mm, struct sgsn_instance *sgi);
|
|
||||||
|
|
||||||
/* Called on subscriber data updates */
|
/* Called on subscriber data updates */
|
||||||
void sgsn_update_subscriber_data(struct sgsn_mm_ctx *mmctx);
|
void sgsn_update_subscriber_data(struct sgsn_mm_ctx *mmctx);
|
||||||
|
|
|
@ -647,7 +647,7 @@ static int gsm48_gmm_authorize(struct sgsn_mm_ctx *ctx)
|
||||||
* sgsn_auth_update which in turn calls
|
* sgsn_auth_update which in turn calls
|
||||||
* gsm0408_gprs_access_granted or gsm0408_gprs_access_denied */
|
* gsm0408_gprs_access_granted or gsm0408_gprs_access_denied */
|
||||||
|
|
||||||
sgsn_auth_request(ctx, &sgsn->cfg);
|
sgsn_auth_request(ctx);
|
||||||
/* Note that gsm48_gmm_authorize can be called recursively via
|
/* Note that gsm48_gmm_authorize can be called recursively via
|
||||||
* sgsn_auth_request iff ctx->auth_info changes to AUTH_ACCEPTED
|
* sgsn_auth_request iff ctx->auth_info changes to AUTH_ACCEPTED
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -455,5 +455,5 @@ void sgsn_update_subscriber_data(struct sgsn_mm_ctx *mmctx)
|
||||||
{
|
{
|
||||||
OSMO_ASSERT(mmctx);
|
OSMO_ASSERT(mmctx);
|
||||||
|
|
||||||
sgsn_auth_update(mmctx, sgsn);
|
sgsn_auth_update(mmctx);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,9 +34,9 @@ const struct value_string auth_state_names[] = {
|
||||||
|
|
||||||
const struct value_string *sgsn_auth_state_names = auth_state_names;
|
const struct value_string *sgsn_auth_state_names = auth_state_names;
|
||||||
|
|
||||||
void sgsn_auth_init(struct sgsn_instance *sgi)
|
void sgsn_auth_init(void)
|
||||||
{
|
{
|
||||||
INIT_LLIST_HEAD(&sgi->cfg.imsi_acl);
|
INIT_LLIST_HEAD(&sgsn->cfg.imsi_acl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* temporary IMSI ACL hack */
|
/* temporary IMSI ACL hack */
|
||||||
|
@ -81,8 +81,7 @@ int sgsn_acl_del(const char *imsi, struct sgsn_config *cfg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum sgsn_auth_state sgsn_auth_state(struct sgsn_mm_ctx *mmctx,
|
enum sgsn_auth_state sgsn_auth_state(struct sgsn_mm_ctx *mmctx)
|
||||||
struct sgsn_config *cfg)
|
|
||||||
{
|
{
|
||||||
char mccmnc[16];
|
char mccmnc[16];
|
||||||
int check_net = 0;
|
int check_net = 0;
|
||||||
|
@ -125,22 +124,22 @@ enum sgsn_auth_state sgsn_auth_state(struct sgsn_mm_ctx *mmctx,
|
||||||
return SGSN_AUTH_REJECTED;
|
return SGSN_AUTH_REJECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sgsn_auth_request(struct sgsn_mm_ctx *mmctx, struct sgsn_config *cfg)
|
int sgsn_auth_request(struct sgsn_mm_ctx *mmctx)
|
||||||
{
|
{
|
||||||
/* TODO: Add remote subscriber update requests here */
|
/* TODO: Add remote subscriber update requests here */
|
||||||
|
|
||||||
sgsn_auth_update(mmctx, sgsn);
|
sgsn_auth_update(mmctx);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sgsn_auth_update(struct sgsn_mm_ctx *mmctx, struct sgsn_instance *sgi)
|
void sgsn_auth_update(struct sgsn_mm_ctx *mmctx)
|
||||||
{
|
{
|
||||||
enum sgsn_auth_state auth_state;
|
enum sgsn_auth_state auth_state;
|
||||||
|
|
||||||
LOGMMCTXP(LOGL_DEBUG, mmctx, "Updating authorization\n");
|
LOGMMCTXP(LOGL_DEBUG, mmctx, "Updating authorization\n");
|
||||||
|
|
||||||
auth_state = sgsn_auth_state(mmctx, &sgi->cfg);
|
auth_state = sgsn_auth_state(mmctx);
|
||||||
if (auth_state == SGSN_AUTH_UNKNOWN) {
|
if (auth_state == SGSN_AUTH_UNKNOWN) {
|
||||||
/* Reject requests since remote updates are NYI */
|
/* Reject requests since remote updates are NYI */
|
||||||
LOGMMCTXP(LOGL_ERROR, mmctx,
|
LOGMMCTXP(LOGL_ERROR, mmctx,
|
||||||
|
|
|
@ -345,7 +345,7 @@ int main(int argc, char **argv)
|
||||||
bssgp_vty_init();
|
bssgp_vty_init();
|
||||||
gprs_llc_vty_init();
|
gprs_llc_vty_init();
|
||||||
gprs_sndcp_vty_init();
|
gprs_sndcp_vty_init();
|
||||||
sgsn_auth_init(&sgsn_inst);
|
sgsn_auth_init();
|
||||||
/* FIXME: register signal handler for SS_L_NS */
|
/* FIXME: register signal handler for SS_L_NS */
|
||||||
|
|
||||||
rc = sgsn_parse_config(sgsn_inst.config_file, &sgsn_inst.cfg);
|
rc = sgsn_parse_config(sgsn_inst.config_file, &sgsn_inst.cfg);
|
||||||
|
|
|
@ -798,7 +798,7 @@ int main(int argc, char **argv)
|
||||||
tall_bsc_ctx = talloc_named_const(NULL, 0, "osmo_sgsn");
|
tall_bsc_ctx = talloc_named_const(NULL, 0, "osmo_sgsn");
|
||||||
tall_msgb_ctx = talloc_named_const(tall_bsc_ctx, 0, "msgb");
|
tall_msgb_ctx = talloc_named_const(tall_bsc_ctx, 0, "msgb");
|
||||||
|
|
||||||
sgsn_auth_init(sgsn);
|
sgsn_auth_init();
|
||||||
|
|
||||||
test_llme();
|
test_llme();
|
||||||
test_gmm_detach();
|
test_gmm_detach();
|
||||||
|
|
Reference in New Issue