gbproxy: Improve NSEI/... numbering and improve paging test coverage

With this setup we can and do now test:
* Paging a LAI on BVC0 is sent once per matching NSE
* Paging a LAI on BVC0 is sent to multiple different matching NSE
* Paging a RA ID on BVC0 is sent once per matching NSE
* Paging a RA ID on BVC0 is sent to multiple different matching NSE

Change-Id: I698a932b3dc78c776e9350283109463bcdc40e6b
Related: SYS#5226
diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn
index 2233ece..1430af0 100644
--- a/gbproxy/GBProxy_Tests.ttcn
+++ b/gbproxy/GBProxy_Tests.ttcn
@@ -44,7 +44,7 @@
 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 @@
 			}
 		}
 	};
+	/* 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 @@
 							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 @@
 					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 @@
 					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 @@
 							},
 							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 @@
 							},
 							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 @@
 							},
 							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 @@
 /* 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 @@
 /* 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;