hnodeb: Adapt HNBLIF to latest changes

Change-Id: I50a1b9be579ace9f0f85c6c68b5648d504f5f51c
This commit is contained in:
Pau Espin 2021-12-14 18:43:46 +01:00 committed by pespin
parent fbf3345065
commit 2514245bbd
3 changed files with 36 additions and 35 deletions

View File

@ -296,6 +296,7 @@ private function f_tc_cs_mo_call(charstring id) runs on HNBGW_ConnHdlr {
var HostName hnodeb_rtp_addr;
var PortNumber hnodeb_rtp_port;
timer Tu;
var uint32_t audio_conn_id;
f_handle_hnbap_hnb_register_req();
@ -317,8 +318,9 @@ private function f_tc_cs_mo_call(charstring id) runs on HNBGW_ConnHdlr {
/* Now LLSK provides the remote TransportLayerAddress from RabAssReq and asks SUT to provide a local address: */
LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_ESTABLISH_REQ(context_id, g_pars.hnbgw_rtp_port, HNBLL_IF_ADDR_TYPE_IPV4,
f_HNBLLIF_Addr(HNBLL_IF_ADDR_TYPE_IPV4, g_pars.hnbgw_addr))));
LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(context_id, 0, ?, HNBLL_IF_ADDR_TYPE_IPV4, ?))) -> value sd;
LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(context_id, ?, 0, ?, HNBLL_IF_ADDR_TYPE_IPV4, ?))) -> value sd;
audio_conn_id := sd.data.u.audio.u.conn_establish.u.cnf.audio_conn_id;
hnodeb_rtp_addr := f_inet_ntoa(sd.data.u.audio.u.conn_establish.u.cnf.local_addr);
if (not match(g_pars.hnodeb_addr, hnodeb_rtp_addr)) {
Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "hnodeb RTP local address doesn't match expectations");
@ -328,7 +330,7 @@ private function f_tc_cs_mo_call(charstring id) runs on HNBGW_ConnHdlr {
f_HNBGW_rtpem_activate(rtp_payload, hnodeb_rtp_addr, hnodeb_rtp_port);
/* Make sure that Uplink frames are received at the HNBGW */
RTPEM_DATA.clear;
LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_DATA_REQ(context_id, rtp_payload)));
LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_DATA_REQ(audio_conn_id, rtp_payload)));
Tu.start(2.0);
alt {
[] RTPEM_DATA.receive(PDU_RTP:?) -> value rtp_pdu {
@ -344,11 +346,11 @@ private function f_tc_cs_mo_call(charstring id) runs on HNBGW_ConnHdlr {
}
Tu.stop;
/* We should also have received some RTP from the HNBGW: */
LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_DATA_IND(context_id, rtp_payload)));
LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_DATA_IND(audio_conn_id, rtp_payload)));
f_rtpem_mode(RTPEM_CTRL, RTPEM_MODE_NONE);
LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(context_id)));
LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(audio_conn_id)));
/* UE sends Iu Release Complete to release the conn */
LLSK.send(f_llsk_tx(ts_HNBLLIF_IUH_CONN_RELEASE_REQ(context_id, 0, 0, 0, hex2oct(iu_release_compl))));
@ -371,6 +373,7 @@ private function f_tc_ps_mo_gtp_ping_pong(charstring id) runs on HNBGW_ConnHdlr
var uint32_t local_tei;
var octetstring gtp_payload := f_rnd_octstring(40);
var HNBLLIF_send_data sd;
var uint32_t gtp_conn_id;
f_gtp_register_teid(int2oct(remote_tei, 4));
@ -394,18 +397,19 @@ private function f_tc_ps_mo_gtp_ping_pong(charstring id) runs on HNBGW_ConnHdlr
/* Now LLSK provides the remote TransportLayerAddress from RabAssReq and asks SUT to provide a local address: */
LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_ESTABLISH_REQ(context_id, remote_tei, HNBLL_IF_ADDR_TYPE_IPV4,
f_HNBLLIF_Addr(HNBLL_IF_ADDR_TYPE_IPV4, g_pars.hnbgw_addr))));
LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(context_id, ?, 0,
LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(context_id, ?, ?, 0,
HNBLL_IF_ADDR_TYPE_IPV4, ?))) -> value sd;
gtp_conn_id := sd.data.u.gtp.u.conn_establish.u.cnf.gtp_conn_id;
local_tei := sd.data.u.gtp.u.conn_establish.u.cnf.local_tei;
/* Forward GTP data in both directions */
LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_DATA_REQ(context_id, remote_tei, gtp_payload)));
LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_DATA_REQ(gtp_conn_id, gtp_payload)));
GTP.receive(tr_GTPU_GPDU(ts_GtpPeerU(g_pars.hnodeb_addr), int2oct(remote_tei, 4), gtp_payload));
f_gtpu_send(local_tei, gtp_payload);
LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_DATA_IND(context_id, local_tei, gtp_payload)));
LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_DATA_IND(gtp_conn_id, gtp_payload)));
/* Done, release GTP conn */
LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_RELEASE_REQ(context_id, remote_tei)));
LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_RELEASE_REQ(gtp_conn_id)));
/* UE sends Iu Release Complete to release the conn */
LLSK.send(f_llsk_tx(ts_HNBLLIF_IUH_CONN_RELEASE_REQ(context_id, 1, 0, 0, hex2oct(iu_release_compl))));

View File

@ -279,6 +279,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_ESTABLISH_REQ(template (v
}
template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(template (present) uint32_t context_id := ?,
template (present) uint32_t audio_conn_id := ?,
template (present) uint8_t error_code := ?,
template (present) uint16_t local_rtp_port:= ?,
template (present) HNBLLIF_AddrType local_rtp_address_type := ?,
@ -293,6 +294,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(template
u := {
cnf := {
context_id := context_id,
audio_conn_id := audio_conn_id,
local_rtp_port := local_rtp_port,
error_code := error_code,
local_rtp_address_type := local_rtp_address_type,
@ -305,7 +307,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(template
}
}
template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (value) uint32_t context_id) := {
template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (value) uint32_t audio_conn_id) := {
sapi := HNBLL_IF_SAPI_AUDIO,
u := {
audio := {
@ -315,7 +317,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (val
op := HNBLL_IF_OP_REQUEST,
u := {
req := {
context_id := context_id
audio_conn_id := audio_conn_id
}
}
}
@ -324,7 +326,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (val
}
}
template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (present) uint32_t context_id := ?,
template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (present) uint32_t audio_conn_id := ?,
template (present) octetstring data := ?) := {
sapi := HNBLL_IF_SAPI_AUDIO,
u := {
@ -335,7 +337,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (pres
op := HNBLL_IF_OP_INDICATION,
u := {
ind := {
context_id := context_id,
audio_conn_id := audio_conn_id,
data_len := ?,
data := data
}
@ -346,7 +348,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (pres
}
}
template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_DATA_REQ(template (value) uint32_t context_id,
template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_DATA_REQ(template (value) uint32_t audio_conn_id,
template (value) octetstring data) := {
sapi := HNBLL_IF_SAPI_AUDIO,
u := {
@ -357,7 +359,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_DATA_REQ(template (value)
op := HNBLL_IF_OP_REQUEST,
u := {
req := {
context_id := context_id,
audio_conn_id := audio_conn_id,
data_len := lengthof(data),
data := data
}
@ -399,6 +401,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_ESTABLISH_REQ(template (val
}
template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(template (present) uint32_t context_id := ?,
template (present) uint32_t gtp_conn_id := ?,
template (present) uint32_t local_tei := ?,
template (present) uint8_t error_code := ?,
template (present) HNBLLIF_AddrType local_gtpu_address_type := ?,
@ -413,6 +416,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(template (p
u := {
cnf := {
context_id := context_id,
gtp_conn_id := gtp_conn_id,
local_tei := local_tei,
error_code := error_code,
local_gtpu_address_type := local_gtpu_address_type,
@ -425,8 +429,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(template (p
}
}
template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value) uint32_t context_id,
template (value) uint32_t remote_tei) := {
template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value) uint32_t gtp_conn_id) := {
sapi := HNBLL_IF_SAPI_GTP,
u := {
gtp := {
@ -436,8 +439,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value
op := HNBLL_IF_OP_REQUEST,
u := {
req := {
context_id := context_id,
remote_tei := remote_tei
gtp_conn_id := gtp_conn_id
}
}
}
@ -446,8 +448,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value
}
}
template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_DATA_IND(template (present) uint32_t context_id := ?,
template (present) uint32_t local_tei := ?,
template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_DATA_IND(template (present) uint32_t gtp_conn_id,
template (present) octetstring data := ?) := {
sapi := HNBLL_IF_SAPI_GTP,
u := {
@ -458,8 +459,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_DATA_IND(template (presen
op := HNBLL_IF_OP_INDICATION,
u := {
ind := {
context_id := context_id,
local_tei := local_tei,
gtp_conn_id := gtp_conn_id,
data_len := ?,
data := data
}
@ -470,8 +470,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_DATA_IND(template (presen
}
}
template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_DATA_REQ(template (value) uint32_t context_id,
template (value) uint32_t remote_tei,
template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_DATA_REQ(template (value) uint32_t gtp_conn_id,
template (value) octetstring data) := {
sapi := HNBLL_IF_SAPI_GTP,
u := {
@ -482,8 +481,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_DATA_REQ(template (value) u
op := HNBLL_IF_OP_REQUEST,
u := {
req := {
context_id := context_id,
remote_tei := remote_tei,
gtp_conn_id := gtp_conn_id,
data_len := lengthof(data),
data := data
}

View File

@ -252,6 +252,7 @@ type record HNBLLIF_AUDIO_conn_establish_req {
type record HNBLLIF_AUDIO_conn_establish_cnf {
uint32_t context_id,
uint32_t audio_conn_id,
uint16_t local_rtp_port,
uint8_t error_code,
HNBLLIF_AddrType local_rtp_address_type,
@ -273,7 +274,7 @@ type record HNBLLIF_AUDIO_PrimOp_conn_establish {
/* CONN_RELEASE */
type record HNBLLIF_AUDIO_conn_release_req {
uint32_t context_id
uint32_t audio_conn_id
} with { variant "" };
@ -290,13 +291,13 @@ type record HNBLLIF_AUDIO_PrimOp_conn_release {
/* CONN_DATA */
type record HNBLLIF_AUDIO_conn_data_ind {
uint32_t context_id,
uint32_t audio_conn_id,
uint32_t data_len,
octetstring data /* RANAP message */
} with { variant (data_len) "LENGTHTO (data)" };
type record HNBLLIF_AUDIO_conn_data_req {
uint32_t context_id,
uint32_t audio_conn_id,
uint32_t data_len,
octetstring data /* RANAP message */
} with { variant (data_len) "LENGTHTO (data)" };
@ -350,6 +351,7 @@ type record HNBLLIF_GTP_conn_establish_req {
type record HNBLLIF_GTP_conn_establish_cnf {
uint32_t context_id,
uint32_t gtp_conn_id,
uint32_t local_tei,
uint8_t error_code,
HNBLLIF_AddrType local_gtpu_address_type,
@ -371,8 +373,7 @@ type record HNBLLIF_GTP_PrimOp_conn_establish {
/* CONN_RELEASE */
type record HNBLLIF_GTP_conn_release_req {
uint32_t context_id,
uint32_t remote_tei
uint32_t gtp_conn_id
} with { variant "" };
type union HNBLLIF_GTP_PrimOpUnion_conn_release {
@ -388,15 +389,13 @@ type record HNBLLIF_GTP_PrimOp_conn_release {
/* CONN_DATA */
type record HNBLLIF_GTP_conn_data_req {
uint32_t context_id,
uint32_t remote_tei,
uint32_t gtp_conn_id,
uint32_t data_len,
octetstring data /* RANAP message */
} with { variant (data_len) "LENGTHTO (data)" };
type record HNBLLIF_GTP_conn_data_ind {
uint32_t context_id,
uint32_t local_tei,
uint32_t gtp_conn_id,
uint32_t data_len,
octetstring data /* RANAP message */
} with { variant (data_len) "LENGTHTO (data)" };