mirror of https://github.com/PentHertz/srsLTE.git
asn1: update procotol_ie_single_container interface to use -> operator instead of .value to access container content
This commit is contained in:
parent
6b181e7a94
commit
2d2a5bee03
|
@ -1476,10 +1476,9 @@ typedef enumerated<crit_opts> crit_e;
|
|||
template <class ies_set_paramT_>
|
||||
struct protocol_ie_single_container_s {
|
||||
using value_type = typename ies_set_paramT_::value_c;
|
||||
value_type value;
|
||||
|
||||
uint32_t id() const { return id_; }
|
||||
crit_e crit() const { return ies_set_paramT_::get_crit(id_); }
|
||||
uint32_t id() const { return ies_set_paramT_::idx_to_id(value.type().value); }
|
||||
crit_e crit() const { return ies_set_paramT_::get_crit(id()); }
|
||||
value_type* operator->() { return &value; }
|
||||
const value_type* operator->() const { return &value; }
|
||||
value_type& operator*() { return value; }
|
||||
|
@ -1487,23 +1486,24 @@ struct protocol_ie_single_container_s {
|
|||
|
||||
SRSASN_CODE pack(bit_ref& bref) const
|
||||
{
|
||||
HANDLE_CODE(pack_integer(bref, id_, (uint32_t)0u, (uint32_t)65535u, false, true));
|
||||
HANDLE_CODE(ies_set_paramT_::get_crit(id_).pack(bref));
|
||||
HANDLE_CODE(pack_integer(bref, id(), (uint32_t)0u, (uint32_t)65535u, false, true));
|
||||
HANDLE_CODE(crit().pack(bref));
|
||||
HANDLE_CODE(value.pack(bref));
|
||||
return SRSASN_SUCCESS;
|
||||
}
|
||||
SRSASN_CODE unpack(cbit_ref& bref)
|
||||
{
|
||||
HANDLE_CODE(unpack_integer(id_, bref, (uint32_t)0u, (uint32_t)65535u, false, true));
|
||||
uint32_t id_val;
|
||||
HANDLE_CODE(unpack_integer(id_val, bref, (uint32_t)0u, (uint32_t)65535u, false, true));
|
||||
HANDLE_CODE(crit().unpack(bref));
|
||||
value = ies_set_paramT_::get_value(id_);
|
||||
value = ies_set_paramT_::get_value(id_val);
|
||||
HANDLE_CODE(value.unpack(bref));
|
||||
return SRSASN_SUCCESS;
|
||||
}
|
||||
void to_json(json_writer& j) const
|
||||
{
|
||||
j.start_obj();
|
||||
j.write_int("id", id_);
|
||||
j.write_int("id", id());
|
||||
j.write_str("criticality", crit().to_string());
|
||||
j.end_obj();
|
||||
}
|
||||
|
@ -1512,13 +1512,12 @@ struct protocol_ie_single_container_s {
|
|||
if (not ies_set_paramT_::is_id_valid(id_val)) {
|
||||
return false;
|
||||
}
|
||||
id_ = id_val;
|
||||
value = ies_set_paramT_::get_value(id_);
|
||||
value = ies_set_paramT_::get_value(id_val);
|
||||
return value.type().value != ies_set_paramT_::value_c::types_opts::nulltype;
|
||||
}
|
||||
|
||||
private:
|
||||
uint32_t id_ = 0;
|
||||
value_type value;
|
||||
};
|
||||
|
||||
} // namespace asn1
|
||||
|
|
|
@ -26,21 +26,21 @@ template <>
|
|||
uint32_t get_obj_id<protocol_ie_single_container_s<erab_to_be_setup_item_ctxt_su_req_ies_o> >(
|
||||
const protocol_ie_single_container_s<erab_to_be_setup_item_ctxt_su_req_ies_o>& obj)
|
||||
{
|
||||
return obj.value.erab_to_be_setup_item_ctxt_su_req().erab_id;
|
||||
return obj->erab_to_be_setup_item_ctxt_su_req().erab_id;
|
||||
}
|
||||
|
||||
template <>
|
||||
uint32_t get_obj_id<protocol_ie_single_container_s<erab_to_be_setup_item_bearer_su_req_ies_o> >(
|
||||
const protocol_ie_single_container_s<erab_to_be_setup_item_bearer_su_req_ies_o>& obj)
|
||||
{
|
||||
return obj.value.erab_to_be_setup_item_bearer_su_req().erab_id;
|
||||
return obj->erab_to_be_setup_item_bearer_su_req().erab_id;
|
||||
}
|
||||
|
||||
template <>
|
||||
uint32_t get_obj_id<protocol_ie_single_container_s<erab_to_be_modified_item_bearer_mod_req_ies_o> >(
|
||||
const protocol_ie_single_container_s<erab_to_be_modified_item_bearer_mod_req_ies_o>& obj)
|
||||
{
|
||||
return obj.value.erab_to_be_modified_item_bearer_mod_req().erab_id;
|
||||
return obj->erab_to_be_modified_item_bearer_mod_req().erab_id;
|
||||
}
|
||||
|
||||
} // namespace s1ap
|
||||
|
|
|
@ -180,7 +180,7 @@ int test_ho_request()
|
|||
TESTASSERT(pdu.init_msg().crit.value == crit_opts::reject);
|
||||
auto& horeq = pdu.init_msg().value.ho_request().protocol_ies;
|
||||
|
||||
auto& erab_item = horeq.erab_to_be_setup_list_ho_req.value[0].value.erab_to_be_setup_item_ho_req();
|
||||
auto& erab_item = horeq.erab_to_be_setup_list_ho_req.value[0]->erab_to_be_setup_item_ho_req();
|
||||
TESTASSERT(erab_item.erab_id == 5);
|
||||
TESTASSERT(erab_item.gtp_teid.to_string() == "b7361c56");
|
||||
|
||||
|
@ -202,7 +202,7 @@ int test_enb_status_transfer()
|
|||
enb_status_transfer.enb_status_transfer_transparent_container.value.bearers_subject_to_status_transfer_list[0];
|
||||
|
||||
TESTASSERT(bearer.load_info_obj(ASN1_S1AP_ID_BEARERS_SUBJECT_TO_STATUS_TRANSFER_ITEM));
|
||||
auto& bearer_item = bearer.value.bearers_subject_to_status_transfer_item();
|
||||
auto& bearer_item = bearer->bearers_subject_to_status_transfer_item();
|
||||
|
||||
bearer_item.erab_id = 5;
|
||||
bearer_item.dl_coun_tvalue.pdcp_sn = 5;
|
||||
|
@ -225,7 +225,7 @@ int test_enb_status_transfer()
|
|||
pdu2.init_msg()
|
||||
.value.enb_status_transfer()
|
||||
.protocol_ies.enb_status_transfer_transparent_container.value.bearers_subject_to_status_transfer_list[0];
|
||||
auto& bearer_item2 = bearer2.value.bearers_subject_to_status_transfer_item();
|
||||
auto& bearer_item2 = bearer2->bearers_subject_to_status_transfer_item();
|
||||
TESTASSERT(bearer_item2.dl_coun_tvalue.hfn == bearer_item.dl_coun_tvalue.hfn);
|
||||
TESTASSERT(bearer_item2.dl_coun_tvalue.hfn == 0);
|
||||
|
||||
|
@ -275,7 +275,7 @@ int test_initial_ctxt_setup_response()
|
|||
// Fill in the GTP bind address for all bearers
|
||||
for (uint32_t i = 0; i < container.erab_setup_list_ctxt_su_res.value.size(); ++i) {
|
||||
container.erab_setup_list_ctxt_su_res.value[i].load_info_obj(ASN1_S1AP_ID_ERAB_SETUP_ITEM_CTXT_SU_RES);
|
||||
auto& item = container.erab_setup_list_ctxt_su_res.value[i].value.erab_setup_item_ctxt_su_res();
|
||||
auto& item = container.erab_setup_list_ctxt_su_res.value[i]->erab_setup_item_ctxt_su_res();
|
||||
item.erab_id = 1;
|
||||
// uint32_to_uint8(teid_in, item.gtp_teid.data());
|
||||
item.transport_layer_address.resize(32);
|
||||
|
|
|
@ -436,7 +436,7 @@ void rrc::ue::rrc_mobility::handle_ho_preparation_complete(rrc::ho_prep_result
|
|||
// Check if any E-RAB that was not admitted. Cancel Handover, in such case.
|
||||
if (msg.protocol_ies.erab_to_release_list_ho_cmd_present) {
|
||||
get_logger().warning("E-RAB id=%d was not admitted in target eNB. Cancelling handover...",
|
||||
msg.protocol_ies.erab_to_release_list_ho_cmd.value[0].value.erab_item().erab_id);
|
||||
msg.protocol_ies.erab_to_release_list_ho_cmd.value[0]->erab_item().erab_id);
|
||||
asn1::s1ap::cause_c cause;
|
||||
cause.set_radio_network().value = asn1::s1ap::cause_radio_network_opts::no_radio_res_available_in_target_cell;
|
||||
trigger(ho_cancel_ev{cause});
|
||||
|
@ -626,7 +626,7 @@ rrc::ue::rrc_mobility::s1_source_ho_st::start_enb_status_transfer(const asn1::s1
|
|||
const auto& fwd_erab_list = s1ap_ho_cmd.protocol_ies.erab_subjectto_data_forwarding_list.value;
|
||||
const auto& erab_list = rrc_ue->bearer_list.get_erabs();
|
||||
for (const auto& e : fwd_erab_list) {
|
||||
const auto& fwd_erab = e.value.erab_data_forwarding_item();
|
||||
const auto& fwd_erab = e->erab_data_forwarding_item();
|
||||
auto it = erab_list.find(fwd_erab.erab_id);
|
||||
if (it == erab_list.end()) {
|
||||
Warning("E-RAB id=%d subject to forwarding not found\n", fwd_erab.erab_id);
|
||||
|
@ -867,12 +867,12 @@ void rrc::ue::rrc_mobility::handle_ho_requested(idle_st& s, const ho_req_rx_ev&
|
|||
std::find_if(lst.begin(),
|
||||
lst.end(),
|
||||
[&erab](const asn1::protocol_ie_single_container_s<asn1::s1ap::erab_info_list_ies_o>& fwd_erab) {
|
||||
return fwd_erab.value.erab_info_list_item().erab_id == erab.second.id;
|
||||
return fwd_erab->erab_info_list_item().erab_id == erab.second.id;
|
||||
});
|
||||
if (it == lst.end()) {
|
||||
continue;
|
||||
}
|
||||
const auto& fwd_erab = it->value.erab_info_list_item();
|
||||
const auto& fwd_erab = (*it)->erab_info_list_item();
|
||||
|
||||
if (fwd_erab.dl_forwarding_present and
|
||||
fwd_erab.dl_forwarding.value == asn1::s1ap::dl_forwarding_opts::dl_forwarding_proposed) {
|
||||
|
@ -936,7 +936,7 @@ bool rrc::ue::rrc_mobility::apply_ho_prep_cfg(const ho_prep_info_r8_ies_s&
|
|||
|
||||
// Establish ERABs/DRBs
|
||||
for (const auto& erab_item : ho_req_msg.protocol_ies.erab_to_be_setup_list_ho_req.value) {
|
||||
const auto& erab = erab_item.value.erab_to_be_setup_item_ho_req();
|
||||
const auto& erab = erab_item->erab_to_be_setup_item_ho_req();
|
||||
if (erab.ext) {
|
||||
get_logger().warning("Not handling E-RABToBeSetupList extensions");
|
||||
}
|
||||
|
@ -1038,7 +1038,7 @@ void rrc::ue::rrc_mobility::handle_status_transfer(s1_target_ho_st& s, const sta
|
|||
|
||||
// Set DRBs SNs
|
||||
for (const auto& erab : erabs) {
|
||||
const auto& erab_item = erab.value.bearers_subject_to_status_transfer_item();
|
||||
const auto& erab_item = erab->bearers_subject_to_status_transfer_item();
|
||||
auto erab_it = rrc_ue->bearer_list.get_erabs().find(erab_item.erab_id);
|
||||
if (erab_it == rrc_ue->bearer_list.get_erabs().end()) {
|
||||
logger.warning("The E-RAB Id=%d is not recognized", erab_item.erab_id);
|
||||
|
|
|
@ -108,7 +108,7 @@ void fill_erab_failed_setup_list(OutList& output_list, const s1ap::erab_item_lis
|
|||
output_list.resize(input_list.size());
|
||||
for (size_t i = 0; i < input_list.size(); ++i) {
|
||||
output_list[i].load_info_obj(ASN1_S1AP_ID_ERAB_ITEM);
|
||||
output_list[i].value.erab_item() = input_list[i];
|
||||
output_list[i]->erab_item() = input_list[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -790,7 +790,7 @@ bool s1ap::handle_initialctxtsetuprequest(const init_context_setup_request_s& ms
|
|||
add_repeated_erab_ids(prot_ies.erab_to_be_setup_list_ctxt_su_req.value, failed_cfg_erabs);
|
||||
|
||||
for (const auto& item : msg.protocol_ies.erab_to_be_setup_list_ctxt_su_req.value) {
|
||||
const auto& erab = item.value.erab_to_be_setup_item_ctxt_su_req();
|
||||
const auto& erab = item->erab_to_be_setup_item_ctxt_su_req();
|
||||
if (contains_erab_id(failed_cfg_erabs, erab.erab_id)) {
|
||||
// E-RAB is duplicate
|
||||
continue;
|
||||
|
@ -869,7 +869,7 @@ bool s1ap::handle_erabsetuprequest(const erab_setup_request_s& msg)
|
|||
add_repeated_erab_ids(msg.protocol_ies.erab_to_be_setup_list_bearer_su_req.value, failed_cfg_erabs);
|
||||
|
||||
for (const auto& item : msg.protocol_ies.erab_to_be_setup_list_bearer_su_req.value) {
|
||||
const auto& erab = item.value.erab_to_be_setup_item_bearer_su_req();
|
||||
const auto& erab = item->erab_to_be_setup_item_bearer_su_req();
|
||||
if (contains_erab_id(failed_cfg_erabs, erab.erab_id)) {
|
||||
// E-RAB is duplicate
|
||||
continue;
|
||||
|
@ -929,7 +929,7 @@ bool s1ap::handle_erabmodifyrequest(const erab_modify_request_s& msg)
|
|||
add_repeated_erab_ids(msg.protocol_ies.erab_to_be_modified_list_bearer_mod_req.value, failed_cfg_erabs);
|
||||
|
||||
for (const auto& item : msg.protocol_ies.erab_to_be_modified_list_bearer_mod_req.value) {
|
||||
const auto& erab = item.value.erab_to_be_modified_item_bearer_mod_req();
|
||||
const auto& erab = item->erab_to_be_modified_item_bearer_mod_req();
|
||||
if (contains_erab_id(failed_cfg_erabs, erab.erab_id)) {
|
||||
// E-RAB is duplicate
|
||||
continue;
|
||||
|
@ -985,7 +985,7 @@ bool s1ap::handle_erabreleasecommand(const erab_release_cmd_s& msg)
|
|||
}));
|
||||
};
|
||||
for (const auto& item : msg.protocol_ies.erab_to_be_released_list.value) {
|
||||
const auto& erab = item.value.erab_item();
|
||||
const auto& erab = item->erab_item();
|
||||
|
||||
if (is_repeated_erab_id(erab.erab_id)) {
|
||||
// TS 36.413, 8.2.3.3 - ignore the duplication of E-RAB ID IEs
|
||||
|
@ -1243,7 +1243,7 @@ bool s1ap::send_ho_req_ack(const asn1::s1ap::ho_request_s& msg,
|
|||
container.erab_admitted_list.value.resize(admitted_bearers.size());
|
||||
for (size_t i = 0; i < admitted_bearers.size(); ++i) {
|
||||
container.erab_admitted_list.value[i].load_info_obj(ASN1_S1AP_ID_ERAB_ADMITTED_ITEM);
|
||||
auto& c = container.erab_admitted_list.value[i].value.erab_admitted_item();
|
||||
auto& c = container.erab_admitted_list.value[i]->erab_admitted_item();
|
||||
c = admitted_bearers[i];
|
||||
if (!args.gtp_advertise_addr.empty()) {
|
||||
c.transport_layer_address = addr_to_asn1(args.gtp_advertise_addr.c_str());
|
||||
|
@ -1269,7 +1269,7 @@ bool s1ap::send_ho_req_ack(const asn1::s1ap::ho_request_s& msg,
|
|||
for (size_t i = 0; i < not_admitted_bearers.size(); ++i) {
|
||||
container.erab_failed_to_setup_list_ho_req_ack.value[i].load_info_obj(
|
||||
ASN1_S1AP_ID_ERAB_FAILEDTO_SETUP_ITEM_HO_REQ_ACK);
|
||||
auto& erab = container.erab_failed_to_setup_list_ho_req_ack.value[i].value.erab_failedto_setup_item_ho_req_ack();
|
||||
auto& erab = container.erab_failed_to_setup_list_ho_req_ack.value[i]->erab_failedto_setup_item_ho_req_ack();
|
||||
erab.erab_id = not_admitted_bearers[i].erab_id;
|
||||
erab.cause = not_admitted_bearers[i].cause;
|
||||
}
|
||||
|
@ -1586,7 +1586,7 @@ void s1ap::ue::ue_ctxt_setup_complete()
|
|||
container.erab_setup_list_ctxt_su_res.value.resize(updated_erabs.size());
|
||||
for (size_t i = 0; i < updated_erabs.size(); ++i) {
|
||||
container.erab_setup_list_ctxt_su_res.value[i].load_info_obj(ASN1_S1AP_ID_ERAB_SETUP_ITEM_CTXT_SU_RES);
|
||||
auto& item = container.erab_setup_list_ctxt_su_res.value[i].value.erab_setup_item_ctxt_su_res();
|
||||
auto& item = container.erab_setup_list_ctxt_su_res.value[i]->erab_setup_item_ctxt_su_res();
|
||||
item.erab_id = updated_erabs[i];
|
||||
get_erab_addr(item.erab_id, item.transport_layer_address, item.gtp_teid);
|
||||
}
|
||||
|
@ -1618,7 +1618,7 @@ bool s1ap::ue::send_erab_setup_response(const erab_id_list& erabs_setup, const e
|
|||
res.protocol_ies.erab_setup_list_bearer_su_res.value.resize(erabs_setup.size());
|
||||
for (size_t i = 0; i < erabs_setup.size(); ++i) {
|
||||
res.protocol_ies.erab_setup_list_bearer_su_res.value[i].load_info_obj(ASN1_S1AP_ID_ERAB_SETUP_ITEM_BEARER_SU_RES);
|
||||
auto& item = res.protocol_ies.erab_setup_list_bearer_su_res.value[i].value.erab_setup_item_bearer_su_res();
|
||||
auto& item = res.protocol_ies.erab_setup_list_bearer_su_res.value[i]->erab_setup_item_bearer_su_res();
|
||||
item.erab_id = erabs_setup[i];
|
||||
get_erab_addr(item.erab_id, item.transport_layer_address, item.gtp_teid);
|
||||
}
|
||||
|
@ -1683,7 +1683,7 @@ bool s1ap::ue::send_erab_release_response(const erab_id_list& erabs_released, co
|
|||
for (size_t i = 0; i < erabs_released.size(); ++i) {
|
||||
container.erab_release_list_bearer_rel_comp.value[i].load_info_obj(
|
||||
ASN1_S1AP_ID_ERAB_RELEASE_ITEM_BEARER_REL_COMP);
|
||||
container.erab_release_list_bearer_rel_comp.value[i].value.erab_release_item_bearer_rel_comp().erab_id =
|
||||
container.erab_release_list_bearer_rel_comp.value[i]->erab_release_item_bearer_rel_comp().erab_id =
|
||||
erabs_released[i];
|
||||
}
|
||||
}
|
||||
|
@ -1712,8 +1712,7 @@ bool s1ap::ue::send_erab_modify_response(const erab_id_list& erabs_modified, con
|
|||
container.erab_modify_list_bearer_mod_res.value.resize(erabs_modified.size());
|
||||
for (uint32_t i = 0; i < container.erab_modify_list_bearer_mod_res.value.size(); i++) {
|
||||
container.erab_modify_list_bearer_mod_res.value[i].load_info_obj(ASN1_S1AP_ID_ERAB_MODIFY_ITEM_BEARER_MOD_RES);
|
||||
container.erab_modify_list_bearer_mod_res.value[i].value.erab_modify_item_bearer_mod_res().erab_id =
|
||||
erabs_modified[i];
|
||||
container.erab_modify_list_bearer_mod_res.value[i]->erab_modify_item_bearer_mod_res().erab_id = erabs_modified[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1744,7 +1743,7 @@ bool s1ap::ue::send_erab_release_indication(const std::vector<uint16_t>& erabs_s
|
|||
container.erab_released_list.value.resize(erabs_successfully_released.size());
|
||||
for (size_t i = 0; i < container.erab_released_list.value.size(); ++i) {
|
||||
container.erab_released_list.value[i].load_info_obj(ASN1_S1AP_ID_ERAB_ITEM);
|
||||
container.erab_released_list.value[i].value.erab_item().erab_id = erabs_successfully_released[i];
|
||||
container.erab_released_list.value[i]->erab_item().erab_id = erabs_successfully_released[i];
|
||||
}
|
||||
|
||||
return s1ap_ptr->sctp_send_s1ap_pdu(tx_pdu, ctxt.rnti, "E-RABReleaseIndication");
|
||||
|
@ -2149,9 +2148,9 @@ bool s1ap::ue::send_ho_required(uint32_t target_eci,
|
|||
transparent_cntr.erab_info_list.resize(fwd_erabs.size());
|
||||
for (uint32_t i = 0; i < fwd_erabs.size(); ++i) {
|
||||
transparent_cntr.erab_info_list[i].load_info_obj(ASN1_S1AP_ID_ERAB_INFO_LIST_ITEM);
|
||||
transparent_cntr.erab_info_list[i].value.erab_info_list_item().erab_id = fwd_erabs[i];
|
||||
transparent_cntr.erab_info_list[i].value.erab_info_list_item().dl_forwarding_present = true;
|
||||
transparent_cntr.erab_info_list[i].value.erab_info_list_item().dl_forwarding.value =
|
||||
transparent_cntr.erab_info_list[i]->erab_info_list_item().erab_id = fwd_erabs[i];
|
||||
transparent_cntr.erab_info_list[i]->erab_info_list_item().dl_forwarding_present = true;
|
||||
transparent_cntr.erab_info_list[i]->erab_info_list_item().dl_forwarding.value =
|
||||
dl_forwarding_opts::dl_forwarding_proposed;
|
||||
}
|
||||
// - set target cell ID
|
||||
|
@ -2212,7 +2211,7 @@ bool s1ap::ue::send_enb_status_transfer_proc(std::vector<bearer_status_info>& be
|
|||
list.resize(bearer_status_list.size());
|
||||
for (uint32_t i = 0; i < list.size(); ++i) {
|
||||
list[i].load_info_obj(ASN1_S1AP_ID_BEARERS_SUBJECT_TO_STATUS_TRANSFER_ITEM);
|
||||
auto& asn1bearer = list[i].value.bearers_subject_to_status_transfer_item();
|
||||
auto& asn1bearer = list[i]->bearers_subject_to_status_transfer_item();
|
||||
bearer_status_info& item = bearer_status_list[i];
|
||||
|
||||
asn1bearer.erab_id = item.erab_id;
|
||||
|
|
|
@ -94,7 +94,7 @@ int test_erab_setup(srsran::log_sink_spy& spy, bool qci_exists)
|
|||
rrc.set_aggregate_max_bitrate(rnti, setupmsg.ueaggregate_maximum_bitrate.value);
|
||||
}
|
||||
for (const auto& item : setupmsg.erab_to_be_setup_list_bearer_su_req.value) {
|
||||
const auto& erab = item.value.erab_to_be_setup_item_bearer_su_req();
|
||||
const auto& erab = item->erab_to_be_setup_item_bearer_su_req();
|
||||
asn1::s1ap::cause_c cause;
|
||||
int ret = rrc.setup_erab(rnti,
|
||||
erab.erab_id,
|
||||
|
|
|
@ -273,7 +273,7 @@ int test_s1ap_tenb_mobility(test_event test_params)
|
|||
/* TeNB receives S1AP Handover Request */
|
||||
asn1::s1ap::ho_request_s ho_req;
|
||||
ho_req.protocol_ies.erab_to_be_setup_list_ho_req.value.resize(1);
|
||||
auto& erab = ho_req.protocol_ies.erab_to_be_setup_list_ho_req.value[0].value.erab_to_be_setup_item_ho_req();
|
||||
auto& erab = ho_req.protocol_ies.erab_to_be_setup_list_ho_req.value[0]->erab_to_be_setup_item_ho_req();
|
||||
erab.erab_id = 5;
|
||||
erab.erab_level_qos_params.qci = 9;
|
||||
if (test_params == test_event::unknown_qci) {
|
||||
|
@ -288,9 +288,9 @@ int test_s1ap_tenb_mobility(test_event test_params)
|
|||
container.erab_info_list_present = true;
|
||||
container.erab_info_list.resize(1);
|
||||
container.erab_info_list[0].load_info_obj(ASN1_S1AP_ID_ERAB_INFO_LIST_ITEM);
|
||||
container.erab_info_list[0].value.erab_info_list_item().erab_id = 5;
|
||||
container.erab_info_list[0].value.erab_info_list_item().dl_forwarding_present = true;
|
||||
container.erab_info_list[0].value.erab_info_list_item().dl_forwarding.value =
|
||||
container.erab_info_list[0]->erab_info_list_item().erab_id = 5;
|
||||
container.erab_info_list[0]->erab_info_list_item().dl_forwarding_present = true;
|
||||
container.erab_info_list[0]->erab_info_list_item().dl_forwarding.value =
|
||||
asn1::s1ap::dl_forwarding_opts::dl_forwarding_proposed;
|
||||
uint8_t ho_prep_container[] = {
|
||||
0x0a, 0x10, 0x0b, 0x81, 0x80, 0x00, 0x01, 0x80, 0x00, 0xf3, 0x02, 0x08, 0x00, 0x00, 0x15, 0x80, 0x00, 0x14,
|
||||
|
@ -360,11 +360,11 @@ int test_s1ap_tenb_mobility(test_event test_params)
|
|||
// Receives MMEStatusTransfer
|
||||
asn1::s1ap::bearers_subject_to_status_transfer_list_l bearers;
|
||||
bearers.resize(1);
|
||||
bearers[0].value.bearers_subject_to_status_transfer_item().erab_id = 5;
|
||||
bearers[0].value.bearers_subject_to_status_transfer_item().dl_coun_tvalue.pdcp_sn = 100;
|
||||
bearers[0].value.bearers_subject_to_status_transfer_item().dl_coun_tvalue.hfn = 3;
|
||||
bearers[0].value.bearers_subject_to_status_transfer_item().ul_coun_tvalue.pdcp_sn = 120;
|
||||
bearers[0].value.bearers_subject_to_status_transfer_item().ul_coun_tvalue.hfn = 4;
|
||||
bearers[0]->bearers_subject_to_status_transfer_item().erab_id = 5;
|
||||
bearers[0]->bearers_subject_to_status_transfer_item().dl_coun_tvalue.pdcp_sn = 100;
|
||||
bearers[0]->bearers_subject_to_status_transfer_item().dl_coun_tvalue.hfn = 3;
|
||||
bearers[0]->bearers_subject_to_status_transfer_item().ul_coun_tvalue.pdcp_sn = 120;
|
||||
bearers[0]->bearers_subject_to_status_transfer_item().ul_coun_tvalue.hfn = 4;
|
||||
tester.rrc.set_erab_status(0x46, bearers);
|
||||
TESTASSERT(tester.pdcp.bearers.count(0x46));
|
||||
TESTASSERT(tester.pdcp.bearers[0x46].count(3));
|
||||
|
|
|
@ -130,7 +130,7 @@ int bring_rrc_to_reconf_state(srsenb::rrc& rrc, srsran::timer_handler& timers, u
|
|||
rrc.setup_ue_ctxt(rnti, s1ap_pdu.init_msg().value.init_context_setup_request());
|
||||
for (auto& item :
|
||||
s1ap_pdu.init_msg().value.init_context_setup_request().protocol_ies.erab_to_be_setup_list_ctxt_su_req.value) {
|
||||
const auto& erab = item.value.erab_to_be_setup_item_ctxt_su_req();
|
||||
const auto& erab = item->erab_to_be_setup_item_ctxt_su_req();
|
||||
asn1::s1ap::cause_c cause;
|
||||
TESTASSERT(rrc.setup_erab(rnti,
|
||||
erab.erab_id,
|
||||
|
|
|
@ -241,7 +241,7 @@ void test_s1ap_erab_setup(test_event event)
|
|||
auto& erab_list = protocols.erab_to_be_modified_list_bearer_mod_req.value;
|
||||
erab_list.resize(2);
|
||||
erab_list[0].load_info_obj(ASN1_S1AP_ID_ERAB_TO_BE_MODIFIED_ITEM_BEARER_MOD_REQ);
|
||||
auto* erab_ptr = &erab_list[0].value.erab_to_be_modified_item_bearer_mod_req();
|
||||
auto* erab_ptr = &erab_list[0]->erab_to_be_modified_item_bearer_mod_req();
|
||||
erab_ptr->erab_id = 5;
|
||||
erab_ptr->erab_level_qos_params.qci = 9;
|
||||
erab_ptr->erab_level_qos_params.alloc_retention_prio.prio_level = 15;
|
||||
|
@ -252,7 +252,7 @@ void test_s1ap_erab_setup(test_event event)
|
|||
erab_ptr->nas_pdu.resize(1);
|
||||
erab_ptr->nas_pdu[0] = 0;
|
||||
erab_list[1] = erab_list[0];
|
||||
erab_ptr = &erab_list[1].value.erab_to_be_modified_item_bearer_mod_req();
|
||||
erab_ptr = &erab_list[1]->erab_to_be_modified_item_bearer_mod_req();
|
||||
erab_ptr->erab_id = event == test_event::repeated_erabid_mod ? 5 : 6;
|
||||
if (event == test_event::wrong_erabid_mod) {
|
||||
rrc.next_erabs_failed_to_modify.push_back(6);
|
||||
|
@ -286,11 +286,10 @@ void test_s1ap_erab_setup(test_event event)
|
|||
if (event == test_event::wrong_erabid_mod) {
|
||||
TESTASSERT(protocol_ies.erab_modify_list_bearer_mod_res_present);
|
||||
TESTASSERT(protocol_ies.erab_modify_list_bearer_mod_res.value.size() == 1);
|
||||
TESTASSERT(protocol_ies.erab_modify_list_bearer_mod_res.value[0].value.erab_modify_item_bearer_mod_res().erab_id ==
|
||||
5);
|
||||
TESTASSERT(protocol_ies.erab_modify_list_bearer_mod_res.value[0]->erab_modify_item_bearer_mod_res().erab_id == 5);
|
||||
TESTASSERT(protocol_ies.erab_failed_to_modify_list_present);
|
||||
TESTASSERT(protocol_ies.erab_failed_to_modify_list.value.size() == 1);
|
||||
auto& erab_item = protocol_ies.erab_failed_to_modify_list.value[0].value.erab_item();
|
||||
auto& erab_item = protocol_ies.erab_failed_to_modify_list.value[0]->erab_item();
|
||||
TESTASSERT(erab_item.erab_id == 6);
|
||||
TESTASSERT(erab_item.cause.type().value == asn1::s1ap::cause_c::types_opts::radio_network);
|
||||
TESTASSERT(erab_item.cause.radio_network().value == asn1::s1ap::cause_radio_network_opts::unknown_erab_id);
|
||||
|
@ -300,7 +299,7 @@ void test_s1ap_erab_setup(test_event event)
|
|||
TESTASSERT(not protocol_ies.erab_modify_list_bearer_mod_res_present);
|
||||
TESTASSERT(protocol_ies.erab_failed_to_modify_list_present);
|
||||
TESTASSERT(protocol_ies.erab_failed_to_modify_list.value.size() == 1);
|
||||
auto& erab_item = protocol_ies.erab_failed_to_modify_list.value[0].value.erab_item();
|
||||
auto& erab_item = protocol_ies.erab_failed_to_modify_list.value[0]->erab_item();
|
||||
TESTASSERT(erab_item.erab_id == 5);
|
||||
TESTASSERT(erab_item.cause.type().value == asn1::s1ap::cause_c::types_opts::radio_network);
|
||||
TESTASSERT(erab_item.cause.radio_network().value ==
|
||||
|
@ -311,7 +310,7 @@ void test_s1ap_erab_setup(test_event event)
|
|||
TESTASSERT(protocol_ies.erab_modify_list_bearer_mod_res_present);
|
||||
TESTASSERT(not protocol_ies.erab_failed_to_modify_list_present);
|
||||
TESTASSERT(protocol_ies.erab_modify_list_bearer_mod_res.value.size() == 2);
|
||||
auto& erab_item = protocol_ies.erab_modify_list_bearer_mod_res.value[0].value.erab_modify_item_bearer_mod_res();
|
||||
auto& erab_item = protocol_ies.erab_modify_list_bearer_mod_res.value[0]->erab_modify_item_bearer_mod_res();
|
||||
TESTASSERT(erab_item.erab_id == 5);
|
||||
}
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ bool s1ap_ctx_mngmt_proc::send_initial_context_setup_request(nas* nas_ctx, uint1
|
|||
|
||||
// Setup eRAB context
|
||||
asn1::s1ap::erab_to_be_setup_item_ctxt_su_req_s& erab_ctx_req =
|
||||
in_ctx_req.erab_to_be_setup_list_ctxt_su_req.value[0].value.erab_to_be_setup_item_ctxt_su_req();
|
||||
in_ctx_req.erab_to_be_setup_list_ctxt_su_req.value[0]->erab_to_be_setup_item_ctxt_su_req();
|
||||
erab_ctx_req.erab_id = esm_ctx->erab_id;
|
||||
|
||||
// Setup E-RAB QoS parameters
|
||||
|
@ -189,9 +189,8 @@ bool s1ap_ctx_mngmt_proc::handle_initial_context_setup_response(
|
|||
for (const asn1::protocol_ie_single_container_s<asn1::s1ap::erab_setup_item_ctxt_su_res_ies_o>& ie_container :
|
||||
in_ctxt_resp.protocol_ies.erab_setup_list_ctxt_su_res.value) {
|
||||
// Get E-RAB setup context item and E-RAB Id
|
||||
const asn1::s1ap::erab_setup_item_ctxt_su_res_s& erab_setup_item_ctxt =
|
||||
ie_container.value.erab_setup_item_ctxt_su_res();
|
||||
uint8_t erab_id = erab_setup_item_ctxt.erab_id;
|
||||
const asn1::s1ap::erab_setup_item_ctxt_su_res_s& erab_setup_item_ctxt = ie_container->erab_setup_item_ctxt_su_res();
|
||||
uint8_t erab_id = erab_setup_item_ctxt.erab_id;
|
||||
|
||||
// Make sure we requested the context setup
|
||||
esm_ctx_t* esm_ctx = &nas_ctx->m_esm_ctx[erab_id];
|
||||
|
|
|
@ -80,10 +80,9 @@ bool s1ap_erab_mngmt_proc::send_erab_release_command(uint32_t enb_
|
|||
erab_rel_cmd.erab_to_be_released_list.value.resize(erabs_to_release.size());
|
||||
for (uint32_t i = 0; i < erab_rel_cmd.erab_to_be_released_list.value.size(); i++) {
|
||||
erab_rel_cmd.erab_to_be_released_list.value[i].load_info_obj(ASN1_S1AP_ID_ERAB_ITEM);
|
||||
erab_rel_cmd.erab_to_be_released_list.value[i].value.erab_item().erab_id = erabs_to_release[i];
|
||||
erab_rel_cmd.erab_to_be_released_list.value[i].value.erab_item().cause.set(asn1::s1ap::cause_c::types::misc);
|
||||
erab_rel_cmd.erab_to_be_released_list.value[i].value.erab_item().cause.misc() =
|
||||
asn1::s1ap::cause_misc_opts::unspecified;
|
||||
erab_rel_cmd.erab_to_be_released_list.value[i]->erab_item().erab_id = erabs_to_release[i];
|
||||
erab_rel_cmd.erab_to_be_released_list.value[i]->erab_item().cause.set(asn1::s1ap::cause_c::types::misc);
|
||||
erab_rel_cmd.erab_to_be_released_list.value[i]->erab_item().cause.misc() = asn1::s1ap::cause_misc_opts::unspecified;
|
||||
m_logger.info("Sending release comman to %d", erabs_to_release[i]);
|
||||
}
|
||||
|
||||
|
@ -120,7 +119,7 @@ bool s1ap_erab_mngmt_proc::send_erab_modify_request(uint32_t
|
|||
erab_mod_req.erab_to_be_modified_list_bearer_mod_req.value[i].load_info_obj(
|
||||
ASN1_S1AP_ID_ERAB_TO_BE_MODIFIED_ITEM_BEARER_MOD_REQ);
|
||||
asn1::s1ap::erab_to_be_modified_item_bearer_mod_req_s& erab_to_mod =
|
||||
erab_mod_req.erab_to_be_modified_list_bearer_mod_req.value[i].value.erab_to_be_modified_item_bearer_mod_req();
|
||||
erab_mod_req.erab_to_be_modified_list_bearer_mod_req.value[i]->erab_to_be_modified_item_bearer_mod_req();
|
||||
erab_to_mod.erab_id = erab_it->first;
|
||||
erab_to_mod.erab_level_qos_params.qci = erab_it->second;
|
||||
erab_to_mod.erab_level_qos_params.alloc_retention_prio.prio_level = 15; // lowest
|
||||
|
|
|
@ -64,10 +64,10 @@ bool s1ap_paging::send_paging(uint64_t imsi, uint16_t erab_to_setup)
|
|||
paging.tai_list.value[0].load_info_obj(ASN1_S1AP_ID_TAI_ITEM);
|
||||
|
||||
uint32_t plmn = m_s1ap->get_plmn();
|
||||
paging.tai_list.value[0].value.tai_item().tai.plm_nid.from_number(plmn);
|
||||
paging.tai_list.value[0]->tai_item().tai.plm_nid.from_number(plmn);
|
||||
|
||||
uint16_t tac = m_s1ap->m_s1ap_args.tac;
|
||||
paging.tai_list.value[0].value.tai_item().tai.tac.from_number(tac);
|
||||
paging.tai_list.value[0]->tai_item().tai.tac.from_number(tac);
|
||||
|
||||
// Start T3413
|
||||
if (!nas_ctx->start_timer(T_3413)) {
|
||||
|
|
Loading…
Reference in New Issue