From 64e296ed6777c18d0a261f6f021bbb5576b233d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Leroy?= <frederic.leroy@b-com.com> Date: Fri, 22 Jul 2016 11:11:19 +0200 Subject: [PATCH] UE/API/USER: remove fd from nas_user_t --- openair3/NAS/UE/API/USER/user_api.c | 43 ++++++----------------------- openair3/NAS/UE/API/USER/user_api.h | 6 ++-- openair3/NAS/UE/UEprocess.c | 20 +++++++------- openair3/NAS/UE/nas_ue_task.c | 5 ++-- openair3/NAS/UE/nas_user.c | 4 +-- openair3/NAS/UE/user_defs.h | 1 - 6 files changed, 25 insertions(+), 54 deletions(-) diff --git a/openair3/NAS/UE/API/USER/user_api.c b/openair3/NAS/UE/API/USER/user_api.c index 21e4eacf9d8..a1300ea059d 100644 --- a/openair3/NAS/UE/API/USER/user_api.c +++ b/openair3/NAS/UE/API/USER/user_api.c @@ -225,8 +225,6 @@ const void* user_api_get_data(user_at_commands_t *commands, int index) ** ** ** Description: Read data received from the user application layer ** ** ** - ** Inputs: fd: File descriptor of the connection endpoint ** - ** from which data have been received ** ** Others: _user_api_id ** ** ** ** Outputs: Return: The number of bytes read when success; ** @@ -234,20 +232,12 @@ const void* user_api_get_data(user_at_commands_t *commands, int index) ** Others: user_api_id->recv_buffer, _user_api_id ** ** ** ***************************************************************************/ -int user_api_read_data(user_api_id_t *user_api_id, int fd) +int user_api_read_data(user_api_id_t *user_api_id) { LOG_FUNC_IN; int rbytes; - /* Sanity check */ - int sfd = user_api_get_fd(user_api_id); - - if (fd != sfd) { - LOG_TRACE(ERROR, "USR-API - Endpoint %d is not the one created for communication with the user application layer (%d)", fd, sfd); - LOG_FUNC_RETURN (RETURNerror); - } - memset(user_api_id->recv_buffer, 0, USER_API_RECV_BUFFER_SIZE); /* Receive data from the user application layer */ @@ -303,8 +293,6 @@ int user_api_set_data(user_api_id_t *user_api_id, char *message) ** ** ** Description: Send data to the user application layer ** ** ** - ** Inputs: fd: File descriptor of the connection endpoint ** - ** to which data have to be sent ** ** length: Number of bytes to send ** ** ** ** Outputs: Return: The number of bytes sent when success; ** @@ -329,18 +317,15 @@ static int _user_api_send_data(user_api_id_t *user_api_id, int length) return sbytes; } -int user_api_send_data(user_api_id_t *user_api_id, int fd, int length) + +/**************************************************************************** + ** ** + ** Name: user_api_close() ** + ***************************************************************************/ + int user_api_send_data(user_api_id_t *user_api_id, int length) { LOG_FUNC_IN; - /* Sanity check */ - int sfd = user_api_get_fd(user_api_id); - - if (fd != sfd) { - LOG_TRACE(ERROR, "USR-API - Endpoint %d is not the one created for communication with the user application layer (%d)", fd, sfd); - LOG_FUNC_RETURN (RETURNerror); - } - /* Send data to the user application layer */ int sbytes = 0; @@ -358,27 +343,15 @@ int user_api_send_data(user_api_id_t *user_api_id, int fd, int length) ** Description: Close the user API from which the NAS layer sent/received ** ** messages to/from the user application layer ** ** ** - ** Inputs: fd: File descriptor of the connection endpoint ** - ** allocated by the system to communicate ** - ** with the user application layer ** ** Others: None ** ** ** ** Outputs: Return: None ** ** ** ***************************************************************************/ -void user_api_close(user_api_id_t *user_api_id, int fd) +void user_api_close(user_api_id_t *user_api_id) { LOG_FUNC_IN; - /* Sanity check */ - int sfd = user_api_get_fd(user_api_id); - - if (fd != sfd) { - LOG_TRACE(ERROR, "USR-API - Endpoint %d is not the one created for communication with the user application layer (%d)", fd, sfd); - LOG_FUNC_OUT; - return; - } - /* Cleanup the connection endpoint */ user_api_id->close(user_api_id->endpoint) ; user_api_id->endpoint = NULL; diff --git a/openair3/NAS/UE/API/USER/user_api.h b/openair3/NAS/UE/API/USER/user_api.h index 513a44e4fb0..6536144165b 100644 --- a/openair3/NAS/UE/API/USER/user_api.h +++ b/openair3/NAS/UE/API/USER/user_api.h @@ -66,10 +66,10 @@ int user_api_esm_callback(user_api_id_t *user_api_id, int cid, network_pdn_state int user_api_get_fd(user_api_id_t *user_api_id); const void* user_api_get_data(user_at_commands_t *commands, int index); -int user_api_read_data(user_api_id_t *user_api_id, int fd); +int user_api_read_data(user_api_id_t *user_api_id); int user_api_set_data(user_api_id_t *user_api_id, char *message); -int user_api_send_data(user_api_id_t *user_api_id, int fd, int length); -void user_api_close(user_api_id_t *user_api_id, int fd); +int user_api_send_data(user_api_id_t *user_api_id, int length); +void user_api_close(user_api_id_t *user_api_id); int user_api_decode_data(user_api_id_t *user_api_id, user_at_commands_t *commands, int length); int user_api_encode_data(user_api_id_t *user_api_id, const void* data, int add_success_code); diff --git a/openair3/NAS/UE/UEprocess.c b/openair3/NAS/UE/UEprocess.c index 122ee72f6e2..72035da6c8c 100644 --- a/openair3/NAS/UE/UEprocess.c +++ b/openair3/NAS/UE/UEprocess.c @@ -70,7 +70,7 @@ static void *_nas_network_mngr(void *); static int _nas_set_signal_handler(int signal, void (handler)(int)); static void _nas_signal_handler(int signal); -static void _nas_clean(user_api_id_t *user_api_id, int usr_fd, int net_fd); +static void _nas_clean(user_api_id_t *user_api_id, int net_fd); uint8_t usim_test = 0; // FIXME user must be set up with right itti message instance @@ -126,7 +126,7 @@ int main(int argc, const char *argv[]) */ if (network_api_initialize (nhost, nport) != RETURNok) { LOG_TRACE (ERROR, "UE-MAIN - network_api_initialize() failed"); - user_api_close (user_api_id, user_fd); + user_api_close (user_api_id); exit (EXIT_FAILURE); } @@ -163,7 +163,7 @@ int main(int argc, const char *argv[]) if (pthread_create (&user_mngr, &attr, _nas_user_mngr, &user_fd) != 0) { LOG_TRACE (ERROR, "UE-MAIN - " "Failed to create the user management thread"); - user_api_close (user_api_id, user_fd); + user_api_close (user_api_id); network_api_close (network_fd); exit (EXIT_FAILURE); } @@ -177,7 +177,7 @@ int main(int argc, const char *argv[]) &network_fd) != 0) { LOG_TRACE (ERROR, "UE-MAIN - " "Failed to create the network management thread"); - user_api_close (user_api_id, user_fd); + user_api_close (user_api_id); network_api_close (network_fd); exit (EXIT_FAILURE); } @@ -195,7 +195,7 @@ int main(int argc, const char *argv[]) } /* Termination cleanup */ - _nas_clean (user_api_id, user_fd, network_fd); + _nas_clean (user_api_id, network_fd); LOG_TRACE (WARNING, "UE-MAIN - NAS main process exited"); @@ -236,7 +236,7 @@ static void *_nas_user_mngr(void *args) } /* Close the connection to the user application layer */ - user_api_close (user->user_api_id, *fd); + user_api_close (user->user_api_id); LOG_TRACE (WARNING, "UE-MAIN - " "The user connection endpoint manager exited"); @@ -386,7 +386,7 @@ static void _nas_signal_handler(int signal) LOG_TRACE (WARNING, "UE-MAIN - Signal %d received", signal); // FIXME acces to global - _nas_clean (user->user_api_id, user_api_get_fd (user->user_api_id), network_api_get_fd ()); + _nas_clean (user->user_api_id, network_api_get_fd ()); exit (EXIT_SUCCESS); LOG_FUNC_OUT @@ -407,7 +407,7 @@ static void _nas_signal_handler(int signal) ** Others: None ** ** ** ***************************************************************************/ -static void _nas_clean(user_api_id_t *user_api_id, int usr_fd, int net_fd) +static void _nas_clean(user_api_id_t *user_api_id, int net_fd) { LOG_FUNC_IN; @@ -418,8 +418,8 @@ static void _nas_clean(user_api_id_t *user_api_id, int usr_fd, int net_fd) LOG_TRACE (INFO, "UE-MAIN - " "Closing user connection %d and network connection %d", - usr_fd, net_fd); - user_api_close (user_api_id, usr_fd); + user_api_get_fd (user_api_id), net_fd); + user_api_close (user_api_id); network_api_close (net_fd); LOG_FUNC_OUT diff --git a/openair3/NAS/UE/nas_ue_task.c b/openair3/NAS/UE/nas_ue_task.c index 2b411234463..6b4b7d97d90 100644 --- a/openair3/NAS/UE/nas_ue_task.c +++ b/openair3/NAS/UE/nas_ue_task.c @@ -48,7 +48,7 @@ static int nas_ue_process_events(nas_user_t *user, struct epoll_event *events, i for (event = 0; event < nb_events; event++) { if (events[event].events != 0) { /* If the event has not been yet been processed (not an itti message) */ - if (events[event].data.fd == user->fd) { + if (events[event].data.fd == user_api_get_fd(user->user_api_id)) { exit_loop = nas_user_receive_and_process(user, NULL); } else { LOG_E(NAS, "[UE] Received an event from an unknown fd %d!\n", events[event].data.fd); @@ -94,8 +94,7 @@ void *nas_ue_task(void *args_p) exit (EXIT_FAILURE); } - user->fd = user_api_get_fd (user_api_id); - itti_subscribe_event_fd (TASK_NAS_UE, user->fd); + itti_subscribe_event_fd (TASK_NAS_UE, user_api_get_fd(user_api_id)); } user->user_at_commands = calloc(1, sizeof(user_at_commands_t)); diff --git a/openair3/NAS/UE/nas_user.c b/openair3/NAS/UE/nas_user.c index 065bbca17d5..120037d366c 100644 --- a/openair3/NAS/UE/nas_user.c +++ b/openair3/NAS/UE/nas_user.c @@ -223,7 +223,7 @@ int nas_user_receive_and_process(nas_user_t *user, char *message) bytes = user_api_set_data(user_api_id, message); } else { /* Read the user data message */ - bytes = user_api_read_data (user_api_id, user->fd); + bytes = user_api_read_data (user_api_id); if (bytes == RETURNerror) { /* Failed to read data from the user application layer; @@ -279,7 +279,7 @@ int nas_user_receive_and_process(nas_user_t *user, char *message) } /* Send the data message to the user */ - bytes = user_api_send_data (user_api_id, user->fd, bytes); + bytes = user_api_send_data (user_api_id, bytes); if (bytes == RETURNerror) { /* Failed to send data to the user application layer; diff --git a/openair3/NAS/UE/user_defs.h b/openair3/NAS/UE/user_defs.h index a30e13663a1..993e0d66746 100644 --- a/openair3/NAS/UE/user_defs.h +++ b/openair3/NAS/UE/user_defs.h @@ -60,7 +60,6 @@ Description NAS type definition to manage a user equipment typedef struct { int ueid; /* UE lower layer identifier */ - int fd; proc_data_t proc; // Eps Session Management esm_data_t *esm_data; // ESM internal data (used within ESM only) -- GitLab