X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fe2-interface.git;a=blobdiff_plain;f=e2sim%2Fprevious%2Fe2apv1sim%2Fricsim%2Fsrc%2FX2AP%2Fx2ap_message_handler.c;fp=e2sim%2Fprevious%2Fe2apv1sim%2Fricsim%2Fsrc%2FX2AP%2Fx2ap_message_handler.c;h=0000000000000000000000000000000000000000;hp=4fa635e5e0a8a8042cc82ad047c66ee2693c938d;hb=f86662b5b6481f27e18313a36355871f3a947193;hpb=a9f02a2b5886990fd81e64f7c218c5d4844f18a3 diff --git a/e2sim/previous/e2apv1sim/ricsim/src/X2AP/x2ap_message_handler.c b/e2sim/previous/e2apv1sim/ricsim/src/X2AP/x2ap_message_handler.c deleted file mode 100644 index 4fa635e..0000000 --- a/e2sim/previous/e2apv1sim/ricsim/src/X2AP/x2ap_message_handler.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * - * Copyright 2019 AT&T Intellectual Property - * Copyright 2019 Nokia - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include -#include -#include - -#include "x2ap_message_handler.h" - -typedef int (*x2ap_message_decoded_handler)(X2AP_PDU_t *pdu, sctp_data_t *response); - -static int handle_x2_setup_request(X2AP_PDU_t *pdu, sctp_data_t *response); - -static int handle_x2_setup_response(X2AP_PDU_t *pdu, sctp_data_t *response); - -static int handle_x2_setup_failure(X2AP_PDU_t *pdu, sctp_data_t *response); - -/* Handlers matrix. Only eNB related procedure present here -/* rowID = procedureCode (start with 0) -*/ -x2ap_message_decoded_handler x2ap_messages_handler[][3] = { - { 0, 0, 0 }, /* handoverPreparation */ - { 0, 0, 0 }, /* handoverCancel */ - { 0, 0, 0 }, /* loadIndication */ - { 0, 0, 0 }, /* errorIndication */ - { 0, 0, 0 }, /* snStatusTransfer */ - { 0, 0, 0 }, /* uEContextRelease */ - { handle_x2_setup_request, handle_x2_setup_response, handle_x2_setup_failure }, /* x2Setup */ - { 0, 0, 0 }, /* reset */ - { 0, 0, 0 }, /* eNBConfigurationUpdate */ - { 0, 0, 0 }, /* resourceStatusReportingInitiation */ - { 0, 0, 0 }, /* resourceStatusReporting */ - { 0, 0, 0 }, /* privateMessage */ - { 0, 0, 0 }, /* mobilitySettingsChange */ - { 0, 0, 0 }, /* rLFIndication */ - { 0, 0, 0 }, /* handoverReport */ - { 0, 0, 0 }, /* cellActivation */ - { 0, 0, 0 }, /* x2Release */ - { 0, 0, 0 }, /* x2APMessageTransfer */ - { 0, 0, 0 }, /* x2Removal */ - { 0, 0, 0 }, /* seNBAdditionPreparation */ - { 0, 0, 0 }, /* seNBReconfigurationCompletion */ - { 0, 0, 0 }, /* meNBinitiatedSeNBModificationPreparation */ - { 0, 0, 0 }, /* seNBinitiatedSeNBModification */ - { 0, 0, 0 }, /* meNBinitiatedSeNBRelease */ - { 0, 0, 0 }, /* seNBinitiatedSeNBRelease */ - { 0, 0, 0 }, /* seNBCounterCheck */ - { 0, 0, 0 } /* retrieveUEContext */ -}; - -char *x2ap_direction2String(int x2ap_dir) -{ - static char *x2ap_direction_String[] = { - "", /* Nothing */ - "Originating message", /* originating message */ - "Successfull outcome", /* successfull outcome */ - "UnSuccessfull outcome", /* successfull outcome */ - }; - return(x2ap_direction_String[x2ap_dir]); -} - -int x2ap_eNB_handle_message(const uint8_t *const data, const int data_len, sctp_data_t* response) -{ - X2AP_PDU_t pdu; - int ret; - - memset(&pdu, 0, sizeof(pdu)); - - //printf("Decode the PDU \n"); - - if (X2AP_ASN_decode(&pdu, data, data_len) < 0){ - return -1; - } - - /* Checking procedure Code and direction of message */ - if (pdu.choice.initiatingMessage.procedureCode > sizeof(x2ap_messages_handler) - / (3 * sizeof(x2ap_message_decoded_handler)) - || (pdu.present > X2AP_PDU_PR_unsuccessfulOutcome)) { - - fprintf(stderr, "Either procedureCode %ld or direction %d exceed expected\n", - pdu.choice.initiatingMessage.procedureCode, pdu.present); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_X2AP_PDU, &pdu); - return -1; - } - - if (x2ap_messages_handler[pdu.choice.initiatingMessage.procedureCode][pdu.present - 1] == NULL) - { - fprintf(stderr, "No handler for procedureCode %ld in direction %s\n", - pdu.choice.initiatingMessage.procedureCode, - x2ap_direction2String(pdu.present - 1)); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_X2AP_PDU, &pdu); - return -1; - } - - /*calling the appropriate handler */ - ret = (*x2ap_messages_handler[pdu.choice.initiatingMessage.procedureCode][pdu.present - 1])(&pdu, response); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_X2AP_PDU, &pdu); - return ret; -} - -int handle_x2_setup_request(X2AP_PDU_t *pdu, sctp_data_t* response) -{ - fprintf(stderr, "Received X2 SETUP REQUEST\n"); - - /* Todo: when to generate X2 Setup Failure??? - */ - - response->len = x2ap_generate_x2_setup_response(&response->data); - - return 0; -} - -int handle_x2_setup_response(X2AP_PDU_t *pdu, sctp_data_t* response) -{ - fprintf(stderr, "Received X2 SETUP RESPONSE\n"); - return 0; -} - -int handle_x2_setup_failure(X2AP_PDU_t *pdu, sctp_data_t* response) -{ - fprintf(stderr, "Received X2 SETUP FAILURE\n"); - return 0; -}