diff --git a/openair-cn/S1AP/s1ap_eNB_handlers.c b/openair-cn/S1AP/s1ap_eNB_handlers.c index 86aca8ab74140c49a14b1c1b6225abafb6dddff9..9bc7e860ccad72be0dbc182d5a993c6a2272a543 100644 --- a/openair-cn/S1AP/s1ap_eNB_handlers.c +++ b/openair-cn/S1AP/s1ap_eNB_handlers.c @@ -378,6 +378,7 @@ int s1ap_eNB_handle_initial_context_request(uint32_t assoc_id, message_p = itti_alloc_new_message(TASK_S1AP, S1AP_INITIAL_CONTEXT_SETUP_REQ); + S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).ue_initial_id = ue_desc_p->ue_initial_id; S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).eNB_ue_s1ap_id = ue_desc_p->eNB_ue_s1ap_id; S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).nb_of_e_rabs = initialContextSetupRequest_p->e_RABToBeSetupListCtxtSUReq.s1ap_E_RABToBeSetupItemCtxtSUReq.count; diff --git a/openair-cn/S1AP/s1ap_eNB_nas_procedures.c b/openair-cn/S1AP/s1ap_eNB_nas_procedures.c index 4ea84070674f93e835c8192ce72b9879f2f2295d..9c6b97f842fbcc061362a93a1827888ecd0f59eb 100644 --- a/openair-cn/S1AP/s1ap_eNB_nas_procedures.c +++ b/openair-cn/S1AP/s1ap_eNB_nas_procedures.c @@ -408,7 +408,8 @@ int s1ap_eNB_initial_ctxt_resp( new_item); } - if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) { + if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) + { S1AP_ERROR("Failed to encode uplink NAS transport\n"); /* Encode procedure has failed... */ return -1; diff --git a/openair-cn/UTILS/CONF/epc_caviar.conf b/openair-cn/UTILS/CONF/epc_caviar.conf new file mode 100644 index 0000000000000000000000000000000000000000..a3aa2df051c730c275759e5bfb12fc4e30d7b1dd --- /dev/null +++ b/openair-cn/UTILS/CONF/epc_caviar.conf @@ -0,0 +1,73 @@ +S6A_CONF = "../objs/UTILS/CONF/s6a.conf"; + +REALM = "eur"; + +# Define the limits of the system in terms of served eNB and served UE. +# When the limits will be reached, overload procedure will take place. + +MAXENB = 10; +MAXUE = 100; + +RELATIVE_CAPACITY = 10; + +# Display statistics about whole system (expressed in seconds) +MME_STATISTIC_TIMER = 60; + +# max queue size per task +ITTI_QUEUE_SIZE = 2000000; + +# ------- SCTP definitions +# Number of streams to use in input/output + +SCTP_INSTREAMS = 32; +SCTP_OUTSTREAMS = 32; + +# ------- S1AP definitions + +# outcome drop timer value (seconds) +S1AP_OUTCOME_TIMER = 10; + +# ------- MME served GUMMEI +# MME code DEFAULT = 0 +# size = 8 bits +# maximum of 256 values, comma separated +MME_CODE = 30,56,1,8; + +# MME GROUP ID DEFAULT = 0 +# size = 16 bits +# maximum of 65535 values, comma separated +MME_GID = 3,4,5,30,8,9,50021; + +# TA (mcc.mnc:tracking area code) DEFAULT = 208.34:0 +# max values = 999.999:65535 +# maximum of 32 values, comma separated +PLMN = 208.38:0,209.130:4,208.35:8; + +# ------- Interfaces definitions +SGW_INTERFACE_NAME_FOR_S11 = "eth0"; +SGW_IP_ADDRESS_FOR_S11 = "192.168.12.87"; +SGW_IP_NETMASK_FOR_S11 = 24; + +SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP = "eth0"; +SGW_IP_ADDRESS_FOR_S1U_S12_S4_UP = "192.168.12.87"; +SGW_IP_NETMASK_FOR_S1U_S12_S4_UP = 24; + +SGW_INTERFACE_NAME_FOR_S5_S8_UP = "upsgw1"; +SGW_IP_ADDRESS_FOR_S5_S8_UP = "192.168.5.2"; +SGW_IP_NETMASK_FOR_S5_S8_UP = 24; + +PGW_INTERFACE_NAME_FOR_S5_S8 = "uppgw0"; +PGW_IP_ADDRESS_FOR_S5_S8 = "192.168.5.1"; +PGW_IP_NETMASK_FOR_S5_S8 = 24; + +PGW_INTERFACE_NAME_FOR_SGI = "eth0"; +PGW_IP_ADDR_FOR_SGI = "192.168.12.87"; +PGW_IP_NETMASK_FOR_SGI = 24; + +MME_INTERFACE_NAME_FOR_S1_MME = "eth0"; +MME_IP_ADDRESS_FOR_S1_MME = "192.168.12.87"; +MME_IP_NETMASK_FOR_S1_MME = 24; + +MME_INTERFACE_NAME_FOR_S11_MME = "eth0"; +MME_IP_ADDRESS_FOR_S11_MME = "192.168.12.87"; +MME_IP_NETMASK_FOR_S11_MME = 24; diff --git a/openair2/COMMON/s1ap_messages_def.h b/openair2/COMMON/s1ap_messages_def.h index a05951bccd3a15cd7558e242e1e0762f9eeddc3a..4be2762af8062998886979dbfe576393992209fe 100644 --- a/openair2/COMMON/s1ap_messages_def.h +++ b/openair2/COMMON/s1ap_messages_def.h @@ -6,6 +6,7 @@ MESSAGE_DEF(S1AP_NAS_FIRST_REQ , MESSAGE_PRIORITY_MED, s1ap_nas_firs MESSAGE_DEF(S1AP_UPLINK_NAS , MESSAGE_PRIORITY_MED, s1ap_uplink_nas_t , s1ap_uplink_nas ) MESSAGE_DEF(S1AP_UE_CAPABILITIES_IND , MESSAGE_PRIORITY_MED, s1ap_ue_cap_info_ind_t , s1ap_ue_cap_info_ind) MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_RESP, MESSAGE_PRIORITY_MED, s1ap_initial_context_setup_resp_t, s1ap_initial_context_setup_resp) +MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_FAIL, MESSAGE_PRIORITY_MED, s1ap_initial_context_setup_fail_t, s1ap_initial_context_setup_fail) /* S1AP -> RRC messages */ MESSAGE_DEF(S1AP_DOWNLINK_NAS , MESSAGE_PRIORITY_MED, s1ap_downlink_nas_t , s1ap_downlink_nas ) diff --git a/openair2/COMMON/s1ap_messages_types.h b/openair2/COMMON/s1ap_messages_types.h index f44fbe99923a0081e6f93a39f06912845f8ea905..82356edb65fb27e8d80ac8063f4f4432e51393d0 100644 --- a/openair2/COMMON/s1ap_messages_types.h +++ b/openair2/COMMON/s1ap_messages_types.h @@ -248,6 +248,10 @@ typedef struct s1ap_uplink_nas_s { typedef s1ap_uplink_nas_t s1ap_downlink_nas_t; typedef struct s1ap_initial_context_setup_req_s { + /* UE id for initial connection to S1AP */ + uint16_t ue_initial_id; + + /* eNB ue s1ap id as initialized by S1AP layer */ unsigned eNB_ue_s1ap_id:24; /* UE aggregate maximum bitrate */ @@ -279,6 +283,12 @@ typedef struct s1ap_initial_context_setup_resp_s { e_rab_failed_t e_rabs_failed[S1AP_MAX_E_RAB]; } s1ap_initial_context_setup_resp_t; +typedef struct s1ap_initial_context_setup_fail_s { + unsigned eNB_ue_s1ap_id:24; + + /* TODO add cause */ +} s1ap_initial_context_setup_fail_t; + typedef struct s1ap_ue_cap_info_ind_s { unsigned eNB_ue_s1ap_id:24; ue_radio_cap_t ue_radio_cap;