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 // SecurityConfigHO-v1530 ::= SEQUENCE
struct security_cfg_ho_v1530_s { struct security_cfg_ho_v1530_s {
struct ho_type_v1530_c_ { struct handov_type_v1530_c_ {
struct intra5_gc_r15_s_ { struct intra5_gc_r15_s_ {
bool security_algorithm_cfg_r15_present = false; bool security_algorithm_cfg_r15_present = false;
bool nas_container_r15_present = false; bool nas_container_r15_present = false;
@ -26900,10 +26900,10 @@ struct security_cfg_ho_v1530_s {
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
// choice methods // choice methods
ho_type_v1530_c_() = default; handov_type_v1530_c_() = default;
ho_type_v1530_c_(const ho_type_v1530_c_& other); handov_type_v1530_c_(const handov_type_v1530_c_& other);
ho_type_v1530_c_& operator=(const ho_type_v1530_c_& other); handov_type_v1530_c_& operator=(const handov_type_v1530_c_& other);
~ho_type_v1530_c_() { destroy_(); } ~handov_type_v1530_c_() { destroy_(); }
void set(types::options e = types::nulltype); void set(types::options e = types::nulltype);
types type() const { return type_; } types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -26964,8 +26964,8 @@ struct security_cfg_ho_v1530_s {
}; };
// member variables // member variables
bool ext = false; bool ext = false;
ho_type_v1530_c_ ho_type_v1530; handov_type_v1530_c_ handov_type_v1530;
// ... // ...
// sequence methods // sequence methods
@ -28431,8 +28431,8 @@ struct pci_range_utra_fdd_r9_s {
// PowerCoordinationInfo-r12 ::= SEQUENCE // PowerCoordinationInfo-r12 ::= SEQUENCE
struct pwr_coordination_info_r12_s { struct pwr_coordination_info_r12_s {
uint8_t p_me_nb_r12 = 1; uint8_t p_menb_r12 = 1;
uint8_t p_se_nb_r12 = 1; uint8_t p_senb_r12 = 1;
uint8_t pwr_ctrl_mode_r12 = 1; uint8_t pwr_ctrl_mode_r12 = 1;
// sequence methods // sequence methods
@ -36267,7 +36267,7 @@ typedef enumerated<release_cause_opts> release_cause_e;
// SecurityConfigHO ::= SEQUENCE // SecurityConfigHO ::= SEQUENCE
struct security_cfg_ho_s { struct security_cfg_ho_s {
struct ho_type_c_ { struct handov_type_c_ {
struct intra_lte_s_ { struct intra_lte_s_ {
bool security_algorithm_cfg_present = false; bool security_algorithm_cfg_present = false;
security_algorithm_cfg_s security_algorithm_cfg; security_algorithm_cfg_s security_algorithm_cfg;
@ -36286,10 +36286,10 @@ struct security_cfg_ho_s {
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
// choice methods // choice methods
ho_type_c_() = default; handov_type_c_() = default;
ho_type_c_(const ho_type_c_& other); handov_type_c_(const handov_type_c_& other);
ho_type_c_& operator=(const ho_type_c_& other); handov_type_c_& operator=(const handov_type_c_& other);
~ho_type_c_() { destroy_(); } ~handov_type_c_() { destroy_(); }
void set(types::options e = types::nulltype); void set(types::options e = types::nulltype);
types type() const { return type_; } types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -36335,8 +36335,8 @@ struct security_cfg_ho_s {
}; };
// member variables // member variables
bool ext = false; bool ext = false;
ho_type_c_ ho_type; handov_type_c_ handov_type;
// ... // ...
// sequence methods // sequence methods
@ -49517,8 +49517,8 @@ struct band_params_rx_sl_r14_s {
// BandParametersTxSL-r14 ::= SEQUENCE // BandParametersTxSL-r14 ::= SEQUENCE
struct band_params_tx_sl_r14_s { struct band_params_tx_sl_r14_s {
bool v2x_e_nb_sched_r14_present = false; bool v2x_enb_sched_r14_present = false;
bool v2x_high_pwr_r14_present = false; bool v2x_high_pwr_r14_present = false;
v2x_bw_class_sl_r14_l v2x_bw_class_tx_sl_r14; v2x_bw_class_sl_r14_l v2x_bw_class_tx_sl_r14;
// sequence methods // 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 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 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 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 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 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; 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_exists(uint16_t rnti) = 0;
virtual bool user_release(uint16_t rnti, asn1::s1ap::cause_radio_network_e cause_radio) = 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_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 is_mme_connected() = 0;
virtual bool send_ho_required(uint16_t rnti, virtual bool send_ho_required(uint16_t rnti,
uint32_t target_eci, 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 SRSASN_CODE security_cfg_ho_v1530_s::pack(bit_ref& bref) const
{ {
bref.pack(ext, 1); bref.pack(ext, 1);
HANDLE_CODE(ho_type_v1530.pack(bref)); HANDLE_CODE(handov_type_v1530.pack(bref));
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
SRSASN_CODE security_cfg_ho_v1530_s::unpack(bit_ref& bref) SRSASN_CODE security_cfg_ho_v1530_s::unpack(bit_ref& bref)
{ {
bref.unpack(ext, 1); bref.unpack(ext, 1);
HANDLE_CODE(ho_type_v1530.unpack(bref)); HANDLE_CODE(handov_type_v1530.unpack(bref));
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -52491,11 +52491,11 @@ void security_cfg_ho_v1530_s::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
j.write_fieldname("handoverType-v1530"); j.write_fieldname("handoverType-v1530");
ho_type_v1530.to_json(j); handov_type_v1530.to_json(j);
j.end_obj(); 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_) { switch (type_) {
case types::intra5_gc_r15: case types::intra5_gc_r15:
@ -52511,7 +52511,7 @@ void security_cfg_ho_v1530_s::ho_type_v1530_c_::destroy_()
break; 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_(); destroy_();
type_ = e; type_ = e;
@ -52528,10 +52528,11 @@ void security_cfg_ho_v1530_s::ho_type_v1530_c_::set(types::options e)
case types::nulltype: case types::nulltype:
break; break;
default: 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(); type_ = other.type();
switch (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: case types::nulltype:
break; break;
default: 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_:: 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::ho_type_v1530_c_& other) operator=(const security_cfg_ho_v1530_s::handov_type_v1530_c_& other)
{ {
if (this == &other) { if (this == &other) {
return *this; 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: case types::nulltype:
break; break;
default: 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; 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(); j.start_obj();
switch (type_) { 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(); j.end_obj();
break; break;
default: 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(); 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); type_.pack(bref);
switch (type_) { 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)); HANDLE_CODE(c.get<epc_to_ngc_r15_s_>().nas_container_r15.pack(bref));
break; break;
default: 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_ERROR_ENCODE_FAIL;
} }
return SRSASN_SUCCESS; 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; types e;
e.unpack(bref); 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)); HANDLE_CODE(c.get<epc_to_ngc_r15_s_>().nas_container_r15.unpack(bref));
break; break;
default: 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_ERROR_DECODE_FAIL;
} }
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
@ -56166,16 +56167,16 @@ void pci_range_utra_fdd_r9_s::to_json(json_writer& j) const
// PowerCoordinationInfo-r12 ::= SEQUENCE // PowerCoordinationInfo-r12 ::= SEQUENCE
SRSASN_CODE pwr_coordination_info_r12_s::pack(bit_ref& bref) const 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_menb_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_senb_r12, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(pack_integer(bref, pwr_ctrl_mode_r12, (uint8_t)1u, (uint8_t)2u)); HANDLE_CODE(pack_integer(bref, pwr_ctrl_mode_r12, (uint8_t)1u, (uint8_t)2u));
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
SRSASN_CODE pwr_coordination_info_r12_s::unpack(bit_ref& bref) 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_menb_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_senb_r12, bref, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(unpack_integer(pwr_ctrl_mode_r12, bref, (uint8_t)1u, (uint8_t)2u)); HANDLE_CODE(unpack_integer(pwr_ctrl_mode_r12, bref, (uint8_t)1u, (uint8_t)2u));
return SRSASN_SUCCESS; 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 void pwr_coordination_info_r12_s::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
j.write_int("p-MeNB-r12", p_me_nb_r12); j.write_int("p-MeNB-r12", p_menb_r12);
j.write_int("p-SeNB-r12", p_se_nb_r12); j.write_int("p-SeNB-r12", p_senb_r12);
j.write_int("powerControlMode-r12", pwr_ctrl_mode_r12); j.write_int("powerControlMode-r12", pwr_ctrl_mode_r12);
j.end_obj(); 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 SRSASN_CODE security_cfg_ho_s::pack(bit_ref& bref) const
{ {
bref.pack(ext, 1); bref.pack(ext, 1);
HANDLE_CODE(ho_type.pack(bref)); HANDLE_CODE(handov_type.pack(bref));
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
SRSASN_CODE security_cfg_ho_s::unpack(bit_ref& bref) SRSASN_CODE security_cfg_ho_s::unpack(bit_ref& bref)
{ {
bref.unpack(ext, 1); bref.unpack(ext, 1);
HANDLE_CODE(ho_type.unpack(bref)); HANDLE_CODE(handov_type.unpack(bref));
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -72843,11 +72844,11 @@ void security_cfg_ho_s::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
j.write_fieldname("handoverType"); j.write_fieldname("handoverType");
ho_type.to_json(j); handov_type.to_json(j);
j.end_obj(); j.end_obj();
} }
void security_cfg_ho_s::ho_type_c_::destroy_() void security_cfg_ho_s::handov_type_c_::destroy_()
{ {
switch (type_) { switch (type_) {
case types::intra_lte: case types::intra_lte:
@ -72860,7 +72861,7 @@ void security_cfg_ho_s::ho_type_c_::destroy_()
break; 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_(); destroy_();
type_ = e; type_ = e;
@ -72874,10 +72875,10 @@ void security_cfg_ho_s::ho_type_c_::set(types::options e)
case types::nulltype: case types::nulltype:
break; break;
default: 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(); type_ = other.type();
switch (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: case types::nulltype:
break; break;
default: 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) { if (this == &other) {
return *this; 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: case types::nulltype:
break; break;
default: 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; 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(); j.start_obj();
switch (type_) { switch (type_) {
@ -72938,11 +72940,11 @@ void security_cfg_ho_s::ho_type_c_::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
break; break;
default: 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(); 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); type_.pack(bref);
switch (type_) { 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)); HANDLE_CODE(c.get<inter_rat_s_>().nas_security_param_to_eutra.pack(bref));
break; break;
default: 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_ERROR_ENCODE_FAIL;
} }
return SRSASN_SUCCESS; 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; types e;
e.unpack(bref); 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)); HANDLE_CODE(c.get<inter_rat_s_>().nas_security_param_to_eutra.unpack(bref));
break; break;
default: 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_ERROR_DECODE_FAIL;
} }
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
@ -102500,7 +102502,7 @@ void band_params_rx_sl_r14_s::to_json(json_writer& j) const
// BandParametersTxSL-r14 ::= SEQUENCE // BandParametersTxSL-r14 ::= SEQUENCE
SRSASN_CODE band_params_tx_sl_r14_s::pack(bit_ref& bref) const 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(bref.pack(v2x_high_pwr_r14_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, v2x_bw_class_tx_sl_r14, 1, 16)); 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) 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(bref.unpack(v2x_high_pwr_r14_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(v2x_bw_class_tx_sl_r14, bref, 1, 16)); 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.write_str(v2x_bw_class_tx_sl_r14[i1].to_string());
} }
j.end_array(); j.end_array();
if (v2x_e_nb_sched_r14_present) { if (v2x_enb_sched_r14_present) {
j.write_str("v2x-eNB-Scheduled-r14", "supported"); j.write_str("v2x-eNB-Scheduled-r14", "supported");
} }
if (v2x_high_pwr_r14_present) { 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"); 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"}; 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}; 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 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"); 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"}; 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 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() int test_load_info_obj()
{ {
asn1::s1ap::init_context_setup_resp_ies_container container; asn1::s1ap::init_context_setup_resp_ies_container container;
container.e_rab_failed_to_setup_list_ctxt_su_res.value.resize(1); container.erab_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[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.erab_failed_to_setup_list_ctxt_su_res.value[0].id == ASN1_S1AP_ID_ERAB_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].crit.value == s1ap::crit_opts::reject);
return SRSLTE_SUCCESS; return SRSLTE_SUCCESS;
} }
@ -67,12 +67,12 @@ int test_initial_ctxt_setup_response()
container.mme_ue_s1ap_id.value = 1; container.mme_ue_s1ap_id.value = 1;
container.enb_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 // 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) { for (uint32_t i = 0; i < container.erab_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); container.erab_setup_list_ctxt_su_res.value[i].load_info_obj(ASN1_S1AP_ID_ERAB_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(); auto& item = container.erab_setup_list_ctxt_su_res.value[i].value.erab_setup_item_ctxt_su_res();
item.e_rab_id = 1; item.erab_id = 1;
// uint32_to_uint8(teid_in, item.gtp_teid.data()); // uint32_to_uint8(teid_in, item.gtp_teid.data());
item.transport_layer_address.resize(32); item.transport_layer_address.resize(32);
uint8_t addr[4]; uint8_t addr[4];

@ -177,7 +177,7 @@ public:
void release_complete(uint16_t rnti) override; 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 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 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; bool release_erabs(uint32_t rnti) override;
void add_paging_id(uint32_t ueid, const asn1::s1ap::ue_paging_id_c& UEPagingID) 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; 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_release();
void send_connection_reest_rej(); void send_connection_reest_rej();
void send_connection_reconf(srslte::unique_byte_buffer_t sdu); 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_connection_reconf_upd(srslte::unique_byte_buffer_t pdu);
void send_security_mode_command(); void send_security_mode_command();
void send_ue_cap_enquiry(); 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_capabilities(const asn1::s1ap::ue_security_cap_s& caps);
void set_security_key(const asn1::fixed_bitstring<256, false, true>& key); 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::erab_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_bearer_su_req_l& e);
void setup_erab(uint8_t id, 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, const asn1::bounded_bitstring<1, 160, true, true>& addr,
uint32_t teid_out, uint32_t teid_out,
const asn1::unbounded_octstring<true>* nas_pdu); 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 handle_ho_preparation_complete(bool is_success, srslte::unique_byte_buffer_t container);
void notify_s1ap_ue_ctxt_setup_complete(); 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); 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); void sr_get(uint8_t* I_sr, uint16_t* N_pucch_sr);
@ -321,7 +321,7 @@ public:
typedef struct { typedef struct {
uint8_t id; 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; asn1::bounded_bitstring<1, 160, true, true> address;
uint32_t teid_out; uint32_t teid_out;
uint32_t teid_in; uint32_t teid_in;

@ -73,7 +73,7 @@ public:
bool user_exists(uint16_t rnti) override; bool user_exists(uint16_t rnti) override;
bool user_release(uint16_t rnti, asn1::s1ap::cause_radio_network_e cause_radio) 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_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; bool is_mme_connected() override;
// void ue_capabilities(uint16_t rnti, LIBLTE_RRC_UE_EUTRA_CAPABILITY_STRUCT *caps); // 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_initialctxtsetuprequest(const asn1::s1ap::init_context_setup_request_s& msg);
bool handle_uectxtreleasecommand(const asn1::s1ap::ue_context_release_cmd_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_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 handle_uecontextmodifyrequest(const asn1::s1ap::ue_context_mod_request_s& msg);
bool send_initialuemessage(uint16_t rnti, 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_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_response(uint16_t rnti, const asn1::s1ap::init_context_setup_resp_s& res_);
bool send_initial_ctxt_setup_failure(uint16_t rnti); 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_ue_capabilities(uint16_t rnti, LIBLTE_RRC_UE_EUTRA_CAPABILITY_STRUCT *caps)
bool send_uectxmodifyresp(uint16_t rnti); bool send_uectxmodifyresp(uint16_t rnti);
bool send_uectxmodifyfailure(uint16_t rnti, const asn1::s1ap::cause_c& cause); 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(); user_it->second->send_security_mode_command();
// Setup E-RABs // 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); 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; 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); 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 // 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); 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)"); 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) { 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) { if (erab.ext) {
parent->rrc_log->warning("Not handling E-RABToBeSetupListCtxtSURequest extensions\n"); 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; uint32_t teid_out;
uint8_to_uint32(erab.gtp_teid.data(), &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; 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; 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) { 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) { if (erab.ext) {
parent->rrc_log->warning("Not handling E-RABToBeSetupListBearerSUReq extensions\n"); 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; uint32_t teid_out;
uint8_to_uint32(erab.gtp_teid.data(), &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 // 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, 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, const asn1::bounded_bitstring<1, 160, true, true>& addr,
uint32_t teid_out, uint32_t teid_out,
const asn1::unbounded_octstring<true>* nas_pdu) 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; 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; uint32_t i = 0;
for (auto& erab : erabs) { 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); 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.e_rab_setup_list_ctxt_su_res.value[i].value.e_rab_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.e_rab_id = erab.second.id; item.erab_id = erab.second.id;
uint32_to_uint8(erab.second.teid_in, item.gtp_teid.data()); uint32_to_uint8(erab.second.teid_in, item.gtp_teid.data());
i++; i++;
} }
@ -1391,18 +1391,18 @@ void rrc::ue::notify_s1ap_ue_ctxt_setup_complete()
parent->s1ap->ue_ctxt_setup_complete(rnti, res); 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) { for (uint32_t i = 0; i < e.size(); ++i) {
res.protocol_ies.e_rab_setup_list_bearer_su_res_present = true; res.protocol_ies.erab_setup_list_bearer_su_res_present = true;
auto& item = res.protocol_ies.e_rab_setup_list_bearer_su_res.value[i]; auto& item = res.protocol_ies.erab_setup_list_bearer_su_res.value[i];
item.load_info_obj(ASN1_S1AP_ID_E_RAB_SETUP_ITEM_BEARER_SU_RES); item.load_info_obj(ASN1_S1AP_ID_ERAB_SETUP_ITEM_BEARER_SU_RES);
uint8_t id = e[i].value.e_rab_to_be_setup_item_bearer_su_req().e_rab_id; uint8_t id = e[i].value.erab_to_be_setup_item_bearer_su_req().erab_id;
item.value.e_rab_setup_item_bearer_su_res().e_rab_id = id; item.value.erab_setup_item_bearer_su_res().erab_id = id;
uint32_to_uint8(erabs[id].teid_in, &item.value.e_rab_setup_item_bearer_su_res().gtp_teid[0]); 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); 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; 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); 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(); 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) { 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();
uint8_t id = erab.e_rab_id; uint8_t id = erab.erab_id;
uint8_t lcid = id - 2; // Map e.g. E-RAB 5 to LCID 3 (==DRB1) uint8_t lcid = id - 2; // Map e.g. E-RAB 5 to LCID 3 (==DRB1)
// Get DRB configuration // 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 // 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"); procWarning("Not handling E-RABtoReleaseList\n");
// TODO // TODO
} }
// Check for E-RABs subject to being forwarded // 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"); procWarning("Not handling E-RABSubjecttoDataForwardingList\n");
// TODO // 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 // 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()); 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::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) { if (container.unpack(bref) != asn1::SRSASN_SUCCESS) {
procError("Failed to decode TargeteNBToSourceeNBTransparentContainer\n"); procError("Failed to decode TargeteNBToSourceeNBTransparentContainer\n");
return srslte::proc_outcome_t::error; 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) 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); send_initial_ctxt_setup_response(rnti, res);
} else { } else {
send_initial_ctxt_setup_failure(rnti); 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); 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()); return handle_uectxtreleasecommand(msg.value.ue_context_release_cmd());
case s1ap_elem_procs_o::init_msg_c::types_opts::paging: case s1ap_elem_procs_o::init_msg_c::types_opts::paging:
return handle_paging(msg.value.paging()); return handle_paging(msg.value.paging());
case s1ap_elem_procs_o::init_msg_c::types_opts::e_rab_setup_request: case s1ap_elem_procs_o::init_msg_c::types_opts::erab_setup_request:
return handle_erabsetuprequest(msg.value.e_rab_setup_request()); return handle_erabsetuprequest(msg.value.erab_setup_request());
case s1ap_elem_procs_o::init_msg_c::types_opts::ue_context_mod_request: case s1ap_elem_procs_o::init_msg_c::types_opts::ue_context_mod_request:
return handle_uecontextmodifyrequest(msg.value.ue_context_mod_request()); return handle_uecontextmodifyrequest(msg.value.ue_context_mod_request());
default: default:
@ -665,7 +665,7 @@ bool s1ap::handle_paging(const asn1::s1ap::paging_s& msg)
return true; 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"); s1ap_log->info("Received ERABSetupRequest\n");
if (msg.ext) { 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; container.enb_ue_s1ap_id.value = get_user_ctxt(rnti)->eNB_UE_S1AP_ID;
// Fill in the GTP bind address for all bearers // 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) { for (uint32_t i = 0; i < container.erab_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(); auto& item = container.erab_setup_list_ctxt_su_res.value[i].value.erab_setup_item_ctxt_su_res();
item.transport_layer_address.resize(32); item.transport_layer_address.resize(32);
uint8_t addr[4]; uint8_t addr[4];
inet_pton(AF_INET, args.gtp_bind_addr.c_str(), addr); 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"); 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) { if (!mme_connected) {
return false; return false;
} }
asn1::s1ap::s1ap_pdu_c tx_pdu; asn1::s1ap::s1ap_pdu_c tx_pdu;
tx_pdu.set_successful_outcome().load_info_obj(ASN1_S1AP_ID_E_RAB_SETUP); tx_pdu.set_successful_outcome().load_info_obj(ASN1_S1AP_ID_ERAB_SETUP);
e_rab_setup_resp_s& res = tx_pdu.successful_outcome().value.e_rab_setup_request(); erab_setup_resp_s& res = tx_pdu.successful_outcome().value.erab_setup_request();
res = res_; res = res_;
// Fill in the GTP bind address for all bearers // Fill in the GTP bind address for all bearers
if (res.protocol_ies.e_rab_setup_list_bearer_su_res_present) { if (res.protocol_ies.erab_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) { for (uint32_t i = 0; i < res.protocol_ies.erab_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(); 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); item.transport_layer_address.resize(32);
uint8_t addr[4]; uint8_t addr[4];
inet_pton(AF_INET, args.gtp_bind_addr.c_str(), addr); 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.csg_id_present = false; // NOTE: CSG/hybrid target cell not supported
container.cell_access_mode_present = false; // only for hybrid cells container.cell_access_mode_present = false; // only for hybrid cells
// no GERAN/UTRAN/PS // 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 // set PLMN and TAI of target
// NOTE: Only HO without TAU supported. // NOTE: Only HO without TAU supported.
uint16_t tmp16; uint16_t tmp16;
@ -1266,8 +1266,8 @@ bool s1ap::ue::send_ho_required(uint32_t target_eci,
/*** fill the transparent container ***/ /*** fill the transparent container ***/
container.source_to_target_transparent_container_secondary_present = false; container.source_to_target_transparent_container_secondary_present = false;
sourcee_nb_to_targete_nb_transparent_container_s transparent_cntr; sourceenb_to_targetenb_transparent_container_s transparent_cntr;
transparent_cntr.e_rab_info_list_present = false; // TODO: CHECK transparent_cntr.erab_info_list_present = false; // TODO: CHECK
transparent_cntr.subscriber_profile_idfor_rfp_present = false; // TODO: CHECK transparent_cntr.subscriber_profile_idfor_rfp_present = false; // TODO: CHECK
// - set target cell ID // - set target cell ID
target_plmn.to_s1ap_plmn_bytes(transparent_cntr.target_cell_id.plm_nid.data()); 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; 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; 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; 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(); auto& asn1bearer = list[i].value.bearers_subject_to_status_transfer_item();
bearer_status_info& item = bearer_status_list[i]; 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.pdcp_sn = item.pdcp_dl_sn;
asn1bearer.dl_coun_tvalue.hfn = item.dl_hfn; asn1bearer.dl_coun_tvalue.hfn = item.dl_hfn;
asn1bearer.ul_coun_tvalue.pdcp_sn = item.pdcp_ul_sn; 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_exists(uint16_t rnti) override { return true; }
bool user_release(uint16_t rnti, asn1::s1ap::cause_radio_network_e cause_radio) 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_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 is_mme_connected() override { return true; }
bool send_ho_required(uint16_t rnti, bool send_ho_required(uint16_t rnti,
uint32_t target_eci, 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); asn1::bit_ref bref(byte_buf.msg, byte_buf.N_bytes);
TESTASSERT(s1ap_pdu.unpack(bref) == asn1::SRSASN_SUCCESS); 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) { if (qci_exists) {
TESTASSERT(rrc_log.error_counter == 0); TESTASSERT(rrc_log.error_counter == 0);

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

Loading…
Cancel
Save