|
|
|
@@ -190,7 +190,7 @@ int s1ap_eNB_handle_nas_first_req(
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = ue_desc_p->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_NAS_PDU;
|
|
|
|
@@ -205,7 +205,7 @@ int s1ap_eNB_handle_nas_first_req(
|
|
|
|
|
s1ap_nas_first_req_p->nas_pdu.length);
|
|
|
|
|
#endif
|
|
|
|
|
ie->value.choice.NAS_PDU.size = s1ap_nas_first_req_p->nas_pdu.length;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_TAI;
|
|
|
|
@@ -217,7 +217,7 @@ int s1ap_eNB_handle_nas_first_req(
|
|
|
|
|
instance_p->mnc[ue_desc_p->selected_plmn_identity],
|
|
|
|
|
instance_p->mnc_digit_length[ue_desc_p->selected_plmn_identity],
|
|
|
|
|
&ie->value.choice.TAI.pLMNidentity);
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_InitialUEMessage_IEs_t *)calloc(1, sizeof(S1AP_InitialUEMessage_IEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_EUTRAN_CGI;
|
|
|
|
@@ -235,7 +235,7 @@ int s1ap_eNB_handle_nas_first_req(
|
|
|
|
|
instance_p->mnc[ue_desc_p->selected_plmn_identity],
|
|
|
|
|
instance_p->mnc_digit_length[ue_desc_p->selected_plmn_identity],
|
|
|
|
|
&ie->value.choice.EUTRAN_CGI.pLMNidentity);
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* Set the establishment cause according to those provided by RRC */
|
|
|
|
|
DevCheck(s1ap_nas_first_req_p->establishment_cause < RRC_CAUSE_LAST,
|
|
|
|
|
s1ap_nas_first_req_p->establishment_cause, RRC_CAUSE_LAST, 0);
|
|
|
|
@@ -245,7 +245,7 @@ int s1ap_eNB_handle_nas_first_req(
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_RRC_Establishment_Cause;
|
|
|
|
|
ie->value.choice.RRC_Establishment_Cause = s1ap_nas_first_req_p->establishment_cause;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
|
if (s1ap_nas_first_req_p->ue_identity.presenceMask & UE_IDENTITIES_s_tmsi) {
|
|
|
|
@@ -258,7 +258,7 @@ int s1ap_eNB_handle_nas_first_req(
|
|
|
|
|
&ie->value.choice.S_TMSI.mMEC);
|
|
|
|
|
M_TMSI_TO_OCTET_STRING(s1ap_nas_first_req_p->ue_identity.s_tmsi.m_tmsi,
|
|
|
|
|
&ie->value.choice.S_TMSI.m_TMSI);
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -278,7 +278,7 @@ int s1ap_eNB_handle_nas_first_req(
|
|
|
|
|
&ie->value.choice.GUMMEI.mME_Group_ID);
|
|
|
|
|
MME_CODE_TO_OCTET_STRING(s1ap_nas_first_req_p->ue_identity.gummei.mme_code,
|
|
|
|
|
&ie->value.choice.GUMMEI.mME_Code);
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -458,14 +458,14 @@ int s1ap_eNB_nas_uplink(instance_t instance, s1ap_uplink_nas_t *s1ap_uplink_nas_
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_MME_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = ue_context_p->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_NAS_PDU;
|
|
|
|
@@ -473,7 +473,7 @@ int s1ap_eNB_nas_uplink(instance_t instance, s1ap_uplink_nas_t *s1ap_uplink_nas_
|
|
|
|
|
ie->value.present = S1AP_UplinkNASTransport_IEs__value_PR_NAS_PDU;
|
|
|
|
|
ie->value.choice.NAS_PDU.buf = s1ap_uplink_nas_p->nas_pdu.buffer;
|
|
|
|
|
ie->value.choice.NAS_PDU.size = s1ap_uplink_nas_p->nas_pdu.length;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_EUTRAN_CGI;
|
|
|
|
@@ -488,7 +488,7 @@ int s1ap_eNB_nas_uplink(instance_t instance, s1ap_uplink_nas_t *s1ap_uplink_nas_
|
|
|
|
|
MACRO_ENB_ID_TO_CELL_IDENTITY(s1ap_eNB_instance_p->eNB_id,
|
|
|
|
|
0,
|
|
|
|
|
&ie->value.choice.EUTRAN_CGI.cell_ID);
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_UplinkNASTransport_IEs_t *)calloc(1, sizeof(S1AP_UplinkNASTransport_IEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_TAI;
|
|
|
|
@@ -500,7 +500,7 @@ int s1ap_eNB_nas_uplink(instance_t instance, s1ap_uplink_nas_t *s1ap_uplink_nas_
|
|
|
|
|
s1ap_eNB_instance_p->mnc_digit_length[ue_context_p->selected_plmn_identity],
|
|
|
|
|
&ie->value.choice.TAI.pLMNidentity);
|
|
|
|
|
TAC_TO_ASN1(s1ap_eNB_instance_p->tac, &ie->value.choice.TAI.tAC);
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* optional */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -555,14 +555,14 @@ int s1ap_eNB_nas_non_delivery_ind(instance_t instance,
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_NASNonDeliveryIndication_IEs__value_PR_MME_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(S1AP_NASNonDeliveryIndication_IEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_NASNonDeliveryIndication_IEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = ue_context_p->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(S1AP_NASNonDeliveryIndication_IEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_NAS_PDU;
|
|
|
|
@@ -570,7 +570,7 @@ int s1ap_eNB_nas_non_delivery_ind(instance_t instance,
|
|
|
|
|
ie->value.present = S1AP_NASNonDeliveryIndication_IEs__value_PR_NAS_PDU;
|
|
|
|
|
ie->value.choice.NAS_PDU.buf = s1ap_nas_non_delivery_ind->nas_pdu.buffer;
|
|
|
|
|
ie->value.choice.NAS_PDU.size = s1ap_nas_non_delivery_ind->nas_pdu.length;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_NASNonDeliveryIndication_IEs_t *)calloc(1, sizeof(S1AP_NASNonDeliveryIndication_IEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_Cause;
|
|
|
|
@@ -579,7 +579,7 @@ int s1ap_eNB_nas_non_delivery_ind(instance_t instance,
|
|
|
|
|
ie->value.present = S1AP_NASNonDeliveryIndication_IEs__value_PR_Cause;
|
|
|
|
|
ie->value.choice.Cause.present = S1AP_Cause_PR_radioNetwork;
|
|
|
|
|
ie->value.choice.Cause.choice.radioNetwork = S1AP_CauseRadioNetwork_radio_connection_with_ue_lost;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
|
|
|
|
|
S1AP_ERROR("Failed to encode NAS NON delivery indication\n");
|
|
|
|
@@ -644,14 +644,14 @@ int s1ap_eNB_initial_ctxt_resp(
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_InitialContextSetupResponseIEs__value_PR_MME_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(S1AP_InitialContextSetupResponseIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_InitialContextSetupResponseIEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = initial_ctxt_resp_p->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_InitialContextSetupResponseIEs_t *)calloc(1, sizeof(S1AP_InitialContextSetupResponseIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_E_RABSetupListCtxtSURes;
|
|
|
|
@@ -680,10 +680,10 @@ int s1ap_eNB_initial_ctxt_resp(
|
|
|
|
|
item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.buf[2],
|
|
|
|
|
item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.buf[3],
|
|
|
|
|
item->value.choice.E_RABSetupItemCtxtSURes.transportLayerAddress.size);
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABSetupListCtxtSURes.list, item);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABSetupListCtxtSURes.list, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
|
if (initial_ctxt_resp_p->nb_of_e_rabs_failed) {
|
|
|
|
@@ -729,10 +729,10 @@ int s1ap_eNB_initial_ctxt_resp(
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
S1AP_DEBUG("initial context setup response: failed e_rab ID %ld\n", item->value.choice.E_RABItem.e_RAB_ID);
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABList.list, item);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABList.list, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
@@ -742,7 +742,7 @@ int s1ap_eNB_initial_ctxt_resp(
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_InitialContextSetupResponseIEs__value_PR_CriticalityDiagnostics;
|
|
|
|
|
// ie->value.choice.CriticalityDiagnostics =;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
|
|
|
|
@@ -807,14 +807,14 @@ int s1ap_eNB_ue_capabilities(instance_t instance,
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_UECapabilityInfoIndicationIEs__value_PR_MME_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_UECapabilityInfoIndicationIEs_t *)calloc(1, sizeof(S1AP_UECapabilityInfoIndicationIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_UECapabilityInfoIndicationIEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = ue_cap_info_ind_p->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_UECapabilityInfoIndicationIEs_t *)calloc(1, sizeof(S1AP_UECapabilityInfoIndicationIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_UERadioCapability;
|
|
|
|
@@ -822,7 +822,7 @@ int s1ap_eNB_ue_capabilities(instance_t instance,
|
|
|
|
|
ie->value.present = S1AP_UECapabilityInfoIndicationIEs__value_PR_UERadioCapability;
|
|
|
|
|
ie->value.choice.UERadioCapability.buf = ue_cap_info_ind_p->ue_radio_cap.buffer;
|
|
|
|
|
ie->value.choice.UERadioCapability.size = ue_cap_info_ind_p->ue_radio_cap.length;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* optional */
|
|
|
|
|
|
|
|
|
|
if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
|
|
|
|
@@ -888,14 +888,14 @@ int s1ap_eNB_e_rab_setup_resp(instance_t instance,
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_E_RABSetupResponseIEs__value_PR_MME_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_E_RABSetupResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABSetupResponseIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_E_RABSetupResponseIEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = e_rab_setup_resp_p->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
|
if (e_rab_setup_resp_p->nb_of_e_rabs > 0) {
|
|
|
|
@@ -927,10 +927,10 @@ int s1ap_eNB_e_rab_setup_resp(instance_t instance,
|
|
|
|
|
item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.buf[2],
|
|
|
|
|
item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.buf[3],
|
|
|
|
|
item->value.choice.E_RABSetupItemBearerSURes.transportLayerAddress.size);
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABSetupListBearerSURes.list, item);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABSetupListBearerSURes.list, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
@@ -976,10 +976,10 @@ int s1ap_eNB_e_rab_setup_resp(instance_t instance,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
S1AP_DEBUG("e_rab_setup_resp: failed e_rab ID %ld\n", item->value.choice.E_RABItem.e_RAB_ID);
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABList.list, item);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABList.list, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
@@ -989,7 +989,7 @@ int s1ap_eNB_e_rab_setup_resp(instance_t instance,
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_E_RABSetupResponseIEs__value_PR_CriticalityDiagnostics;
|
|
|
|
|
// ie->value.choice.CriticalityDiagnostics = ;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* S1AP_E_RABSetupListBearerSURes_t e_RABSetupListBearerSURes;
|
|
|
|
@@ -1063,14 +1063,14 @@ int s1ap_eNB_e_rab_modify_resp(instance_t instance,
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_E_RABModifyResponseIEs__value_PR_MME_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_E_RABModifyResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABModifyResponseIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_E_RABModifyResponseIEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = e_rab_modify_resp_p->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
|
if (e_rab_modify_resp_p->nb_of_e_rabs > 0) {
|
|
|
|
@@ -1087,10 +1087,10 @@ int s1ap_eNB_e_rab_modify_resp(instance_t instance,
|
|
|
|
|
item->value.present = S1AP_E_RABModifyItemBearerModResIEs__value_PR_E_RABModifyItemBearerModRes;
|
|
|
|
|
item->value.choice.E_RABModifyItemBearerModRes.e_RAB_ID = e_rab_modify_resp_p->e_rabs[i].e_rab_id;
|
|
|
|
|
S1AP_DEBUG("e_rab_modify_resp: modified e_rab ID %ld\n", item->value.choice.E_RABModifyItemBearerModRes.e_RAB_ID);
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABModifyListBearerModRes.list, item);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABModifyListBearerModRes.list, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
@@ -1136,10 +1136,10 @@ int s1ap_eNB_e_rab_modify_resp(instance_t instance,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
S1AP_DEBUG("e_rab_modify_resp: failed e_rab ID %ld\n", item->value.choice.E_RABItem.e_RAB_ID);
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABList.list, item);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABList.list, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
@@ -1149,7 +1149,7 @@ int s1ap_eNB_e_rab_modify_resp(instance_t instance,
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_E_RABModifyResponseIEs__value_PR_CriticalityDiagnostics;
|
|
|
|
|
// ie->value.choice.CriticalityDiagnostics = ;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fprintf(stderr, "start encode\n");
|
|
|
|
@@ -1205,14 +1205,14 @@ int s1ap_eNB_e_rab_release_resp(instance_t instance,
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_E_RABReleaseResponseIEs__value_PR_MME_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.MME_UE_S1AP_ID = ue_context_p->mme_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_E_RABReleaseResponseIEs_t *)calloc(1, sizeof(S1AP_E_RABReleaseResponseIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
|
|
|
|
|
ie->criticality = S1AP_Criticality_ignore;
|
|
|
|
|
ie->value.present = S1AP_E_RABReleaseResponseIEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = e_rab_release_resp_p->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
|
if (e_rab_release_resp_p->nb_of_e_rabs_released > 0) {
|
|
|
|
@@ -1229,10 +1229,10 @@ int s1ap_eNB_e_rab_release_resp(instance_t instance,
|
|
|
|
|
item->value.present = S1AP_E_RABReleaseItemBearerRelCompIEs__value_PR_E_RABReleaseItemBearerRelComp;
|
|
|
|
|
item->value.choice.E_RABReleaseItemBearerRelComp.e_RAB_ID = e_rab_release_resp_p->e_rab_release[i].e_rab_id;
|
|
|
|
|
S1AP_DEBUG("e_rab_release_resp: e_rab ID %ld\n", item->value.choice.E_RABReleaseItemBearerRelComp.e_RAB_ID);
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABReleaseListBearerRelComp.list, item);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABReleaseListBearerRelComp.list, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* optional */
|
|
|
|
@@ -1277,10 +1277,10 @@ int s1ap_eNB_e_rab_release_resp(instance_t instance,
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABList.list, item);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABList.list, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1401,7 +1401,7 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_PathSwitchRequestIEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = ue_context_p->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
/* mandatory */
|
|
|
|
|
if (path_switch_req_p->nb_of_e_rabs > 0) {
|
|
|
|
@@ -1438,10 +1438,10 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
e_RABToBeSwitchedDLItem->transportLayerAddress.buf[3],
|
|
|
|
|
e_RABToBeSwitchedDLItem->transportLayerAddress.size);
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABToBeSwitchedDLList.list, e_RABToBeSwitchedDLItemIEs);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABToBeSwitchedDLList.list, e_RABToBeSwitchedDLItemIEs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* mandatory */
|
|
|
|
@@ -1450,7 +1450,7 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_PathSwitchRequestIEs__value_PR_MME_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.MME_UE_S1AP_ID = path_switch_req_p->mme_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_PathSwitchRequestIEs_t *)calloc(1, sizeof(S1AP_PathSwitchRequestIEs_t));
|
|
|
|
@@ -1464,7 +1464,7 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
s1ap_eNB_instance_p->mnc[0],
|
|
|
|
|
s1ap_eNB_instance_p->mnc_digit_length[0],
|
|
|
|
|
&ie->value.choice.EUTRAN_CGI.pLMNidentity);
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_PathSwitchRequestIEs_t *)calloc(1, sizeof(S1AP_PathSwitchRequestIEs_t));
|
|
|
|
@@ -1477,7 +1477,7 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
s1ap_eNB_instance_p->mnc[0],
|
|
|
|
|
s1ap_eNB_instance_p->mnc_digit_length[0],
|
|
|
|
|
&ie->value.choice.TAI.pLMNidentity);
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
/* mandatory */
|
|
|
|
|
ie = (S1AP_PathSwitchRequestIEs_t *)calloc(1, sizeof(S1AP_PathSwitchRequestIEs_t));
|
|
|
|
@@ -1488,7 +1488,7 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
&ie->value.choice.UESecurityCapabilities.encryptionAlgorithms);
|
|
|
|
|
INTPROTALG_TO_BIT_STRING(path_switch_req_p->security_capabilities.integrity_algorithms,
|
|
|
|
|
&ie->value.choice.UESecurityCapabilities.integrityProtectionAlgorithms);
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
|
|
|
|
|
S1AP_ERROR("Failed to encode Path Switch Req \n");
|
|
|
|
@@ -1582,14 +1582,14 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_MME_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.MME_UE_S1AP_ID = e_rab_modification_ind->mme_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = e_rab_modification_ind->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
//E-RABs to be modified list
|
|
|
|
|
ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t));
|
|
|
|
@@ -1617,10 +1617,10 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
INT32_TO_OCTET_STRING(e_rab_modification_ind->e_rabs_tobemodified[i].gtp_teid, &E_RAB_ToBeModifiedItem_BearerModInd->dL_GTP_TEID);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABToBeModifiedListBearerModInd.list, E_RAB_ToBeModifiedItem_BearerModInd_IEs);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABToBeModifiedListBearerModInd.list, E_RAB_ToBeModifiedItem_BearerModInd_IEs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
//E-RABs NOT to be modified list
|
|
|
|
|
ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t));
|
|
|
|
@@ -1649,7 +1649,7 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
INT32_TO_OCTET_STRING(e_rab_modification_ind->e_rabs_nottobemodified[i].gtp_teid, &E_RAB_NotToBeModifiedItem_BearerModInd->dL_GTP_TEID);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABNotToBeModifiedListBearerModInd.list, E_RAB_NotToBeModifiedItem_BearerModInd_IEs);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABNotToBeModifiedListBearerModInd.list, E_RAB_NotToBeModifiedItem_BearerModInd_IEs);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
@@ -1659,7 +1659,7 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_CSGMembershipInfo;
|
|
|
|
@@ -1667,7 +1667,7 @@ int s1ap_eNB_path_switch_req(instance_t instance,
|
|
|
|
|
ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_CSGMembershipInfo;
|
|
|
|
|
ie->value.choice.CSGMembershipInfo.cSGMembershipStatus = S1AP_CSGMembershipStatus_member;
|
|
|
|
|
INT32_TO_BIT_STRING(CSG_id, &ie->value.choice.CSGMembershipInfo.cSG_Id);
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (s1ap_eNB_encode_pdu(&pdu, &buffer, &len) < 0) {
|
|
|
|
@@ -1736,14 +1736,14 @@ int s1ap_eNB_generate_E_RAB_Modification_Indication(
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_MME_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.MME_UE_S1AP_ID = e_rab_modification_ind->mme_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID;
|
|
|
|
|
ie->criticality = S1AP_Criticality_reject;
|
|
|
|
|
ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_ENB_UE_S1AP_ID;
|
|
|
|
|
ie->value.choice.ENB_UE_S1AP_ID = e_rab_modification_ind->eNB_ue_s1ap_id;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
//E-RABs to be modified list
|
|
|
|
|
ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t));
|
|
|
|
@@ -1771,10 +1771,10 @@ int s1ap_eNB_generate_E_RAB_Modification_Indication(
|
|
|
|
|
INT32_TO_OCTET_STRING(e_rab_modification_ind->e_rabs_tobemodified[i].gtp_teid, &E_RAB_ToBeModifiedItem_BearerModInd->dL_GTP_TEID);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABToBeModifiedListBearerModInd.list, E_RAB_ToBeModifiedItem_BearerModInd_IEs);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABToBeModifiedListBearerModInd.list, E_RAB_ToBeModifiedItem_BearerModInd_IEs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);
|
|
|
|
|
|
|
|
|
|
//E-RABs NOT to be modified list
|
|
|
|
|
/*ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t));
|
|
|
|
@@ -1804,7 +1804,7 @@ int s1ap_eNB_generate_E_RAB_Modification_Indication(
|
|
|
|
|
INT32_TO_OCTET_STRING(pseudo_gtp_teid, &E_RAB_NotToBeModifiedItem_BearerModInd->dL_GTP_TEID);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
ASN_SEQUENCE_ADD(&ie->value.choice.E_RABNotToBeModifiedListBearerModInd.list, E_RAB_NotToBeModifiedItem_BearerModInd_IEs);
|
|
|
|
|
asn1cSeqAdd(&ie->value.choice.E_RABNotToBeModifiedListBearerModInd.list, E_RAB_NotToBeModifiedItem_BearerModInd_IEs);
|
|
|
|
|
}
|
|
|
|
|
// }
|
|
|
|
|
//else{
|
|
|
|
@@ -1814,7 +1814,7 @@ int s1ap_eNB_generate_E_RAB_Modification_Indication(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);*/
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);*/
|
|
|
|
|
|
|
|
|
|
/*ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t));
|
|
|
|
|
ie->id = S1AP_ProtocolIE_ID_id_CSGMembershipInfo;
|
|
|
|
@@ -1824,7 +1824,7 @@ int s1ap_eNB_generate_E_RAB_Modification_Indication(
|
|
|
|
|
INT32_TO_BIT_STRING(CSG_id, &ie->value.choice.CSGMembershipInfo.cSG_Id);
|
|
|
|
|
ie->value.choice.CSGMembershipInfo.cSG_Id.bits_unused=5;
|
|
|
|
|
ie->value.choice.CSGMembershipInfo.cellAccessMode = S1AP_CellAccessMode_hybrid;
|
|
|
|
|
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);*/
|
|
|
|
|
asn1cSeqAdd(&out->protocolIEs.list, ie);*/
|
|
|
|
|
|
|
|
|
|
if (s1ap_eNB_encode_pdu(&pdu, &buffer, &len) < 0) {
|
|
|
|
|
S1AP_ERROR("Failed to encode S1 E-RAB modification indication \n");
|
|
|
|
|