dexter has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33639 )
Change subject: S1AP_Emulation: add missing create_cb
......................................................................
S1AP_Emulation: add missing create_cb
At the moment we do not have a default implementation for the create_cb.
The create_cb is called to resolve the vc_conn to which a subscriber
communication belongs in case it is not found in the S1apAssociationTable,
then it is resolved from an S1apExpectTable instead.
The current implementation uses the IMSI as key to resolve the vc_conn
from the S1apExpectTable, this might not work since in S1AP the UE
context is identfied by an MME_UE_S1AP_ID / ENB_UE_S1AP_ID pair.
Related: OS#5760
Change-Id: I758e7c8d8cc445cf18acdd7a25dcde8846fd84e5
---
M library/S1AP_Emulation.ttcn
M mme/MME_Tests.ttcn
2 files changed, 71 insertions(+), 42 deletions(-)
Approvals:
Jenkins Builder: Verified
dexter: Looks good to me, approved
diff --git a/library/S1AP_Emulation.ttcn b/library/S1AP_Emulation.ttcn
index 1f23b66..6221bf8 100644
--- a/library/S1AP_Emulation.ttcn
+++ b/library/S1AP_Emulation.ttcn
@@ -1,22 +1,25 @@
module S1AP_Emulation {
-/* S1AP Emulation, runs on top of S1AP_CodecPort. It multiplexes/demultiplexes
- * the individual IMSIs/subscribers, so there can be separate TTCN-3 components handling
- * each of them.
+/* S1AP Emulation, runs on top of S1AP_CodecPort. It multiplexes/demultiplexes
+ * the individual subscribers by their UE association (MME_UE_S1AP_ID/
+ * ENB_UE_S1AP_ID identifiers), so there can be separate TTCN-3 components
+ * handling each of them.
*
* The S1AP_Emulation.main() function processes S1AP primitives from the S1AP
- * socket via the S1AP_CodecPort, and dispatches them to the per-IMSI components.
+ * socket via the S1AP_CodecPort, and dispatches them to the per-subscriber
+ * components.
*
- * For each new IMSI, the S1apOps.create_cb() is called. It can create
- * or resolve a TTCN-3 component, and returns a component reference to which that IMSI
- * is routed/dispatched.
+ * For each new subscruber, the S1apOps.create_cb() is called. It can create
+ * or resolve a TTCN-3 component, and returns a component reference to which
+ * that subscriber traffic is routed/dispatched.
*
- * If a pre-existing component wants to register to handle a future inbound IMSI, it can
- * do so by registering an "expect" with the expected IMSI.
+ * If a pre-existing component wants to register to handle a future inbound UE
+ * association, it can do so by registering an "expect" with the expected
+ * MME_UE_S1AP_ID/ENB_UE_S1AP_ID identifiers.
*
- * Inbound non-UE related S1AP messages (such as RESET, SETUP, OVERLOAD) are dispatched to
- * the S1apOps.unitdata_cb() callback, which is registered with an argument to the
- * main() function below.
+ * Inbound non-UE related S1AP messages (such as RESET, SETUP, OVERLOAD) are
+ * dispatched to the S1apOps.unitdata_cb() callback, which is registered with
+ * an argument to the main() function below.
*
* (C) 2019 by Harald Welte <laforge(a)gnumonks.org>
* All rights reserved.
@@ -393,7 +396,8 @@
while (true) {
var S1AP_ConnHdlr vc_conn;
var PDU_NAS_EPS nas;
- var hexstring imsi;
+ var MME_UE_S1AP_ID mme_id;
+ var ENB_UE_S1AP_ID enb_id;
var S1AP_RecvFrom mrf;
var S1AP_PDU msg;
var S1APEM_Config s1cfg;
@@ -460,7 +464,7 @@
if (f_s1ap_ids_known(mme_ue_id, enb_ue_id)) {
/* if yes, dispatch to the ConnHdlr for this Ue-Connection */
var template (omit) octetstring nas_enc;
- var integer assoc_id := f_assoc_id_by_s1ap_ids(mme_ue_id, enb_ue_id);
+ var integer assoc_id := f_assoc_id_by_s1ap_ids(mme_ue_id, enb_ue_id);
vc_conn := S1apAssociationTable[assoc_id].comp_ref;
nas_enc := f_S1AP_get_NAS_PDU(mrf.msg);
if (isvalue(nas_enc)) {
@@ -484,9 +488,9 @@
}
[] S1AP.receive(tr_SctpAssocChange) { }
[] S1AP.receive(tr_SctpPeerAddrChange) { }
- [] S1AP_PROC.getcall(S1APEM_register:{?,?}) -> param(imsi, vc_conn) {
- f_create_expect(imsi, vc_conn);
- S1AP_PROC.reply(S1APEM_register:{imsi, vc_conn}) to vc_conn;
+ [] S1AP_PROC.getcall(S1APEM_register:{?,?,?}) -> param(mme_id, enb_id, vc_conn) {
+ f_create_expect(mme_id, enb_id, vc_conn);
+ S1AP_PROC.reply(S1APEM_register:{mme_id, enb_id, vc_conn}) to vc_conn;
}
}
@@ -496,30 +500,35 @@
/* "Expect" Handling */
type record ExpectData {
- hexstring imsi optional,
+ MME_UE_S1AP_ID mme_id optional,
+ ENB_UE_S1AP_ID enb_id optional,
S1AP_ConnHdlr vc_conn
}
-signature S1APEM_register(in hexstring imsi, in S1AP_ConnHdlr hdlr);
+signature S1APEM_register(in MME_UE_S1AP_ID mme_id, in ENB_UE_S1AP_ID enb_id, in S1AP_ConnHdlr hdlr);
type port S1APEM_PROC_PT procedure {
inout S1APEM_register;
} with { extension "internal" };
/* Function that can be used as create_cb and will use the expect table */
-function ExpectedCreateCallback(S1AP_PDU msg, hexstring imsi, charstring id)
+function ExpectedCreateCallback(S1AP_PDU msg,
+ template (omit) MME_UE_S1AP_ID mme_id,
+ template (omit) ENB_UE_S1AP_ID enb_id, charstring id)
runs on S1AP_Emulation_CT return S1AP_ConnHdlr {
var S1AP_ConnHdlr ret := null;
var integer i;
for (i := 0; i < sizeof(S1apExpectTable); i := i+1) {
- if (not ispresent(S1apExpectTable[i].imsi)) {
+ if (not ispresent(S1apExpectTable[i].mme_id) and not ispresent(S1apExpectTable[i].enb_id)) {
continue;
}
- if (imsi == S1apExpectTable[i].imsi) {
+
+ if (valueof(mme_id) == S1apExpectTable[i].mme_id and valueof(enb_id) == S1apExpectTable[i].enb_id) {
ret := S1apExpectTable[i].vc_conn;
/* Release this entry */
- S1apExpectTable[i].imsi := omit;
+ S1apExpectTable[i].mme_id := omit;
+ S1apExpectTable[i].enb_id := omit;
S1apExpectTable[i].vc_conn := null;
log("Found Expect[", i, "] for ", msg, " handled at ", ret);
return ret;
@@ -529,22 +538,28 @@
mtc.stop;
}
-private function f_create_expect(hexstring imsi, S1AP_ConnHdlr hdlr)
+private function f_create_expect(template (omit) MME_UE_S1AP_ID mme_id,
+ template (omit) ENB_UE_S1AP_ID enb_id,
+ S1AP_ConnHdlr hdlr)
runs on S1AP_Emulation_CT {
var integer i;
/* Check an entry like this is not already presnt */
for (i := 0; i < sizeof(S1apExpectTable); i := i+1) {
- if (imsi == S1apExpectTable[i].imsi) {
- setverdict(fail, "IMSI already present", imsi);
+ if (not ispresent(S1apExpectTable[i].mme_id) and not ispresent(S1apExpectTable[i].enb_id)) {
+ continue;
+ }
+ if (valueof(mme_id) == S1apExpectTable[i].mme_id and valueof(enb_id) == S1apExpectTable[i].enb_id) {
+ setverdict(fail, "UE MME id / UE ENB id pair already present", mme_id, enb_id);
mtc.stop;
}
}
for (i := 0; i < sizeof(S1apExpectTable); i := i+1) {
- if (not ispresent(S1apExpectTable[i].imsi)) {
- S1apExpectTable[i].imsi := imsi;
+ if (not ispresent(S1apExpectTable[i].mme_id) and not ispresent(S1apExpectTable[i].enb_id)) {
+ S1apExpectTable[i].mme_id := valueof(mme_id);
+ S1apExpectTable[i].enb_id := valueof(enb_id);
S1apExpectTable[i].vc_conn := hdlr;
- log("Created Expect[", i, "] for ", imsi, " to be handled at ", hdlr);
+ log("Created Expect[", i, "] for UE MME id:", mme_id, ", UE ENB id:", enb_id, " to be handled at ", hdlr);
return;
}
}
@@ -552,9 +567,10 @@
}
/* client/conn_hdlr side function to use procedure port to create expect in emulation */
-function f_create_s1ap_expect(hexstring imsi) runs on S1AP_ConnHdlr {
- S1AP_PROC.call(S1APEM_register:{imsi, self}) {
- [] S1AP_PROC.getreply(S1APEM_register:{?,?}) {};
+function f_create_s1ap_expect(template (omit) MME_UE_S1AP_ID mme_id,
+ template (omit) ENB_UE_S1AP_ID enb_id) runs on S1AP_ConnHdlr {
+ S1AP_PROC.call(S1APEM_register:{mme_id, enb_id, self}) {
+ [] S1AP_PROC.getreply(S1APEM_register:{?,?,?}) {};
}
}
@@ -563,7 +579,9 @@
runs on S1AP_Emulation_CT {
var integer i;
for (i := 0; i < sizeof(S1apExpectTable); i := i + 1) {
- S1apExpectTable[i].imsi := omit;
+ S1apExpectTable[i].mme_id := omit;
+ S1apExpectTable[i].enb_id := omit;
+ S1apExpectTable[i].vc_conn := null;
}
}
diff --git a/mme/MME_Tests.ttcn b/mme/MME_Tests.ttcn
index 14965e6..a389c3d 100644
--- a/mme/MME_Tests.ttcn
+++ b/mme/MME_Tests.ttcn
@@ -141,18 +141,10 @@
return omit;
}
-friend function S1apCreateCallback(S1AP_PDU msg, template (omit) MME_UE_S1AP_ID mme_id,
- template (omit) ENB_UE_S1AP_ID enb_id, charstring id)
-runs on S1AP_Emulation_CT return S1AP_ConnHdlr
-{
- setverdict(fail, "implement this");
- mtc.stop;
-}
-
friend function f_init_one_enb(charstring id, integer num := 0) runs on MTC_CT {
id := id & "-S1AP" & int2str(num);
var S1APOps ops := {
- create_cb := refers(S1apCreateCallback),
+ create_cb := refers(S1AP_Emulation.ExpectedCreateCallback),
unitdata_cb := refers(S1apForwardUnitdataCallback)
}
var S1AP_conn_parameters pars := {
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33639
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I758e7c8d8cc445cf18acdd7a25dcde8846fd84e5
Gerrit-Change-Number: 33639
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
Attention is currently required from: dexter.
Hello Jenkins Builder, laforge, pespin,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33639
to look at the new patch set (#2).
Change subject: S1AP_Emulation: add missing create_cb
......................................................................
S1AP_Emulation: add missing create_cb
At the moment we do not have a default implementation for the create_cb.
The create_cb is called to resolve the vc_conn to which a subscriber
communication belongs in case it is not found in the S1apAssociationTable,
then it is resolved from an S1apExpectTable instead.
The current implementation uses the IMSI as key to resolve the vc_conn
from the S1apExpectTable, this might not work since in S1AP the UE
context is identfied by an MME_UE_S1AP_ID / ENB_UE_S1AP_ID pair.
Related: OS#5760
Change-Id: I758e7c8d8cc445cf18acdd7a25dcde8846fd84e5
---
M library/S1AP_Emulation.ttcn
M mme/MME_Tests.ttcn
2 files changed, 71 insertions(+), 42 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/39/33639/2
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33639
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I758e7c8d8cc445cf18acdd7a25dcde8846fd84e5
Gerrit-Change-Number: 33639
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: newpatchset
dexter has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33638 )
(
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: S1AP_Emulation: delete UE association on S1AP_UeContextReleaseCmd
......................................................................
S1AP_Emulation: delete UE association on S1AP_UeContextReleaseCmd
When a S1AP_UeContextReleaseCmd is received, the UE association should
be deleted.
Related: OS#5760
Change-Id: I8c6f7a780945ce34dabdc794aabab5d16a3a73aa
---
M library/S1AP_Emulation.ttcn
1 file changed, 37 insertions(+), 3 deletions(-)
Approvals:
pespin: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/library/S1AP_Emulation.ttcn b/library/S1AP_Emulation.ttcn
index 0671d08..1f23b66 100644
--- a/library/S1AP_Emulation.ttcn
+++ b/library/S1AP_Emulation.ttcn
@@ -342,6 +342,29 @@
}
*/
+function handle_S1AP_UeContextReleaseCmd(template (present) S1AP_PDU rel_cmd) runs on S1AP_Emulation_CT {
+ if (ispresent(rel_cmd.initiatingMessage.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair)) {
+ var template MME_UE_S1AP_ID mme_ue_id;
+ var template ENB_UE_S1AP_ID enb_ue_id;
+ var integer assoc_id;
+ var S1AP_ConnHdlr vc_conn
+
+ mme_ue_id := rel_cmd.initiatingMessage.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair.mME_UE_S1AP_ID;
+ enb_ue_id := rel_cmd.initiatingMessage.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair.eNB_UE_S1AP_ID;
+
+ assoc_id := f_assoc_id_by_s1ap_ids(mme_ue_id, enb_ue_id);
+ vc_conn := S1apAssociationTable[assoc_id].comp_ref;
+
+ f_s1ap_id_table_del(vc_conn, valueof(enb_ue_id));
+ } else {
+ /* TODO: The UE CONTEXT RELEASE COMMAND (see also: 3GPP TS 36.413, section 9.1.4.6), may identify the
+ * context by either an uE_S1AP_ID_pair (MME_UE_S1AP_ID and ENB_UE_S1AP_ID) or an MME_UE_S1AP_ID alone.
+ * The latter case is not implemented here yet. */
+ setverdict(fail, "complete implementation of UeContextReleaseCmd handling");
+ mtc.stop;
+ }
+}
+
function main(S1APOps ops, S1AP_conn_parameters p, charstring id) runs on S1AP_Emulation_CT {
var Result res;
g_pars := p;
@@ -427,9 +450,7 @@
S1AP.send(t_S1AP_Send(g_s1ap_conn_id, valueof(resp)));
}
} else if (match(mrf.msg, tr_S1AP_UeContextReleaseCmd)) {
- /* TODO: special handling, as it contains multiple eNB or MME IDs */
- setverdict(fail, "implement UeContextReleaseCmd handling");
- mtc.stop;
+ handle_S1AP_UeContextReleaseCmd(mrf.msg);
} else {
/* Ue-related S1AP message */
/* obtain MME + ENB UE S1AP ID */
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33638
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I8c6f7a780945ce34dabdc794aabab5d16a3a73aa
Gerrit-Change-Number: 33638
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
dexter has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33637 )
(
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: S1AP_Emulation: fix f_s1ap_id_table_del
......................................................................
S1AP_Emulation: fix f_s1ap_id_table_del
When we search for the entry that we want to delete, we use the
ENB_UE_S1AP_ID as a search key, but we compare it against
mme_ue_s1ap_id. This is not correct, it should be compared against
enb_ue_s1ap_id
Change-Id: I8528af4e3fda0bc97f8b14785097434a6163bcc4
Related: OS#5760
---
M library/S1AP_Emulation.ttcn
1 file changed, 16 insertions(+), 1 deletion(-)
Approvals:
pespin: Looks good to me, approved
laforge: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/library/S1AP_Emulation.ttcn b/library/S1AP_Emulation.ttcn
index 0ecbd99..0671d08 100644
--- a/library/S1AP_Emulation.ttcn
+++ b/library/S1AP_Emulation.ttcn
@@ -253,7 +253,7 @@
var integer i;
for (i := 0; i < sizeof(S1apAssociationTable); i := i+1) {
if (S1apAssociationTable[i].comp_ref == comp_ref and
- S1apAssociationTable[i].mme_ue_s1ap_id == enb_id) {
+ S1apAssociationTable[i].enb_ue_s1ap_id == enb_id) {
S1apAssociationTable[i].enb_ue_s1ap_id := omit;
S1apAssociationTable[i].mme_ue_s1ap_id := omit;
S1apAssociationTable[i].comp_ref := null;
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33637
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I8528af4e3fda0bc97f8b14785097434a6163bcc4
Gerrit-Change-Number: 33637
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
Attention is currently required from: pespin.
dexter has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33636 )
Change subject: S1AP_Emulation: remove stray comment
......................................................................
Patch Set 1:
(1 comment)
Patchset:
PS1:
> You mean an IMSI should never be stored there?
Yes, the thing is that S1AP has an UE association that has an MME_UE_S1AP_ID / ENB_UE_S1AP_ID pair to identify a subscriber connection. We only have those identifiers in each UE oriented message, the IMSI does not appear very often.
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33636
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I55bfced12d573081311c55d363bfe7bd02fc816f
Gerrit-Change-Number: 33636
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Tue, 11 Jul 2023 10:37:41 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: laforge, fixeria, pespin.
dexter has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33634 )
Change subject: S1AP_Templates: fix tr_S1AP_SetupResp
......................................................................
Patch Set 1:
(1 comment)
File library/s1ap/S1AP_Templates.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33634/comment/111d34ec_ca98…
PS1, Line 116: *, {
> > Like in the preceding patch, there is only one *optional* `MME Name` IE. […]
I wonder if it is wise to match the IEs in any order. Usually one has to obey the order that that the spec dictates. Shouldn't we be strict about the order?
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33634
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I07513743142f519481530801d4e1185d55f6ea4b
Gerrit-Change-Number: 33634
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Tue, 11 Jul 2023 10:28:41 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de>
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: daniel.
osmith has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ci/+/33671 )
Change subject: ansible: Install liburing as osmocom build dep
......................................................................
Patch Set 1: Code-Review-1
(1 comment)
Patchset:
PS1:
We build everything in docker containers, not directly on the host. So this dependency needs to be added to the following docker containers in docker-playground.git instead:
* debian-bullseye-jenkins
* debian-bullseye-jenkins-arm
--
To view, visit https://gerrit.osmocom.org/c/osmo-ci/+/33671
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ci
Gerrit-Branch: master
Gerrit-Change-Id: I2535672959e307ef2fa184e2eaf54f883f5c78dc
Gerrit-Change-Number: 33671
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: daniel <dwillmann(a)sysmocom.de>
Gerrit-Comment-Date: Tue, 11 Jul 2023 09:26:17 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment