diff options
-rw-r--r-- | doc/manuals/vty/msc_vty_reference.xml | 9 | ||||
-rw-r--r-- | include/osmocom/msc/msc_common.h | 1 | ||||
-rw-r--r-- | include/osmocom/msc/vlr.h | 8 | ||||
-rw-r--r-- | src/libmsc/msc_net_init.c | 1 | ||||
-rw-r--r-- | src/libvlr/vlr.c | 29 | ||||
-rw-r--r-- | tests/test_nodes.vty | 2 |
6 files changed, 22 insertions, 28 deletions
diff --git a/doc/manuals/vty/msc_vty_reference.xml b/doc/manuals/vty/msc_vty_reference.xml index 36cbf77a9..6418425f6 100644 --- a/doc/manuals/vty/msc_vty_reference.xml +++ b/doc/manuals/vty/msc_vty_reference.xml @@ -576,10 +576,11 @@ <param name='<0-65535>' doc='CI' /> </params> </command> - <command id='show timer [(mgw|mncc|sccp|geran|utran|sgs)] [TNNNN]'> + <command id='show timer [(vlr|mgw|mncc|sccp|geran|utran|sgs)] [TNNNN]'> <params> <param name='show' doc='Show running system information' /> <param name='timer' doc='Show timers' /> + <param name='[vlr]' doc='VLR (Visitors Location Register)' /> <param name='[mgw]' doc='MGW (Media Gateway) interface' /> <param name='[mncc]' doc='MNCC (Mobile Network Call Control) interface' /> <param name='[sccp]' doc='SCCP (Signalling Connection Control Part)' /> @@ -1405,10 +1406,11 @@ <param name='<0-65535>' doc='CI' /> </params> </command> - <command id='show timer [(mgw|mncc|sccp|geran|utran|sgs)] [TNNNN]'> + <command id='show timer [(vlr|mgw|mncc|sccp|geran|utran|sgs)] [TNNNN]'> <params> <param name='show' doc='Show running system information' /> <param name='timer' doc='Show timers' /> + <param name='[vlr]' doc='VLR (Visitors Location Register)' /> <param name='[mgw]' doc='MGW (Media Gateway) interface' /> <param name='[mncc]' doc='MNCC (Mobile Network Call Control) interface' /> <param name='[sccp]' doc='SCCP (Signalling Connection Control Part)' /> @@ -2936,9 +2938,10 @@ <param name='RAN_PC_OR_MSC_IPA_NAME' doc='Point code or MSC IPA name value' /> </params> </command> - <command id='timer [(mgw|mncc|sccp|geran|utran|sgs)] [TNNNN] [(<0-2147483647>|default)]'> + <command id='timer [(vlr|mgw|mncc|sccp|geran|utran|sgs)] [TNNNN] [(<0-2147483647>|default)]'> <params> <param name='timer' doc='Configure or show timers' /> + <param name='[vlr]' doc='VLR (Visitors Location Register)' /> <param name='[mgw]' doc='MGW (Media Gateway) interface' /> <param name='[mncc]' doc='MNCC (Mobile Network Call Control) interface' /> <param name='[sccp]' doc='SCCP (Signalling Connection Control Part)' /> diff --git a/include/osmocom/msc/msc_common.h b/include/osmocom/msc/msc_common.h index bd85722cd..8a43e69a3 100644 --- a/include/osmocom/msc/msc_common.h +++ b/include/osmocom/msc/msc_common.h @@ -10,6 +10,7 @@ struct gsm_network; struct vlr_subscr; extern struct osmo_tdef_group msc_tdef_group[]; +extern struct osmo_tdef msc_tdefs_vlr[]; #define MSC_HLR_REMOTE_IP_DEFAULT "127.0.0.1" #define MSC_HLR_REMOTE_PORT_DEFAULT OSMO_GSUP_PORT diff --git a/include/osmocom/msc/vlr.h b/include/osmocom/msc/vlr.h index d22e3ec41..615c6c874 100644 --- a/include/osmocom/msc/vlr.h +++ b/include/osmocom/msc/vlr.h @@ -252,13 +252,6 @@ struct vlr_ops { int (*subscr_assoc)(void *msc_conn_ref, struct vlr_subscr *vsub); }; -enum vlr_timer { - VLR_T_3250, - VLR_T_3260, - VLR_T_3270, - _NUM_VLR_TIMERS -}; - /* An instance of the VLR codebase */ struct vlr_instance { struct llist_head subscribers; @@ -275,7 +268,6 @@ struct vlr_instance { bool auth_reuse_old_sets_on_error; bool parq_retrieve_imsi; bool is_ps; - uint32_t timer[_NUM_VLR_TIMERS]; } cfg; /* A free-form pointer for use by the caller */ void *user_ctx; diff --git a/src/libmsc/msc_net_init.c b/src/libmsc/msc_net_init.c index ffb8a3ba4..8c8fb861a 100644 --- a/src/libmsc/msc_net_init.c +++ b/src/libmsc/msc_net_init.c @@ -41,6 +41,7 @@ struct osmo_tdef mncc_tdefs[] = { }; struct osmo_tdef_group msc_tdef_group[] = { + { .name = "vlr", .tdefs = msc_tdefs_vlr, .desc = "VLR (Visitors Location Register)" }, { .name = "mgw", .tdefs = g_mgw_tdefs, .desc = "MGW (Media Gateway) interface" }, { .name = "mncc", .tdefs = mncc_tdefs, .desc = "MNCC (Mobile Network Call Control) interface" }, { .name = "sccp", .tdefs = g_sccp_tdefs, .desc = "SCCP (Signalling Connection Control Part)" }, diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c index b164fd8f2..a1489f219 100644 --- a/src/libvlr/vlr.c +++ b/src/libvlr/vlr.c @@ -23,6 +23,7 @@ #include <osmocom/core/fsm.h> #include <osmocom/core/utils.h> #include <osmocom/core/timer.h> +#include <osmocom/core/tdef.h> #include <osmocom/gsm/protocol/gsm_04_08_gprs.h> #include <osmocom/gsm/gsup.h> #include <osmocom/gsm/apn.h> @@ -61,24 +62,20 @@ const struct value_string vlr_ciph_names[] = { { 0, NULL } }; +/* 3GPP TS 24.008, table 11.2 Mobility management timers (network-side) */ +struct osmo_tdef msc_tdefs_vlr[] = { + /* TODO: also define T3212 here */ + { .T = 3250, .default_val = 12, .desc = "TMSI Reallocation procedure" }, + { .T = 3260, .default_val = 12, .desc = "Authentication procedure" }, + { .T = 3270, .default_val = 12, .desc = "Identification procedure" }, + { /* terminator */ } +}; + +/* This is just a wrapper around the osmo_tdef API. + * TODO: we should start using osmo_tdef_fsm_inst_state_chg() */ uint32_t vlr_timer(struct vlr_instance *vlr, uint32_t timer) { - uint32_t tidx = 0xffffffff; - - switch (timer) { - case 3270: - tidx = VLR_T_3270; - break; - case 3260: - tidx = VLR_T_3260; - break; - case 3250: - tidx = VLR_T_3250; - break; - } - - OSMO_ASSERT(tidx < sizeof(vlr->cfg.timer)); - return vlr->cfg.timer[tidx]; + return osmo_tdef_get(msc_tdefs_vlr, timer, OSMO_TDEF_S, 0); } /* return static buffer with printable name of VLR subscriber */ diff --git a/tests/test_nodes.vty b/tests/test_nodes.vty index 2c2ce1b84..b87a3719d 100644 --- a/tests/test_nodes.vty +++ b/tests/test_nodes.vty @@ -69,7 +69,7 @@ OsmoMSC(config-msc)# list neighbor (a|iu) lac-ci <0-65535> <0-65535> (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME neighbor (a|iu) cgi <0-999> <0-999> <0-65535> <0-65535> (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME no neighbor (a|iu) (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME - timer [(mgw|mncc|sccp|geran|utran|sgs)] [TNNNN] [(<0-2147483647>|default)] + timer [(vlr|mgw|mncc|sccp|geran|utran|sgs)] [TNNNN] [(<0-2147483647>|default)] mgw local-ip A.B.C.D mgw local-port <0-65535> mgw remote-ip A.B.C.D |