X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=RIC-E2-TERMINATION%2FTEST%2FT1%2FE2Builder.h;h=a82d2461a4e08e68ea2d3d0bf626264e47d179e6;hb=ad93dac59e044094cbeb05549c83b91ebbe41168;hp=c8f6f395578a4d28f993eaba07d92bd780bdb85d;hpb=be92d71ad86a8dfd129f000db99d4cd661633160;p=ric-plt%2Fe2.git diff --git a/RIC-E2-TERMINATION/TEST/T1/E2Builder.h b/RIC-E2-TERMINATION/TEST/T1/E2Builder.h index c8f6f39..a82d246 100644 --- a/RIC-E2-TERMINATION/TEST/T1/E2Builder.h +++ b/RIC-E2-TERMINATION/TEST/T1/E2Builder.h @@ -29,6 +29,10 @@ #include #include #include +#include <3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.h> +#include <3rdparty/oranE2SM/RIC-InsertStyle-List.h> +#include <3rdparty/oranE2SM/RANparameterDef-Item.h> +#include <3rdparty/oranE2/GlobalE2node-en-gNB-ID.h> //#include @@ -450,6 +454,7 @@ void buildSetupRequest(E2AP_PDU_t *pdu, int mcc, int mnc) { auto *e2SetupRequestIEs = (E2setupRequestIEs_t *)calloc(1, sizeof(E2setupRequestIEs_t)); ASN_STRUCT_RESET(asn_DEF_E2setupRequestIEs, e2SetupRequestIEs); + e2SetupRequestIEs->value.choice.GlobalE2node_ID.present = GlobalE2node_ID_PR_gNB; e2SetupRequestIEs->value.choice.GlobalE2node_ID.choice.gNB = (GlobalE2node_gNB_ID_t *)calloc(1, sizeof(GlobalE2node_gNB_ID_t)); auto *globalE2NodeGNbId = e2SetupRequestIEs->value.choice.GlobalE2node_ID.choice.gNB; ASN_STRUCT_RESET(asn_DEF_GlobalE2node_gNB_ID, globalE2NodeGNbId); @@ -468,7 +473,6 @@ void buildSetupRequest(E2AP_PDU_t *pdu, int mcc, int mnc) { e2SetupRequestIEs->criticality = Criticality_reject; e2SetupRequestIEs->id = ProtocolIE_ID_id_GlobalE2node_ID; e2SetupRequestIEs->value.present = E2setupRequestIEs__value_PR_GlobalE2node_ID; - e2SetupRequestIEs->value.choice.GlobalE2node_ID.present = GlobalE2node_ID_PR_gNB; auto *e2SetupRequest = &initiatingMessage->value.choice.E2setupRequest; @@ -479,6 +483,49 @@ void buildSetupRequest(E2AP_PDU_t *pdu, int mcc, int mnc) { pdu->present = E2AP_PDU_PR_initiatingMessage; } +void buildSetupRequesteenGNB(E2AP_PDU_t *pdu, int mcc, int mnc) { + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); + + pdu->choice.initiatingMessage = (InitiatingMessage_t *)calloc(1, sizeof(InitiatingMessage_t)); + auto *initiatingMessage = pdu->choice.initiatingMessage; + ASN_STRUCT_RESET(asn_DEF_InitiatingMessage, initiatingMessage); + initiatingMessage->procedureCode = ProcedureCode_id_E2setup; + initiatingMessage->criticality = Criticality_reject; + initiatingMessage->value.present = InitiatingMessage__value_PR_E2setupRequest; + + auto *e2SetupRequestIEs = (E2setupRequestIEs_t *)calloc(1, sizeof(E2setupRequestIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupRequestIEs, e2SetupRequestIEs); + + e2SetupRequestIEs->value.choice.GlobalE2node_ID.present = GlobalE2node_ID_PR_en_gNB; + e2SetupRequestIEs->value.choice.GlobalE2node_ID.choice.en_gNB = (GlobalE2node_en_gNB_ID_t *)calloc(1, sizeof(GlobalE2node_en_gNB_ID_t)); + auto *globalE2NodeEN_GNb = e2SetupRequestIEs->value.choice.GlobalE2node_ID.choice.en_gNB; + ASN_STRUCT_RESET(asn_DEF_GlobalE2node_en_gNB_ID, globalE2NodeEN_GNb); + + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.present = ENGNB_ID_PR_gNB_ID; + createPLMN_IDByMCCandMNC(&globalE2NodeEN_GNb->global_gNB_ID.pLMN_Identity, mcc, mnc); + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.size = 4; + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.buf = + (uint8_t *) calloc(1, globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.size); //22..32 bits + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.buf[0] = 0xC5; + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.buf[1] = 0xC6; + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.buf[2] = 0xC7; + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.buf[3] = 0xF8; + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.bits_unused = 0; + e2SetupRequestIEs->criticality = Criticality_reject; + e2SetupRequestIEs->id = ProtocolIE_ID_id_GlobalE2node_ID; + e2SetupRequestIEs->value.present = E2setupRequestIEs__value_PR_GlobalE2node_ID; + + + auto *e2SetupRequest = &initiatingMessage->value.choice.E2setupRequest; + + ASN_STRUCT_RESET(asn_DEF_E2setupRequest, e2SetupRequest); + ASN_SEQUENCE_ADD(&e2SetupRequest->protocolIEs.list, e2SetupRequestIEs); + + pdu->present = E2AP_PDU_PR_initiatingMessage; +} + + + void buildSetupRequestWithFunc(E2AP_PDU_t *pdu, int mcc, int mnc) { ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); @@ -527,16 +574,80 @@ void buildSetupRequestWithFunc(E2AP_PDU_t *pdu, int mcc, int mnc) { auto *itemIes = (RANfunction_ItemIEs_t *)calloc(1, sizeof(RANfunction_ItemIEs_t)); ASN_STRUCT_RESET(asn_DEF_RANfunction_ItemIEs, itemIes); - uint8_t buf[3] = {0x33, 0x44, 0x55}; + + E2SM_gNB_NRT_RANfunction_Definition_t ranFunDef; + uint8_t funcDes[] = "asdfghjklpoiuytrewq\0"; + ranFunDef.ranFunction_Name.ranFunction_Description.buf = (uint8_t *)calloc(1, strlen((char *)funcDes)); + ranFunDef.ranFunction_Name.ranFunction_Description.size = strlen((char *)funcDes); + memcpy(ranFunDef.ranFunction_Name.ranFunction_Description.buf, funcDes, strlen((char *)funcDes)); + + uint8_t funcOID[] = "ABCDEFGHIJ1234567890\0"; + ranFunDef.ranFunction_Name.ranFunction_E2SM_OID.buf = (uint8_t *)calloc(1, strlen((char *)funcOID)); + ranFunDef.ranFunction_Name.ranFunction_E2SM_OID.size = strlen((char *)funcOID); + memcpy(ranFunDef.ranFunction_Name.ranFunction_E2SM_OID.buf, funcOID, strlen((char *)funcOID)); + + uint8_t shortName[] = "Nothing to declare\0"; + ranFunDef.ranFunction_Name.ranFunction_ShortName.buf = (uint8_t *)calloc(1, strlen((char *)shortName)); + ranFunDef.ranFunction_Name.ranFunction_ShortName.size = strlen((char *)shortName); + memcpy(ranFunDef.ranFunction_Name.ranFunction_ShortName.buf, shortName, strlen((char *)shortName)); + + + RIC_InsertStyle_List_t insertStyleList; + insertStyleList.ric_CallProcessIDFormat_Type = 28l; + insertStyleList.ric_IndicationHeaderFormat_Type = 29; + insertStyleList.ric_IndicationMessageFormat_Type = 30; + insertStyleList.ric_InsertActionFormat_Type = 31l; + + uint8_t styleName[] = "What a style\0"; + + insertStyleList.ric_InsertStyle_Name.buf = (uint8_t *)calloc(1, strlen((char *)styleName)); + insertStyleList.ric_InsertStyle_Name.size = strlen((char *)styleName); + memcpy(insertStyleList.ric_InsertStyle_Name.buf, styleName, strlen((char *)styleName)); + + + insertStyleList.ric_InsertStyle_Type = 23; + + RANparameterDef_Item_t raNparameterDefItem; + raNparameterDefItem.ranParameter_ID = 8; + raNparameterDefItem.ranParameter_Type = 12; + + uint8_t ItemName[] = "What a style\0"; + raNparameterDefItem.ranParameter_Name.buf = (uint8_t *)calloc(1, strlen((char *)ItemName)); + raNparameterDefItem.ranParameter_Name.size = strlen((char *)ItemName); + memcpy(raNparameterDefItem.ranParameter_Name.buf, ItemName, strlen((char *)ItemName)); + + ASN_SEQUENCE_ADD(&insertStyleList.ric_InsertRanParameterDef_List.list, &raNparameterDefItem); + + ASN_SEQUENCE_ADD(&ranFunDef.ric_InsertStyle_List->list, &insertStyleList); + //ranFunDef.ric_InsertStyle_List. + + uint8_t buffer[8192]; + size_t buffer_size = 8192; + auto *ranDef = &itemIes->value.choice.RANfunction_Item.ranFunctionDefinition; + + auto er = asn_encode_to_buffer(nullptr, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_NRT_RANfunction_Definition, &ranFunDef, buffer, buffer_size); + if (er.encoded == -1) { + cerr << "encoding of " << asn_DEF_E2SM_gNB_NRT_RANfunction_Definition.name << " failed, " << strerror(errno) << endl; + exit(-1); + } else if (er.encoded > (ssize_t) buffer_size) { + cerr << "Buffer of size " << buffer_size << " is to small for " << asn_DEF_E2SM_gNB_NRT_RANfunction_Definition.name << endl; + exit(-1); + } else { + ranDef->buf = (uint8_t *)calloc(1, er.encoded); + ranDef->size = er.encoded; + memcpy(ranDef->buf, buffer, ranDef->size); + } + + itemIes->id = ProtocolIE_ID_id_RANfunction_Item; itemIes->criticality = Criticality_reject; itemIes->value.present = RANfunction_ItemIEs__value_PR_RANfunction_Item; itemIes->value.choice.RANfunction_Item.ranFunctionID = 1; - auto *ranDef = &itemIes->value.choice.RANfunction_Item.ranFunctionDefinition; - ranDef->size = 3; - ranDef->buf = (uint8_t *)calloc(1, ranDef->size); - memcpy(ranDef->buf, buf, ranDef->size); +// auto *ranDef = &itemIes->value.choice.RANfunction_Item.ranFunctionDefinition; +// ranDef->size = 3; +// ranDef->buf = (uint8_t *)calloc(1, ranDef->size); +// memcpy(ranDef->buf, buf, ranDef->size); ASN_SEQUENCE_ADD(&ranFlistIEs->value.choice.RANfunctions_List.list, itemIes); @@ -547,9 +658,11 @@ void buildSetupRequestWithFunc(E2AP_PDU_t *pdu, int mcc, int mnc) { itemIes1->value.present = RANfunction_ItemIEs__value_PR_RANfunction_Item; itemIes1->value.choice.RANfunction_Item.ranFunctionID = 7; ranDef = &itemIes1->value.choice.RANfunction_Item.ranFunctionDefinition; - ranDef->size = 3; - ranDef->buf = (uint8_t *)calloc(1, ranDef->size); - memcpy(ranDef->buf, buf, ranDef->size); + + ranDef->buf = (uint8_t *)calloc(1, er.encoded); + ranDef->size = er.encoded; + memcpy(ranDef->buf, buffer, ranDef->size); + ASN_SEQUENCE_ADD(&ranFlistIEs->value.choice.RANfunctions_List.list, itemIes1); @@ -624,18 +737,49 @@ void buildSetupUnSuccsessfulResponse(E2AP_PDU_t *pdu) { uns->criticality = Criticality_reject; uns->value.present = UnsuccessfulOutcome__value_PR_E2setupFailure; - auto *e2SetupFIE = (E2setupFailureIEs_t *)calloc(1, sizeof(E2setupFailureIEs_t)); - ASN_STRUCT_RESET(asn_DEF_E2setupFailureIEs, e2SetupFIE); + ASN_STRUCT_RESET(asn_DEF_E2setupFailure, &uns->value.choice.E2setupFailure); + - e2SetupFIE->criticality = Criticality_reject; - e2SetupFIE->id = ProtocolIE_ID_id_GlobalRIC_ID; - e2SetupFIE->value.present = E2setupFailureIEs__value_PR_Cause; - e2SetupFIE->value.choice.Cause.present = Cause_PR_transport; - e2SetupFIE->value.choice.Cause.choice.transport = CauseTransport_transport_resource_unavailable; + { + auto *e2SetupFIE = (E2setupFailureIEs_t *) calloc(1, sizeof(E2setupFailureIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupFailureIEs, e2SetupFIE); + e2SetupFIE->criticality = Criticality_ignore; + e2SetupFIE->id = ProtocolIE_ID_id_Cause; + e2SetupFIE->value.present = E2setupFailureIEs__value_PR_Cause; + e2SetupFIE->value.choice.Cause.present = Cause_PR_transport; + e2SetupFIE->value.choice.Cause.choice.transport = CauseTransport_transport_resource_unavailable; - ASN_STRUCT_RESET(asn_DEF_E2setupFailure, &uns->value.choice.E2setupFailure); - ASN_SEQUENCE_ADD(&uns->value.choice.E2setupFailure.protocolIEs.list, e2SetupFIE); + + ASN_SEQUENCE_ADD(&uns->value.choice.E2setupFailure.protocolIEs.list, e2SetupFIE); + } + + { + auto *e2SetupFIE = (E2setupFailureIEs_t *) calloc(1, sizeof(E2setupFailureIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupFailureIEs, e2SetupFIE); + + e2SetupFIE->criticality = Criticality_ignore; + e2SetupFIE->id = ProtocolIE_ID_id_TimeToWait; + e2SetupFIE->value.present = E2setupFailureIEs__value_PR_TimeToWait; + e2SetupFIE->value.choice.TimeToWait = TimeToWait_v60s; + + ASN_SEQUENCE_ADD(&uns->value.choice.E2setupFailure.protocolIEs.list, e2SetupFIE); + } + { + auto *e2SetupFIE = (E2setupFailureIEs_t *) calloc(1, sizeof(E2setupFailureIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupFailureIEs, e2SetupFIE); + + e2SetupFIE->criticality = Criticality_ignore; + e2SetupFIE->id = ProtocolIE_ID_id_CriticalityDiagnostics; + e2SetupFIE->value.present = E2setupFailureIEs__value_PR_CriticalityDiagnostics; + e2SetupFIE->value.choice.CriticalityDiagnostics.procedureCode = (ProcedureCode_t *)calloc(1,sizeof(ProcedureCode_t)); + *e2SetupFIE->value.choice.CriticalityDiagnostics.procedureCode = ProcedureCode_id_E2setup; + e2SetupFIE->value.choice.CriticalityDiagnostics.triggeringMessage = (TriggeringMessage_t *)calloc(1,sizeof(TriggeringMessage_t)); + *e2SetupFIE->value.choice.CriticalityDiagnostics.triggeringMessage = TriggeringMessage_initiating_message; + e2SetupFIE->value.choice.CriticalityDiagnostics.procedureCriticality = (Criticality_t *)calloc(1, sizeof(Criticality_t)); + *e2SetupFIE->value.choice.CriticalityDiagnostics.procedureCriticality = Criticality_reject; + ASN_SEQUENCE_ADD(&uns->value.choice.E2setupFailure.protocolIEs.list, e2SetupFIE); + } pdu->present = E2AP_PDU_PR_unsuccessfulOutcome; }