fix some variables' naming (e.g. x2_ap -> x2ap, e_rab -> erab)

master
Francisco Paisana 5 years ago
parent 2a83eee0ee
commit 5468189cd9

@ -26873,7 +26873,7 @@ struct sl_tx_pool_to_add_mod_r14_s {
// SecurityConfigHO-v1530 ::= SEQUENCE
struct security_cfg_ho_v1530_s {
struct ho_type_v1530_c_ {
struct handov_type_v1530_c_ {
struct intra5_gc_r15_s_ {
bool security_algorithm_cfg_r15_present = false;
bool nas_container_r15_present = false;
@ -26900,10 +26900,10 @@ struct security_cfg_ho_v1530_s {
typedef enumerated<types_opts> types;
// choice methods
ho_type_v1530_c_() = default;
ho_type_v1530_c_(const ho_type_v1530_c_& other);
ho_type_v1530_c_& operator=(const ho_type_v1530_c_& other);
~ho_type_v1530_c_() { destroy_(); }
handov_type_v1530_c_() = default;
handov_type_v1530_c_(const handov_type_v1530_c_& other);
handov_type_v1530_c_& operator=(const handov_type_v1530_c_& other);
~handov_type_v1530_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
@ -26964,8 +26964,8 @@ struct security_cfg_ho_v1530_s {
};
// member variables
bool ext = false;
ho_type_v1530_c_ ho_type_v1530;
bool ext = false;
handov_type_v1530_c_ handov_type_v1530;
// ...
// sequence methods
@ -28431,8 +28431,8 @@ struct pci_range_utra_fdd_r9_s {
// PowerCoordinationInfo-r12 ::= SEQUENCE
struct pwr_coordination_info_r12_s {
uint8_t p_me_nb_r12 = 1;
uint8_t p_se_nb_r12 = 1;
uint8_t p_menb_r12 = 1;
uint8_t p_senb_r12 = 1;
uint8_t pwr_ctrl_mode_r12 = 1;
// sequence methods
@ -36267,7 +36267,7 @@ typedef enumerated<release_cause_opts> release_cause_e;
// SecurityConfigHO ::= SEQUENCE
struct security_cfg_ho_s {
struct ho_type_c_ {
struct handov_type_c_ {
struct intra_lte_s_ {
bool security_algorithm_cfg_present = false;
security_algorithm_cfg_s security_algorithm_cfg;
@ -36286,10 +36286,10 @@ struct security_cfg_ho_s {
typedef enumerated<types_opts> types;
// choice methods
ho_type_c_() = default;
ho_type_c_(const ho_type_c_& other);
ho_type_c_& operator=(const ho_type_c_& other);
~ho_type_c_() { destroy_(); }
handov_type_c_() = default;
handov_type_c_(const handov_type_c_& other);
handov_type_c_& operator=(const handov_type_c_& other);
~handov_type_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
@ -36335,8 +36335,8 @@ struct security_cfg_ho_s {
};
// member variables
bool ext = false;
ho_type_c_ ho_type;
bool ext = false;
handov_type_c_ handov_type;
// ...
// sequence methods
@ -49517,8 +49517,8 @@ struct band_params_rx_sl_r14_s {
// BandParametersTxSL-r14 ::= SEQUENCE
struct band_params_tx_sl_r14_s {
bool v2x_e_nb_sched_r14_present = false;
bool v2x_high_pwr_r14_present = false;
bool v2x_enb_sched_r14_present = false;
bool v2x_high_pwr_r14_present = false;
v2x_bw_class_sl_r14_l v2x_bw_class_tx_sl_r14;
// sequence methods

File diff suppressed because it is too large Load Diff

@ -270,7 +270,7 @@ public:
virtual void release_complete(uint16_t rnti) = 0;
virtual bool setup_ue_ctxt(uint16_t rnti, const asn1::s1ap::init_context_setup_request_s& msg) = 0;
virtual bool modify_ue_ctxt(uint16_t rnti, const asn1::s1ap::ue_context_mod_request_s& msg) = 0;
virtual bool setup_ue_erabs(uint16_t rnti, const asn1::s1ap::e_rab_setup_request_s& msg) = 0;
virtual bool setup_ue_erabs(uint16_t rnti, const asn1::s1ap::erab_setup_request_s& msg) = 0;
virtual bool release_erabs(uint32_t rnti) = 0;
virtual void add_paging_id(uint32_t ueid, const asn1::s1ap::ue_paging_id_c& ue_paging_id) = 0;
virtual void ho_preparation_complete(uint16_t rnti, bool is_success, srslte::unique_byte_buffer_t container) = 0;
@ -314,7 +314,7 @@ public:
virtual bool user_exists(uint16_t rnti) = 0;
virtual bool user_release(uint16_t rnti, asn1::s1ap::cause_radio_network_e cause_radio) = 0;
virtual void ue_ctxt_setup_complete(uint16_t rnti, const asn1::s1ap::init_context_setup_resp_s& res) = 0;
virtual void ue_erab_setup_complete(uint16_t rnti, const asn1::s1ap::e_rab_setup_resp_s& res) = 0;
virtual void ue_erab_setup_complete(uint16_t rnti, const asn1::s1ap::erab_setup_resp_s& res) = 0;
virtual bool is_mme_connected() = 0;
virtual bool send_ho_required(uint16_t rnti,
uint32_t target_eci,

@ -52476,14 +52476,14 @@ void sl_tx_pool_to_add_mod_r14_s::to_json(json_writer& j) const
SRSASN_CODE security_cfg_ho_v1530_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(ho_type_v1530.pack(bref));
HANDLE_CODE(handov_type_v1530.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE security_cfg_ho_v1530_s::unpack(bit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(ho_type_v1530.unpack(bref));
HANDLE_CODE(handov_type_v1530.unpack(bref));
return SRSASN_SUCCESS;
}
@ -52491,11 +52491,11 @@ void security_cfg_ho_v1530_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("handoverType-v1530");
ho_type_v1530.to_json(j);
handov_type_v1530.to_json(j);
j.end_obj();
}
void security_cfg_ho_v1530_s::ho_type_v1530_c_::destroy_()
void security_cfg_ho_v1530_s::handov_type_v1530_c_::destroy_()
{
switch (type_) {
case types::intra5_gc_r15:
@ -52511,7 +52511,7 @@ void security_cfg_ho_v1530_s::ho_type_v1530_c_::destroy_()
break;
}
}
void security_cfg_ho_v1530_s::ho_type_v1530_c_::set(types::options e)
void security_cfg_ho_v1530_s::handov_type_v1530_c_::set(types::options e)
{
destroy_();
type_ = e;
@ -52528,10 +52528,11 @@ void security_cfg_ho_v1530_s::ho_type_v1530_c_::set(types::options e)
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::ho_type_v1530_c_");
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_");
}
}
security_cfg_ho_v1530_s::ho_type_v1530_c_::ho_type_v1530_c_(const security_cfg_ho_v1530_s::ho_type_v1530_c_& other)
security_cfg_ho_v1530_s::handov_type_v1530_c_::handov_type_v1530_c_(
const security_cfg_ho_v1530_s::handov_type_v1530_c_& other)
{
type_ = other.type();
switch (type_) {
@ -52547,11 +52548,11 @@ security_cfg_ho_v1530_s::ho_type_v1530_c_::ho_type_v1530_c_(const security_cfg_h
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::ho_type_v1530_c_");
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_");
}
}
security_cfg_ho_v1530_s::ho_type_v1530_c_& security_cfg_ho_v1530_s::ho_type_v1530_c_::
operator=(const security_cfg_ho_v1530_s::ho_type_v1530_c_& other)
security_cfg_ho_v1530_s::handov_type_v1530_c_& security_cfg_ho_v1530_s::handov_type_v1530_c_::
operator=(const security_cfg_ho_v1530_s::handov_type_v1530_c_& other)
{
if (this == &other) {
return *this;
@ -52570,12 +52571,12 @@ security_cfg_ho_v1530_s::ho_type_v1530_c_& security_cfg_ho_v1530_s::ho_type_v153
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::ho_type_v1530_c_");
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_");
}
return *this;
}
void security_cfg_ho_v1530_s::ho_type_v1530_c_::to_json(json_writer& j) const
void security_cfg_ho_v1530_s::handov_type_v1530_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
@ -52610,11 +52611,11 @@ void security_cfg_ho_v1530_s::ho_type_v1530_c_::to_json(json_writer& j) const
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::ho_type_v1530_c_");
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_");
}
j.end_obj();
}
SRSASN_CODE security_cfg_ho_v1530_s::ho_type_v1530_c_::pack(bit_ref& bref) const
SRSASN_CODE security_cfg_ho_v1530_s::handov_type_v1530_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
@ -52639,12 +52640,12 @@ SRSASN_CODE security_cfg_ho_v1530_s::ho_type_v1530_c_::pack(bit_ref& bref) const
HANDLE_CODE(c.get<epc_to_ngc_r15_s_>().nas_container_r15.pack(bref));
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::ho_type_v1530_c_");
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE security_cfg_ho_v1530_s::ho_type_v1530_c_::unpack(bit_ref& bref)
SRSASN_CODE security_cfg_ho_v1530_s::handov_type_v1530_c_::unpack(bit_ref& bref)
{
types e;
e.unpack(bref);
@ -52673,7 +52674,7 @@ SRSASN_CODE security_cfg_ho_v1530_s::ho_type_v1530_c_::unpack(bit_ref& bref)
HANDLE_CODE(c.get<epc_to_ngc_r15_s_>().nas_container_r15.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::ho_type_v1530_c_");
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
@ -56166,16 +56167,16 @@ void pci_range_utra_fdd_r9_s::to_json(json_writer& j) const
// PowerCoordinationInfo-r12 ::= SEQUENCE
SRSASN_CODE pwr_coordination_info_r12_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, p_me_nb_r12, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(pack_integer(bref, p_se_nb_r12, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(pack_integer(bref, p_menb_r12, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(pack_integer(bref, p_senb_r12, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(pack_integer(bref, pwr_ctrl_mode_r12, (uint8_t)1u, (uint8_t)2u));
return SRSASN_SUCCESS;
}
SRSASN_CODE pwr_coordination_info_r12_s::unpack(bit_ref& bref)
{
HANDLE_CODE(unpack_integer(p_me_nb_r12, bref, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(unpack_integer(p_se_nb_r12, bref, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(unpack_integer(p_menb_r12, bref, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(unpack_integer(p_senb_r12, bref, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(unpack_integer(pwr_ctrl_mode_r12, bref, (uint8_t)1u, (uint8_t)2u));
return SRSASN_SUCCESS;
@ -56183,8 +56184,8 @@ SRSASN_CODE pwr_coordination_info_r12_s::unpack(bit_ref& bref)
void pwr_coordination_info_r12_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("p-MeNB-r12", p_me_nb_r12);
j.write_int("p-SeNB-r12", p_se_nb_r12);
j.write_int("p-MeNB-r12", p_menb_r12);
j.write_int("p-SeNB-r12", p_senb_r12);
j.write_int("powerControlMode-r12", pwr_ctrl_mode_r12);
j.end_obj();
}
@ -72828,14 +72829,14 @@ SRSASN_CODE redirected_carrier_info_c::unpack(bit_ref& bref)
SRSASN_CODE security_cfg_ho_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(ho_type.pack(bref));
HANDLE_CODE(handov_type.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE security_cfg_ho_s::unpack(bit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(ho_type.unpack(bref));
HANDLE_CODE(handov_type.unpack(bref));
return SRSASN_SUCCESS;
}
@ -72843,11 +72844,11 @@ void security_cfg_ho_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("handoverType");
ho_type.to_json(j);
handov_type.to_json(j);
j.end_obj();
}
void security_cfg_ho_s::ho_type_c_::destroy_()
void security_cfg_ho_s::handov_type_c_::destroy_()
{
switch (type_) {
case types::intra_lte:
@ -72860,7 +72861,7 @@ void security_cfg_ho_s::ho_type_c_::destroy_()
break;
}
}
void security_cfg_ho_s::ho_type_c_::set(types::options e)
void security_cfg_ho_s::handov_type_c_::set(types::options e)
{
destroy_();
type_ = e;
@ -72874,10 +72875,10 @@ void security_cfg_ho_s::ho_type_c_::set(types::options e)
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_s::ho_type_c_");
log_invalid_choice_id(type_, "security_cfg_ho_s::handov_type_c_");
}
}
security_cfg_ho_s::ho_type_c_::ho_type_c_(const security_cfg_ho_s::ho_type_c_& other)
security_cfg_ho_s::handov_type_c_::handov_type_c_(const security_cfg_ho_s::handov_type_c_& other)
{
type_ = other.type();
switch (type_) {
@ -72890,10 +72891,11 @@ security_cfg_ho_s::ho_type_c_::ho_type_c_(const security_cfg_ho_s::ho_type_c_& o
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_s::ho_type_c_");
log_invalid_choice_id(type_, "security_cfg_ho_s::handov_type_c_");
}
}
security_cfg_ho_s::ho_type_c_& security_cfg_ho_s::ho_type_c_::operator=(const security_cfg_ho_s::ho_type_c_& other)
security_cfg_ho_s::handov_type_c_& security_cfg_ho_s::handov_type_c_::
operator=(const security_cfg_ho_s::handov_type_c_& other)
{
if (this == &other) {
return *this;
@ -72909,12 +72911,12 @@ security_cfg_ho_s::ho_type_c_& security_cfg_ho_s::ho_type_c_::operator=(const se
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_s::ho_type_c_");
log_invalid_choice_id(type_, "security_cfg_ho_s::handov_type_c_");
}
return *this;
}
void security_cfg_ho_s::ho_type_c_::to_json(json_writer& j) const
void security_cfg_ho_s::handov_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
@ -72938,11 +72940,11 @@ void security_cfg_ho_s::ho_type_c_::to_json(json_writer& j) const
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_s::ho_type_c_");
log_invalid_choice_id(type_, "security_cfg_ho_s::handov_type_c_");
}
j.end_obj();
}
SRSASN_CODE security_cfg_ho_s::ho_type_c_::pack(bit_ref& bref) const
SRSASN_CODE security_cfg_ho_s::handov_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
@ -72959,12 +72961,12 @@ SRSASN_CODE security_cfg_ho_s::ho_type_c_::pack(bit_ref& bref) const
HANDLE_CODE(c.get<inter_rat_s_>().nas_security_param_to_eutra.pack(bref));
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_s::ho_type_c_");
log_invalid_choice_id(type_, "security_cfg_ho_s::handov_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE security_cfg_ho_s::ho_type_c_::unpack(bit_ref& bref)
SRSASN_CODE security_cfg_ho_s::handov_type_c_::unpack(bit_ref& bref)
{
types e;
e.unpack(bref);
@ -72983,7 +72985,7 @@ SRSASN_CODE security_cfg_ho_s::ho_type_c_::unpack(bit_ref& bref)
HANDLE_CODE(c.get<inter_rat_s_>().nas_security_param_to_eutra.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_s::ho_type_c_");
log_invalid_choice_id(type_, "security_cfg_ho_s::handov_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
@ -102500,7 +102502,7 @@ void band_params_rx_sl_r14_s::to_json(json_writer& j) const
// BandParametersTxSL-r14 ::= SEQUENCE
SRSASN_CODE band_params_tx_sl_r14_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(v2x_e_nb_sched_r14_present, 1));
HANDLE_CODE(bref.pack(v2x_enb_sched_r14_present, 1));
HANDLE_CODE(bref.pack(v2x_high_pwr_r14_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, v2x_bw_class_tx_sl_r14, 1, 16));
@ -102509,7 +102511,7 @@ SRSASN_CODE band_params_tx_sl_r14_s::pack(bit_ref& bref) const
}
SRSASN_CODE band_params_tx_sl_r14_s::unpack(bit_ref& bref)
{
HANDLE_CODE(bref.unpack(v2x_e_nb_sched_r14_present, 1));
HANDLE_CODE(bref.unpack(v2x_enb_sched_r14_present, 1));
HANDLE_CODE(bref.unpack(v2x_high_pwr_r14_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(v2x_bw_class_tx_sl_r14, bref, 1, 16));
@ -102524,7 +102526,7 @@ void band_params_tx_sl_r14_s::to_json(json_writer& j) const
j.write_str(v2x_bw_class_tx_sl_r14[i1].to_string());
}
j.end_array();
if (v2x_e_nb_sched_r14_present) {
if (v2x_enb_sched_r14_present) {
j.write_str("v2x-eNB-Scheduled-r14", "supported");
}
if (v2x_high_pwr_r14_present) {

@ -6871,15 +6871,15 @@ uint8_t ip_address_r13_c::types_opts::to_number() const
return convert_enum_idx(options, 2, value, "ip_address_r13_c::types");
}
std::string security_cfg_ho_v1530_s::ho_type_v1530_c_::types_opts::to_string() const
std::string security_cfg_ho_v1530_s::handov_type_v1530_c_::types_opts::to_string() const
{
static constexpr const char* options[] = {"intra5GC-r15", "ngc-ToEPC-r15", "epc-ToNGC-r15"};
return convert_enum_idx(options, 3, value, "security_cfg_ho_v1530_s::ho_type_v1530_c_::types");
return convert_enum_idx(options, 3, value, "security_cfg_ho_v1530_s::handov_type_v1530_c_::types");
}
uint8_t security_cfg_ho_v1530_s::ho_type_v1530_c_::types_opts::to_number() const
uint8_t security_cfg_ho_v1530_s::handov_type_v1530_c_::types_opts::to_number() const
{
static constexpr uint8_t options[] = {5};
return convert_enum_idx(options, 1, value, "security_cfg_ho_v1530_s::ho_type_v1530_c_::types");
return convert_enum_idx(options, 1, value, "security_cfg_ho_v1530_s::handov_type_v1530_c_::types");
}
std::string ul_pwr_ctrl_common_v1310_s::delta_f_pucch_format4_r13_opts::to_string() const
@ -8212,10 +8212,10 @@ std::string release_cause_opts::to_string() const
return convert_enum_idx(options, 4, value, "release_cause_e");
}
std::string security_cfg_ho_s::ho_type_c_::types_opts::to_string() const
std::string security_cfg_ho_s::handov_type_c_::types_opts::to_string() const
{
static constexpr const char* options[] = {"intraLTE", "interRAT"};
return convert_enum_idx(options, 2, value, "security_cfg_ho_s::ho_type_c_::types");
return convert_enum_idx(options, 2, value, "security_cfg_ho_s::handov_type_c_::types");
}
std::string dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::types_opts::to_string() const

File diff suppressed because it is too large Load Diff

@ -47,11 +47,11 @@ int unpack_test_served_gummeis_with_multiple_plmns()
int test_load_info_obj()
{
asn1::s1ap::init_context_setup_resp_ies_container container;
container.e_rab_failed_to_setup_list_ctxt_su_res.value.resize(1);
container.e_rab_failed_to_setup_list_ctxt_su_res.value[0].load_info_obj(ASN1_S1AP_ID_E_RAB_ITEM);
container.erab_failed_to_setup_list_ctxt_su_res.value.resize(1);
container.erab_failed_to_setup_list_ctxt_su_res.value[0].load_info_obj(ASN1_S1AP_ID_ERAB_ITEM);
TESTASSERT(container.e_rab_failed_to_setup_list_ctxt_su_res.value[0].id == ASN1_S1AP_ID_E_RAB_ITEM);
TESTASSERT(container.e_rab_failed_to_setup_list_ctxt_su_res.value[0].crit.value == s1ap::crit_opts::reject);
TESTASSERT(container.erab_failed_to_setup_list_ctxt_su_res.value[0].id == ASN1_S1AP_ID_ERAB_ITEM);
TESTASSERT(container.erab_failed_to_setup_list_ctxt_su_res.value[0].crit.value == s1ap::crit_opts::reject);
return SRSLTE_SUCCESS;
}
@ -67,12 +67,12 @@ int test_initial_ctxt_setup_response()
container.mme_ue_s1ap_id.value = 1;
container.enb_ue_s1ap_id.value = 1;
container.e_rab_setup_list_ctxt_su_res.value.resize(1);
container.erab_setup_list_ctxt_su_res.value.resize(1);
// Fill in the GTP bind address for all bearers
for (uint32_t i = 0; i < container.e_rab_setup_list_ctxt_su_res.value.size(); ++i) {
container.e_rab_setup_list_ctxt_su_res.value[i].load_info_obj(ASN1_S1AP_ID_E_RAB_SETUP_ITEM_CTXT_SU_RES);
auto& item = container.e_rab_setup_list_ctxt_su_res.value[i].value.e_rab_setup_item_ctxt_su_res();
item.e_rab_id = 1;
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();
item.erab_id = 1;
// uint32_to_uint8(teid_in, item.gtp_teid.data());
item.transport_layer_address.resize(32);
uint8_t addr[4];

@ -177,7 +177,7 @@ public:
void release_complete(uint16_t rnti) override;
bool setup_ue_ctxt(uint16_t rnti, const asn1::s1ap::init_context_setup_request_s& msg) override;
bool modify_ue_ctxt(uint16_t rnti, const asn1::s1ap::ue_context_mod_request_s& msg) override;
bool setup_ue_erabs(uint16_t rnti, const asn1::s1ap::e_rab_setup_request_s& msg) override;
bool setup_ue_erabs(uint16_t rnti, const asn1::s1ap::erab_setup_request_s& msg) override;
bool release_erabs(uint32_t rnti) override;
void add_paging_id(uint32_t ueid, const asn1::s1ap::ue_paging_id_c& UEPagingID) override;
void ho_preparation_complete(uint16_t rnti, bool is_success, srslte::unique_byte_buffer_t rrc_container) override;
@ -226,7 +226,7 @@ public:
void send_connection_release();
void send_connection_reest_rej();
void send_connection_reconf(srslte::unique_byte_buffer_t sdu);
void send_connection_reconf_new_bearer(const asn1::s1ap::e_rab_to_be_setup_list_bearer_su_req_l& e);
void send_connection_reconf_new_bearer(const asn1::s1ap::erab_to_be_setup_list_bearer_su_req_l& e);
void send_connection_reconf_upd(srslte::unique_byte_buffer_t pdu);
void send_security_mode_command();
void send_ue_cap_enquiry();
@ -244,10 +244,10 @@ public:
void set_security_capabilities(const asn1::s1ap::ue_security_cap_s& caps);
void set_security_key(const asn1::fixed_bitstring<256, false, true>& key);
bool setup_erabs(const asn1::s1ap::e_rab_to_be_setup_list_ctxt_su_req_l& e);
bool setup_erabs(const asn1::s1ap::e_rab_to_be_setup_list_bearer_su_req_l& e);
bool setup_erabs(const asn1::s1ap::erab_to_be_setup_list_ctxt_su_req_l& e);
bool setup_erabs(const asn1::s1ap::erab_to_be_setup_list_bearer_su_req_l& e);
void setup_erab(uint8_t id,
const asn1::s1ap::e_rab_level_qo_sparams_s& qos,
const asn1::s1ap::erab_level_qos_params_s& qos,
const asn1::bounded_bitstring<1, 160, true, true>& addr,
uint32_t teid_out,
const asn1::unbounded_octstring<true>* nas_pdu);
@ -257,7 +257,7 @@ public:
void handle_ho_preparation_complete(bool is_success, srslte::unique_byte_buffer_t container);
void notify_s1ap_ue_ctxt_setup_complete();
void notify_s1ap_ue_erab_setup_response(const asn1::s1ap::e_rab_to_be_setup_list_bearer_su_req_l& e);
void notify_s1ap_ue_erab_setup_response(const asn1::s1ap::erab_to_be_setup_list_bearer_su_req_l& e);
int sr_allocate(uint32_t period, uint8_t* I_sr, uint16_t* N_pucch_sr);
void sr_get(uint8_t* I_sr, uint16_t* N_pucch_sr);
@ -321,7 +321,7 @@ public:
typedef struct {
uint8_t id;
asn1::s1ap::e_rab_level_qo_sparams_s qos_params;
asn1::s1ap::erab_level_qos_params_s qos_params;
asn1::bounded_bitstring<1, 160, true, true> address;
uint32_t teid_out;
uint32_t teid_in;

@ -73,7 +73,7 @@ public:
bool user_exists(uint16_t rnti) override;
bool user_release(uint16_t rnti, asn1::s1ap::cause_radio_network_e cause_radio) override;
void ue_ctxt_setup_complete(uint16_t rnti, const asn1::s1ap::init_context_setup_resp_s& res) override;
void ue_erab_setup_complete(uint16_t rnti, const asn1::s1ap::e_rab_setup_resp_s& res) override;
void ue_erab_setup_complete(uint16_t rnti, const asn1::s1ap::erab_setup_resp_s& res) override;
bool is_mme_connected() override;
// void ue_capabilities(uint16_t rnti, LIBLTE_RRC_UE_EUTRA_CAPABILITY_STRUCT *caps);
@ -127,7 +127,7 @@ private:
bool handle_initialctxtsetuprequest(const asn1::s1ap::init_context_setup_request_s& msg);
bool handle_uectxtreleasecommand(const asn1::s1ap::ue_context_release_cmd_s& msg);
bool handle_s1setupfailure(const asn1::s1ap::s1_setup_fail_s& msg);
bool handle_erabsetuprequest(const asn1::s1ap::e_rab_setup_request_s& msg);
bool handle_erabsetuprequest(const asn1::s1ap::erab_setup_request_s& msg);
bool handle_uecontextmodifyrequest(const asn1::s1ap::ue_context_mod_request_s& msg);
bool send_initialuemessage(uint16_t rnti,
@ -141,7 +141,7 @@ private:
bool send_uectxtreleasecomplete(uint16_t rnti, uint32_t mme_ue_id, uint32_t enb_ue_id);
bool send_initial_ctxt_setup_response(uint16_t rnti, const asn1::s1ap::init_context_setup_resp_s& res_);
bool send_initial_ctxt_setup_failure(uint16_t rnti);
bool send_erab_setup_response(uint16_t rnti, const asn1::s1ap::e_rab_setup_resp_s& res_);
bool send_erab_setup_response(uint16_t rnti, const asn1::s1ap::erab_setup_resp_s& res_);
// bool send_ue_capabilities(uint16_t rnti, LIBLTE_RRC_UE_EUTRA_CAPABILITY_STRUCT *caps)
bool send_uectxmodifyresp(uint16_t rnti);
bool send_uectxmodifyfailure(uint16_t rnti, const asn1::s1ap::cause_c& cause);

@ -348,7 +348,7 @@ bool rrc::setup_ue_ctxt(uint16_t rnti, const asn1::s1ap::init_context_setup_requ
user_it->second->send_security_mode_command();
// Setup E-RABs
user_it->second->setup_erabs(msg.protocol_ies.e_rab_to_be_setup_list_ctxt_su_req.value);
user_it->second->setup_erabs(msg.protocol_ies.erab_to_be_setup_list_ctxt_su_req.value);
pthread_mutex_unlock(&user_mutex);
@ -423,7 +423,7 @@ bool rrc::modify_ue_ctxt(uint16_t rnti, const asn1::s1ap::ue_context_mod_request
return true;
}
bool rrc::setup_ue_erabs(uint16_t rnti, const asn1::s1ap::e_rab_setup_request_s& msg)
bool rrc::setup_ue_erabs(uint16_t rnti, const asn1::s1ap::erab_setup_request_s& msg)
{
pthread_mutex_lock(&user_mutex);
@ -442,7 +442,7 @@ bool rrc::setup_ue_erabs(uint16_t rnti, const asn1::s1ap::e_rab_setup_request_s&
}
// Setup E-RABs
user_it->second->setup_erabs(msg.protocol_ies.e_rab_to_be_setup_list_bearer_su_req.value);
user_it->second->setup_erabs(msg.protocol_ies.erab_to_be_setup_list_bearer_su_req.value);
pthread_mutex_unlock(&user_mutex);
@ -1289,10 +1289,10 @@ void rrc::ue::set_security_key(const asn1::fixed_bitstring<256, false, true>& ke
parent->rrc_log->info_hex(k_up_enc, 32, "UP Encryption Key (k_up_enc)");
}
bool rrc::ue::setup_erabs(const asn1::s1ap::e_rab_to_be_setup_list_ctxt_su_req_l& e)
bool rrc::ue::setup_erabs(const asn1::s1ap::erab_to_be_setup_list_ctxt_su_req_l& e)
{
for (const auto& item : e) {
auto& erab = item.value.e_rab_to_be_setup_item_ctxt_su_req();
auto& erab = item.value.erab_to_be_setup_item_ctxt_su_req();
if (erab.ext) {
parent->rrc_log->warning("Not handling E-RABToBeSetupListCtxtSURequest extensions\n");
}
@ -1307,15 +1307,15 @@ bool rrc::ue::setup_erabs(const asn1::s1ap::e_rab_to_be_setup_list_ctxt_su_req_l
uint32_t teid_out;
uint8_to_uint32(erab.gtp_teid.data(), &teid_out);
const asn1::unbounded_octstring<true>* nas_pdu = erab.nas_pdu_present ? &erab.nas_pdu : nullptr;
setup_erab(erab.e_rab_id, erab.e_ra_blevel_qo_sparams, erab.transport_layer_address, teid_out, nas_pdu);
setup_erab(erab.erab_id, erab.erab_level_qos_params, erab.transport_layer_address, teid_out, nas_pdu);
}
return true;
}
bool rrc::ue::setup_erabs(const asn1::s1ap::e_rab_to_be_setup_list_bearer_su_req_l& e)
bool rrc::ue::setup_erabs(const asn1::s1ap::erab_to_be_setup_list_bearer_su_req_l& e)
{
for (const auto& item : e) {
auto& erab = item.value.e_rab_to_be_setup_item_bearer_su_req();
auto& erab = item.value.erab_to_be_setup_item_bearer_su_req();
if (erab.ext) {
parent->rrc_log->warning("Not handling E-RABToBeSetupListBearerSUReq extensions\n");
}
@ -1329,7 +1329,7 @@ bool rrc::ue::setup_erabs(const asn1::s1ap::e_rab_to_be_setup_list_bearer_su_req
uint32_t teid_out;
uint8_to_uint32(erab.gtp_teid.data(), &teid_out);
setup_erab(erab.e_rab_id, erab.e_ra_blevel_qo_sparams, erab.transport_layer_address, teid_out, &erab.nas_pdu);
setup_erab(erab.erab_id, erab.erab_level_qos_params, erab.transport_layer_address, teid_out, &erab.nas_pdu);
}
// Work in progress
@ -1339,7 +1339,7 @@ bool rrc::ue::setup_erabs(const asn1::s1ap::e_rab_to_be_setup_list_bearer_su_req
}
void rrc::ue::setup_erab(uint8_t id,
const asn1::s1ap::e_rab_level_qo_sparams_s& qos,
const asn1::s1ap::erab_level_qos_params_s& qos,
const asn1::bounded_bitstring<1, 160, true, true>& addr,
uint32_t teid_out,
const asn1::unbounded_octstring<true>* nas_pdu)
@ -1378,12 +1378,12 @@ void rrc::ue::notify_s1ap_ue_ctxt_setup_complete()
{
asn1::s1ap::init_context_setup_resp_s res;
res.protocol_ies.e_rab_setup_list_ctxt_su_res.value.resize(erabs.size());
res.protocol_ies.erab_setup_list_ctxt_su_res.value.resize(erabs.size());
uint32_t i = 0;
for (auto& erab : erabs) {
res.protocol_ies.e_rab_setup_list_ctxt_su_res.value[i].load_info_obj(ASN1_S1AP_ID_E_RAB_SETUP_ITEM_CTXT_SU_RES);
auto& item = res.protocol_ies.e_rab_setup_list_ctxt_su_res.value[i].value.e_rab_setup_item_ctxt_su_res();
item.e_rab_id = erab.second.id;
res.protocol_ies.erab_setup_list_ctxt_su_res.value[i].load_info_obj(ASN1_S1AP_ID_ERAB_SETUP_ITEM_CTXT_SU_RES);
auto& item = res.protocol_ies.erab_setup_list_ctxt_su_res.value[i].value.erab_setup_item_ctxt_su_res();
item.erab_id = erab.second.id;
uint32_to_uint8(erab.second.teid_in, item.gtp_teid.data());
i++;
}
@ -1391,18 +1391,18 @@ void rrc::ue::notify_s1ap_ue_ctxt_setup_complete()
parent->s1ap->ue_ctxt_setup_complete(rnti, res);
}
void rrc::ue::notify_s1ap_ue_erab_setup_response(const asn1::s1ap::e_rab_to_be_setup_list_bearer_su_req_l& e)
void rrc::ue::notify_s1ap_ue_erab_setup_response(const asn1::s1ap::erab_to_be_setup_list_bearer_su_req_l& e)
{
asn1::s1ap::e_rab_setup_resp_s res;
asn1::s1ap::erab_setup_resp_s res;
res.protocol_ies.e_rab_setup_list_bearer_su_res.value.resize(e.size());
res.protocol_ies.erab_setup_list_bearer_su_res.value.resize(e.size());
for (uint32_t i = 0; i < e.size(); ++i) {
res.protocol_ies.e_rab_setup_list_bearer_su_res_present = true;
auto& item = res.protocol_ies.e_rab_setup_list_bearer_su_res.value[i];
item.load_info_obj(ASN1_S1AP_ID_E_RAB_SETUP_ITEM_BEARER_SU_RES);
uint8_t id = e[i].value.e_rab_to_be_setup_item_bearer_su_req().e_rab_id;
item.value.e_rab_setup_item_bearer_su_res().e_rab_id = id;
uint32_to_uint8(erabs[id].teid_in, &item.value.e_rab_setup_item_bearer_su_res().gtp_teid[0]);
res.protocol_ies.erab_setup_list_bearer_su_res_present = true;
auto& item = res.protocol_ies.erab_setup_list_bearer_su_res.value[i];
item.load_info_obj(ASN1_S1AP_ID_ERAB_SETUP_ITEM_BEARER_SU_RES);
uint8_t id = e[i].value.erab_to_be_setup_item_bearer_su_req().erab_id;
item.value.erab_setup_item_bearer_su_res().erab_id = id;
uint32_to_uint8(erabs[id].teid_in, &item.value.erab_setup_item_bearer_su_res().gtp_teid[0]);
}
parent->s1ap->ue_erab_setup_complete(rnti, res);
@ -1821,7 +1821,7 @@ void rrc::ue::send_connection_reconf(srslte::unique_byte_buffer_t pdu)
state = RRC_STATE_WAIT_FOR_CON_RECONF_COMPLETE;
}
void rrc::ue::send_connection_reconf_new_bearer(const asn1::s1ap::e_rab_to_be_setup_list_bearer_su_req_l& e)
void rrc::ue::send_connection_reconf_new_bearer(const asn1::s1ap::erab_to_be_setup_list_bearer_su_req_l& e)
{
srslte::unique_byte_buffer_t pdu = srslte::allocate_unique_buffer(*pool);
@ -1831,8 +1831,8 @@ void rrc::ue::send_connection_reconf_new_bearer(const asn1::s1ap::e_rab_to_be_se
rrc_conn_recfg_r8_ies_s* conn_reconf = &dl_dcch_msg.msg.c1().rrc_conn_recfg().crit_exts.c1().rrc_conn_recfg_r8();
for (const auto& item : e) {
auto& erab = item.value.e_rab_to_be_setup_item_bearer_su_req();
uint8_t id = erab.e_rab_id;
auto& erab = item.value.erab_to_be_setup_item_bearer_su_req();
uint8_t id = erab.erab_id;
uint8_t lcid = id - 2; // Map e.g. E-RAB 5 to LCID 3 (==DRB1)
// Get DRB configuration

@ -103,13 +103,13 @@ srslte::proc_outcome_t s1ap::ue::ho_prep_proc_t::react(const asn1::s1ap::ho_cmd_
}
// Check for E-RABs that could not be admitted in the target
if (msg.protocol_ies.e_ra_bto_release_list_ho_cmd_present) {
if (msg.protocol_ies.erab_to_release_list_ho_cmd_present) {
procWarning("Not handling E-RABtoReleaseList\n");
// TODO
}
// Check for E-RABs subject to being forwarded
if (msg.protocol_ies.e_rab_subjectto_data_forwarding_list_present) {
if (msg.protocol_ies.erab_subjectto_data_forwarding_list_present) {
procWarning("Not handling E-RABSubjecttoDataForwardingList\n");
// TODO
}
@ -118,7 +118,7 @@ srslte::proc_outcome_t s1ap::ue::ho_prep_proc_t::react(const asn1::s1ap::ho_cmd_
// Target eNB to Source eNB Transparent Container IE
uint8_t* buf = const_cast<uint8_t*>(msg.protocol_ies.target_to_source_transparent_container.value.data());
asn1::bit_ref bref(buf, msg.protocol_ies.target_to_source_transparent_container.value.size());
asn1::s1ap::targete_nb_to_sourcee_nb_transparent_container_s container;
asn1::s1ap::targetenb_to_sourceenb_transparent_container_s container;
if (container.unpack(bref) != asn1::SRSASN_SUCCESS) {
procError("Failed to decode TargeteNBToSourceeNBTransparentContainer\n");
return srslte::proc_outcome_t::error;
@ -377,14 +377,14 @@ bool s1ap::user_exists(uint16_t rnti)
void s1ap::ue_ctxt_setup_complete(uint16_t rnti, const asn1::s1ap::init_context_setup_resp_s& res)
{
if (res.protocol_ies.e_rab_setup_list_ctxt_su_res.value.size() > 0) {
if (res.protocol_ies.erab_setup_list_ctxt_su_res.value.size() > 0) {
send_initial_ctxt_setup_response(rnti, res);
} else {
send_initial_ctxt_setup_failure(rnti);
}
}
void s1ap::ue_erab_setup_complete(uint16_t rnti, const asn1::s1ap::e_rab_setup_resp_s& res)
void s1ap::ue_erab_setup_complete(uint16_t rnti, const asn1::s1ap::erab_setup_resp_s& res)
{
send_erab_setup_response(rnti, res);
}
@ -535,8 +535,8 @@ bool s1ap::handle_initiatingmessage(const init_msg_s& msg)
return handle_uectxtreleasecommand(msg.value.ue_context_release_cmd());
case s1ap_elem_procs_o::init_msg_c::types_opts::paging:
return handle_paging(msg.value.paging());
case s1ap_elem_procs_o::init_msg_c::types_opts::e_rab_setup_request:
return handle_erabsetuprequest(msg.value.e_rab_setup_request());
case s1ap_elem_procs_o::init_msg_c::types_opts::erab_setup_request:
return handle_erabsetuprequest(msg.value.erab_setup_request());
case s1ap_elem_procs_o::init_msg_c::types_opts::ue_context_mod_request:
return handle_uecontextmodifyrequest(msg.value.ue_context_mod_request());
default:
@ -665,7 +665,7 @@ bool s1ap::handle_paging(const asn1::s1ap::paging_s& msg)
return true;
}
bool s1ap::handle_erabsetuprequest(const e_rab_setup_request_s& msg)
bool s1ap::handle_erabsetuprequest(const erab_setup_request_s& msg)
{
s1ap_log->info("Received ERABSetupRequest\n");
if (msg.ext) {
@ -952,8 +952,8 @@ bool s1ap::send_initial_ctxt_setup_response(uint16_t rnti, const asn1::s1ap::ini
container.enb_ue_s1ap_id.value = get_user_ctxt(rnti)->eNB_UE_S1AP_ID;
// Fill in the GTP bind address for all bearers
for (uint32_t i = 0; i < container.e_rab_setup_list_ctxt_su_res.value.size(); ++i) {
auto& item = container.e_rab_setup_list_ctxt_su_res.value[i].value.e_rab_setup_item_ctxt_su_res();
for (uint32_t i = 0; i < container.erab_setup_list_ctxt_su_res.value.size(); ++i) {
auto& item = container.erab_setup_list_ctxt_su_res.value[i].value.erab_setup_item_ctxt_su_res();
item.transport_layer_address.resize(32);
uint8_t addr[4];
inet_pton(AF_INET, args.gtp_bind_addr.c_str(), addr);
@ -965,22 +965,22 @@ bool s1ap::send_initial_ctxt_setup_response(uint16_t rnti, const asn1::s1ap::ini
return sctp_send_s1ap_pdu(tx_pdu, rnti, "InitialContextSetupResponse");
}
bool s1ap::send_erab_setup_response(uint16_t rnti, const e_rab_setup_resp_s& res_)
bool s1ap::send_erab_setup_response(uint16_t rnti, const erab_setup_resp_s& res_)
{
if (!mme_connected) {
return false;
}
asn1::s1ap::s1ap_pdu_c tx_pdu;
tx_pdu.set_successful_outcome().load_info_obj(ASN1_S1AP_ID_E_RAB_SETUP);
e_rab_setup_resp_s& res = tx_pdu.successful_outcome().value.e_rab_setup_request();
tx_pdu.set_successful_outcome().load_info_obj(ASN1_S1AP_ID_ERAB_SETUP);
erab_setup_resp_s& res = tx_pdu.successful_outcome().value.erab_setup_request();
res = res_;
// Fill in the GTP bind address for all bearers
if (res.protocol_ies.e_rab_setup_list_bearer_su_res_present) {
for (uint32_t i = 0; i < res.protocol_ies.e_rab_setup_list_bearer_su_res.value.size(); ++i) {
auto& item = res.protocol_ies.e_rab_setup_list_bearer_su_res.value[i].value.e_rab_setup_item_bearer_su_res();
if (res.protocol_ies.erab_setup_list_bearer_su_res_present) {
for (uint32_t i = 0; i < res.protocol_ies.erab_setup_list_bearer_su_res.value.size(); ++i) {
auto& item = res.protocol_ies.erab_setup_list_bearer_su_res.value[i].value.erab_setup_item_bearer_su_res();
item.transport_layer_address.resize(32);
uint8_t addr[4];
inet_pton(AF_INET, args.gtp_bind_addr.c_str(), addr);
@ -1252,7 +1252,7 @@ bool s1ap::ue::send_ho_required(uint32_t target_eci,
container.csg_id_present = false; // NOTE: CSG/hybrid target cell not supported
container.cell_access_mode_present = false; // only for hybrid cells
// no GERAN/UTRAN/PS
auto& targetenb = container.target_id.value.set_targete_nb_id();
auto& targetenb = container.target_id.value.set_targetenb_id();
// set PLMN and TAI of target
// NOTE: Only HO without TAU supported.
uint16_t tmp16;
@ -1266,8 +1266,8 @@ bool s1ap::ue::send_ho_required(uint32_t target_eci,
/*** fill the transparent container ***/
container.source_to_target_transparent_container_secondary_present = false;
sourcee_nb_to_targete_nb_transparent_container_s transparent_cntr;
transparent_cntr.e_rab_info_list_present = false; // TODO: CHECK
sourceenb_to_targetenb_transparent_container_s transparent_cntr;
transparent_cntr.erab_info_list_present = false; // TODO: CHECK
transparent_cntr.subscriber_profile_idfor_rfp_present = false; // TODO: CHECK
// - set target cell ID
target_plmn.to_s1ap_plmn_bytes(transparent_cntr.target_cell_id.plm_nid.data());
@ -1312,7 +1312,7 @@ bool s1ap::ue::send_enb_status_transfer_proc(std::vector<bearer_status_info>& be
}
s1ap_pdu_c tx_pdu;
tx_pdu.set_init_msg().load_info_obj(ASN1_S1AP_ID_E_NB_STATUS_TRANSFER);
tx_pdu.set_init_msg().load_info_obj(ASN1_S1AP_ID_ENB_STATUS_TRANSFER);
enb_status_transfer_ies_container& container = tx_pdu.init_msg().value.enb_status_transfer().protocol_ies;
container.enb_ue_s1ap_id.value = ctxt.eNB_UE_S1AP_ID;
@ -1326,7 +1326,7 @@ bool s1ap::ue::send_enb_status_transfer_proc(std::vector<bearer_status_info>& be
auto& asn1bearer = list[i].value.bearers_subject_to_status_transfer_item();
bearer_status_info& item = bearer_status_list[i];
asn1bearer.e_rab_id = item.erab_id;
asn1bearer.erab_id = item.erab_id;
asn1bearer.dl_coun_tvalue.pdcp_sn = item.pdcp_dl_sn;
asn1bearer.dl_coun_tvalue.hfn = item.dl_hfn;
asn1bearer.ul_coun_tvalue.pdcp_sn = item.pdcp_ul_sn;

@ -98,7 +98,7 @@ public:
bool user_exists(uint16_t rnti) override { return true; }
bool user_release(uint16_t rnti, asn1::s1ap::cause_radio_network_e cause_radio) override { return true; }
void ue_ctxt_setup_complete(uint16_t rnti, const asn1::s1ap::init_context_setup_resp_s& res) override {}
void ue_erab_setup_complete(uint16_t rnti, const asn1::s1ap::e_rab_setup_resp_s& res) override {}
void ue_erab_setup_complete(uint16_t rnti, const asn1::s1ap::erab_setup_resp_s& res) override {}
bool is_mme_connected() override { return true; }
bool send_ho_required(uint16_t rnti,
uint32_t target_eci,

@ -95,7 +95,7 @@ int test_erab_setup(bool qci_exists)
asn1::bit_ref bref(byte_buf.msg, byte_buf.N_bytes);
TESTASSERT(s1ap_pdu.unpack(bref) == asn1::SRSASN_SUCCESS);
rrc.setup_ue_erabs(rnti, s1ap_pdu.init_msg().value.e_rab_setup_request());
rrc.setup_ue_erabs(rnti, s1ap_pdu.init_msg().value.erab_setup_request());
if (qci_exists) {
TESTASSERT(rrc_log.error_counter == 0);

@ -1072,15 +1072,15 @@ bool rrc::ho_prepare()
int ncc = -1;
if (mob_reconf_r8->security_cfg_ho_present) {
ncc = mob_reconf_r8->security_cfg_ho.ho_type.intra_lte().next_hop_chaining_count;
if (mob_reconf_r8->security_cfg_ho.ho_type.intra_lte().key_change_ind) {
ncc = mob_reconf_r8->security_cfg_ho.handov_type.intra_lte().next_hop_chaining_count;
if (mob_reconf_r8->security_cfg_ho.handov_type.intra_lte().key_change_ind) {
rrc_log->console("keyChangeIndicator in securityConfigHO not supported\n");
return false;
}
if (mob_reconf_r8->security_cfg_ho.ho_type.intra_lte().security_algorithm_cfg_present) {
cipher_algo = (CIPHERING_ALGORITHM_ID_ENUM)mob_reconf_r8->security_cfg_ho.ho_type.intra_lte()
if (mob_reconf_r8->security_cfg_ho.handov_type.intra_lte().security_algorithm_cfg_present) {
cipher_algo = (CIPHERING_ALGORITHM_ID_ENUM)mob_reconf_r8->security_cfg_ho.handov_type.intra_lte()
.security_algorithm_cfg.ciphering_algorithm.to_number();
integ_algo = (INTEGRITY_ALGORITHM_ID_ENUM)mob_reconf_r8->security_cfg_ho.ho_type.intra_lte()
integ_algo = (INTEGRITY_ALGORITHM_ID_ENUM)mob_reconf_r8->security_cfg_ho.handov_type.intra_lte()
.security_algorithm_cfg.integrity_prot_algorithm.to_number();
rrc_log->info("Changed Ciphering to %s and Integrity to %s\n",
ciphering_algorithm_id_text[cipher_algo],
@ -1140,7 +1140,7 @@ bool rrc::con_reconfig_ho(asn1::rrc::rrc_conn_recfg_s* reconfig)
rrc_log->info("Received HO command to target PCell=%d\n", mob_reconf_r8->mob_ctrl_info.target_pci);
rrc_log->console("Received HO command to target PCell=%d, NCC=%d\n",
mob_reconf_r8->mob_ctrl_info.target_pci,
mob_reconf_r8->security_cfg_ho.ho_type.intra_lte().next_hop_chaining_count);
mob_reconf_r8->security_cfg_ho.handov_type.intra_lte().next_hop_chaining_count);
// store mobilityControlInfo
mob_reconf = *reconfig;
@ -3109,8 +3109,8 @@ void rrc::rrc_meas::ho_finish()
// TODO: Inter-frequency handover
// Stop all reports
for (std::map<uint32_t, meas_t>::iterator iter = active.begin(); iter != active.end(); ++iter) {
stop_reports(&iter->second);
for (auto& item : active) {
stop_reports(&item.second);
}
}

Loading…
Cancel
Save