add a authorization policy field to the network and VTY
this is not being used yet
This commit is contained in:
parent
a29216b1e1
commit
69de397ff4
|
@ -349,12 +349,19 @@ struct gsm_bts {
|
|||
struct llist_head trx_list;
|
||||
};
|
||||
|
||||
enum gsm_auth_policy {
|
||||
GSM_AUTH_POLICY_CLOSED, /* only subscribers authorized in DB */
|
||||
GSM_AUTH_POLICY_ACCEPT_ALL, /* accept everyone, even if not authorized in DB */
|
||||
GSM_AUTH_POLICY_TOKEN, /* accept first, send token per sms, then revoke authorization */
|
||||
};
|
||||
|
||||
struct gsm_network {
|
||||
/* global parameters */
|
||||
u_int16_t country_code;
|
||||
u_int16_t network_code;
|
||||
char *name_long;
|
||||
char *name_short;
|
||||
enum gsm_auth_policy auth_policy;
|
||||
|
||||
/* layer 4 */
|
||||
int (*mncc_recv) (struct gsm_network *net, int msg_type, void *arg);
|
||||
|
@ -444,4 +451,8 @@ static inline int is_siemens_bts(struct gsm_bts *bts)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
enum gsm_auth_policy gsm_auth_policy_parse(const char *arg);
|
||||
const char *gsm_auth_policy_name(enum gsm_auth_policy policy);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -320,3 +320,26 @@ enum gsm_band gsm_band_parse(const char* mhz)
|
|||
}
|
||||
}
|
||||
|
||||
static const char *gsm_auth_policy_names[] = {
|
||||
[GSM_AUTH_POLICY_CLOSED] = "closed",
|
||||
[GSM_AUTH_POLICY_ACCEPT_ALL] = "accept-all",
|
||||
[GSM_AUTH_POLICY_TOKEN] = "token",
|
||||
};
|
||||
|
||||
enum gsm_auth_policy gsm_auth_policy_parse(const char *arg)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < ARRAY_SIZE(gsm_auth_policy_names); i++) {
|
||||
if (!strcmp(arg, gsm_auth_policy_names[i]))
|
||||
return i;
|
||||
}
|
||||
return GSM_AUTH_POLICY_CLOSED;
|
||||
}
|
||||
|
||||
const char *gsm_auth_policy_name(enum gsm_auth_policy policy)
|
||||
{
|
||||
if (policy > ARRAY_SIZE(gsm_auth_policy_names))
|
||||
return "undefined";
|
||||
return gsm_auth_policy_names[policy];
|
||||
}
|
||||
|
||||
|
|
|
@ -91,6 +91,8 @@ static void net_dump_vty(struct vty *vty, struct gsm_network *net)
|
|||
net->name_long, VTY_NEWLINE);
|
||||
vty_out(vty, " Short network name: '%s'%s",
|
||||
net->name_short, VTY_NEWLINE);
|
||||
vty_out(vty, " Authentication policy: %s%s",
|
||||
gsm_auth_policy_name(net->auth_policy), VTY_NEWLINE);
|
||||
}
|
||||
|
||||
DEFUN(show_net, show_net_cmd, "show network",
|
||||
|
@ -261,6 +263,7 @@ static int config_write_net(struct vty *vty)
|
|||
vty_out(vty, " mobile network code %u%s", gsmnet->network_code, VTY_NEWLINE);
|
||||
vty_out(vty, " short name %s%s", gsmnet->name_short, VTY_NEWLINE);
|
||||
vty_out(vty, " long name %s%s", gsmnet->name_long, VTY_NEWLINE);
|
||||
vty_out(vty, " auth policy %s%s", gsm_auth_policy_name(gsmnet->auth_policy), VTY_NEWLINE);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
@ -771,6 +774,18 @@ DEFUN(cfg_net_name_long,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_net_auth_policy,
|
||||
cfg_net_auth_policy_cmd,
|
||||
"auth policy (closed|accept-all|token)",
|
||||
"Set the GSM network authentication policy\n")
|
||||
{
|
||||
enum gsm_auth_policy policy = gsm_auth_policy_parse(argv[0]);
|
||||
|
||||
gsmnet->auth_policy = policy;
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
/* per-BTS configuration */
|
||||
DEFUN(cfg_bts,
|
||||
cfg_bts_cmd,
|
||||
|
@ -1320,6 +1335,7 @@ int bsc_vty_init(struct gsm_network *net)
|
|||
install_element(GSMNET_NODE, &cfg_net_mnc_cmd);
|
||||
install_element(GSMNET_NODE, &cfg_net_name_short_cmd);
|
||||
install_element(GSMNET_NODE, &cfg_net_name_long_cmd);
|
||||
install_element(GSMNET_NODE, &cfg_net_auth_policy_cmd);
|
||||
|
||||
install_element(GSMNET_NODE, &cfg_bts_cmd);
|
||||
install_node(&bts_node, config_write_bts);
|
||||
|
|
Loading…
Reference in New Issue