this patch will add paging timer configuration to network.
diff --git a/openbsc/include/openbsc/gsm_data.h
b/openbsc/include/openbsc/gsm_data.h
index 3040525..954fd60 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -283,7 +283,7 @@ struct gsm_paging_request {
gsm_cbfn *cbfn;
void *cbfn_param;
};
-#define T3113_VALUE 60, 0
+#define T3113_VALUE 60
/*
* This keeps track of the paging status of one BTS. It
@@ -410,6 +410,7 @@ struct gsm_network {
char *name_short;
enum gsm_auth_policy auth_policy;
int a5_encryption;
+ int tout_3113;
/* layer 4 */
int (*mncc_recv) (struct gsm_network *net, int msg_type, void
*arg);
diff --git a/openbsc/src/paging.c b/openbsc/src/paging.c
index 184ea0f..b542273 100644
--- a/openbsc/src/paging.c
+++ b/openbsc/src/paging.c
@@ -235,7 +235,7 @@ static int _paging_request(struct gsm_bts *bts,
struct gsm_subscriber *subscr,
req->cbfn_param = data;
req->T3113.cb = paging_T3113_expired;
req->T3113.data = req;
- bsc_schedule_timer(&req->T3113, T3113_VALUE);
+ bsc_schedule_timer(&req->T3113, bts->network->tout_3113 ? :
T3113_VALUE, 0);
llist_add_tail(&req->entry, &bts_entry->pending_requests);
if (!bsc_timer_pending(&bts_entry->work_timer))
diff --git a/openbsc/src/vty_interface.c b/openbsc/src/vty_interface.c
index 8dec579..95767bc 100644
--- a/openbsc/src/vty_interface.c
+++ b/openbsc/src/vty_interface.c
@@ -274,6 +274,10 @@ static int config_write_net(struct vty *vty)
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);
vty_out(vty, " encryption a5 %u%s", gsmnet->a5_encryption,
VTY_NEWLINE);
+ if (gsmnet->tout_3113)
+ vty_out(vty, " paging timeout %u%s", gsmnet->tout_3113,
VTY_NEWLINE);
+ else
+ vty_out(vty, " paging timeout default%s", VTY_NEWLINE);
return CMD_SUCCESS;
}
@@ -793,6 +797,24 @@ DEFUN(cfg_net_encryption,
return CMD_SUCCESS;
}
+DEFUN(cfg_net_paging_timeout,
+ cfg_net_paging_timeout_cmd,
+ "paging timeout (<1-65535>|default)",
+ "Set the paging timeout value (T3113) for this network\n")
+{
+ int tout = atoi(argv[0]);
+
+ if (tout < 0 || tout > 0xffff) {
+ vty_out(vty, "%% Value %d is not in the valid range
(1-65535 or 'default')%s",
+ tout, VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ gsmnet->tout_3113 = tout;
+
+ return CMD_SUCCESS;
+}
+
/* per-BTS configuration */
DEFUN(cfg_bts,
cfg_bts_cmd,
@@ -1232,6 +1254,7 @@ int bsc_vty_init(struct gsm_network *net)
install_element(GSMNET_NODE, &cfg_net_name_long_cmd);
install_element(GSMNET_NODE, &cfg_net_auth_policy_cmd);
install_element(GSMNET_NODE, &cfg_net_encryption_cmd);
+ install_element(GSMNET_NODE, &cfg_net_paging_timeout_cmd);
install_element(GSMNET_NODE, &cfg_bts_cmd);
install_node(&bts_node, config_write_bts);