diff options
Diffstat (limited to 'openbsc/src/gprs/sgsn_vty.c')
-rw-r--r-- | openbsc/src/gprs/sgsn_vty.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/openbsc/src/gprs/sgsn_vty.c b/openbsc/src/gprs/sgsn_vty.c index 4deb2acb4..1241c17e5 100644 --- a/openbsc/src/gprs/sgsn_vty.c +++ b/openbsc/src/gprs/sgsn_vty.c @@ -151,6 +151,10 @@ static int config_write_sgsn(struct vty *vty) llist_for_each_entry(acl, &g_cfg->imsi_acl, list) vty_out(vty, " imsi-acl add %s%s", acl->imsi, VTY_NEWLINE); + if (g_cfg->subscriber_expiry_timeout != SGSN_TIMEOUT_NEVER) + vty_out(vty, " subscriber-expiry-timeout %d%s", + g_cfg->subscriber_expiry_timeout, VTY_NEWLINE); + return CMD_SUCCESS; } @@ -401,6 +405,7 @@ static void subscr_dump_full_vty(struct vty *vty, struct gsm_subscriber *subscr, char expire_time[200]; struct gsm_auth_tuple *at; int at_idx; + struct timeval tv; vty_out(vty, " ID: %llu, Authorized: %d%s", subscr->id, subscr->authorized, VTY_NEWLINE); @@ -446,6 +451,17 @@ static void subscr_dump_full_vty(struct vty *vty, struct gsm_subscriber *subscr, vty_out(vty, " Expiration Time: %s%s", expire_time, VTY_NEWLINE); } + /* print the expiration time if the timer is active */ + if (osmo_timer_pending(&subscr->sgsn_data->timer)) { + osmo_timer_remaining(&subscr->sgsn_data->timer, NULL, &tv); + strftime(expire_time, sizeof(expire_time), + "%a, %d %b %Y %T %z", + localtime(&subscr->sgsn_data->timer.timeout.tv_sec)); + expire_time[sizeof(expire_time) - 1] = '\0'; + vty_out(vty, " Expires in: %ds (%s)%s", + (int)tv.tv_sec, expire_time, VTY_NEWLINE); + } + if (subscr->flags) vty_out(vty, " Flags: %s%s%s%s%s", subscr->flags & GSM_SUBSCRIBER_FIRST_CONTACT ? @@ -687,7 +703,24 @@ DEFUN(cfg_gsup_remote_port, cfg_gsup_remote_port_cmd, return CMD_SUCCESS; } +DEFUN(cfg_subscriber_expiry_timeout, cfg_subscriber_expiry_timeout_cmd, + "subscriber-expiry-timeout <0-999999>", + "Set the expiry time for unused subscriber entries\n" + "Expiry time in seconds\n") +{ + g_cfg->subscriber_expiry_timeout = atoi(argv[0]); + return CMD_SUCCESS; +} + +DEFUN(cfg_no_subscriber_expiry_timeout, cfg_no_subscriber_expiry_timeout_cmd, + "no subscriber-expiry-timeout", + NO_STR "Set the expiry time for unused subscriber entries\n") +{ + g_cfg->subscriber_expiry_timeout = atoi(argv[0]); + + return CMD_SUCCESS; +} int sgsn_vty_init(void) { @@ -716,6 +749,8 @@ int sgsn_vty_init(void) install_element(SGSN_NODE, &cfg_auth_policy_cmd); install_element(SGSN_NODE, &cfg_gsup_remote_ip_cmd); install_element(SGSN_NODE, &cfg_gsup_remote_port_cmd); + install_element(SGSN_NODE, &cfg_subscriber_expiry_timeout_cmd); + install_element(SGSN_NODE, &cfg_no_subscriber_expiry_timeout_cmd); return 0; } |