diff --git a/gbproxy/GBProxy_Tests.fr.cfg b/gbproxy/GBProxy_Tests.fr.cfg index 9b31dfd47..7b63125a4 100644 --- a/gbproxy/GBProxy_Tests.fr.cfg +++ b/gbproxy/GBProxy_Tests.fr.cfg @@ -20,7 +20,7 @@ GBProxy_Tests.mp_nsconfig_sgsn := { GBProxy_Tests.mp_nsconfig_pcu := { { - nsei := 1, + nsei := 2001, role_sgsn := false, handle_sns := false, nsvc := { @@ -58,30 +58,56 @@ GBProxy_Tests.mp_nsconfig_pcu := { nsvci := 4 } } - } -} -GBProxy_Tests.mp_gbconfigs := { - { - nsei := 1, - sgsn_role := false, - bvc := { - { - bvci := 196, - cell_id := { - ra_id := { - lai := { - mcc_mnc := '262F42'H, - lac := 13135 - }, - rac := 0 - }, - cell_id := 20960 - }, - depth := BSSGP_DECODE_DEPTH_BSSGP - } + }, + { + nsei := 2002, + role_sgsn := false, + handle_sns := false, + nsvc := { + { + provider := { + fr := { + netdev := "hdlc5", + dlci := 20 + } + }, + nsvci := 5 + }, { + provider := { + fr := { + netdev := "hdlc6", + dlci := 21 + } + }, + nsvci := 6 } } - }; + }, + { + nsei := 2003, + role_sgsn := false, + handle_sns := false, + nsvc := { + { + provider := { + fr := { + netdev := "hdlc7", + dlci := 22 + } + }, + nsvci := 7 + }, { + provider := { + fr := { + netdev := "hdlc8", + dlci := 23 + } + }, + nsvci := 8 + } + } + } +} [MAIN_CONTROLLER] diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn index 2233eceb6..1430af05a 100644 --- a/gbproxy/GBProxy_Tests.ttcn +++ b/gbproxy/GBProxy_Tests.ttcn @@ -44,7 +44,7 @@ const BcdMccMnc c_mcc_mnc := '262F42'H; const integer max_fr_info_size := 1600; modulepar { - /* IP/port on which we run our internal GSUP/HLR emulation */ + /* SGSN NS configuration */ NSConfigurations mp_nsconfig_sgsn := { { nsei := 101, @@ -66,9 +66,12 @@ modulepar { } } }; + /* BSS NSEI start at 2000 + x + * NSVCI start from value of NSEI + 100 + * UDP port is NSVCI * 10 */ NSConfigurations mp_nsconfig_pcu := { { - nsei := 96, + nsei := 2001, role_sgsn := false, handle_sns := false, nsvc := { @@ -82,12 +85,12 @@ modulepar { remote_ip := "127.0.0.1" } }, - nsvci := 97 + nsvci := 2101 } } }, { - nsei := 97, + nsei := 2002, role_sgsn := false, handle_sns := false, nsvc := { @@ -95,18 +98,18 @@ modulepar { provider := { ip := { address_family := AF_INET, - local_udp_port := 21011, + local_udp_port := 21020, local_ip := "127.0.0.1", remote_udp_port := 23000, remote_ip := "127.0.0.1" } }, - nsvci := 98 + nsvci := 2102 } } }, { - nsei := 98, + nsei := 2003, role_sgsn := false, handle_sns := false, nsvc := { @@ -114,24 +117,33 @@ modulepar { provider := { ip := { address_family := AF_INET, - local_udp_port := 21012, + local_udp_port := 21030, local_ip := "127.0.0.1", remote_udp_port := 23000, remote_ip := "127.0.0.1" } }, - nsvci := 99 + nsvci := 2103 } } } }; + /* BVCI are NSEI*10 + x + * The first NSE only has one BVC, the second one 2 and so on + * The Cell ID is BVCI + 10000 + * LAC/RAC are configured in such a way that: + * LAC 13135 is present once in NSE(2001), twice in NSE(2002) and once in NSE(2003) + * LAC 13300 is present twice in NSE(2003) + * RAI 13135-1 is present in NSE(2002) and NSE(2003) + * RAI 13300-0 is present twice in NSE(2003) + */ BssgpConfigs mp_gbconfigs := { { - nsei := 96, + nsei := 2001, sgsn_role := false, bvc := { { - bvci := 196, + bvci := 20011, cell_id := { ra_id := { lai := { @@ -140,18 +152,18 @@ modulepar { }, rac := 0 }, - cell_id := 20960 + cell_id := 30011 }, depth := BSSGP_DECODE_DEPTH_BSSGP, create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) } } }, { - nsei := 97, + nsei := 2002, sgsn_role := false, bvc := { { - bvci := 210, + bvci := 20021, cell_id := { ra_id := { lai := { @@ -160,18 +172,48 @@ modulepar { }, rac := 1 }, - cell_id := 20961 + cell_id := 30021 + }, + depth := BSSGP_DECODE_DEPTH_BSSGP, + create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) + }, + { + bvci := 20022, + cell_id := { + ra_id := { + lai := { + mcc_mnc := c_mcc_mnc, + lac := 13135 + }, + rac := 2 + }, + cell_id := 30022 }, depth := BSSGP_DECODE_DEPTH_BSSGP, create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) } } }, { - nsei := 98, + nsei := 2003, sgsn_role := false, bvc := { { - bvci := 220, + bvci := 20031, + cell_id := { + ra_id := { + lai := { + mcc_mnc := c_mcc_mnc, + lac := 13135 + }, + rac := 1 + }, + cell_id := 30031 + }, + depth := BSSGP_DECODE_DEPTH_BSSGP, + create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) + }, + { + bvci := 20032, cell_id := { ra_id := { lai := { @@ -180,7 +222,22 @@ modulepar { }, rac := 0 }, - cell_id := 20962 + cell_id := 30032 + }, + depth := BSSGP_DECODE_DEPTH_BSSGP, + create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) + }, + { + bvci := 20033, + cell_id := { + ra_id := { + lai := { + mcc_mnc := c_mcc_mnc, + lac := 13300 + }, + rac := 0 + }, + cell_id := 30033 }, depth := BSSGP_DECODE_DEPTH_BSSGP, create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) @@ -1354,8 +1411,13 @@ testcase TC_paging_ps_sig_bss() runs on test_CT { /* PS-PAGING on SIG-BVC for Location Area */ private function f_TC_paging_ps_sig_lac(charstring id) runs on BSSGP_ConnHdlr { - /* Both PCU index 0 and 1 have a BVC within the LAC */ - f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[0].cell_id.ra_id.lai), 0, {0, 1}); + /* The first LAC (13135) is shared by all three NSEs */ + f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[0].cell_id.ra_id.lai), 0, {0, 1, 2}); + /* Reset state */ + g_roi := {}; + /* Make LAC (13300) available on pcu index 2 */ + f_connect_to_pcu_bvc(port_idx := 2, nse_idx := 2, bvc_idx := 1); + f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[2].cell_id.ra_id.lai), 0, {2}); } testcase TC_paging_ps_sig_lac() runs on test_CT { var BSSGP_ConnHdlr vc_conn; @@ -1389,8 +1451,15 @@ testcase TC_paging_ps_sig_lac_unknown() runs on test_CT { /* PS-PAGING on SIG-BVC for Routeing Area */ private function f_TC_paging_ps_sig_rac(charstring id) runs on BSSGP_ConnHdlr { - /* Only PCU index 0 has a matching BVC within the LAC */ + /* Only PCU index 0 has a matching BVC with the RA ID */ f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[0].cell_id.ra_id), 0, {0}); + g_roi := {}; + /* PCU index 1 and 2 have a matching BVC with the RA ID */ + f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[2].cell_id.ra_id), 0, {1, 2}); + g_roi := {}; + /* PCU index 2 has two matching BVCs with the RA ID */ + f_connect_to_pcu_bvc(port_idx := 2, nse_idx := 2, bvc_idx := 1); + f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[2].cell_id.ra_id), 0, {2}); } testcase TC_paging_ps_sig_rac() runs on test_CT { var BSSGP_ConnHdlr vc_conn; diff --git a/gbproxy/osmo-gbproxy.fr.cfg b/gbproxy/osmo-gbproxy.fr.cfg index 5c5644bd4..dd73b7187 100644 --- a/gbproxy/osmo-gbproxy.fr.cfg +++ b/gbproxy/osmo-gbproxy.fr.cfg @@ -24,10 +24,14 @@ ns encapsulation udp local-port 23000 encapsulation framerelay-gre enabled 0 - nse 1 nsvci 1 frnet hdlcnet1 dlci 16 - nse 1 nsvci 2 frnet hdlcnet2 dlci 17 - nse 1 nsvci 3 frnet hdlcnet3 dlci 18 - nse 1 nsvci 4 frnet hdlcnet4 dlci 19 + nse 2001 nsvci 1 frnet hdlcnet1 dlci 16 + nse 2001 nsvci 2 frnet hdlcnet2 dlci 17 + nse 2001 nsvci 3 frnet hdlcnet3 dlci 18 + nse 2001 nsvci 4 frnet hdlcnet4 dlci 19 + nse 2002 nsvci 5 frnet hdlcnet5 dlci 20 + nse 2002 nsvci 6 frnet hdlcnet6 dlci 21 + nse 2003 nsvci 7 frnet hdlcnet7 dlci 22 + nse 2003 nsvci 8 frnet hdlcnet8 dlci 23 gbproxy sgsn nsei 101