forked from acouzens/open5gs
update it
This commit is contained in:
parent
12a12fb222
commit
3ca1fa39d9
|
@ -69,6 +69,7 @@ status_t emm_build_attach_accept(
|
|||
eps_network_feature_support->ims_vops = 1;
|
||||
|
||||
d_assert(nas_security_encode(emmbuf, ue, &message) == CORE_OK && *emmbuf,,);
|
||||
pkbuf_free(esmbuf);
|
||||
|
||||
return CORE_OK;
|
||||
}
|
||||
|
|
|
@ -218,12 +218,10 @@ void emm_handle_lo_create_session(mme_esm_t *esm)
|
|||
d_assert(rv == CORE_OK, return, "esm build error");
|
||||
|
||||
rv = emm_build_attach_accept(&emmbuf, ue, esmbuf);
|
||||
d_assert(rv == CORE_OK, return, "emm build error");
|
||||
pkbuf_free(esmbuf);
|
||||
d_assert(rv == CORE_OK, pkbuf_free(esmbuf); return, "emm build error");
|
||||
|
||||
rv = s1ap_build_initial_context_setup_request(&s1apbuf, esm, emmbuf);
|
||||
d_assert(rv == CORE_OK, return, "emm build error");
|
||||
pkbuf_free(emmbuf);
|
||||
d_assert(rv == CORE_OK, pkbuf_free(emmbuf); return, "emm build error");
|
||||
|
||||
d_assert(s1ap_send_to_enb(enb, s1apbuf) == CORE_OK,,);
|
||||
}
|
||||
|
|
|
@ -105,19 +105,16 @@ status_t s1ap_build_setup_failure(pkbuf_t **pkbuf, S1ap_Cause_t cause)
|
|||
return CORE_OK;
|
||||
}
|
||||
|
||||
status_t s1ap_build_initial_context_setup_request(
|
||||
pkbuf_t **s1apbuf, mme_esm_t *esm, pkbuf_t *emmbuf)
|
||||
status_t s1ap_build_downlink_nas_transport(
|
||||
pkbuf_t **s1apbuf, mme_ue_t *ue, pkbuf_t *emmbuf)
|
||||
{
|
||||
int encoded;
|
||||
s1ap_message_t message;
|
||||
S1ap_DownlinkNASTransport_IEs_t *ies =
|
||||
&message.s1ap_DownlinkNASTransport_IEs;
|
||||
S1ap_NAS_PDU_t *nasPdu = &ies->nas_pdu;
|
||||
mme_ue_t *ue = NULL;
|
||||
|
||||
d_assert(emmbuf, return CORE_ERROR, "Null param");
|
||||
d_assert(esm, return CORE_ERROR, "Null param");
|
||||
ue = esm->ue;
|
||||
d_assert(ue, return CORE_ERROR, "Null param");
|
||||
|
||||
memset(&message, 0, sizeof(s1ap_message_t));
|
||||
|
@ -136,6 +133,83 @@ status_t s1ap_build_initial_context_setup_request(
|
|||
s1ap_free_pdu(&message);
|
||||
|
||||
d_assert(s1apbuf && encoded >= 0,return CORE_ERROR,);
|
||||
pkbuf_free(emmbuf);
|
||||
|
||||
return CORE_OK;
|
||||
}
|
||||
|
||||
status_t s1ap_build_initial_context_setup_request(
|
||||
pkbuf_t **s1apbuf, mme_esm_t *esm, pkbuf_t *emmbuf)
|
||||
{
|
||||
int encoded;
|
||||
s1ap_message_t message;
|
||||
S1ap_InitialContextSetupRequestIEs_t *ies =
|
||||
&message.s1ap_InitialContextSetupRequestIEs;
|
||||
S1ap_E_RABToBeSetupItemCtxtSUReq_t *e_rab = NULL;
|
||||
S1ap_NAS_PDU_t *nasPdu = NULL;
|
||||
mme_ue_t *ue = NULL;
|
||||
pdn_t *pdn = NULL;
|
||||
|
||||
d_assert(emmbuf, return CORE_ERROR, "Null param");
|
||||
d_assert(esm, return CORE_ERROR, "Null param");
|
||||
ue = esm->ue;
|
||||
d_assert(ue, return CORE_ERROR, "Null param");
|
||||
pdn = esm->pdn;
|
||||
d_assert(pdn, return CORE_ERROR, "Null param");
|
||||
|
||||
memset(&message, 0, sizeof(s1ap_message_t));
|
||||
|
||||
ies->mme_ue_s1ap_id = ue->mme_ue_s1ap_id;
|
||||
ies->eNB_UE_S1AP_ID = ue->enb_ue_s1ap_id;
|
||||
|
||||
asn_uint642INTEGER(
|
||||
&ies->uEaggregateMaximumBitrate.uEaggregateMaximumBitRateUL,
|
||||
ue->max_bandwidth_ul);
|
||||
asn_uint642INTEGER(
|
||||
&ies->uEaggregateMaximumBitrate.uEaggregateMaximumBitRateDL,
|
||||
ue->max_bandwidth_dl);
|
||||
|
||||
e_rab = (S1ap_E_RABToBeSetupItemCtxtSUReq_t *)
|
||||
core_calloc(1, sizeof(S1ap_E_RABToBeSetupItemCtxtSUReq_t));
|
||||
e_rab->e_RAB_ID = esm->ebi;
|
||||
e_rab->e_RABlevelQoSParameters.qCI = pdn->qci;
|
||||
|
||||
e_rab->e_RABlevelQoSParameters.allocationRetentionPriority.
|
||||
priorityLevel = pdn->priority_level;
|
||||
e_rab->e_RABlevelQoSParameters.allocationRetentionPriority.
|
||||
pre_emptionCapability =
|
||||
S1ap_Pre_emptionCapability_shall_not_trigger_pre_emption;
|
||||
e_rab->e_RABlevelQoSParameters.allocationRetentionPriority.
|
||||
pre_emptionVulnerability =
|
||||
S1ap_Pre_emptionVulnerability_not_pre_emptable;
|
||||
e_rab->transportLayerAddress.size = 4;
|
||||
e_rab->transportLayerAddress.buf =
|
||||
core_calloc(e_rab->transportLayerAddress.size, sizeof(c_uint8_t));
|
||||
memcpy(e_rab->transportLayerAddress.buf, &esm->sgw_s1u_addr,
|
||||
e_rab->transportLayerAddress.size);
|
||||
|
||||
s1ap_uint32_to_OCTET_STRING(esm->sgw_s1u_teid, &e_rab->gTP_TEID);
|
||||
|
||||
nasPdu = (S1ap_NAS_PDU_t *)core_calloc(1, sizeof(S1ap_NAS_PDU_t));
|
||||
nasPdu->size = emmbuf->len;
|
||||
nasPdu->buf = core_calloc(nasPdu->size, sizeof(c_uint8_t));
|
||||
memcpy(nasPdu->buf, emmbuf->payload, nasPdu->size);
|
||||
e_rab->nAS_PDU = nasPdu;
|
||||
|
||||
ASN_SEQUENCE_ADD(&ies->e_RABToBeSetupListCtxtSUReq, e_rab);
|
||||
|
||||
ies->securityKey.size = 32;
|
||||
ies->securityKey.buf =
|
||||
core_calloc(ies->securityKey.size, sizeof(c_uint8_t));
|
||||
|
||||
message.procedureCode = S1ap_ProcedureCode_id_InitialContextSetup;
|
||||
message.direction = S1AP_PDU_PR_initiatingMessage;
|
||||
|
||||
encoded = s1ap_encode_pdu(s1apbuf, &message);
|
||||
s1ap_free_pdu(&message);
|
||||
|
||||
d_assert(s1apbuf && encoded >= 0,return CORE_ERROR,);
|
||||
pkbuf_free(emmbuf);
|
||||
|
||||
return CORE_OK;
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@ extern "C" {
|
|||
CORE_DECLARE(status_t) s1ap_build_setup_rsp(pkbuf_t **pkbuf);
|
||||
CORE_DECLARE(status_t) s1ap_build_setup_failure(
|
||||
pkbuf_t **pkbuf, S1ap_Cause_t cause);
|
||||
CORE_DECLARE(status_t) s1ap_build_downlink_nas_transport(
|
||||
pkbuf_t **s1apbuf, mme_ue_t *ue, pkbuf_t *emmbuf);
|
||||
CORE_DECLARE(status_t) s1ap_build_initial_context_setup_request(
|
||||
pkbuf_t **s1apbuf, mme_esm_t *esm, pkbuf_t *emmbuf);
|
||||
|
||||
|
|
|
@ -28,9 +28,9 @@ void s1ap_uint32_to_OCTET_STRING(c_uint32_t uint32, OCTET_STRING_t *octet_string
|
|||
octet_string->buf = core_calloc(octet_string->size, sizeof(c_uint8_t));
|
||||
|
||||
octet_string->buf[0] = uint32 >> 24;
|
||||
octet_string->buf[0] = uint32 >> 16;
|
||||
octet_string->buf[0] = uint32 >> 8;
|
||||
octet_string->buf[0] = uint32;
|
||||
octet_string->buf[1] = uint32 >> 16;
|
||||
octet_string->buf[2] = uint32 >> 8;
|
||||
octet_string->buf[3] = uint32;
|
||||
}
|
||||
|
||||
void s1ap_buffer_to_OCTET_STRING(
|
||||
|
|
Loading…
Reference in New Issue