blob: a46fb16bbca55860dfa8ab8c9571a563a28cf6d1 [file] [log] [blame]
Pau Espin Pedrol58101ea2023-01-09 12:29:27 +01001/* MS authorization and subscriber data handling */
2#pragma once
3
4#include <osmocom/core/linuxlist.h>
5
6struct sgsn_config;
7struct sgsn_instance;
8struct sgsn_mm_ctx;
9struct gsm_auth_tuple;
10
11/* Authorization/ACL handling */
12enum sgsn_auth_state {
13 SGSN_AUTH_UNKNOWN,
14 SGSN_AUTH_AUTHENTICATE,
15 SGSN_AUTH_UMTS_RESYNC,
16 SGSN_AUTH_ACCEPTED,
17 SGSN_AUTH_REJECTED
18};
19
20extern const struct value_string *sgsn_auth_state_names;
21
22void sgsn_auth_init(struct sgsn_instance *sgsn);
23/* Request authorization */
24enum sgsn_auth_state sgsn_auth_state(struct sgsn_mm_ctx *mm);
25int sgsn_auth_request(struct sgsn_mm_ctx *mm);
26void sgsn_auth_update(struct sgsn_mm_ctx *mm);
27struct gsm_auth_tuple *sgsn_auth_get_tuple(struct sgsn_mm_ctx *mmctx,
28 unsigned key_seq);
29
30/*
31 * Authorization/ACL handling
32 */
33struct imsi_acl_entry {
34 struct llist_head list;
35 char imsi[OSMO_IMSI_BUF_SIZE];
36};
37struct imsi_acl_entry *sgsn_acl_lookup(const char *imsi, const struct sgsn_config *cfg);
38int sgsn_acl_add(const char *imsi, struct sgsn_config *cfg);
39int sgsn_acl_del(const char *imsi, struct sgsn_config *cfg);