pespin has uploaded this change for review.
5gc: Improve meaningful encoding of Source NG-RAN Node to Target NG-RAN Node Transparent Container
The RRC container is still left with wrong encoding (because it's not
NGAP, but RRC from 3GPP TS 38.331 and it's too much effort adding it).
It's fine leaving it as is since anyway the container is transparent to
the 5GC.
Change-Id: I275b1b551e0f9bea479effebef457deb3f750fc4
---
M 5gc/ConnHdlr.ttcn
M library/ngap/NGAP_EncDec.cc
M library/ngap/NGAP_Types.ttcn
3 files changed, 42 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/91/43791/1
diff --git a/5gc/ConnHdlr.ttcn b/5gc/ConnHdlr.ttcn
index 74a47a8..c7b93ea 100644
--- a/5gc/ConnHdlr.ttcn
+++ b/5gc/ConnHdlr.ttcn
@@ -1129,12 +1129,30 @@
var octetstring transfer_enc;
var template (value) PDUSessionResourceItemHORqd it;
var template (value) NGAP_PDU tx_pdu;
+ var template (value) SourceNGRANNode_ToTargetNGRANNode_TransparentContainer container;
+ var octetstring container_enc;
transfer := m_handoverRequiredTransfer(direct_forwarding_avail);
transfer_enc := enc_NGAP_HandoverRequiredTransfer(valueof(transfer));
it := m_pDUSessionResourceItemHORqd(g_pars.ue_pars.sess_pars.id,
transfer_enc);
+ container := m_sourceNGRANNode_ToTargetNGRANNode_TransparentContainer(
+ p_targetCell_ID := m_ngENB_ID_nR_CGI(g_pars.ngran_pars[g_pars.c5g_idx].cell_identity.nR_CGI),
+ p_rRCContainer := ''O /* TODO: TS 38.331 HandoverPreparationInformation */,
+ p_uEHistoryInformation := {
+ m_lastVisitedCellItem(
+ m_interSystemHandoverReportType_nGRANCell(
+ m_lastVisitedNGRANCellInformation(
+ p_globalCellID := m_ngENB_ID_nR_CGI(g_pars.ngran_pars[g_pars.c5g_idx].cell_identity.nR_CGI),
+ p_cellType := m_cellType(m_cellSize(medium)),
+ p_timeUEStayedInCell := 10
+ )
+ )
+ )
+ });
+ container_enc := enc_NGAP_SourceNGRANNode_ToTargetNGRANNode_TransparentContainer(valueof(container));
+
tx_pdu := m_ngap_initMsg(
f_m_n2_HandoverRequired(
g_pars.ue_pars.amf_id,
@@ -1144,7 +1162,7 @@
target_id,
direct_forwarding_avail,
{ it },
- '1234'O /* random string, transparent to the AMF */));
+ container_enc));
NGAP.send(tx_pdu);
}
diff --git a/library/ngap/NGAP_EncDec.cc b/library/ngap/NGAP_EncDec.cc
index d6d7ead..ae2f34f 100644
--- a/library/ngap/NGAP_EncDec.cc
+++ b/library/ngap/NGAP_EncDec.cc
@@ -229,4 +229,24 @@
return ret;
}
+OCTETSTRING enc__NGAP__SourceNGRANNode__ToTargetNGRANNode__TransparentContainer(const NGAP__IEs::SourceNGRANNode__ToTargetNGRANNode__TransparentContainer &p)
+{
+ TTCN_Buffer TTCN_buf;
+ TTCN_buf.clear();
+ p.encode(NGAP__IEs::SourceNGRANNode__ToTargetNGRANNode__TransparentContainer_descr_, TTCN_buf,
+ TTCN_EncDec::CT_PER, PER_ALIGNED);
+ return OCTETSTRING(TTCN_buf.get_len(), TTCN_buf.get_data());
+}
+
+NGAP__IEs::SourceNGRANNode__ToTargetNGRANNode__TransparentContainer dec__NGAP__SourceNGRANNode__ToTargetNGRANNode__TransparentContainer(const OCTETSTRING &stream)
+{
+ NGAP__IEs::SourceNGRANNode__ToTargetNGRANNode__TransparentContainer ret;
+ TTCN_Buffer TTCN_buf;
+ TTCN_buf.clear();
+ TTCN_buf.put_os(stream);
+ ret.decode(NGAP__IEs::SourceNGRANNode__ToTargetNGRANNode__TransparentContainer_descr_, TTCN_buf,
+ TTCN_EncDec::CT_PER, PER_ALIGNED);
+ return ret;
+}
+
}
diff --git a/library/ngap/NGAP_Types.ttcn b/library/ngap/NGAP_Types.ttcn
index 73378d1..78054bc 100644
--- a/library/ngap/NGAP_Types.ttcn
+++ b/library/ngap/NGAP_Types.ttcn
@@ -35,4 +35,7 @@
external function enc_NGAP_SecondaryRATDataUsageReportTransfer(NGAP_IEs.SecondaryRATDataUsageReportTransfer p) return octetstring;
external function dec_NGAP_SecondaryRATDataUsageReportTransfer(in octetstring pdu) return NGAP_IEs.SecondaryRATDataUsageReportTransfer;
+
+ external function enc_NGAP_SourceNGRANNode_ToTargetNGRANNode_TransparentContainer(NGAP_IEs.SourceNGRANNode_ToTargetNGRANNode_TransparentContainer p) return octetstring;
+ external function dec_NGAP_SourceNGRANNode_ToTargetNGRANNode_TransparentContainer(in octetstring pdu) return NGAP_IEs.SourceNGRANNode_ToTargetNGRANNode_TransparentContainer;
}
To view, visit change 43791. To unsubscribe, or for help writing mail filters, visit settings.