Attention is currently required from: k_o_.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/28248 )
Change subject: APDU parsing support for GlobalPlatform
......................................................................
Patch Set 1: Code-Review+2
(1 comment)
Patchset:
PS1:
> I think it is related the the Android carrier privileges using the GlobalPlatform access rules which […]
I don't think there really is any way to know the "direction" of the data phase without knowing the related command. Both parties (card and phone) must have a-priori knowledge on which of the two parties sends after the 5-byte TPDU header...
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/28248
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ib734fc852e7b63b9efdc414adccbd796a572eb55
Gerrit-Change-Number: 28248
Gerrit-PatchSet: 1
Gerrit-Owner: k_o_ <wider.stand(a)gmx.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Attention: k_o_ <wider.stand(a)gmx.de>
Gerrit-Comment-Date: Mon, 13 Jun 2022 19:09:01 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
Comment-In-Reply-To: k_o_ <wider.stand(a)gmx.de>
Gerrit-MessageType: comment
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ci/+/28265 )
Change subject: repo-install-test: get OBS pub key from proper URL
......................................................................
repo-install-test: get OBS pub key from proper URL
The public OBS key expired on 2022-05-22 and was replaced with a key
that was only shortly valid until 2022-06-08. Shortly after it was
replaced with a key that is valid longer, until 2024-08-02.
On 2022-06-09, one of the osmocom-repo-install tests started failing.
For some reason, the key in the latest/Debian_10 directory was not
updated to the latest one:
https://download.opensuse.org/repositories/network:/osmocom:/latest/Debian_…
Since the key is the same for all of network:osmocom, adjust the
function to download it from a place that the OBS web UI links to when
attempting to download the public GPG key.
I guess the latest/Debian_10/Release.key will get updated once making a
new release and updating the packages in the repository. But sinc
there's a lot of other tasks to do, just use this practical solution for
now.
Change-Id: Idd0fb6e07cba959a36269244b0c7b5c62aaffeee
---
M scripts/repo-install-test/run-inside-docker.sh
1 file changed, 2 insertions(+), 3 deletions(-)
Approvals:
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/scripts/repo-install-test/run-inside-docker.sh b/scripts/repo-install-test/run-inside-docker.sh
index e44c609..933adef 100755
--- a/scripts/repo-install-test/run-inside-docker.sh
+++ b/scripts/repo-install-test/run-inside-docker.sh
@@ -100,7 +100,6 @@
configure_osmocom_repo_debian() {
local proj="$1"
local obs_repo="download.opensuse.org/repositories/$(proj_with_slashes "$proj")/$DISTRO_OBSDIR/"
- local release_key="/var/cache/apt/${proj}_Release.key"
echo "Configuring Osmocom repository"
@@ -108,9 +107,9 @@
if ! [ -e "$release_key" ]; then
apt-get update
apt install -y wget
- wget -O "$release_key" "https://$obs_repo/Release.key"
+ wget -O /tmp/Release.key "https://build.opensuse.org/projects/network:osmocom/public_key"
fi
- apt-key add "$release_key"
+ apt-key add /tmp/Release.key
echo "deb http://$obs_repo ./" > "/etc/apt/sources.list.d/$proj.list"
apt-get update
--
To view, visit https://gerrit.osmocom.org/c/osmo-ci/+/28265
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ci
Gerrit-Branch: master
Gerrit-Change-Id: Idd0fb6e07cba959a36269244b0c7b5c62aaffeee
Gerrit-Change-Number: 28265
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/28272 )
Change subject: iuup: Check for IuUP Initialization retrans
......................................................................
iuup: Check for IuUP Initialization retrans
Since libosmocore.git Change-Id
I5cb740702805693cc7f0a550e2e093f9bfdd507c, the IuUP stack can send INIT
event more than once, it sends one each time an IuUP Initialization
message is received.
This is done since potentially a peer could send an Initialization
message at any time with a different subflow size configuration. So
ideally we should update all osmo-mgw state regarding codecs, and
forward the Init starting the procedure on the other conn of the
endpoint.
However, this scenario is most probably not going to happen right now
and it would be a lot of work to implement and test,
and subsequent INITs we received will almost surely come from
retransmissions of the initial Initialization message, which means
content will not really change.
Hence, it makes sense to simply drop the receive message (the IuUP stack
already takes care of re-ACKing it) and let the endpoint state continue
with its ongoing procedures.
Related: SYS#4705
Change-Id: Ib97bc6f57d265622e24a776b96f0a82c25d33d39
---
M src/libosmo-mgcp/mgcp_iuup.c
1 file changed, 11 insertions(+), 2 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
diff --git a/src/libosmo-mgcp/mgcp_iuup.c b/src/libosmo-mgcp/mgcp_iuup.c
index 120b330..142b002 100644
--- a/src/libosmo-mgcp/mgcp_iuup.c
+++ b/src/libosmo-mgcp/mgcp_iuup.c
@@ -365,13 +365,22 @@
int rc = 0;
struct msgb *msg;
- /* Find RFCI containing NO_DATA: */
- conn_rtp_src->iuup.rfci_id_no_data = _find_rfci_no_data(irp);
+ if (conn_rtp_src->iuup.init_ind) {
+ /* We received more than one IuUP Initialization. It's probably
+ * a retransmission, so simply ignore it (lower layers take care
+ * of ACKing it). */
+ LOGPCONN(conn_rtp_src->conn, DRTP, LOGL_INFO,
+ "Ignoring potential IuUP Initialization retrans\n");
+ return 0;
+ }
msg = msgb_copy_c(conn_rtp_src->conn, irp->oph.msg, "iuup-init-copy");
conn_rtp_src->iuup.init_ind = (struct osmo_iuup_rnl_prim *)msgb_data(msg);
conn_rtp_src->iuup.init_ind->oph.msg = msg;
+ /* Find RFCI containing NO_DATA: */
+ conn_rtp_src->iuup.rfci_id_no_data = _find_rfci_no_data(irp);
+
conn_dst = _find_dst_conn(conn_rtp_src->conn);
/* If not yet there, peer will potentially be IuUP-Initialized later
* when we attempt to bridge audio towards it. See bridge_iuup_to_iuup_peer() */
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/28272
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: Ib97bc6f57d265622e24a776b96f0a82c25d33d39
Gerrit-Change-Number: 28272
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged
laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/28271 )
Change subject: iuup: Fix Handling of subsequent Initialization msgs
......................................................................
iuup: Fix Handling of subsequent Initialization msgs
Once the IuUP FSM moved away from Init state, it stopped handling
Initialization messages received from peers and simply ignored them
starting from that point. As a result, if the first IuUP Init ACK it
sent to the peer was lost, the peer would keep retrying with more IuUP
Init and getting no answer.
In any case, it seems possible and desirable that a peer may send an
IuUP Init at a later point, as pointed out vaguely in 3GPP TS 25.415.
sec 6.5.2.1:
"""
Upon reception of a frame indicating that an Initialisation procedure is
active in the peer Iu UP entity, the Iu UP protocol layer forwards the whole
protocol information contained in the INITIALISATION control frame to the
upper layers. It also stores the RAB sub-Flow Combination set (and thus
replaces a possible previous set) in order to control during the transfer of
user data, that the Iu UP payload is correctly formatted (e.g. RFCI matches
the expected Iu UP frame payload total length). The peer Iu UP entity
receiving the INITIALISATION control frame shall choose a version that it
supports among the proposed versions indicated by the sender for which it
has enough initialisation information.
"""
sec B.2.2 "Initialisation State":
"""
After sending a positive acknowledgement of the last INITIALISATION control
frame, the Iu UP instance enters SMpSDU data transfer ready state. Note that
CN does not know if the initialisation ACK was correctly received by the RNC
(and Initialisation procedure successfully completed) until it receives RAB
assignment response, or use data from the RNC. The CN must therefore be able
to continue receiving INITIALISATION control frames by re-entering the
Initialisation state (from Support Mode Data Transfer Ready State), if the CN
has started to send user data before receiving the indication that
Initialisation was successfully completed
"""
sec B.2.3 "Support Mode Data Transfer Ready State":
"""
In case of handover or relocation, Initialisation procedures may have to be
performed and Iu UP instance may have to enter the initialisation state.
"""
Related: SYS#5995
Change-Id: I5cb740702805693cc7f0a550e2e093f9bfdd507c
---
M src/gsm/iuup.c
M tests/iuup/iuup_test.c
M tests/iuup/iuup_test.ok
3 files changed, 19 insertions(+), 13 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
diff --git a/src/gsm/iuup.c b/src/gsm/iuup.c
index 4c0a948..ca7eb2b 100644
--- a/src/gsm/iuup.c
+++ b/src/gsm/iuup.c
@@ -734,6 +734,7 @@
}
}
+/* 3GPP TS 25.415 B.2.3 "Support Mode Data Transfer Ready State" */
static void iuup_fsm_smpsdu_data(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
struct osmo_iuup_instance *iui = fi->priv;
@@ -745,6 +746,14 @@
irp = data;
osmo_fsm_inst_state_chg(fi, IUUP_FSM_ST_NULL, 0, 0);
break;
+ case IUUP_FSM_EVT_INIT:
+ /* "In case of handover or relocation, Initialisation procedures
+ * may have to be performed and Iu UP instance may have to enter
+ * the initialisation state." */
+ itp = data;
+ if (!iuup_rx_initialization(iui, itp))
+ osmo_fsm_inst_state_chg(fi, IUUP_FSM_ST_INIT, 0, 0);
+ break;
case IUUP_FSM_EVT_IUUP_DATA_REQ:
/* Data coming down from RNL (user) towards TNL (transport) */
irp = data;
@@ -821,6 +830,7 @@
},
[IUUP_FSM_ST_SMpSDU_DATA_XFER_READY] = {
.in_event_mask = S(IUUP_FSM_EVT_IUUP_CONFIG_REQ) |
+ S(IUUP_FSM_EVT_INIT) |
S(IUUP_FSM_EVT_IUUP_DATA_REQ) |
S(IUUP_FSM_EVT_IUUP_DATA_IND),
.out_state_mask = S(IUUP_FSM_ST_NULL) |
diff --git a/tests/iuup/iuup_test.c b/tests/iuup/iuup_test.c
index 5b55350..e40b9e7 100644
--- a/tests/iuup/iuup_test.c
+++ b/tests/iuup/iuup_test.c
@@ -541,12 +541,10 @@
switch (_passive_init_retrans_user_rx_prim) {
case 0:
- /* FIXME expected case: case 1: */
+ case 1:
OSMO_ASSERT(OSMO_PRIM_HDR(&irp->oph) == OSMO_PRIM(OSMO_IUUP_RNL_STATUS, PRIM_OP_INDICATION));
OSMO_ASSERT(irp->u.status.procedure == IUUP_PROC_INIT);
break;
- /* FIXME current case: */
- case 1:
case 2:
default:
OSMO_ASSERT(OSMO_PRIM_HDR(&irp->oph) == OSMO_PRIM(OSMO_IUUP_RNL_DATA, PRIM_OP_INDICATION));
@@ -603,14 +601,9 @@
tnp->oph.msg->l2h = msgb_put(tnp->oph.msg, sizeof(iuup_initialization));
hdr14 = (struct iuup_pdutype14_hdr *)msgb_l2(tnp->oph.msg);
memcpy(hdr14, iuup_initialization, sizeof(iuup_initialization));
- /* FIXME: unexpected result, should be fixed: */
- OSMO_ASSERT((rc = osmo_iuup_tnl_prim_up(iui, tnp)) < 0); /* INIT not perrmited */
- OSMO_ASSERT(_passive_init_transport_rx_prim == 1); /* We receive an Init ACK */
- OSMO_ASSERT(_passive_init_retrans_user_rx_prim == 1); /* We receive the Status-Init.ind */
- /* FIXME: expected result: */
- //OSMO_ASSERT((rc = osmo_iuup_tnl_prim_up(iui, tnp)) == 0);
- //OSMO_ASSERT(_passive_init_transport_rx_prim == 2); /* We receive another Init ACK */
- //OSMO_ASSERT(_passive_init_retrans_user_rx_prim == 2); /* We receive another Status-Init.ind */
+ OSMO_ASSERT((rc = osmo_iuup_tnl_prim_up(iui, tnp)) == 0);
+ OSMO_ASSERT(_passive_init_transport_rx_prim == 2); /* We receive another Init ACK */
+ OSMO_ASSERT(_passive_init_retrans_user_rx_prim == 2); /* We receive another Status-Init.ind */
/* Send IuUP incoming data to the implementation: */
tnp = osmo_iuup_tnl_prim_alloc(iuup_test_ctx, OSMO_IUUP_TNL_UNITDATA, PRIM_OP_INDICATION, IUUP_MSGB_SIZE);
@@ -619,7 +612,7 @@
memcpy(hdr0, iuup_data, sizeof(iuup_data));
OSMO_ASSERT((rc = osmo_iuup_tnl_prim_up(iui, tnp)) == 0);
/* We receive it in RNL: */
- OSMO_ASSERT(_passive_init_retrans_user_rx_prim == 2);
+ OSMO_ASSERT(_passive_init_retrans_user_rx_prim == 3);
/* Now in opposite direction, RNL->[IuuP]->TNL: */
rnp = osmo_iuup_rnl_prim_alloc(iuup_test_ctx, OSMO_IUUP_RNL_DATA, PRIM_OP_REQUEST, IUUP_MSGB_SIZE);
@@ -629,7 +622,7 @@
rnp->oph.msg->l3h = msgb_put(rnp->oph.msg, sizeof(iuup_data) - 4);
memcpy(rnp->oph.msg->l3h, iuup_data + 4, sizeof(iuup_data) - 4);
OSMO_ASSERT((rc = osmo_iuup_rnl_prim_down(iui, rnp)) == 0);
- OSMO_ASSERT(_passive_init_transport_rx_prim == 2); /* We receive data in TNL */
+ OSMO_ASSERT(_passive_init_transport_rx_prim == 3); /* We receive data in TNL */
osmo_iuup_instance_free(iui);
}
diff --git a/tests/iuup/iuup_test.ok b/tests/iuup/iuup_test.ok
index 93f6954..57baba9 100644
--- a/tests/iuup/iuup_test.ok
+++ b/tests/iuup/iuup_test.ok
@@ -48,6 +48,9 @@
_passive_init_transport_prim_cb()
Transport: DL len=4: e4 00 24 00
_passive_init_retrans_user_prim_cb()
+_passive_init_transport_prim_cb()
+Transport: DL len=4: e4 00 24 00
+_passive_init_retrans_user_prim_cb()
User: UL len=31: 08 55 6d 94 4c 71 a1 a0 81 e7 ea d2 04 24 44 80 00 0e cd 82 b8 11 18 00 00 97 c4 79 4e 77 40
_passive_init_transport_prim_cb()
Transport: DL len=35: 01 00 e3 ff 08 55 6d 94 4c 71 a1 a0 81 e7 ea d2 04 24 44 80 00 0e cd 82 b8 11 18 00 00 97 c4 79 4e 77 40
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/28271
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I5cb740702805693cc7f0a550e2e093f9bfdd507c
Gerrit-Change-Number: 28271
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged