summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2020-11-19 17:39:27 +0100
committerDaniel Willmann <dwillmann@sysmocom.de>2020-11-19 17:39:27 +0100
commit5879792a41918141fa7827696051c66da6aca4c9 (patch)
tree63dc2eb6a8c933218d60a880f0f19e66e06aaece
parent20eb49266f5a7fc3356a49742ead5168687baf62 (diff)
WIP FLUSH_LLdaniel/gbproxy
-rw-r--r--gbproxy/GBProxy_Tests.ttcn26
-rw-r--r--library/Osmocom_Gb_Types.ttcn60
2 files changed, 86 insertions, 0 deletions
diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn
index bf777cc..63427df 100644
--- a/gbproxy/GBProxy_Tests.ttcn
+++ b/gbproxy/GBProxy_Tests.ttcn
@@ -861,6 +861,31 @@ testcase TC_resume() runs on test_CT
f_cleanup();
}
+private function f_TC_flush_ll(charstring id) runs on BSSGP_ConnHdlr {
+ var BssgpBvci bvci := g_pars.pcu[0].cfg.bvc[0].bvci;
+ var integer i;
+ for (i := 0; i < 10; i := i+1) {
+ /* TODO: Test ACK, correctly set old and new bvci and nsei
+ * Actually move the tlli to a different BVC and check that the tlli is now moved to the new BVC (e.g. through paging) */
+ var template (value) PDU_BSSGP pdu_tx := ts_BSSGP_FLUSH_LL(g_pars.tlli, bvci, omit, omit);
+ /* we cannot use pdu_tx as there are some subtle differences in the length field :/ */
+ var template (present) PDU_BSSGP pdu_rx := tr_BSSGP_FLUSH_LL(g_pars.tlli, bvci, omit, omit);
+
+ f_sgsn2pcu(pdu_tx, pdu_rx);
+ }
+ setverdict(pass);
+}
+testcase TC_flush_ll() runs on test_CT
+{
+ var BSSGP_ConnHdlr vc_conn;
+ f_init();
+
+ vc_conn := f_start_handler(refers(f_TC_flush_ll), testcasename(), g_pcu, g_sgsn, 6);
+ vc_conn.done;
+ /* TODO: start multiple handlers (UEs) on various cells on same and other NSEs */
+
+ f_cleanup();
+}
control {
execute( TC_BVC_bringup() );
@@ -871,6 +896,7 @@ control {
execute( TC_radio_status() );
execute( TC_suspend() );
execute( TC_resume() );
+ execute( TC_flush_ll() );
}
diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn
index da17e1a..27a3cab 100644
--- a/library/Osmocom_Gb_Types.ttcn
+++ b/library/Osmocom_Gb_Types.ttcn
@@ -777,6 +777,24 @@ octetstring sdu) := {
unstructured_value := f_oct_or_wc(bvci, 2)
}
+ template (value) NSEI_BSSGP ts_BSSGP_NSEI(template (value) Nsei nsei) := {
+ iEI:= '3E'O,
+ ext := '1'B,
+ lengthIndicator := {
+ length1 := 2
+ },
+ nSEI := f_oct_or_wc(nsei, 2)
+ }
+
+ template NSEI_BSSGP tr_BSSGP_NSEI(template Nsei nsei) := {
+ iEI:= '3E'O,
+ ext := '1'B,
+ lengthIndicator := {
+ length1 := 2
+ },
+ nSEI := f_oct_or_wc(nsei, 2)
+ }
+
template (value) TLLI_BSSGP ts_BSSGP_TLLI(template (value) GprsTlli tlli) := {
iEI := '1F'O,
ext := '1'B,
@@ -1683,6 +1701,48 @@ octetstring sdu) := {
}
}
+ /* 10.4.1 */
+ template (value) PDU_BSSGP ts_BSSGP_FLUSH_LL(GprsTlli tlli, template (value) BssgpBvci bvci_old,
+ template (omit) BssgpBvci bvci_new,
+ template (omit) Nsei nsei) := {
+ pDU_BSSGP_FLUSH_LL := {
+ bssgpPduType := '2B'O,
+ tLLI := ts_BSSGP_TLLI(tlli),
+ bVCI_old := t_BSSGP_BVCI(bvci_old),
+ bVCI_new := omit,
+ nSEI := omit
+ }
+ }
+ template PDU_BSSGP tr_BSSGP_FLUSH_LL(template GprsTlli tlli, template BssgpBvci bvci_old,
+ template (omit) BssgpBvci bvci_new,
+ template (omit) Nsei nsei) := {
+ pDU_BSSGP_FLUSH_LL := {
+ bssgpPduType := '2B'O,
+ tLLI := tr_BSSGP_TLLI(tlli),
+ bVCI_old := t_BSSGP_BVCI(bvci_old),
+ bVCI_new := t_BSSGP_BVCI(bvci_new),
+ nSEI := ?
+ }
+ }
+
+ /* 10.4.2 */
+/* template (value) PDU_BSSGP ts_BSSGP_FLUSH_LL_ACK(GprsTlli tlli, RoutingAreaIdentification ra_id)
+ := {
+ pDU_BSSGP_FLUSH_LL_ACK := {
+ bssgpPduType := '0F'O,
+ tLLI := ts_BSSGP_TLLI(tlli),
+ routeing_Area := ts_BSSGP_RA_ID(ra_id)
+ }
+ }
+ template PDU_BSSGP tr_BSSGP_FLUSH_LL_ACK(template GprsTlli tlli,
+ RoutingAreaIdentification ra_id) := {
+ pDU_BSSGP_FLUSH_LL_ACK := {
+ bssgpPduType := '0F'O,
+ tLLI := tr_BSSGP_TLLI(tlli),
+ routeing_Area := ts_BSSGP_RA_ID(ra_id)
+ }
+ }
+*/
/* 10.2.3 */
template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli,
template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {