From cbec05f00bcfb1726e19de0a62603e5a600a28ff Mon Sep 17 00:00:00 2001 From: Cedric Roux <cedric.roux@eurecom.fr> Date: Wed, 20 Nov 2013 15:09:29 +0000 Subject: [PATCH] - Add config file name for itti in EPC - Add rrc ue identifier in downlink NAS transport message git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4466 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair-cn/OAI_EPC/oai_epc.c | 4 +++- openair-cn/S1AP/s1ap_eNB_itti_messaging.c | 7 ++++++- openair-cn/S1AP/s1ap_eNB_itti_messaging.h | 5 ++++- openair-cn/S1AP/s1ap_eNB_nas_procedures.c | 2 ++ openair-cn/UTILS/mme_config.c | 10 +++++++++- openair-cn/UTILS/mme_config.h | 1 + openair2/COMMON/s1ap_messages_types.h | 11 ++++++++++- 7 files changed, 35 insertions(+), 5 deletions(-) diff --git a/openair-cn/OAI_EPC/oai_epc.c b/openair-cn/OAI_EPC/oai_epc.c index b8eff1ca8c..05f5944b04 100644 --- a/openair-cn/OAI_EPC/oai_epc.c +++ b/openair-cn/OAI_EPC/oai_epc.c @@ -74,7 +74,9 @@ int main(int argc, char *argv[]) /* Calling each layer init function */ CHECK_INIT_RETURN(log_init(&mme_config, oai_epc_log_specific)); - CHECK_INIT_RETURN(itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info, messages_definition_xml, NULL)); + CHECK_INIT_RETURN(itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, + tasks_info, messages_info, messages_definition_xml, + mme_config.itti_config.log_file)); CHECK_INIT_RETURN(nas_init(&mme_config)); CHECK_INIT_RETURN(sctp_init(&mme_config)); diff --git a/openair-cn/S1AP/s1ap_eNB_itti_messaging.c b/openair-cn/S1AP/s1ap_eNB_itti_messaging.c index 0e1cef7027..3531d2c38d 100644 --- a/openair-cn/S1AP/s1ap_eNB_itti_messaging.c +++ b/openair-cn/S1AP/s1ap_eNB_itti_messaging.c @@ -20,7 +20,10 @@ void s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uin itti_send_msg_to_task(TASK_SCTP, instance, message_p); } -void s1ap_eNB_itti_send_nas_downlink_ind(instance_t instance, uint8_t *nas_pdu, +void s1ap_eNB_itti_send_nas_downlink_ind(instance_t instance, + uint16_t ue_initial_id, + uint32_t eNB_ue_s1ap_id, + uint8_t *nas_pdu, uint32_t nas_pdu_length) { MessageDef *message_p; @@ -30,6 +33,8 @@ void s1ap_eNB_itti_send_nas_downlink_ind(instance_t instance, uint8_t *nas_pdu, s1ap_downlink_nas = &message_p->msg.s1ap_downlink_nas; + s1ap_downlink_nas->ue_initial_id = ue_initial_id; + s1ap_downlink_nas->eNB_ue_s1ap_id = eNB_ue_s1ap_id; s1ap_downlink_nas->nas_pdu.buffer = nas_pdu; s1ap_downlink_nas->nas_pdu.length = nas_pdu_length; diff --git a/openair-cn/S1AP/s1ap_eNB_itti_messaging.h b/openair-cn/S1AP/s1ap_eNB_itti_messaging.h index 1b20423e73..e6fbcce114 100644 --- a/openair-cn/S1AP/s1ap_eNB_itti_messaging.h +++ b/openair-cn/S1AP/s1ap_eNB_itti_messaging.h @@ -4,7 +4,10 @@ void s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer, uint32_t buffer_length, uint16_t stream); -void s1ap_eNB_itti_send_nas_downlink_ind(instance_t instance, uint8_t *nas_pdu, +void s1ap_eNB_itti_send_nas_downlink_ind(instance_t instance, + uint16_t ue_initial_id, + uint32_t eNB_ue_s1ap_id, + uint8_t *nas_pdu, uint32_t nas_pdu_length); #endif /* S1AP_ENB_ITTI_MESSAGING_H_ */ diff --git a/openair-cn/S1AP/s1ap_eNB_nas_procedures.c b/openair-cn/S1AP/s1ap_eNB_nas_procedures.c index 9c6b97f842..29214cde8d 100644 --- a/openair-cn/S1AP/s1ap_eNB_nas_procedures.c +++ b/openair-cn/S1AP/s1ap_eNB_nas_procedures.c @@ -258,6 +258,8 @@ int s1ap_eNB_handle_nas_downlink(uint32_t assoc_id, /* Forward the NAS PDU to RRC */ s1ap_eNB_itti_send_nas_downlink_ind(s1ap_eNB_instance->instance, + ue_desc_p->ue_initial_id, + ue_desc_p->eNB_ue_s1ap_id, downlink_NAS_transport_p->nas_pdu.buf, downlink_NAS_transport_p->nas_pdu.size); diff --git a/openair-cn/UTILS/mme_config.c b/openair-cn/UTILS/mme_config.c index 5529a2e731..36ee5309f0 100644 --- a/openair-cn/UTILS/mme_config.c +++ b/openair-cn/UTILS/mme_config.c @@ -86,7 +86,9 @@ void config_init(mme_config_t *mme_config_p) mme_config_p->ipv4.sgw_ip_netmask_for_S11 = DEFAULT_SGW_IP_NETMASK_FOR_S11; mme_config_p->s6a_config.conf_file = S6A_CONF_FILE; + mme_config_p->itti_config.queue_size = ITTI_QUEUE_SIZE_MAX; + mme_config_p->itti_config.log_file = NULL; mme_config_p->sctp_config.in_streams = SCTP_IN_STREAMS; mme_config_p->sctp_config.out_streams = SCTP_OUT_STREAMS; @@ -199,6 +201,7 @@ static void config_display(mme_config_t *mme_config_p) mme_config_p->ipv4.mme_ip_netmask_for_S11); fprintf(stdout, "- ITTI:\n"); fprintf(stdout, " queue size .....: %u (bytes)\n", mme_config_p->itti_config.queue_size); + fprintf(stdout, " log file .......: %s\n", mme_config_p->itti_config.log_file); fprintf(stdout, "- SCTP:\n"); fprintf(stdout, " in streams .....: %u\n", mme_config_p->sctp_config.in_streams); fprintf(stdout, " out streams ....: %u\n", mme_config_p->sctp_config.out_streams); @@ -227,6 +230,8 @@ static void usage(void) fprintf(stdout, "-c<path>\n"); fprintf(stdout, " Set the configuration file for mme\n"); fprintf(stdout, " See template in UTILS/CONF\n"); + fprintf(stdout, "-K<file>\n"); + fprintf(stdout, " Output intertask messages to provided file\n"); fprintf(stdout, "-V Print %s version and return\n", PACKAGE_NAME); fprintf(stdout, "-v[1-2] Debug level:\n"); fprintf(stdout, " 1 -> ASN1 XER printf on and ASN1 debug off\n"); @@ -241,7 +246,7 @@ int config_parse_opt_line(int argc, char *argv[], mme_config_t *mme_config_p) int c; config_init(mme_config_p); /* Parsing command line */ - while ((c = getopt (argc, argv, "c:hi:v:V")) != -1) { + while ((c = getopt (argc, argv, "c:hi:K:v:V")) != -1) { switch (c) { case 'c': { /* Store the given configuration file. If no file is given, @@ -272,6 +277,9 @@ int config_parse_opt_line(int argc, char *argv[], mme_config_t *mme_config_p) exit(0); nwGtpv1uDisplayBanner(); } break; + case 'K': + mme_config_p->itti_config.log_file = strdup(optarg); + break; case 'h': /* Fall through */ default: usage(); diff --git a/openair-cn/UTILS/mme_config.h b/openair-cn/UTILS/mme_config.h index bb587356d8..0c8501d908 100644 --- a/openair-cn/UTILS/mme_config.h +++ b/openair-cn/UTILS/mme_config.h @@ -111,6 +111,7 @@ typedef struct mme_config_s { } s6a_config; struct { uint32_t queue_size; + char *log_file; } itti_config; } mme_config_t; diff --git a/openair2/COMMON/s1ap_messages_types.h b/openair2/COMMON/s1ap_messages_types.h index 82356edb65..680668f499 100644 --- a/openair2/COMMON/s1ap_messages_types.h +++ b/openair2/COMMON/s1ap_messages_types.h @@ -245,7 +245,16 @@ typedef struct s1ap_uplink_nas_s { nas_pdu_t nas_pdu; } s1ap_uplink_nas_t; -typedef s1ap_uplink_nas_t s1ap_downlink_nas_t; +typedef struct s1ap_downlink_nas_s { + /* UE id for initial connection to S1AP */ + uint16_t ue_initial_id; + + /* Unique UE identifier within an eNB */ + unsigned eNB_ue_s1ap_id:24; + + /* NAS pdu */ + nas_pdu_t nas_pdu; +} s1ap_downlink_nas_t; typedef struct s1ap_initial_context_setup_req_s { /* UE id for initial connection to S1AP */ -- GitLab