SVN to GIT migration (removed EPC software, updated mailing list address in all files)

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7885 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
gauthier
2015-10-06 16:24:54 +00:00
parent 5938fef4d6
commit c7518ecf42
1773 changed files with 13600 additions and 119437 deletions
+3 -378
View File
@@ -20,7 +20,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
# Author: laurent THOMAS, Lionel GAUTHIER
@@ -340,17 +340,7 @@ add_library(S1AP_ENB
${S1AP_DIR}/s1ap_eNB_ue_context.c
)
add_library(S1AP_EPC
${S1AP_C_DIR}/s1ap_ies_defs.h
${S1AP_DIR}/s1ap_mme_encoder.c
${S1AP_DIR}/s1ap_mme_decoder.c
${S1AP_DIR}/s1ap_mme_handlers.c
${S1AP_DIR}/s1ap_mme_nas_procedures.c
${S1AP_DIR}/s1ap_mme.c
${S1AP_DIR}/s1ap_mme_itti_messaging.c
${S1AP_DIR}/s1ap_mme_retransmission.c
${S1AP_DIR}/s1ap_mme_ta.c
)
#X2AP
# Same limitation as described in RRC/S1AP: unknown generated file list
@@ -467,8 +457,6 @@ add_boolean_option(USER_MODE True "????")
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????")
add_boolean_option(DISABLE_USE_NAS False "???")
add_boolean_option(ENABLE_STANDALONE_EPC True "Compile MME, SGW and PGW in a single executable")
add_boolean_option(EPC_BUILD False "???")
add_boolean_option(LOWLATENCY True "Use the Linux scheduler SCHED_DEADLINE: kernel >= 3.14")
add_boolean_option(NAS_ADDRESS_FIX False "specific to oaisim: for nasmesh driver")
add_boolean_option(NAS_NETLINK False "???? Must be True to compile nasmesh driver without rtai")
@@ -542,10 +530,8 @@ add_boolean_option(USE_3GPP_ADDR_AS_LINK_ADDR False "As per attribute name")
# NAS LAYER OPTIONS
##########################
add_boolean_option(ENABLE_NAS_UE_LOGGING True "????")
add_boolean_option(NAS_BUILT_IN_EPC False "MME NAS layer not present in this executable")
add_boolean_option(NAS_BUILT_IN_UE True "UE NAS layer present in this executable")
add_boolean_option(NAS_UE True "NAS UE INSTANCE (<> NAS_MME)")
add_boolean_option(NAS_MME False "NAS_UE and NAS_MME are incompatible options")
##########################
@@ -691,9 +677,6 @@ include_directories("${OPENAIR2_DIR}/UTIL/OMV")
include_directories("${OPENAIR2_DIR}/RRC/LITE/MESSAGES")
include_directories("${OPENAIRCN_DIR}/GTPV1-U/nw-gtpv1u/shared")
include_directories("${OPENAIRCN_DIR}/GTPV1-U/nw-gtpv1u/include")
include_directories("${OPENAIRCN_DIR}/SGW-LITE")
include_directories("${OPENAIRCN_DIR}/MME_APP")
include_directories("${OPENAIRCN_DIR}/S6A")
include_directories("${OPENAIR_DIR}")
# Utilities Library
@@ -1023,42 +1006,6 @@ set (GTPV1U_SRC
)
add_library(GTPV1U ${GTPV1U_SRC})
set(GTPV2C_DIR ${OPENAIRCN_DIR}/GTPV2-C/nwgtpv2c-0.11/src)
add_library(GTPV2C
${GTPV2C_DIR}/NwGtpv2cTrxn.c
${GTPV2C_DIR}/NwGtpv2cTunnel.c
${GTPV2C_DIR}/NwGtpv2cMsg.c
${GTPV2C_DIR}/NwGtpv2cMsgIeParseInfo.c
${GTPV2C_DIR}/NwGtpv2cMsgParser.c
${GTPV2C_DIR}/NwGtpv2c.c
)
include_directories(${OPENAIRCN_DIR}/GTPV2-C/nwgtpv2c-0.11/include/)
include_directories(${OPENAIRCN_DIR}/GTPV2-C/nwgtpv2c-0.11/shared/)
execute_process(
COMMAND /sbin/iptables -V
OUTPUT_VARIABLE iptables_version
)
string(REGEX REPLACE "[a-zA-Z .\r\n]" "" IPTVERSION ${iptables_version})
string(REGEX REPLACE "[a-zA-Z \r\n]" "" IPTABLES_VERSION_STRING ${iptables_version})
# From original Polaris code, added _lib because cmake doesn't accept two targets with the same name
# and the driver is also named xt_GTPUSP
# the _lib suffix is removed during installation in /lib/xtables
add_library(xt_GTPUSP_lib SHARED ${OPENAIRCN_DIR}/GTPV1-U/GTPU_SP/libxt_GTPUSP.c)
target_compile_definitions(xt_GTPUSP_lib PRIVATE
-D_LARGEFILE_SOURCE=1
-D_LARGE_FILES
-D_FILE_OFFSET_BITS=64
-D_REENTRANT
-D_INIT=libxt_GTPUSP_init
-DKVERSION=3
-DPIC
IPTVERSION=${IPTVERSION} -DIPTABLES_VERSION_STRING=\"${IPTABLES_VERSION_STRING}\"
)
set(SCTP_SRC
${OPENAIRCN_DIR}/SCTP/sctp_common.c
${OPENAIRCN_DIR}/SCTP/sctp_eNB_task.c
@@ -1066,64 +1013,8 @@ set(SCTP_SRC
)
add_library(SCTP_CLIENT ${SCTP_SRC})
add_library(SCTP_SERVER
${OPENAIRCN_DIR}/SCTP/sctp_common.c
${OPENAIRCN_DIR}/SCTP/sctp_itti_messaging.c
${OPENAIRCN_DIR}/SCTP/sctp_primitives_server.c
)
add_library(UDP ${OPENAIRCN_DIR}/UDP/udp_eNB_task.c)
add_library(UDP_SERVER ${OPENAIRCN_DIR}/UDP/udp_primitives_server.c)
set(S11_DIR ${OPENAIRCN_DIR}/S11)
add_library(S11
${S11_DIR}/s11_common.c
${S11_DIR}/s11_ie_formatter.c
${S11_DIR}/s11_mme_task.c
${S11_DIR}/s11_sgw.c
${S11_DIR}/s11_mme_session_manager.c
${S11_DIR}/s11_sgw_session_manager.c
${S11_DIR}/s11_sgw_bearer_manager.c
)
include_directories(${S11_DIR})
set(S6A_DIR ${OPENAIRCN_DIR}/S6A)
add_library(S6A
${S6A_DIR}/s6a_auth_info.c
${S6A_DIR}/s6a_dict.c
${S6A_DIR}/s6a_error.c
${S6A_DIR}/s6a_peer.c
${S6A_DIR}/s6a_subscription_data.c
${S6A_DIR}/s6a_task.c
${S6A_DIR}/s6a_up_loc.c
)
set(SGW_DIR ${OPENAIRCN_DIR}/SGW-LITE)
add_library (SGW
${SGW_DIR}/spgw_config.c
${SGW_DIR}/s11_causes.c
${SGW_DIR}/sgw_lite_task.c
${SGW_DIR}/sgw_lite_handlers.c
${SGW_DIR}/sgw_lite_context_manager.c
${SGW_DIR}/pgw_lite_paa.c
)
set(MME_DIR ${OPENAIRCN_DIR}/MME_APP)
add_library(MME_APP
${MME_DIR}/mme_app_capabilities.c
${MME_DIR}/mme_app_context.c
${MME_DIR}/mme_app_main.c
${MME_DIR}/mme_app_bearer.c
${MME_DIR}/mme_app_authentication.c
${MME_DIR}/mme_app_location.c
${MME_DIR}/mme_app_statistics.c
${MME_DIR}/s6a_2_nas_cause.c
)
set(NAS_SRC ${OPENAIRCN_DIR}/NAS/)
set(libnas_api_OBJS
@@ -1383,99 +1274,6 @@ if(NAS_UE)
include_directories(${NAS_SRC}UE/ESM/SAP)
endif()
if(NAS_MME)
set(libnas_mme_api_OBJS
${NAS_SRC}MME/API/MME/mme_api.c
)
set(libnas_mme_emm_OBJS
${NAS_SRC}MME/EMM/Attach.c
${NAS_SRC}MME/EMM/Authentication.c
${NAS_SRC}MME/EMM/Detach.c
${NAS_SRC}MME/EMM/EmmCommon.c
${NAS_SRC}MME/EMM/emm_data_ctx.c
${NAS_SRC}MME/EMM/emm_main.c
${NAS_SRC}MME/EMM/EmmStatusHdl.c
${NAS_SRC}MME/EMM/Identification.c
${NAS_SRC}MME/EMM/IdleMode.c
${NAS_SRC}MME/EMM/LowerLayer.c
${NAS_SRC}MME/EMM/SecurityModeControl.c
${NAS_SRC}MME/EMM/ServiceRequestHdl.c
${NAS_SRC}MME/EMM/TrackingAreaUpdate.c
)
set(libnas_mme_emm_sap_OBJS
${NAS_SRC}MME/EMM/SAP/emm_as.c
${NAS_SRC}MME/EMM/SAP/emm_cn.c
${NAS_SRC}MME/EMM/SAP/EmmCommonProcedureInitiated.c
${NAS_SRC}MME/EMM/SAP/EmmDeregisteredAttachNeeded.c
${NAS_SRC}MME/EMM/SAP/EmmDeregisteredAttemptingToAttach.c
${NAS_SRC}MME/EMM/SAP/EmmDeregistered.c
${NAS_SRC}MME/EMM/SAP/EmmDeregisteredInitiated.c
${NAS_SRC}MME/EMM/SAP/EmmDeregisteredLimitedService.c
${NAS_SRC}MME/EMM/SAP/EmmDeregisteredNoCellAvailable.c
${NAS_SRC}MME/EMM/SAP/EmmDeregisteredNoImsi.c
${NAS_SRC}MME/EMM/SAP/EmmDeregisteredNormalService.c
${NAS_SRC}MME/EMM/SAP/EmmDeregisteredPlmnSearch.c
${NAS_SRC}MME/EMM/SAP/emm_esm.c
${NAS_SRC}MME/EMM/SAP/emm_fsm.c
${NAS_SRC}MME/EMM/SAP/EmmNull.c
${NAS_SRC}MME/EMM/SAP/emm_recv.c
${NAS_SRC}MME/EMM/SAP/emm_reg.c
${NAS_SRC}MME/EMM/SAP/EmmRegisteredAttemptingToUpdate.c
${NAS_SRC}MME/EMM/SAP/EmmRegistered.c
${NAS_SRC}MME/EMM/SAP/EmmRegisteredImsiDetachInitiated.c
${NAS_SRC}MME/EMM/SAP/EmmRegisteredInitiated.c
${NAS_SRC}MME/EMM/SAP/EmmRegisteredLimitedService.c
${NAS_SRC}MME/EMM/SAP/EmmRegisteredNoCellAvailable.c
${NAS_SRC}MME/EMM/SAP/EmmRegisteredNormalService.c
${NAS_SRC}MME/EMM/SAP/EmmRegisteredPlmnSearch.c
${NAS_SRC}MME/EMM/SAP/EmmRegisteredUpdateNeeded.c
${NAS_SRC}MME/EMM/SAP/emm_sap.c
${NAS_SRC}MME/EMM/SAP/emm_send.c
${NAS_SRC}MME/EMM/SAP/EmmServiceRequestInitiated.c
${NAS_SRC}MME/EMM/SAP/EmmTrackingAreaUpdatingInitiated.c
)
set (libnas_mme_esm_OBJS
${NAS_SRC}MME/ESM/DedicatedEpsBearerContextActivation.c
${NAS_SRC}MME/ESM/DefaultEpsBearerContextActivation.c
${NAS_SRC}MME/ESM/EpsBearerContextDeactivation.c
${NAS_SRC}MME/ESM/esm_ebr.c
${NAS_SRC}MME/ESM/esm_ebr_context.c
${NAS_SRC}MME/ESM/esm_ip.c
${NAS_SRC}MME/ESM/esm_main.c
${NAS_SRC}MME/ESM/esm_pt.c
${NAS_SRC}MME/ESM/EsmStatusHdl.c
${NAS_SRC}MME/ESM/PdnConnectivity.c
${NAS_SRC}MME/ESM/PdnDisconnect.c
)
set(libnas_mme_esm_sap_OBJS
${NAS_SRC}MME/ESM/SAP/esm_recv.c
${NAS_SRC}MME/ESM/SAP/esm_send.c
${NAS_SRC}MME/ESM/SAP/esm_sap.c
)
add_library(LIB_NAS_MME
${NAS_SRC}MME/nas_itti_messaging.c
${NAS_SRC}MME/nas_network.c
${NAS_SRC}MME/nas_parser.c
${NAS_SRC}MME/nas_proc.c
${libnas_api_OBJS}
${libnas_mme_api_OBJS}
${libnas_emm_msg_OBJS}
${libnas_esm_msg_OBJS}
${libnas_ies_OBJS}
${libnas_utils_OBJS}
${libnas_mme_emm_OBJS}
${libnas_mme_emm_sap_OBJS}
${libnas_mme_esm_OBJS}
${libnas_mme_esm_sap_OBJS}
)
include_directories(${NAS_SRC}MME)
include_directories(${NAS_SRC}MME/API/MME)
include_directories(${NAS_SRC}MME/EMM)
include_directories(${NAS_SRC}MME/EMM/SAP)
include_directories(${NAS_SRC}MME/ESM)
include_directories(${NAS_SRC}MME/ESM/SAP)
endif()
# Make lfds as a own source code (even if it is a outside library)
@@ -1667,112 +1465,6 @@ target_link_libraries (lte-softmodem-nos1 ${LIBBOOST_LIBRARIES})
# EPC is ??? nodes implementation in one process
################################
add_executable(mme_gw
${OPENAIR_BIN_DIR}/messages_xml.h
${OPENAIRCN_DIR}/OAI_EPC/oai_epc_log.c
${OPENAIRCN_DIR}/OAI_EPC/oai_epc.c
${GTPV1U_DIR}/gtpv1u_task.c
${OPENAIRCN_DIR}/SCTP/sctp_primitives_server.c
${OPENAIRCN_DIR}/NAS/MME/nas_mme_task.c
)
target_link_libraries (mme_gw
-Wl,--start-group
LIB_NAS_MME S1AP_LIB S1AP_EPC GTPV1U GTPV2C SCTP_SERVER UDP_SERVER SECU_CN SECU_OSA S6A SGW MME_APP LFDS ${MSC_LIB} ${ITTI_LIB} CN_UTILS HASHTABLE
-Wl,--end-group
pthread m sctp rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
)
# Default parameters
# Does not work on simple install (fqdn in /etc/hosts 127.0.1.1)
#cmake_host_system_information(RESULT HSS_FQDN_STR QUERY FQDN)
#cmake_host_system_information(RESULT MME_FQDN_STR QUERY FQDN)
IF( EPC_BUILD )
INCLUDE(FindFreeDiameter)
# if standalone eNB or UE no need for FreeDiameter
IF( FREEDIAMETER_FOUND )
IF( NOT FREEDIAMETER_HSS_S6A_ENABLED )
MESSAGE( SEND_ERROR "FreeDiameter is not enabled for OPENAIRHSS" )
ENDIF( NOT FREEDIAMETER_HSS_S6A_ENABLED )
ENDIF( FREEDIAMETER_FOUND )
execute_process(COMMAND hostname --fqdn OUTPUT_VARIABLE HSS_FQDN_STR TIMEOUT 3)
execute_process(COMMAND hostname --fqdn OUTPUT_VARIABLE MME_FQDN_STR TIMEOUT 3)
string(STRIP ${HSS_FQDN_STR} HSS_FQDN_STR)
string(STRIP ${MME_FQDN_STR} MME_FQDN_STR)
set(HSS_IP 127.0.1.1 CACHE STRING "HSS IP address, default is local")
set(MME_FQDN ${MME_FQDN_STR} CACHE STRING "MME Fully qualified domain name")
set(HSS_FQDN ${HSS_FQDN_STR} CACHE STRING "HSS Fully qualified domain name")
set(TRANSPORT_option "#No_TCP" CACHE STRING "No_TCP or No_SCTP or comment string, FreeDiameter config option")
set(TRANSPORT_PREFER_TCP_option "#Prefer_TCP" CACHE STRING "Prefer_TCP or comment string, FreeDiameter config option")
IF( NOT DEFINED REALM )
string(FIND ${MME_FQDN} "." pos)
math(EXPR pos1 "${pos}+1")
string(SUBSTRING ${MME_FQDN} ${pos1} -1 realm_string)
message("REALM extracted from MME FQDN is ${realm_string}")
set(REALM ${realm_string} CACHE STRING "EPC realm")
ENDIF( NOT DEFINED REALM )
message("REALM is ${REALM}")
IF( NOT DEFINED MME_HOSTNAME )
string(FIND ${MME_FQDN} "." pos)
string(SUBSTRING ${MME_FQDN} 0 ${pos} mme_hostname_string)
message("MME_HOSTNAME extracted from MME FQDN is ${mme_hostname_string}")
set(MME_HOSTNAME ${mme_hostname_string} CACHE STRING "MME hostname")
ENDIF( NOT DEFINED MME_HOSTNAME )
IF( NOT DEFINED HSS_HOSTNAME )
string(FIND ${HSS_FQDN} "." pos)
string(SUBSTRING ${HSS_FQDN} 0 ${pos} hss_hostname_string)
message("HSS_HOSTNAME extracted from HSS FQDN is ${hss_hostname_string}")
set(HSS_HOSTNAME ${hss_hostname_string} CACHE STRING "HSS hostname")
ENDIF( NOT DEFINED HSS_HOSTNAME )
if ( ${MME_HOSTNAME} STREQUAL ${HSS_HOSTNAME} )
set(MME_S6A_IS_SERVER 1 )
endif( ${MME_HOSTNAME} STREQUAL ${HSS_HOSTNAME} )
IF( MME_S6A_IS_SERVER )
set(ConnectPeer "#ConnectPeer" CACHE STRING "HSS connect to MME")
set(DIAMETER_PORT "Port = 3870" CACHE STRING "Diameter bind port, 3868 is always used by default by HSS, even if HSS client")
set(DIAMETER_SEC_PORT "SecPort = 3871" CACHE STRING "Diameter bind sec port")
ELSE( MME_S6A_IS_SERVER )
set(ConnectPeer "#ConnectPeer" CACHE STRING "HSS act as a server")
set(DIAMETER_PORT "#Port = 3870" CACHE STRING "Diameter bind port")
set(DIAMETER_SEC_PORT "#SecPort = 3871" CACHE STRING "Diameter bind sec port")
ENDIF( MME_S6A_IS_SERVER )
execute_process(COMMAND sudo ${OPENAIR_CMAKE}/tools/check_mme_s6a_certificate ${FREEDIAMETER_PATH}/.. ${MME_FQDN} WORKING_DIRECTORY ${OPENAIR_CMAKE})
configure_file(
${OPENAIR_CMAKE}/tools/s6a.conf.in
${CMAKE_CURRENT_BINARY_DIR}/mme_fd.conf)
configure_file(
${OPENAIR_CMAKE}/tools/epc.local.enb.conf.in
${CMAKE_CURRENT_BINARY_DIR}/epc.local.enb.conf)
configure_file(
${OPENAIR_CMAKE}/tools/epc.conf.in
${CMAKE_CURRENT_BINARY_DIR}/epc.conf)
ENDIF( EPC_BUILD )
# oai_sgw is SGW node implementation
################################
add_executable(oai_sgw
${OPENAIR_BIN_DIR}/messages_xml.h
${OPENAIRCN_DIR}/OAI_SGW/oai_sgw_log.c
${OPENAIRCN_DIR}/OAI_SGW/oai_sgw.c
)
target_link_libraries (oai_sgw
-Wl,--start-group
GTPV1U SECU_CN SECU_OSA S6A SGW CN_UTILS LFDS ${MSC_LIB} ${ITTI_LIB}
-Wl,--end-group
pthread m sctp rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
)
# rrh
################################
set(DRIVER2013)
@@ -1918,49 +1610,6 @@ foreach(myExe dlsim ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syn
)
endforeach(myExe)
#unitary tests for Core NEtwork pieces
#################################
foreach(myExe s1ap
secu_knas_encrypt_eia1
secu_kenb
aes128_ctr_encrypt
aes128_ctr_decrypt
secu_knas_encrypt_eea2
secu_knas secu_knas_encrypt_eea1
kdf
aes128_cmac_encrypt
secu_knas_encrypt_eia2)
add_executable(test_${myExe}
${OPENAIRCN_DIR}/TEST/test_util.c
${OPENAIRCN_DIR}/TEST/test_${myExe}.c
)
target_link_libraries (test_${myExe}
-Wl,--start-group SECU_CN UTIL LFDS -Wl,--end-group m rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
)
endforeach(myExe)
add_executable(test_s1c_mme
${OPENAIRCN_DIR}/TEST/oaisim_mme_test_s1c.c
${OPENAIRCN_DIR}/TEST/oaisim_mme_test_s1c_scenario.h
${OPENAIRCN_DIR}/TEST/oaisim_mme_test_s1c_scenario1.c
${OPENAIRCN_DIR}/TEST/oaisim_mme_test_s1c_scenario.c
${OPENAIRCN_DIR}/TEST/oaisim_mme_test_s1c_scenario.h
${OPENAIRCN_DIR}/TEST/oaisim_mme_test_s1c_s1ap.c
${OPENAIRCN_DIR}/TEST/oaisim_mme_test_s1c_s1ap.h
${OPENAIR2_DIR}/ENB_APP/enb_config.c
${OPENAIR2_DIR}/ENB_APP/enb_config.h
${OPENAIR2_DIR}/COMMON/commonDef.h
${OPENAIR2_DIR}/COMMON/messages_def.h
${OPENAIR2_DIR}/COMMON/messages_types.h
${OPENAIRCN_DIR}/S1AP/s1ap_eNB_defs.h
${S1AP_DIR}/s1ap_eNB_management_procedures.c
${OPENAIR_BIN_DIR}/messages_xml.h
)
target_link_libraries (test_s1c_mme
-Wl,--start-group SECU_CN S1AP_LIB SCTP_CLIENT UTIL LFDS ${ITTI_LIB} -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
)
add_executable(test_epc_generate_scenario
${OPENAIRCN_DIR}/TEST/EPC_TEST/generate_scenario.c
${OPENAIR2_DIR}/ENB_APP/enb_config.h
@@ -1971,30 +1620,15 @@ add_executable(test_epc_generate_scenario
${OPENAIR_BIN_DIR}/messages_xml.h
)
target_link_libraries (test_epc_generate_scenario
-Wl,--start-group SECU_CN S1AP_LIB UTIL S1AP_ENB LIB_NAS_UE LFDS ${ITTI_LIB} -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
-Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${MSC_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
)
# to be added
#../targets/TEST/PDCP/test_pdcp.c
#../targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c
# ???
###########################
#add_executable(oaisim_mme
# ${OPENAIR_BIN_DIR}/messages_xml.h
# ${OPENAIRCN_DIR}/OAISIM_MME/oai_mme_log.c
# ${OPENAIRCN_DIR}/OAISIM_MME/oaisim_mme.c
# ${OPENAIRCN_DIR}/NAS/nas_main.c
#)
#target_link_libraries (oaisim_mme
# -Wl,--start-group
# NAS S1AP_LIB S1AP_EPC GTPV1U GTPV2C SCTP_SERVER UDP_SERVER SECU_CN SECU_OSA S6A S11 SGW MME_APP LFDS MSC ${ITTI_LIB} CN_UTILS HASHTABLE
# -Wl,--end-group
# pthread m sctp rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
#)
##################################################
@@ -2124,15 +1758,6 @@ if(OAI_NW_DRIVER_USE_NETLINK)
endif()
make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src})
# GTP
########################
# KVERSION is not used in the code, but required
set(module_cc_opt "${module_cc_opt} -DKVERSION=3")
make_driver(xt_GTPUSP ${OPENAIRCN_DIR}/GTPV1-U/GTPU_SP "")
# add the install targets
#install (TARGETS Tutorial DESTINATION bin)
#install (FILES "${PROJECT_BIN_DIR}/TutorialConfig.h" DESTINATION include)
# OCTAVE tools
###############
+1 -1
View File
@@ -20,7 +20,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
# Author: Lionel GAUTHIER
+22 -20
View File
@@ -1,30 +1,32 @@
#!/bin/bash
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) anylater version.
# Copyright (c) 2015, EURECOM (www.eurecom.fr)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
# The views and conclusions contained in the software and documentation are those
# of the authors and should not be interpreted as representing official policies,
# either expressed or implied, of the FreeBSD Project.
#
################################################################################
# file build_oai
@@ -1,88 +0,0 @@
cmake_minimum_required(VERSION 2.8)
set ( CMAKE_BUILD_TYPE "RelWithDebInfo" )
set ( ADDR_CONF False )
set ( BYTE_ORDER=LITTLE_ENDIAN )
set ( DEBUG_OMG False )
set ( DISABLE_ITTI_DETECT_SUB_TASK_ID True )
set ( DISABLE_XER_PRINT False )
set ( DRIVER2013 False )
set ( EMOS False )
set ( ENABLE_FXP False )
set ( ENABLE_ITTI True )
set ( ENABLE_NAS_UE_LOGGING False )
set ( ENABLE_NEW_MULTICAST False )
set ( ENABLE_PGM_TRANSPORT False )
set ( ENABLE_RAL False )
set ( ENABLE_SECURITY False )
set ( ENABLE_STANDALONE_EPC True )
set ( ENABLE_USE_CPU_EXECUTION_TIME False )
set ( ENABLE_USE_MME False )
set ( ENABLE_VCD_FIFO False )
set ( ENB_MODE False )
set ( EPC_BUILD True )
set ( EXMIMO_IOT False )
set ( FLAG_GTPV1U_KERNEL_THREAD_SOCK_NO_WAIT False)
set ( HARD_RT False )
set ( JUMBO_FRAME False )
set ( LARGE_SCALE False )
set ( LINK_ENB_PDCP_TO_GTPV1U False )
set ( LINUX_LIST False )
set ( LINUX False )
set ( LOCALIZATION False )
set ( LOG_NO_THREAD False )
set ( LOWLATENCY False )
set ( MAC_CONTEXT 1 )
set ( MAX_NUM_CCs 1 )
set ( MESSAGE_CHART_GENERATOR True)
set ( MIH_C_MEDIEVAL_EXTENSIONS False )
set ( MSG_PRINT False )
set ( MU_RECEIVER False )
set ( NAS_ADDRESS_FIX False )
set ( NAS_BUILT_IN_EPC True )
set ( NAS_DEBUG True )
set ( NAS_MME True )
set ( NAS_NETLINK False )
set ( NAS_UE False )
set ( NB_ANTENNAS_RX "2" )
set ( NB_ANTENNAS_TX "2" )
set ( NB_ANTENNAS_TXRX "2" )
set ( NEW_FFT False )
set ( NO_RRM False )
set ( OAI_EMU False )
set ( OAISIM False )
set ( OAI_NW_DRIVER_TYPE_ETHERNET False )
set ( OAI_NW_DRIVER_USE_NETLINK False )
set ( OPENAIR1 False )
set ( OPENAIR2 False )
set ( OPENAIR_EMU False )
set ( OPENAIR_LTE False )
set ( PACKAGE_NAME "EPC" )
set ( PBS_SIM False )
set ( PC_DSP False )
set ( PC_TARGET False )
set ( PDCP_MSG_PRINT False )
set ( PERFECT_CE False )
set ( PHY_ABSTRACTION False )
set ( PHY_CONTEXT False )
set ( PHY_EMUL False )
set ( PHYSIM False )
set ( PUCCH False )
set ( RANDOM_BF False )
set ( RF_BOARD "False" )
set ( RRC_ASN1_VERSION "Rel10" )
set ( RLC_STOP_ON_LOST_PDU False )
set ( RRC_MSG_PRINT False )
set ( RTAI False )
set ( S1AP_DEBUG_LIST True )
set ( SECU False )
set ( SMBV False )
set ( SPECTRA False )
set ( TEST_OMG False )
set ( UPDATE_RELEASE_9 True)
set ( UPDATE_RELEASE_10 True)
set ( USE_3GPP_ADDR_AS_LINK_ADDR False )
set ( USE_MME "R10" )
set ( USER_MODE True )
set ( XER_PRINT False )
set ( XFORMS False )
@@ -0,0 +1,77 @@
cmake_minimum_required(VERSION 2.8)
set ( CMAKE_BUILD_TYPE "RelWithDebInfo" )
set ( ADDR_CONF False )
set ( DEBUG_OMG False )
set ( DISABLE_XER_PRINT False )
set ( DRIVER2013 True )
set ( EMOS False )
set ( ENABLE_FXP True )
set ( ENABLE_ITTI True )
set ( ENABLE_NAS_UE_LOGGING True )
set ( ENABLE_NEW_MULTICAST True )
set ( ENABLE_PGM_TRANSPORT True )
set ( ENABLE_SECURITY True )
set ( ENABLE_STANDALONE_EPC False)
set ( ENABLE_USE_CPU_EXECUTION_TIME True )
set ( ENABLE_USE_MME True )
set ( ENABLE_USE_RAW_SOCKET_FOR_SGI True)
set ( ENABLE_VCD_FIFO False )
set ( ENB_MODE True )
set ( EXMIMO_IOT True )
set ( HARD_RT False )
set ( JUMBO_FRAME True )
set ( LARGE_SCALE False )
set ( LINK_ENB_PDCP_TO_GTPV1U True)
set ( LINUX_LIST False )
set ( LINUX True )
set ( LOCALIZATION False )
set ( LOG_NO_THREAD True )
set ( LOWLATENCY False )
set ( MAC_CONTEXT 1 )
set ( MAX_NUM_CCs 1 )
set ( MESSAGE_CHART_GENERATOR False)
set ( MIH_C_MEDIEVAL_EXTENSIONS False )
set ( MSG_PRINT False )
set ( MU_RECEIVER False )
set ( NAS_ADDRESS_FIX False )
set ( NAS_BUILT_IN_UE True)
set ( NAS_MME False )
set ( NAS_UE True )
set ( NB_ANTENNAS_RX "2" )
set ( NB_ANTENNAS_TX "2" )
set ( NB_ANTENNAS_TXRX "2" )
set ( NEW_FFT True )
set ( NO_RRM True )
set ( OAI_EMU False )
set ( OAISIM False )
set ( OAI_NW_DRIVER_TYPE_ETHERNET False )
set ( OAI_NW_DRIVER_USE_NETLINK True )
set ( OPENAIR1 False )
set ( OPENAIR2 False )
set ( OPENAIR_LTE F )
set ( PACKAGE_NAME "epc_test" )
set ( PBS_SIM False )
set ( PDCP_USE_NETLINK True )
set ( PC_DSP True )
set ( PC_TARGET True )
set ( PDCP_MSG_PRINT False )
set ( PERFECT_CE False )
set ( PHY_ABSTRACTION True )
set ( PHY_CONTEXT False )
set ( PHY_EMUL False )
set ( PHYSIM True )
set ( PUCCH True )
set ( RANDOM_BF False )
set ( RF_BOARD "False" )
set ( RLC_STOP_ON_LOST_PDU False )
set ( RRC_ASN1_VERSION "Rel10" )
set ( RRC_DEFAULT_RAB_IS_AM True)
set ( RRC_MSG_PRINT False )
set ( RTAI False )
set ( SECU False )
set ( SMBV False )
set ( TEST_OMG False )
set ( USE_MME "R10" )
set ( USER_MODE True )
set ( XER_PRINT False )
-326
View File
@@ -1,326 +0,0 @@
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
# Author: Lionel GAUTHIER
###############################################################################
cmake_minimum_required(VERSION 2.8)
set(CMAKE_VERBOSE_MAKEFILE ON)
project(HSS)
ENABLE_LANGUAGE(C)
#Sends the -std=c99 flag to the gcc compiler
#add_definitions(-std=c99)
ADD_DEFINITIONS(-D_GNU_SOURCE)
if( NOT DEFINED OPENAIR_DIR)
message(SEND_ERROR "OPENAIR_DIR not set: ${OPENAIR_DIR}")
endif( NOT DEFINED OPENAIR_DIR)
set(OPENAIR1_DIR ${OPENAIR_DIR}/openair1)
set(OPENAIR2_DIR ${OPENAIR_DIR}/openair2)
set(OPENAIR3_DIR ${OPENAIR_DIR}/openair3)
set(OPENAIRCN_DIR ${OPENAIR_DIR}/openair-cn)
set(OPENAIR_TARGETS ${OPENAIR_DIR}/targets)
set(OPENAIR_CMAKE_SCRIPTS ${OPENAIR_DIR}/cmake_targets/tools)
set(OPENAIRHSS_DIR ${OPENAIRCN_DIR}/OPENAIRHSS)
set(OPENAIR_BIN_DIR ${OPENAIR_TARGETS}/bin)
set(CMAKE_MODULE_PATH "${OPENAIR_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODULE_PATH}")
macro(add_option name val helpstr)
if(DEFINED ${name})
set(value ${${name}})
else(DEFINED ${name})
set(value ${val})
endif()
set(${name} ${value} CACHE STRING "${helpstr}")
add_definitions("-D${name}=${value}")
endmacro(add_option)
# compilation flags
# added CMAKER conditional compilation to not bother legacy building system
#############################################
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE)
endif()
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel)
#
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2 -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing -rdynamic -funroll-loops -Wno-packed-bitfield-compat -DCMAKER")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -DMALLOC_CHECK_=3")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -ggdb -DMALLOC_CHECK_=3 -O2")
INCLUDE(FindMySQL)
IF( NOT MySQL_FOUND )
MESSAGE( SEND_ERROR "MySQL Client is required" )
ENDIF( NOT MySQL_FOUND )
INCLUDE(FindNettle)
IF( NOT NETTLE_FOUND )
MESSAGE( SEND_ERROR "Nettle is required" )
ENDIF( NOT NETTLE_FOUND )
INCLUDE(FindFreeDiameter)
IF( NOT FREEDIAMETER_FOUND )
MESSAGE( SEND_ERROR "FreeDiameter is required (use OAI installer)" )
ENDIF( NOT FREEDIAMETER_FOUND )
IF( NOT FREEDIAMETER_HSS_S6A_ENABLED )
MESSAGE( SEND_ERROR "FreeDiameter is not enabled for OPENAIRHSS" )
ENDIF( NOT FREEDIAMETER_HSS_S6A_ENABLED )
add_definitions("-DFREEDIAMETER_VERSION=${FREEDIAMETER_VERSION}")
find_package(BISON REQUIRED)
find_package(FLEX REQUIRED)
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
find_package(Threads REQUIRED)
#find_package(Subversion)
#if(SUBVERSION_FOUND)
# Subversion_WC_INFO(${OPENAIR_DIR} openair)
# set (PACKAGE_VERSION "${openair_WC_REVISION} - ${openair_WC_LAST_CHANGED_DATE}")
# Subversion_WC_LOG(${OPENAIR_DIR} openair)
# message("Last changed log is ${openair_LAST_CHANGED_LOG}")
# add_definitions("-DPACKAGE_VERSION=\"${PACKAGE_VERSION}\"")
#else()
set (PACKAGE_VERSION "No svn information")
#endif()
add_definitions("-DPACKAGE_NAME=\"OPENAIRHSS\"")
################################################################################
# ACCESS RESTRICTION LIB
################################################################################
set(ar_SRC
${OPENAIRHSS_DIR}/access_restriction/access_restriction.c
)
set(ar_HDR
${OPENAIRHSS_DIR}/access_restriction/access_restriction.h
${OPENAIRHSS_DIR}/utils/conversion.h
)
add_library(hss_access_restriction ${ar_SRC} ${ar_HDR})
target_include_directories(hss_access_restriction PRIVATE ${OPENAIRHSS_DIR}/utils)
################################################################################
# AUC LIB
################################################################################
set(auc_SRC
${OPENAIRHSS_DIR}/auc/fx.c
${OPENAIRHSS_DIR}/auc/kdf.c
${OPENAIRHSS_DIR}/auc/random.c
${OPENAIRHSS_DIR}/auc/rijndael.c
${OPENAIRHSS_DIR}/auc/sequence_number.c
)
set(auc_HDR
${OPENAIRHSS_DIR}/auc/auc.h
)
add_library(hss_auc ${auc_SRC} ${auc_HDR})
################################################################################
# DB LIB
################################################################################
set(db_SRC
${OPENAIRHSS_DIR}/db/db_connector.c
${OPENAIRHSS_DIR}/db/db_epc_equipment.c
${OPENAIRHSS_DIR}/db/db_subscription_data.c
)
set(db_HDR
${OPENAIRHSS_DIR}/db/db_proto.h
${OPENAIRHSS_DIR}/utils/hss_config.h
)
add_library(hss_db ${db_SRC} ${db_HDR})
target_include_directories(hss_db PRIVATE ${OPENAIRHSS_DIR}/utils)
################################################################################
# S6A LIB
################################################################################
set(s6a_SRC
${OPENAIRHSS_DIR}/s6a/s6a_auth_info.c
${OPENAIRHSS_DIR}/s6a/s6a_common.c
${OPENAIRHSS_DIR}/s6a/s6a_error.c
${OPENAIRHSS_DIR}/s6a/s6a_fd.c
${OPENAIRHSS_DIR}/s6a/s6a_in_addr.c
${OPENAIRHSS_DIR}/s6a/s6a_peers.c
${OPENAIRHSS_DIR}/s6a/s6a_purge_ue.c
${OPENAIRHSS_DIR}/s6a/s6a_subscription_data.c
${OPENAIRHSS_DIR}/s6a/s6a_supported_features.c
${OPENAIRHSS_DIR}/s6a/s6a_up_loc.c
)
set(s6a_HDR
${OPENAIRHSS_DIR}/s6a/s6a_proto.h
${OPENAIRHSS_DIR}/db/db_proto.h
${OPENAIRHSS_DIR}/utils/hss_config.h
${OPENAIRHSS_DIR}/auc/auc.h
${OPENAIRHSS_DIR}/access_restriction/access_restriction.h
)
add_library(hss_s6a ${s6a_SRC} ${s6a_HDR})
target_include_directories(hss_s6a PRIVATE ${OPENAIRHSS_DIR}/utils)
target_include_directories(hss_s6a PRIVATE ${OPENAIRHSS_DIR}/db)
target_include_directories(hss_s6a PRIVATE ${OPENAIRHSS_DIR}/auc)
target_include_directories(hss_s6a PRIVATE ${OPENAIRHSS_DIR}/access_restriction)
target_include_directories(hss_s6a PRIVATE ${FREEDIAMETER_INCLUDE_DIR})
################################################################################
# UTILS LIB
################################################################################
# Create target for the parser
ADD_CUSTOM_TARGET(HSSParser echo "Creating hss_parser.c")
set(UTILS_GENERATED_DIR ${OPENAIR_BIN_DIR})
# Create custom command for flex/lex (note the outputs)
ADD_CUSTOM_COMMAND(
SOURCE ${OPENAIRHSS_DIR}/utils/hss_scanner.l
COMMAND ${FLEX_EXECUTABLE}
ARGS -o${UTILS_GENERATED_DIR}/hss_scanner.c ${OPENAIRHSS_DIR}/utils/hss_scanner.l
TARGET HSSParser
OUTPUTS ${UTILS_GENERATED_DIR}/hss_scanner.c)
# Create custom command for bison/yacc (note the DEPENDS)
ADD_CUSTOM_COMMAND(
SOURCE ${OPENAIRHSS_DIR}/utils/hss_parser.y
COMMAND ${BISON_EXECUTABLE}
ARGS -y ${OPENAIRHSS_DIR}/utils/hss_parser.y
-o ${UTILS_GENERATED_DIR}/hss_parser.c
TARGET HSSParser
DEPENDS ${UTILS_GENERATED_DIR}/hss_scanner.c
OUTPUTS ${UTILS_GENERATED_DIR}/hss_parser.c)
set(utils_SRC
${UTILS_GENERATED_DIR}/hss_scanner.c
${UTILS_GENERATED_DIR}/hss_parser.c
${OPENAIRHSS_DIR}/utils/conversion.c
${OPENAIRHSS_DIR}/utils/hss_config.c
)
set(utils_HDR
${UTILS_GENERATED_DIR}/hss_parser.h
${UTILS_GENERATED_DIR}/hss_scanner.h
${OPENAIRHSS_DIR}/utils/conversion.h
${OPENAIRHSS_DIR}/utils/hss_config.h
${OPENAIRHSS_DIR}/utils/queue.h
)
# Since parser.c does not exists yet when cmake is run, mark
# it as generated
SET_SOURCE_FILES_PROPERTIES(${UTILS_GENERATED_DIR}/hss_parser.c GENERATED)
SET_SOURCE_FILES_PROPERTIES(${UTILS_GENERATED_DIR}/hss_scanner.c GENERATED)
SET_SOURCE_FILES_PROPERTIES(${UTILS_GENERATED_DIR}/hss_parser.h GENERATED)
SET_SOURCE_FILES_PROPERTIES(${UTILS_GENERATED_DIR}/hss_scanner.h GENERATED)
SET_SOURCE_FILES_PROPERTIES(${OPENAIRHSS_DIR}/utils/hss_config.c DEPENDS ${UTILS_GENERATED_DIR}/hss_parser.c)
add_library(hss_utils ${utils_SRC} ${utils_HDR})
################################################################################
# EXECUTABLE openair-hss
################################################################################
include_directories( ${UTILS_GENERATED_DIR} ${OPENAIRHSS_DIR}/utils ${OPENAIRHSS_DIR}/s6a ${OPENAIRHSS_DIR}/db ${OPENAIRHSS_DIR}/auc ${OPENAIRHSS_DIR}/access_restriction)
ADD_EXECUTABLE(openair-hss ${OPENAIRHSS_DIR}/hss_main.c)
target_link_libraries (openair-hss
-Wl,-whole-archive
hss_access_restriction
hss_auc
hss_db
hss_s6a
hss_utils
-Wl,-no-whole-archive
${MySQL_LIBRARY}
${NETTLE_LIBRARIES}
${FREEDIAMETER_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} )
# Default parameters
# Does not work on simple install (fqdn in /etc/hosts 127.0.1.1)
cmake_host_system_information(RESULT SITE_HSS_FQDN QUERY FQDN)
add_option(HSS_FQDN ${SITE_HSS_FQDN} "HSS Fully qualified domain name")
IF( NOT DEFINED REALM )
string(FIND ${HSS_FQDN} "." pos)
math(EXPR pos1 "${pos}+1")
string(SUBSTRING ${HSS_FQDN} ${pos1} -1 realm_string)
message("REALM extracted from HSS FQDN is ${realm_string}")
set(REALM ${realm_string} CACHE STRING "HSS realm")
ENDIF( NOT DEFINED REALM )
set(MYSQL_server "127.0.0.1" CACHE STRING "Database server IP address")
set(MYSQL_admin root CACHE STRING "Database admin login")
set(MYSQL_admin_pass linux CACHE STRING "Database admin password")
set(MYSQL_user hssadmin CACHE STRING "Database username login")
set(MYSQL_pass admin CACHE STRING "Database username password")
set(MYSQL_db oai_db CACHE STRING "Database name")
set(TRANSPORT_option "#No_TCP" CACHE STRING "No_TCP or No_SCTP or comment string, FreeDiameter config option")
set(TRANSPORT_PREFER_TCP_option "#Prefer_TCP" CACHE STRING "Prefer_TCP or comment string, FreeDiameter config option")
set(AppServThreads 2 CACHE STRING "FreeDiameter AppServThreads config option")
set(OPERATOR_key "" CACHE STRING "LTE operator clear text key (hex bytes) example 11111111111111111111111111111111")
set(RANDOM_boolean "true" CACHE STRING "If false, random function returns always 0, else random as usual.")
set(REMOTE_PEER_WHITELIST "*.${REALM}" CACHE STRING "Remote peer whitelist (separated by spaces), for freediameter acl.conf config file")
IF( FD_SERVER_IP_BIND_LIST )
set(ListenOn "ListenOn = \"${FD_SERVER_IP_BIND_LIST}\"" CACHE STRING "FreeDiameter server IP bind addresses list")
ELSE( FD_SERVER_IP_BIND_LIST )
set(ListenOn "#ListenOn = \"\"" CACHE STRING "FreeDiameter server IP bind addresses list")
ENDIF( FD_SERVER_IP_BIND_LIST )
IF( HSS_CONNECT_TO_MME )
set(ConnectPeer "ConnectPeer" CACHE STRING "HSS connect to MME")
set(DIAMETER_PORT "#Port = 3868" CACHE STRING "Diameter bind port")
set(DIAMETER_SEC_PORT "#SecPort = 3869" CACHE STRING "Diameter bind sec port")
ELSE( HSS_CONNECT_TO_MME )
set(ConnectPeer "#ConnectPeer" CACHE STRING "HSS act as a server")
set(DIAMETER_PORT "Port = 3868" CACHE STRING "Diameter bind port")
set(DIAMETER_SEC_PORT "SecPort = 3869" CACHE STRING "Diameter bind sec port")
ENDIF( HSS_CONNECT_TO_MME )
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hss_fd.conf.in ${CMAKE_CURRENT_BINARY_DIR}/hss_fd.conf)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hss.conf.in ${CMAKE_CURRENT_BINARY_DIR}/hss.conf)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/acl.conf.in ${CMAKE_CURRENT_BINARY_DIR}/acl.conf)
execute_process(COMMAND sudo ${OPENAIR_CMAKE_SCRIPTS}/check_hss_s6a_certificate ${FREEDIAMETER_PATH}/.. ${HSS_FQDN} WORKING_DIRECTORY ${OPENAIR_CMAKE_SCRIPTS} TIMEOUT 3)
# This does not overwrite database if it exist
execute_process(COMMAND ${OPENAIR_CMAKE_SCRIPTS}/create_hss_database
${MYSQL_admin} ${MYSQL_admin_pass} ${MYSQL_user} ${MYSQL_pass} ${MYSQL_db}
WORKING_DIRECTORY ${OPENAIR_CMAKE_SCRIPTS}
ERROR_VARIABLE ERROR_DB
TIMEOUT 5)
IF( ERROR_DB )
MESSAGE( SEND_ERROR "Database setup failed: ${ERROR_DB}" )
ENDIF( ERROR_DB )
install (TARGETS openair-hss DESTINATION ${OPENAIR_TARGETS}/bin)
-19
View File
@@ -1,19 +0,0 @@
# Configuration file for the peer whitelist extension.
#
# This extension is meant to allow connection from remote peers, without actively
# maintaining this connection ourselves (as it would be the case by declaring the
# peer in a ConnectPeer directive).
# The format of this file is very simple. It contains a list of peer names
# separated by spaces or newlines.
#
# The peer name must be a fqdn. We allow also a special "*" character as the
# first label of the fqdn, to allow all fqdn with the same domain name.
# Example: *.example.net will allow host1.example.net and host2.example.net
#
# At the beginning of a line, the following flags are allowed (case sensitive) -- either or both can appear:
# ALLOW_OLD_TLS : we accept unprotected CER/CEA exchange with Inband-Security-Id = TLS
# ALLOW_IPSEC : we accept implicitly protected connection with with peer (Inband-Security-Id = IPSec)
# It is specified for example as:
# ALLOW_IPSEC vpn.example.net vpn2.example.net *.vpn.example.net
ALLOW_OLD_TLS @REMOTE_PEER_WHITELIST@
-13
View File
@@ -1,13 +0,0 @@
## MySQL mandatory options
MYSQL_server = "@MYSQL_server@";
MYSQL_user = "@MYSQL_user@";
MYSQL_pass = "@MYSQL_pass@";
MYSQL_db = "@MYSQL_db@";
## HSS options
OPERATOR_key = "@OPERATOR_key@";
RANDOM = "@RANDOM_boolean@";
## Freediameter options
FD_conf = "@FREEDIAMETER_PATH@/../etc/freeDiameter/hss_fd.conf";
-106
View File
@@ -1,106 +0,0 @@
# -------- Local ---------
# The first parameter in this section is Identity, which will be used to
# identify this peer in the Diameter network. The Diameter protocol mandates
# that the Identity used is a valid FQDN for the peer. This parameter can be
# omitted, in that case the framework will attempt to use system default value
# (as returned by hostname --fqdn).
Identity = "@HSS_FQDN@";
# In Diameter, all peers also belong to a Realm. If the realm is not specified,
# the framework uses the part of the Identity after the first dot.
Realm = "@REALM@";
# This parameter is mandatory, even if it is possible to disable TLS for peers
# connections. A valid certificate for this Diameter Identity is expected.
TLS_Cred = "@FREEDIAMETER_PATH@/../etc/freeDiameter/hss.cert.pem", "@FREEDIAMETER_PATH@/../etc/freeDiameter/hss.key.pem";
TLS_CA = "@FREEDIAMETER_PATH@/../etc/freeDiameter/hss.cacert.pem";
# Disable use of TCP protocol (only listen and connect in SCTP)
# Default : TCP enabled
@TRANSPORT_option@;
# This option is ignored if freeDiameter is compiled with DISABLE_SCTP option.
# Prefer TCP instead of SCTP for establishing new connections.
# This setting may be overwritten per peer in peer configuration blocs.
# Default : SCTP is attempted first.
@TRANSPORT_PREFER_TCP_option@;
# Disable use of IPv6 addresses (only IP)
# Default : IPv6 enabled
No_IPv6;
# Overwrite the number of SCTP streams. This value should be kept low,
# especially if you are using TLS over SCTP, because it consumes a lot of
# resources in that case. See tickets 19 and 27 for some additional details on
# this.
# Limit the number of SCTP streams
SCTP_streams = 3;
# By default, freeDiameter acts as a Diameter Relay Agent by forwarding all
# messages it cannot handle locally. This parameter disables this behavior.
NoRelay;
TLS_old_method;
# Number of parallel threads that will handle incoming application messages.
# This parameter may be deprecated later in favor of a dynamic number of threads
# depending on the load.
AppServThreads = @AppServThreads@;
# Specify the addresses on which to bind the listening server. This must be
# specified if the framework is unable to auto-detect these addresses, or if the
# auto-detected values are incorrect. Note that the list of addresses is sent
# in CER or CEA message, so one should pay attention to this parameter if some
# adresses should be kept hidden.
@ListenOn@;
@DIAMETER_PORT@;
@DIAMETER_SEC_PORT@;
# -------- Extensions ---------
# Uncomment (and create rtd.conf) to specify routing table for this peer.
#LoadExtension = "rt_default.fdx" : "rtd.conf";
# Uncomment (and create acl.conf) to allow incoming connections from other peers.
LoadExtension = "acl_wl.fdx" : "@FREEDIAMETER_PATH@/../etc/freeDiameter/acl.conf";
# Uncomment to display periodic state information
#LoadExtension = "dbg_monitor.fdx";
# Uncomment to enable an interactive Python interpreter session.
# (see doc/dbg_interactive.py.sample for more information)
#LoadExtension = "dbg_interactive.fdx";
# Load the RFC4005 dictionary objects
#LoadExtension = "dict_nasreq.fdx";
LoadExtension = "dict_nas_mipv6.fdx";
LoadExtension = "dict_s6a.fdx";
# Load RFC4072 dictionary objects
#LoadExtension = "dict_eap.fdx";
# Load the Diameter EAP server extension (requires diameap.conf)
#LoadExtension = "app_diameap.fdx" : "diameap.conf";
# Load the Accounting Server extension (requires app_acct.conf)
#LoadExtension = "app_acct.fdx" : "app_acct.conf";
# -------- Peers ---------
# The framework will actively attempt to establish and maintain a connection
# with the peers listed here.
# For only accepting incoming connections, see the acl_wl.fx extension.
#ConnectPeer = "ubuntu.localdomain" { ConnectTo = "127.0.0.1"; No_TLS; };
@ConnectPeer@ = "@MME_FQDN@" { ConnectTo = "@MME_IP@"; Realm = "@REALM@"; No_IPv6; No_TLS ; port = 3870; };
-302
View File
@@ -1,302 +0,0 @@
#!/bin/bash
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) anylater version.
#
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
################################################################################
# file build_epc
# brief
# author Lionel Gauthier
# company Eurecom
# email: lionel.gauthier@eurecom.fr
#
################################
# include helper functions
################################
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
source $THIS_SCRIPT_PATH/build_helper
function help()
{
echo_error " "
echo_error "Usage: build_epc [OPTION]..."
echo_error "Build the EPC executable."
echo_error " "
echo_error "Options:"
echo_error "Mandatory arguments to long options are mandatory for short options too."
echo_error " -c, --clean Clean the build generated files (build from scratch)"
echo_error " -C, --conf-files-only Generate only EPC configuration files (no build)"
echo_error " -d, --debug Compile with debug informations."
echo_error " -h, --help Print this help."
echo_error " -g, --gtpu-easy-module Used for debugging GTPU (kernel module can be easily removed, for dev and debug purpose only)"
echo_error " -G, --gtpu-full-speed Best GTPU throughput performance, but cannot be removed (default)."
echo_error " -H, --hss hostname HSS hostname (with FQDN), default is this host (`hostname --fqdn`)."
echo_error " -i, --check-installed-software Check installed software packages necessary to build and run EPC (support Ubuntu 14.04)."
l_realm=`hostname --fqdn`
l_realm=${l_realm#*.}
echo_error " -r, --realm realm Realm of the MME (if not specified, is extracted from this host FQDN ($l_realm))."
echo_error " -s, --transport-sctp-only Diameter use SCTP only (TCP disabled)."
echo_error " -S, --s6a-server MME act as a server on s6a interface (useful when HSS and MME/EPC run on the same host)."
echo_error " -t, --transport-tcp-only Diameter use TCP only (SCTP disabled)."
echo_error " -T, --transport-prefer-tcp Diameter prefer TCP."
echo_error " -v, --verbose Build process verbose."
echo_error " "
echo_error "Examples:"
echo_error " "
echo_error "Case 1 - EPC run on same HSS host"
echo_error "build_epc -d -S -t -T"
echo_error " "
echo_error "Case 2 - EPC and HSS do not run on same host"
echo_error "build_epc -d -s -H my_hss_fqdn"
}
function main()
{
local -i clean=0
local -i conf_files_only=0
local -i verbose=0
local -i s6a_server=0
local cmake_args=" "
local make_args="-j $NUM_CPU"
local realm=""
local gtpu_cmake_arg="-DFLAG_GTPV1U_KERNEL_THREAD_SOCK_NO_WAIT=False"
local hss_fqdn=""
local hss_hostname=""
local hss_ip=""
local REL="Rel10"
until [ -z "$1" ]
do
case "$1" in
-c | --clean)
clean=1
echo "Clean the build generated files (build from scratch)"
shift;
;;
-C | --conf-files-only)
conf_files_only=1
echo "Generate only conf files (no build)"
shift;
;;
-d | --debug)
cmake_args="$cmake_args -DDEBUG=1"
echo "Compile with debug informations"
shift;
;;
-g | --gtpu-easy-module)
gtpu_cmake_arg="-DFLAG_GTPV1U_KERNEL_THREAD_SOCK_NO_WAIT=True"
echo "Compile with not optimized GTPU kernel module option (but kernel module easy to remove)"
shift;
;;
-G | --gtpu-full-speed)
echo "Compile with best performance GTPU kernel module option"
shift;
;;
-h | --help)
help
shift;
exit 0
;;
-H | --hss)
hss_fqdn=$2
cmake_args="$cmake_args -DHSS_FQDN=$hss_fqdn"
shift 2;
;;
-i | --check-installed-software)
echo "Check installed software packages necessary to build and run EPC (support Ubuntu 14.04):"
set_openair_env
check_install_oai_software
check_install_additional_tools
exit 0
;;
-r | --realm)
echo "Realm: $2"
realm=$2
cmake_args="$cmake_args -DREALM=$realm"
shift 2;
;;
-s | --transport-sctp-only)
echo "Diameter use SCTP (TCP disabled), this is the default option."
cmake_args="$cmake_args -DTRANSPORT_option=No_TCP"
shift;
;;
-S | --s6a-server)
echo "MME act as a server on s6a"
s6a_server=1
cmake_args="$cmake_args -DMME_S6A_IS_SERVER=1"
shift 1;
;;
-t | --transport-tcp-only)
echo "Diameter use TCP (SCTP disabled)."
cmake_args="$cmake_args -DTRANSPORT_option=No_SCTP"
shift;
;;
-T | --transport-prefer-tcp)
echo "Diameter prefer TCP (TCP, SCTP enabled)."
cmake_args="$cmake_args -DTRANSPORT_PREFER_TCP_option=Prefer_TCP"
shift;
;;
-v | --verbose)
echo "Make build process verbose"
cmake_args="$cmake_args -DCMAKE_VERBOSE_MAKEFILE=ON"
make_args="VERBOSE=1 $make_args"
verbose=1
shift;
;;
*)
echo "Unknown option $1"
help
exit 1
;;
esac
done
cmake_args="$cmake_args $gtpu_cmake_arg"
# extra arguments processing
if [[ z$hss_fqdn = z ]]; then
hss_fqdn=`hostname --fqdn`
cmake_args="$cmake_args -DHSS_FQDN=$hss_fqdn"
if [[ z$realm = z ]]; then
realm=$hss_fqdn
realm=${realm#*.}
cmake_args="$cmake_args -DREALM=$realm"
fi
else
if [[ z$realm = z ]]; then
realm=${hss_fqdn#*.}
cmake_args="$cmake_args -DREALM=$realm"
fi
fi
hss_hostname=${hss_fqdn%%.*}
cmake_args="$cmake_args -DHSS_HOSTNAME=$hss_hostname"
hss_ip=`resolveip --silent $hss_hostname`
if [[ z$hss_ip = z ]]; then
hss_ip=`resolveip --silent $hss_fqdn`
fi
if [[ z$hss_ip = z ]]; then
echo_abort "Unable to get HSS IP addr of $hss_fqdn"
fi
cmake_args="$cmake_args -DHSS_IP=$hss_ip"
set_openair_env
if [[ $verbose -eq 1 ]]; then
cecho "OPENAIR_DIR = $OPENAIR_DIR" $green
fi
# for conf files copy in this bash script
if [ -d /usr/lib/freeDiameter ]; then
export FREEDIAMETER_PREFIX=/usr
else
if [ -d /usr/local/lib/freeDiameter ]; then
export FREEDIAMETER_PREFIX=/usr/local
else
echo_fatal "FreeDiameter prefix not found, install freeDiameter if EPC, HSS"
fi
fi
local dbin=$OPENAIR_DIR/targets/bin
local dlog=$OPENAIR_DIR/cmake_targets/log
local dconf=$OPENAIR_DIR/targets/bin
mkdir -m 777 -p $dbin $dlog
##############################################################################
# Compile userspace executable
##############################################################################
cd $OPENAIR_DIR/cmake_targets/epc_build_oai
if [ $clean -ne 0 ]; then
if [[ $verbose -eq 1 ]]; then
echo "Cleaning EPC: certificates, generated configuration files, obj files, mme_gw executable, GTP kernel module"
fi
rm -f $OPENAIR_DIR/targets/bin/mme_gw
rm -Rf build 2>&1
$SUDO rm -Rf $OPENAIR_TARGETS/CMAKE/EPC/MME_GW/build 2>&1
$SUDO rm -f /usr/local/etc/freeDiameter/mme* 2>&1
$SUDO rm -f /usr/local/etc/freeDiameter/epc* 2>&1
$SUDO rm -f /usr/etc/freeDiameter/mme* 2>&1
$SUDO rm -f /usr/etc/freeDiameter/epc* 2>&1
$SUDO rm -f $OPENAIR_DIR/targets/bin/xt_GTPU*.ko 2>&1
(cd $OPENAIRCN_DIR/GTPV1-U/GTPU_SP && $SUDO make clean)
$SUDO rm -f $OPENAIRCN_DIR/GTPV1-U/GTPU_SP/Bin/* 2>&1
$SUDO rm -f /lib/xtables/libxt_GTPU*.so 2>&1
mkdir -m 777 -p -v build
fi
##############################################################################
# Compile EPC
##############################################################################
cd $OPENAIR_DIR/cmake_targets/epc_build_oai
#cd $OPENAIR_TARGETS/CMAKE/EPC/MME_GW
if [ ! -d ./build ]; then
mkdir -m 777 -p -v build
fi
cmake_file=./CMakeLists.txt
cp $OPENAIR_DIR/cmake_targets/epc_build_oai/CMakeLists.template $cmake_file
echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
cd ./build
cmake $cmake_args ..
#make $make_args -j $NUM_CPU
if [ $conf_files_only -eq 0 ]; then
compilations \
epc_build_oai mme_gw \
mme_gw $dbin/mme_gw.$REL
# Only integrated mme+sgw+pgw is operational today
compilations \
epc_build_oai xt_GTPUSP_lib \
libxt_GTPUSP_lib.so $dbin
compilations \
epc_build_oai xt_GTPUSP \
CMakeFiles/xt_GTPUSP/xt_GTPUSP.ko $dbin
echo_info "Copying iptables libraries into system directory: /lib/xtables"
if [ -f $dbin/libxt_GTPUSP_lib.so ] ; then
$SUDO rm -f /lib/xtables/libxt_GTPUSP.so
$SUDO ln -s $dbin/libxt_GTPUSP_lib.so /lib/xtables/libxt_GTPUSP.so
else
echo_fatal "not installed GTP-U iptables: binaries not found"
fi
fi
# Do EPC
if [ -f $OPENAIR_DIR/cmake_targets/epc_build_oai/build/mme_fd.conf ] ; then
cp -uv $OPENAIR_DIR/cmake_targets/epc_build_oai/build/epc*.conf $dconf
$SUDO cp -uv $OPENAIR_DIR/cmake_targets/epc_build_oai/build/mme_fd.conf $FREEDIAMETER_PREFIX/etc/freeDiameter
else
echo_fatal "not installed EPC config files: not found"
fi
}
main "$@"
+23 -180
View File
@@ -1,29 +1,31 @@
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Copyright (c) 2015, EURECOM (www.eurecom.fr)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
# The views and conclusions contained in the software and documentation are those
# of the authors and should not be interpreted as representing official policies,
# either expressed or implied, of the FreeBSD Project.
#
################################################################################
# file build_helper
@@ -95,12 +97,9 @@ clean_kernel() {
clean_all_files() {
set_openair_env
dir=$OPENAIR_DIR/cmake_targets
rm -rf $dir/log $OPENAIR_DIR/targets/bin/*
rm -rf $dir/log $OPENAIR_DIR/targets/bin/*
rm -rf $dir/lte_build_oai $dir/lte-simulators/build
rm -rf $dir/epc_build_oai/build $dir/epc_build_oai/CMakeLists.txt
rm -rf $dir/oaisim_build_oai/build $dir/oaisim_build_oai/CMakeLists.txt
rm -rf $dir/oaisim_mme_build_oai/build $dir/oaisim_mme_build_oai/CMakeLists.txt
rm -rf $dir/hss_build/build
rm -rf $dir/autotests/bin $dir/autotests/log $dir/autotests/*/build
}
@@ -123,50 +122,6 @@ compilations() {
fi
}
##########################################
# X.509 certificates
##########################################
make_one_cert() {
fqdn=$1
name=$2
$SUDO openssl genrsa -out $name.key.pem 1024
$SUDO openssl req -new -batch -out $name.csr.pem -key $name.key.pem -subj /CN=$name.$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
$SUDO openssl ca -cert cacert.pem -keyfile cakey.pem -in $name.csr.pem -out $name.cert.pem -outdir . -batch
}
make_certs(){
fqdn=$1
certs_dir=$FREEDIAMETER_PREFIX/freeDiameter
# certificates are stored in diameter config directory
if [ ! -d $certs_dir ]; then
echo "Creating non existing directory: $certs_dir"
$SUDO mkdir -p $certs_dir || echo_error "can't create: $certs_dir"
fi
cd $certs_dir
echo "creating the CA certificate"
echo_warning "erase all existing certificates as long as the CA is regenerated"
$SUDO rm -f $certs_dir/*.pem
$SUDO mkdir -p $certs_dir/demoCA/
$SUDO touch $certs_dir/demoCA/index.txt
$SUDO sh -c "echo 01 > $certs_dir/demoCA/serial"
# CA self certificate
$SUDO openssl req -new -batch -x509 -days 3650 -nodes -newkey rsa:1024 -out cacert.pem -keyout cakey.pem -subj /CN=$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
# generate hss certificate and sign it
make_one_cert eur hss
make_one_cert eur mme
# legacy config is using a certificate named 'user'
make_one_cert eur user
}
############################################
# External packages installers
############################################
@@ -200,58 +155,6 @@ install_gnutls_from_source(){
rm -rf /tmp/gnutls-3.1.23.tar.xz /tmp/gnutls-3.1.23
}
install_1.1.5_freediameter_from_source() {
cd /tmp
echo "Downloading 1.1.5 freeDiameter archive"
rm -rf /tmp/1.1.5.tar.gz* /tmp/freeDiameter-1.1.5
wget http://www.freediameter.net/hg/freeDiameter/archive/1.1.5.tar.gz
tar xzf 1.1.5.tar.gz
cd freeDiameter-1.1.5
patch -p1 < $OPENAIR_DIR/openair-cn/S6A/freediameter/freediameter-1.1.5.patch
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ../
echo "Compiling freeDiameter"
make -j`nproc`
#make test
$SUDO make install
rm -rf /tmp/1.1.5.tar.gz /tmp/freeDiameter-1.1.5
}
install_freediameter_from_source() {
cd /tmp
echo "Downloading 1.2.0 freeDiameter archive"
rm -rf /tmp/1.2.0.tar.gz* /tmp/freeDiameter-1.2.0
wget http://www.freediameter.net/hg/freeDiameter/archive/1.2.0.tar.gz
tar xzf 1.2.0.tar.gz
cd freeDiameter-1.2.0
patch -p1 < $OPENAIR_DIR/openair-cn/S6A/freediameter/freediameter-1.2.0.patch
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ../
echo "Compiling freeDiameter"
make -j`nproc`
#make test
$SUDO make install
rm -rf /tmp/1.2.0.tar.gz /tmp/freeDiameter-1.2.0
}
install_latest_freediameter_from_source() {
cd /tmp
rm -rf /tmp/freeDiameter
echo "Downloading latest freeDiameter trunk (may be unstable)"
git clone https://github.com/Metaswitch/freeDiameter.git
cd freeDiameter
patch -p1 < $OPENAIR_DIR/openair-cn/S6A/freediameter/freediameter-1.2.0.patch
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ../
echo "Compiling freeDiameter"
make -j`nproc`
#make test
$SUDO make install
rm -rf /tmp/freeDiameter
}
check_install_usrp_uhd_driver(){
@@ -345,8 +248,6 @@ check_install_oai_software() {
libxml2-dev \
linux-headers-`uname -r` \
mscgen \
mysql-client \
mysql-server \
octave \
octave-signal \
openssh-client \
@@ -400,65 +301,7 @@ install_nas_tools() {
}
##################################
# create HSS DB
################################
# arg 1 is mysql admin (ex: root)
# arg 2 is mysql password (ex: linux)
# arg 3 is hss username (ex: hssadmin)
# arg 4 is hss password (ex: admin)
# arg 5 is database name (ex: oai_db)
create_hss_database(){
EXPECTED_ARGS=5
if [ $# -ne $EXPECTED_ARGS ]
then
echo_error "Usage: $0 dbadmin dbpass hssuser hsspass databasename"
return 1
fi
local mysql_admin=$1
local mysql_password=$2
local hss_username=$3
local hss_password=$4
local database_name=$5
Q1="GRANT ALL PRIVILEGES ON *.* TO '$hss_username'@'localhost' IDENTIFIED BY '$hss_password' WITH GRANT OPTION;"
Q2="FLUSH PRIVILEGES;"
mysql -u $mysql_admin --password=$mysql_password -e "${Q1}${Q2}"
if [ $? -ne 0 ]; then
echo_error "HSS: $hss_username permissions creation failed"
echo_error "verify root password for mysql is linux: mysql -u root --password=linux"
echo_error "if not, reset it to "linux" with sudo dpkg-reconfigure mysql-server-5.5"
return 1
else
echo_success "HSS: $hss_username permissions creation succeeded"
fi
Q3="CREATE DATABASE IF NOT EXISTS $database_name;"
mysql -u $hss_username --password=$hss_password -e "${Q3}"
if [ $? -ne 0 ]; then
echo_error "HSS: $database_name creation failed"
return 1
else
echo_success "HSS: $database_name creation succeeded"
fi
# test if tables have been created
mysql -u $hss_username --password=$hss_password -e "desc $database_name.users" > /dev/null 2>&1
if [ $? -eq 1 ]; then
mysql -u $hss_username --password=$hss_password $database_name < $OPENAIR_DIR/openair-cn/OPENAIRHSS/db/$database_name.sql
if [ $? -ne 0 ]; then
echo_error "HSS: $database_name tables creation failed"
return 1
else
echo_success "HSS: $database_name tables creation succeeded"
fi
else
echo_success "HSS: $database_name tables already created, nothing done"
fi
return 0
}
################################
# set_openair_env
-271
View File
@@ -1,271 +0,0 @@
#!/bin/bash
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) anylater version.
#
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
################################################################################
# file build_hss
# brief
# author Lionel Gauthier
# company Eurecom
# email: lionel.gauthier@eurecom.fr
#
################################
# include helper functions
################################
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
source $THIS_SCRIPT_PATH/build_helper
function help()
{
echo_error " "
echo_error "Usage: build_hss [OPTION]..."
echo_error "Build the experimental HSS executable."
echo_error " "
echo_error "Options:"
echo_error "Mandatory arguments to long options are mandatory for short options too."
echo_error " -b, --s6a-bind-addr-list addr_list Optionaly, s6a server bind addresses can be specified here"
echo_error " -c, --clean Clean the build generated files (build from scratch)"
echo_error " -d, --debug Compile with debug informations."
echo_error " -f, --fqdn fqdn HSS Fully Qualified Domain Name (if not specified default is `hostname --fqdn`)."
echo_error " -h, --help Print this help."
echo_error " -i, --check-installed-software Check installed software packages necessary to build and run HSS (support Ubuntu 14.04)."
echo_error " -I, --install-hss-files Install HSS database if necessary."
echo_error " -k, --operator-key key Operator key of the HSS."
echo_error " If filled, then OPc key in table users for all subscribers (IMSI) will be computed."
echo_error " -m, --connect-to-mme fqdn MME act as a S6A server, HSS as a client (reversed situation but allows MME and HSS be on the same host) ."
echo_error " -r, --realm realm Realm of the HSS (optional parameter)."
echo_error " -R, --random boolean If false HSS random function returns always 0 (allowed values: {true, false})."
echo_error " -s, --transport-sctp-only Diameter use SCTP (TCP disabled)."
echo_error " -t, --transport-tcp-only Diameter use TCP (SCTP disabled)."
echo_error " -T, --transport-prefer-tcp Diameter prefer TCP."
echo_error " -v, --verbose Build process verbose."
echo_error " "
echo_error "Examples:"
echo_error " "
echo_error "Case 1 - HSS run on same EPC host"
echo_error "build_hss -d -m my_epc_fqdn -d -t -T"
echo_error "or build_hss -d -m my_epc_fqdn -d -t -T -k 11111111111111111111111111111111"
echo_error " "
echo_error "Case 2 - HSS and EPC do not run on same host"
echo_error "build_hss -d -s"
echo_error "build_hss -d -s -k 11111111111111111111111111111111"
}
function main()
{
local -i clean=0
local -i verbose=0
local cmake_args=" "
local make_args="-j $NUM_CPU"
local realm=""
local hss_hostname=""
local mme_hostname=""
local mme_ip=""
local mme_fqdn=""
until [ -z "$1" ]; do
case "$1" in
-b | --s6a-bind-addr-list)
echo "S6A server bind addresses: $2"
cmake_args="$cmake_args -DFD_SERVER_IP_BIND_LIST=$2"
shift 2;
;;
-c | --clean)
clean=1
echo "Clean the build generated files (build from scratch)"
shift;
;;
-d | --debug)
cmake_args="$cmake_args -DDEBUG=1"
echo "Compile with debug informations"
shift;
;;
-f | --fqdn)
echo "FQDN of the HSS: $2"
cmake_args="$cmake_args -DHSS_FQDN=$2"
shift 2;
;;
-h | --help)
help
exit 0
;;
-i | --check-installed-software)
echo "Check installed software packages necessary to build and run HSS (support Ubuntu 14.04):"
set_openair_env
check_install_oai_software
exit 0
;;
-I | --install-hss-files)
echo "Install HSS files: .conf files, database (if you want to reinstall database, drop it by hand before)."
cmake_args="$cmake_args -DINSTALL_HSS_FILES=1"
shift;
;;
-k | --operator-key)
echo "Operator key of the HSS: $2"
cmake_args="$cmake_args -DOPERATOR_key=$2"
shift 2;
;;
-m | --connect-to-mme)
mme_fqdn=$2
shift 2;
;;
-r | --realm)
echo "Realm of the HSS: $2"
cmake_args="$cmake_args -DREALM=$2"
shift 2;
;;
-R | --random)
echo "Random function: $2"
cmake_args="$cmake_args -DRANDOM_boolean=$2"
shift 2;
;;
-s | --transport-sctp-only)
echo "Diameter use SCTP (TCP disabled), this is the default option."
cmake_args="$cmake_args -DTRANSPORT_option=No_TCP"
shift;
;;
-t | --transport-tcp-only)
echo "Diameter use TCP (SCTP disabled)."
cmake_args="$cmake_args -DTRANSPORT_option=No_SCTP"
shift;
;;
-T | --transport-prefer-tcp)
echo "Diameter prefer TCP (TCP, SCTP enabled)."
cmake_args="$cmake_args -DTRANSPORT_PREFER_TCP_option=Prefer_TCP"
shift;
;;
-v | --verbose)
echo "Make build process verbose"
cmake_args="$cmake_args -DCMAKE_VERBOSE_MAKEFILE=ON"
make_args="VERBOSE=1 $make_args"
verbose=1
shift;
;;
*)
echo "Unknown option $1"
help
exit 1
;;
esac
done
# extra arguments processing
if [[ z$hss_fqdn = z ]]; then
hss_fqdn=`hostname --fqdn`
cmake_args="$cmake_args -DHSS_FQDN=$hss_fqdn"
if [[ z$realm = z ]]; then
realm=$hss_fqdn
realm=${realm#*.}
cmake_args="$cmake_args -DREALM=$realm"
fi
fi
if [[ z$mme_fqdn != z ]]; then
cmake_args="$cmake_args -DMME_FQDN=$mme_fqdn"
mme_hostname=${mme_fqdn%%.*}
cmake_args="$cmake_args -DMME_HOSTNAME=$mme_hostname"
mme_ip=`resolveip --silent $mme_hostname`
if [[ z$mme_ip = z ]]; then
mme_ip=`resolveip --silent $mme_fqdn`
fi
if [[ z$mme_ip = z ]]; then
echo_fatal "Unable to get MME IP addr of $mme_fqdn"
fi
cmake_args="$cmake_args -DHSS_CONNECT_TO_MME=1 -DMME_IP=$mme_ip"
fi
set_openair_env
if [[ $verbose -eq 1 ]]; then
cecho "OPENAIR_DIR = $OPENAIR_DIR" $green
fi
if [[ z$OPENAIR_DIR = z ]]; then
echo_fatal "OPENAIR_DIR env variable not set, exiting"
fi
local dbin=$OPENAIR_DIR/targets/bin
local dlog=$OPENAIR_DIR/cmake_targets/log
local dconf=OPENAIR_DIR/targets/bin
mkdir -m 777 -p $dbin $dlog
# for conf files copy in this bash script
if [ -d /usr/lib/freeDiameter ]; then
export FREEDIAMETER_PREFIX=/usr
else
if [ -d /usr/local/lib/freeDiameter ]; then
export FREEDIAMETER_PREFIX=/usr/local
else
echo_fatal "FreeDiameter prefix not found, install freeDiameter if EPC, HSS"
fi
fi
cmake_args="$cmake_args -DOPENAIR_DIR=$OPENAIR_DIR"
rm -f $OPENAIR_DIR/targets/bin/openair-hss
cd $OPENAIR_DIR/cmake_targets/hss_build
if [ $clean -ne 0 ]; then
if [[ $verbose -eq 1 ]]; then
echo "Cleaning HSS"
fi
$SUDO rm -Rf build 2>&1
if [[ $verbose -eq 1 ]]; then
echo "Cleaning /usr/*/etc/freeDiameter"
fi
$SUDO rm -f /usr/local/etc/freeDiameter/hss* 2>&1
$SUDO rm -f /usr/local/etc/freeDiameter/acl.conf 2>&1
$SUDO rm -f /usr/etc/freeDiameter/hss* 2>&1
$SUDO rm -f /usr/etc/freeDiameter/acl.conf 2>&1
mkdir -m 777 -p -v build
fi
if [ ! -d ./build ]; then
mkdir -m 777 -p -v build
fi
cd ./build
cmake $cmake_args ..
make $make_args
make install
# bash doesn't like space char around = char
cp -uv $OPENAIR_DIR/cmake_targets/hss_build/build/hss.conf $dbin
$SUDO cp -uv $OPENAIR_DIR/cmake_targets/hss_build/build/hss_fd.conf $OPENAIR_DIR/cmake_targets/hss_build/build/acl.conf $FREEDIAMETER_PREFIX/etc/freeDiameter
}
main "$@"
+147
View File
@@ -0,0 +1,147 @@
#!/bin/bash
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) anylater version.
#
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
################################################################################
# file build_test_epc_tools
# brief
# author Lionel Gauthier
# company Eurecom
# email: lionel.gauthier@eurecom.fr
#
################################
# include helper functions
################################
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
source $THIS_SCRIPT_PATH/build_helper
function help()
{
echo_error " "
echo_error "Usage: build_test_epc_tools [OPTION]..."
echo_error "Build the executables for generating and running a test case for EPC."
echo_error " "
echo_error "Options:"
echo_error "Mandatory arguments to long options are mandatory for short options too."
echo_error " -c, --clean Clean the build generated files (build from scratch)"
echo_error " -d, --debug Compile with debug informations."
echo_error " -h, --help Print this help."
echo_error " -v, --verbose Build process verbose."
echo_error " "
}
function main()
{
local -i clean=0
local -i verbose=0
local cmake_args=" "
local make_args="-j $NUM_CPU"
local realm=""
until [ -z "$1" ]
do
case "$1" in
-c | --clean)
clean=1
echo "Clean the build generated files (build from scratch)"
shift;
;;
-d | --debug)
cmake_args="$cmake_args -DDEBUG=1"
echo "Compile with debug informations"
shift;
;;
-h | --help)
help
shift;
exit 0
;;
-v | --verbose)
echo "Make build process verbose"
cmake_args="$cmake_args -DCMAKE_VERBOSE_MAKEFILE=ON"
make_args="VERBOSE=1 $make_args"
verbose=1
shift;
;;
*)
echo "Unknown option $1"
help
exit 1
;;
esac
done
set_openair_env
if [[ $verbose -eq 1 ]]; then
cecho "OPENAIR_DIR = $OPENAIR_DIR" $green
fi
local dbin=$OPENAIR_DIR/targets/bin
local dlog=$OPENAIR_DIR/cmake_targets/log
local dconf=$OPENAIR_DIR/targets/bin
mkdir -m 777 -p $dbin $dlog
##############################################################################
# Compile userspace executable
##############################################################################
cd $OPENAIR_DIR/cmake_targets/epc_test
if [ $clean -ne 0 ]; then
if [[ $verbose -eq 1 ]]; then
echo "Cleaning TEST_EPC"
fi
rm -f $OPENAIR_DIR/targets/bin/test_epc_generate_scenario
rm -Rf build 2>&1
mkdir -m 777 -p -v build
fi
##############################################################################
# Compile EPC
##############################################################################
cd $OPENAIR_DIR/cmake_targets/epc_test
if [ ! -d ./build ]; then
mkdir -m 777 -p -v build
fi
cmake_file=./CMakeLists.txt
cp $OPENAIR_DIR/cmake_targets/epc_test/CMakeLists.template $cmake_file
echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
cd ./build
cmake $cmake_args ..
compilations \
epc_test test_epc_generate_scenario \
test_epc_generate_scenario $dbin/test_epc_generate_scenario
}
main "$@"
@@ -1,104 +0,0 @@
#!/bin/bash
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) anylater version.
#
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
################################################################################
# file check_hss_s6a_certificate
# brief
# author Lionel Gauthier
# company Eurecom
# email: lionel.gauthier@eurecom.fr
################################
# include helper functions
################################
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
source $THIS_SCRIPT_PATH/build_helper
function _create_hss_certs()
{
local freediameter_path=$1
local fqdn=$2
cd /tmp
rm -rf /tmp/demoCA
mkdir /tmp/demoCA
echo 01 > /tmp/demoCA/serial
touch /tmp/demoCA/index.txt
echo "Creating HSS certificate for user '$fqdn'"
# Create a Root Certification Authority Certificate
openssl req -new -batch -x509 -days 3650 -nodes -newkey rsa:1024 -out hss.cacert.pem -keyout hss.cakey.pem -subj /CN=$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
# Generate a Private Key
openssl genrsa -out hss.key.pem 1024
# Generate a CSR (Certificate Signing Request) that will be self-signed
openssl req -new -batch -out hss.csr.pem -key hss.key.pem -subj /CN=$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
# Certification authority
openssl ca -cert hss.cacert.pem -keyfile hss.cakey.pem -in hss.csr.pem -out hss.cert.pem -outdir . -batch
if [ ! -d $freediameter_path/etc/freeDiameter ]; then
echo "Creating non existing directory: $freediameter_path/etc/freeDiameter/"
sudo mkdir -p $freediameter_path/etc/freeDiameter/
fi
sudo mv hss.cakey.pem hss.cert.pem hss.cacert.pem hss.key.pem $freediameter_path/etc/freeDiameter/
cd -
}
#$1 if freediameter path
#$2 is fqdn
function main() {
local freediameter_path=$1
local fqdn=$2
if [ -d $freediameter_path/etc/freeDiameter ]; then
if [ -f $freediameter_path/etc/freeDiameter/hss.cert.pem ]; then
full_hostname=`cat $freediameter_path/etc/freeDiameter/hss.cert.pem | grep "Subject" | grep "CN" | cut -d '=' -f6`
if [ a$full_hostname == a$fqdn ]; then
echo_success "HSS S6A: Found valid certificate in $freediameter_path/etc/freeDiameter"
return 0
else
echo_error "Bad hss fqdn found in cert file: $full_hostname fqdn is $fqdn"
fi
fi
fi
echo_error "HSS S6A: Did not find valid certificate in $freediameter_path/etc/freeDiameter"
echo_warning "HSS S6A: generating new certificate in $freediameter_path/etc/freeDiameter..."
_create_hss_certs $freediameter_path $fqdn
if [ $# -lt 3 ] ; then
main $freediameter_path $fqdn 2
return $?
else
echo_error "Could not access to freeDiameter path: $freediameter_path/etc/freeDiameter"
exit 1
fi
}
main "$@"
@@ -1,107 +0,0 @@
#!/bin/bash
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) anylater version.
#
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
################################################################################
# file check_mme_s6a_certificate
# brief
# author Lionel Gauthier
# company Eurecom
# email: lionel.gauthier@eurecom.fr
################################
# include helper functions
################################
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
. $THIS_SCRIPT_PATH/build_helper
function _create_mme_certs()
{
local freediameter_path=$1
local fqdn=$2
cd /tmp
rm -rf /tmp/demoCA
mkdir /tmp/demoCA
echo 01 > /tmp/demoCA/serial
touch /tmp/demoCA/index.txt
echo "Creating MME certificate for user '$fqdn'"
# Create a Root Certification Authority Certificate
openssl req -new -batch -x509 -days 3650 -nodes -newkey rsa:1024 -out mme.cacert.pem -keyout mme.cakey.pem -subj /CN=$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
# Generate a Private Key
openssl genrsa -out mme.key.pem 1024
# Generate a CSR (Certificate Signing Request) that will be self-signed
openssl req -new -batch -out mme.csr.pem -key mme.key.pem -subj /CN=$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
# Certification authority
openssl ca -cert mme.cacert.pem -keyfile mme.cakey.pem -in mme.csr.pem -out mme.cert.pem -outdir . -batch
if [ ! -d $freediameter_path/etc/freeDiameter ]; then
echo "Creating non existing directory: $freediameter_path/etc/freeDiameter/"
sudo mkdir -p $freediameter_path/etc/freeDiameter/
fi
sudo mv mme.cakey.pem mme.cert.pem mme.cacert.pem mme.key.pem $freediameter_path/etc/freeDiameter/
cd -
}
#$1 if freediameter path
#$2 is fqdn
function main() {
local freediameter_path=$1
local fqdn=$2
if [ -d $freediameter_path/etc/freeDiameter ]; then
if [ -f $freediameter_path/etc/freeDiameter/mme.cert.pem ]; then
full_hostname=`cat $freediameter_path/etc/freeDiameter/mme.cert.pem | grep "Subject" | grep "CN" | cut -d '=' -f6`
if [ a$full_hostname == a$fqdn ]; then
echo_success "MME S6A: Found valid certificate in $freediameter_path/etc/freeDiameter"
return 0
else
echo_error "Bad mme fqdn found in cert file: $full_hostname fqdn is $fqdn"
fi
else
echo_error "File $freediameter_path/etc/freeDiameter/mme.cert.pem not found"
fi
else
echo_error "Directory $freediameter_path/etc/freeDiameter not found"
fi
echo_error "MME S6A: Did not find valid certificate in $freediameter_path/etc/freeDiameter"
echo_warning "MME S6A: generating new certificate in $freediameter_path/etc/freeDiameter..."
_create_mme_certs $freediameter_path $fqdn
if [ $# -lt 3 ] ; then
main $freediameter_path $fqdn 2
return $?
else
echo_error "Could not access to freeDiameter path: $freediameter_path/etc/freeDiameter"
exit 1
fi
}
main "$@"
-103
View File
@@ -1,103 +0,0 @@
#!/bin/bash
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) anylater version.
#
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
################################################################################
# file create_hss_database
# brief
# author Lionel Gauthier
# company Eurecom
# email: lionel.gauthier@eurecom.fr
################################
# include helper functions
################################
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
. $THIS_SCRIPT_PATH/build_helper
# arg 1 is mysql user (ex: root)
# arg 2 is mysql password (ex: linux)
# arg 3 is hss username (ex: hssadmin)
# arg 4 is hss password (ex: admin)
# arg 5 is database name (ex: oai_db)
function main()
{
EXPECTED_ARGS=5
E_BADARGS=65
MYSQL=`which mysql`
rv=0
if [ $# -ne $EXPECTED_ARGS ]
then
echo_fatal "Usage: $0 dbuser dbpass hssuser hsspass databasename"
rv=1
fi
set_openair_env
# removed %
#Q1="GRANT ALL PRIVILEGES ON *.* TO '$3'@'%' IDENTIFIED BY '$4' WITH GRANT OPTION;"
Q1="GRANT ALL PRIVILEGES ON *.* TO '$3'@'localhost' IDENTIFIED BY '$4' WITH GRANT OPTION;"
Q2="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}"
$MYSQL -u $1 --password=$2 -e "$SQL"
if [ $? -ne 0 ]; then
echo_error "$3 permissions failed"
return 1
else
echo_success "$3 permissions succeeded"
fi
Q1="CREATE DATABASE IF NOT EXISTS ${BTICK}$5${BTICK};"
SQL="${Q1}"
$MYSQL -u $3 --password=$4 -e "$SQL"
if [ $? -ne 0 ]; then
echo_error "$5 creation failed"
return 1
else
echo_success "$5 creation succeeded"
fi
# test if tables have been created
mysql -u $3 --password=$4 -e "desc $5.users" > /dev/null 2>&1
if [ $? -eq 1 ]; then
$MYSQL -u $3 --password=$4 $5 < $OPENAIRCN_DIR/OPENAIRHSS/db/$5.sql
if [ $? -ne 0 ]; then
echo_error "$5 tables creation failed"
return 1
else
echo_success "$5 tables creation succeeded"
fi
fi
return 0
}
main "$@"
-163
View File
@@ -1,163 +0,0 @@
# Internet
# |
# PGW_IPV4_ADDRESS_FOR_SGI |
# +-----------+-------+------------+---------------+--------------------------+
# |host y | | PGW_INTERFACE_NAME_FOR_SGI | |
# +-----------+ +------------+---------------+ |
# | | |
# | +----+----+ (HSS may run on this host |
# | | mme_gw | or on another one) |
# | +----+----+ |
# | | |
# | +-----------------+--------------------+ |
# | | SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP | |
# | | MME_INTERFACE_NAME_FOR_S1_MME | |
# +----------------------------+---+--+---------------------------------------+
# MME_IPV4_ADDRESS_FOR_S1_MME | (S1-C and S1-U addresses/interfaces may be the same)
# SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP
# |
# |
# a.b.c.d |
# +---------------+------------+---+--+---------------------------------------+
# |eNBx | | ethx | |
# +---------------+ +---+--+ |
# | | |
# | +------+---------+ |
# | | lte-softmodem | |
# | | or | |
# | | oaisim (1)eNB (x UEs) |
# | +-------+--------+ |
# +---------------------------------+-----------------------------------------+
# |
# O (RF antenna)
MME :
{
REALM = "@REALM@"; # DO NOT CHANGE
# 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 = 10;
EMERGENCY_ATTACH_SUPPORTED = "no";
UNAUTHENTICATED_IMSI_SUPPORTED = "no";
# ASN1 VERBOSITY: none, info, annoying
VERBOSITY = "none";
IP_CAPABILITY = "IPV4V6";
INTERTASK_INTERFACE :
{
# max queue size per task
ITTI_QUEUE_SIZE = 2000000;
};
S6A :
{
S6A_CONF = "@FREEDIAMETER_PATH@/../etc/freeDiameter/mme_fd.conf";# DO NOT CHANGE
HSS_HOSTNAME = "@HSS_HOSTNAME@"; # DO NOT CHANGE
};
# ------- SCTP definitions
SCTP :
{
# Number of streams to use in input/output
SCTP_INSTREAMS = 8;
SCTP_OUTSTREAMS = 8;
};
# ------- S1AP definitions
S1AP :
{
# outcome drop timer value (seconds)
S1AP_OUTCOME_TIMER = 10;
};
# ------- MME served GUMMEI
GUMMEI :
{
# MME code DEFAULT = 0
# size = 8 bits
# maximum of 256 values, comma separated
MME_CODE = [ 1, 30 , 31, 32, 33, 34, 35, 36, 56 , 29 , 8 ];
# MME GROUP ID DEFAULT = 0
# size = 16 bits
# maximum of 65535 values, comma separated
MME_GID = [ 32768 , 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
TAI_LIST = (
{MCC="208" ; MNC="95"; TAC = "1"; } # YOUR PLMN CONFIG HERE
);
};
NAS :
{
# 3GPP TS 33.401 section 7.2.4.3 Procedures for NAS algorithm selection
# decreasing preference goes from left to right
ORDERED_SUPPORTED_INTEGRITY_ALGORITHM_LIST = [ "EIA2" , "EIA1" , "EIA0" ];
ORDERED_SUPPORTED_CIPHERING_ALGORITHM_LIST = [ "EEA0" , "EEA1" , "EEA2" ];
};
NETWORK_INTERFACES :
{
MME_INTERFACE_NAME_FOR_S1_MME = "eth2"; # YOUR NETWORK CONFIG HERE
MME_IPV4_ADDRESS_FOR_S1_MME = "192.168.27.101//24"; # YOUR NETWORK CONFIG HERE
MME_INTERFACE_NAME_FOR_S11_MME = "none";
MME_IPV4_ADDRESS_FOR_S11_MME = "0.0.0.0/24";
};
};
S-GW :
{
NETWORK_INTERFACES :
{
SGW_INTERFACE_NAME_FOR_S11 = "none";
SGW_IPV4_ADDRESS_FOR_S11 = "0.0.0.0/24";
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP = "eth2"; # YOUR NETWORK CONFIG HERE
SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP = "192.168.27.101/24"; # YOUR NETWORK CONFIG HERE
SGW_IPV4_PORT_FOR_S1U_S12_S4_UP = 2152; # PREFER NOT CHANGE
SGW_INTERFACE_NAME_FOR_S5_S8_UP = "none"; # DO NOT CHANGE
SGW_IPV4_ADDRESS_FOR_S5_S8_UP = "0.0.0.0/24"; # DO NOT CHANGE
};
};
P-GW =
{
NETWORK_INTERFACES :
{
PGW_INTERFACE_NAME_FOR_S5_S8 = "none"; # DO NOT CHANGE
PGW_IPV4_ADDRESS_FOR_S5_S8 = "0.0.0.0/24"; # DO NOT CHANGE
PGW_INTERFACE_NAME_FOR_SGI = "eth0"; # YOUR NETWORK CONFIG HERE
PGW_IPV4_ADDRESS_FOR_SGI = "192.168.12.213/24"; # YOUR NETWORK CONFIG HERE
PGW_MASQUERADE_SGI = "yes"; # YOUR NETWORK CONFIG HERE
};
IP_ADDRESS_POOL :
{
IPV4_LIST = (
"192.188.0.0/24", # YOUR NETWORK CONFIG HERE
"192.188.1.0/24" # YOUR NETWORK CONFIG HERE
);
IPV6_LIST = (
"2014:02:26::0/120" # YOUR NETWORK CONFIG HERE
);
};
DEFAULT_DNS_IPV4_ADDRESS = "192.168.106.12"; # YOUR NETWORK CONFIG HERE
DEFAULT_DNS_SEC_IPV4_ADDRESS = "192.168.12.100"; # YOUR NETWORK CONFIG HERE
};
-130
View File
@@ -1,130 +0,0 @@
MME :
{
REALM = "@REALM@"; # DO NOT CHANGE
# 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 = 10;
EMERGENCY_ATTACH_SUPPORTED = "no";
UNAUTHENTICATED_IMSI_SUPPORTED = "no";
# ASN1 VERBOSITY: none, info, annoying
VERBOSITY = "none";
IP_CAPABILITY = "IPV4V6";
INTERTASK_INTERFACE :
{
# max queue size per task
ITTI_QUEUE_SIZE = 2000000;
};
S6A :
{
S6A_CONF = "@FREEDIAMETER_PATH@/../etc/freeDiameter/mme_fd.conf";# DO NOT CHANGE
HSS_HOSTNAME = "@HSS_HOSTNAME@"; # DO NOT CHANGE
};
# ------- SCTP definitions
SCTP :
{
# Number of streams to use in input/output
SCTP_INSTREAMS = 8;
SCTP_OUTSTREAMS = 8;
};
# ------- S1AP definitions
S1AP :
{
# outcome drop timer value (seconds)
S1AP_OUTCOME_TIMER = 10;
};
# ------- MME served GUMMEI
GUMMEI :
{
# MME code DEFAULT = 0
# size = 8 bits
# maximum of 256 values, comma separated
MME_CODE = [ 1, 30 , 31, 32, 33, 34, 35, 36, 56 , 29 , 8 ];
# MME GROUP ID DEFAULT = 0
# size = 16 bits
# maximum of 65535 values, comma separated
MME_GID = [ 32768 , 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
TAI_LIST = (
{MCC="208" ; MNC="95"; TAC = "1"; } # YOUR PLMN CONFIG HERE
);
};
NAS :
{
# 3GPP TS 33.401 section 7.2.4.3 Procedures for NAS algorithm selection
# decreasing preference goes from left to right
ORDERED_SUPPORTED_INTEGRITY_ALGORITHM_LIST = [ "EIA2" , "EIA1" , "EIA0" ];
ORDERED_SUPPORTED_CIPHERING_ALGORITHM_LIST = [ "EEA0" , "EEA1" , "EEA2" ];
};
NETWORK_INTERFACES :
{
MME_INTERFACE_NAME_FOR_S1_MME = "tun2"; # DO NOT CHANGE
MME_IPV4_ADDRESS_FOR_S1_MME = "192.188.2.2/24"; # DO NOT CHANGE
MME_INTERFACE_NAME_FOR_S11_MME = "none";
MME_IPV4_ADDRESS_FOR_S11_MME = "0.0.0.0/24";
};
};
S-GW :
{
NETWORK_INTERFACES :
{
SGW_INTERFACE_NAME_FOR_S11 = "none";
SGW_IPV4_ADDRESS_FOR_S11 = "0.0.0.0/24";
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP = "lo"; # DO NOT CHANGE
SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP = "127.0.0.1/24"; # DO NOT CHANGE
SGW_IPV4_PORT_FOR_S1U_S12_S4_UP = 2152; # PREFER NOT CHANGE
SGW_INTERFACE_NAME_FOR_S5_S8_UP = "none"; # DO NOT CHANGE
SGW_IPV4_ADDRESS_FOR_S5_S8_UP = "0.0.0.0/24"; # DO NOT CHANGE
};
};
P-GW =
{
NETWORK_INTERFACES :
{
PGW_INTERFACE_NAME_FOR_S5_S8 = "none"; # DO NOT CHANGE
PGW_IPV4_ADDRESS_FOR_S5_S8 = "0.0.0.0/24"; # DO NOT CHANGE
PGW_INTERFACE_NAME_FOR_SGI = "eth0"; # YOUR NETWORK CONFIG HERE
PGW_IPV4_ADDRESS_FOR_SGI = "192.168.12.213/24"; # YOUR NETWORK CONFIG HERE
PGW_MASQUERADE_SGI = "yes"; # YOUR NETWORK CONFIG HERE
};
IP_ADDRESS_POOL :
{
IPV4_LIST = (
"192.187.0.0/24", # YOUR NETWORK CONFIG HERE
"192.187.1.0/24" # YOUR NETWORK CONFIG HERE
);
IPV6_LIST = (
"2014:02:26::0/120" # YOUR NETWORK CONFIG HERE
);
};
DEFAULT_DNS_IPV4_ADDRESS = "192.168.106.12"; # YOUR NETWORK CONFIG HERE
DEFAULT_DNS_SEC_IPV4_ADDRESS = "192.168.12.100"; # YOUR NETWORK CONFIG HERE
};
@@ -21,7 +21,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
@@ -21,7 +21,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
+1 -1
View File
@@ -22,7 +22,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
+1 -1
View File
@@ -23,7 +23,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
+1 -1
View File
@@ -23,7 +23,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
+1 -1
View File
@@ -21,7 +21,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
+1 -1
View File
@@ -22,7 +22,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
+1 -1
View File
@@ -22,7 +22,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
+1 -1
View File
@@ -22,7 +22,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
+1 -1
View File
@@ -22,7 +22,7 @@
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
-199
View File
@@ -1,199 +0,0 @@
#!/bin/bash
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) anylater version.
#
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
################################################################################
# file run_epc
# brief run script for EPC (MME+SGW-LITE).
# author Lionel GAUTHIER
# company Eurecom
# email: lionel.gauthier@eurecom.fr
################################
# include helper functions
################################
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
source $THIS_SCRIPT_PATH/build_helper
declare -i g_run_msc_gen=0
declare g_msc_dir="/tmp"
set_openair_env
function help()
{
echo_error " "
echo_error "Usage: run_epc [OPTION]..."
echo_error "Run the EPC executable (MME+SGW-LITE)."
echo_error " "
echo_error "Options:"
echo_error "Mandatory arguments to long options are mandatory for short options too."
echo_error " -g, --gdb Run with GDB."
echo_error " -h, --help Print this help."
echo_error " -K, --itti-dump-file ITTI dump file containing all ITTI events occuring during EPC runtime."
echo_error " -l, --local-enb EPC run on the same eNB host."
echo_error " -m, --mscgen directory Generate mscgen output files in a directory"
echo_error " -v, --verbosity-level Verbosity level (0,1,2)."
echo_error " 0 -> ASN1 XER printf off"
echo_error " 1 -> ASN1 XER printf on and ASN1 debug off"
echo_error " 2 -> ASN1 XER printf on and ASN1 debug on"
}
function do_msc_gen()
{
cd $g_msc_dir
last_created_file=`ls -t mscgen* | head -1 | tr -d ':'`
$OPENAIR_DIR/targets/SCRIPTS/msc_gen.py
sync
last_created_file2=`ls -t mscgen* | head -1 | tr -d ':'`
if [ x"$last_created_file" != x"$last_created_file2" ]; then
if [ -f ./$last_created_file2/oai_mscgen_page_0.png ]; then
command -v eog 2>/dev/null && eog ./$last_created_file2/oai_mscgen_page_0.png
fi
fi
}
function control_c()
# run if user hits control-c
{
echo_warning "\nExiting by ctrl+c\n"
if [ $g_run_msc_gen -eq 1 ]; then
do_msc_gen
fi
exit $?
}
function main()
{
local -i run_gdb=0
local exe_arguments=" "
local -i epc_local=0
local -r epc_default_config_file="$OPENAIR_TARGETS/bin/epc.conf"
local epc_config_file=$epc_default_config_file
until [ -z "$1" ]
do
case "$1" in
-g | --gdb)
run_gdb=1
echo "setting GDB flag to: $GDB"
shift;
;;
-h | --help)
help
exit 0
;;
-K | --itti-dump-file)
local itti_dump_file=$2
# can omit file name if last arg on the line
if [ "x$itti_dump_file" = "x" ]; then
itti_dump_file="/tmp/epc_itti.log"
else
shift 1;
fi
echo "setting ITTI dump file to: $itti_dump_file"
exe_arguments="$exe_arguments -K $itti_dump_file"
shift 1;
;;
-l | --local-enb)
epc_local=1
shift;
;;
-m | --mscgen)
g_msc_dir=$2
if [ -d "$g_msc_dir" ]; then
echo "setting mscgen log files to dir: $g_msc_dir"
g_run_msc_gen=1
shift 2;
else
echo_error "Mscgen log dir does not exist"
exit -1
fi
;;
-v | --verbosity-level)
local verbosity_level=$2
echo "setting verbosity level to: $verbosity_level"
exe_arguments="-v $verbosity_level $exe_arguments"
shift 2;
;;
*)
echo "Unknown option $1"
help
exit 0
;;
esac
done
set_openair_env
cecho "OPENAIR_DIR = $OPENAIR_DIR" $green
if [ ! -e $OPENAIR_DIR/targets/bin/mme_gw.Rel10 ]; then
echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/mme_gw.Rel10 executable, have a look at the output of build_epc executable"
fi
if [ $epc_local -eq 1 ]; then
epc_config_file="$OPENAIR_DIR/targets/bin/epc.local.enb.conf"
fi
if [ $g_run_msc_gen -eq 1 ]; then
rm -f /tmp/openair.msc.*
fi
exe_arguments="-O $epc_config_file $exe_arguments"
if [ $run_gdb -eq 0 ]; then
# trap keyboard interrupt (control-c)
trap control_c SIGINT
$OPENAIR_DIR/targets/bin/mme_gw.Rel10 `echo $exe_arguments` 2>&1
else
# trap keyboard interrupt (control-c) is done by gdb
touch ~/.gdb_mme_gw
chmod 777 ~/.gdb_mme_gw
echo "file $OPENAIR_DIR/targets/bin/mme_gw.Rel10" > ~/.gdb_mme_gw
echo "set args $exe_arguments " >> ~/.gdb_mme_gw
echo "run" >> ~/.gdb_mme_gw
cat ~/.gdb_mme_gw
gdb -n -x ~/.gdb_mme_gw
if [ $g_run_msc_gen -eq 1 ]; then
do_msc_gen
fi
fi
}
sudo echo
is_sudo=$?
if [[ "$is_sudo" -ne 0 ]]; then
echo_error "This script must be run by root or a sudo'er"
echo
exit 1
fi
main "$@"
-113
View File
@@ -1,113 +0,0 @@
#!/bin/bash
################################################################################
# OpenAirInterface
# Copyright(c) 1999 - 2014 Eurecom
#
# OpenAirInterface is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) anylater version.
#
#
# OpenAirInterface is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenAirInterface.The full GNU General Public License is
# included in this distribution in the file called "COPYING". If not,
# see <http://www.gnu.org/licenses/>.
#
# Contact Information
# OpenAirInterface Admin: openair_admin@eurecom.fr
# OpenAirInterface Tech : openair_tech@eurecom.fr
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
#
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
################################################################################
# file run_hss
# brief run script for HSS (!EXPERIMENTAL!).
# author Lionel GAUTHIER
# company Eurecom
# email: lionel.gauthier@eurecom.fr
################################
# include helper functions
################################
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
source $THIS_SCRIPT_PATH/build_helper
function help()
{
echo_error " "
echo_error "Usage: run_hss [OPTION]..."
echo_error "Run the HSS executable (experimental)."
echo_error " "
echo_error "Options:"
echo_error "Mandatory arguments to long options are mandatory for short options too."
echo_error " -g, --gdb Run with GDB."
echo_error " -h, --help Print this help."
}
function main()
{
local -i run_gdb=0
local exe_arguments=" -c ./hss.conf"
until [ -z "$1" ]
do
case "$1" in
-g | --gdb)
run_gdb=1
echo "setting GDB flag to: $GDB"
shift;
;;
-h | --help)
help
exit 0
;;
*)
echo "Unknown option $1"
help
exit 0
;;
esac
done
set_openair_env
cecho "OPENAIR_DIR = $OPENAIR_DIR" $green
cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green
cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green
cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green
cecho "OPENAIRCN_DIR = $OPENAIRCN_DIR" $green
cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green
if [ ! -e $OPENAIR_TARGETS/bin/openair-hss ]; then
echo_fatal "Cannot find $OPENAIR_TARGETS/bin/openair-hss executable"
fi
# for file config relative path
cd $OPENAIR_TARGETS/bin
if [ $run_gdb -eq 0 ]; then
exec $OPENAIR_TARGETS/bin/openair-hss `echo $exe_arguments` 2>&1
else
touch ~/.gdb_hss
chmod 777 ~/.gdb_hss
echo "file $OPENAIR_TARGETS/bin/openair-hss" > ~/.gdb_hss
echo "set args $exe_arguments " >> ~/.gdb_hss
echo "run" >> ~/.gdb_hss
cat ~/.gdb_hss
gdb -n -x ~/.gdb_hss 2>&1
fi
}
main "$@"
-97
View File
@@ -1,97 +0,0 @@
# -------- Local ---------
# Uncomment if the framework cannot resolv it.
Identity = "@MME_FQDN@";
Realm = "@REALM@";
# TLS configuration (see previous section)
TLS_Cred = "@FREEDIAMETER_PATH@/../etc/freeDiameter/mme.cert.pem",
"@FREEDIAMETER_PATH@/../etc/freeDiameter/mme.key.pem";
TLS_CA = "@FREEDIAMETER_PATH@/../etc/freeDiameter/mme.cacert.pem";
# Disable use of TCP protocol (only listen and connect in SCTP)
# Default : TCP enabled
@TRANSPORT_option@;
# This option is ignored if freeDiameter is compiled with DISABLE_SCTP option.
# Prefer TCP instead of SCTP for establishing new connections.
# This setting may be overwritten per peer in peer configuration blocs.
# Default : SCTP is attempted first.
@TRANSPORT_PREFER_TCP_option@;
No_IPv6;
# Overwrite the number of SCTP streams. This value should be kept low,
# especially if you are using TLS over SCTP, because it consumes a lot of
# resources in that case. See tickets 19 and 27 for some additional details on
# this.
# Limit the number of SCTP streams
SCTP_streams = 3;
# By default, freeDiameter acts as a Diameter Relay Agent by forwarding all
# messages it cannot handle locally. This parameter disables this behavior.
NoRelay;
TLS_old_method;
AppServThreads = 1;
# Specify the addresses on which to bind the listening server. This must be
# specified if the framework is unable to auto-detect these addresses, or if the
# auto-detected values are incorrect. Note that the list of addresses is sent
# in CER or CEA message, so one should pay attention to this parameter if some
# adresses should be kept hidden.
@ListenOn@
@DIAMETER_PORT@;
@DIAMETER_SEC_PORT@;
# -------- Extensions ---------
# Uncomment (and create rtd.conf) to specify routing table for this peer.
#LoadExtension = "rt_default.fdx" : "rtd.conf";
# Uncomment (and create acl.conf) to allow incoming connections from other peers.
#LoadExtension = "acl_wl.fdx" : "acl.conf";
# Uncomment to display periodic state information
#LoadExtension = "dbg_monitor.fdx";
# Uncomment to enable an interactive Python interpreter session.
# (see doc/dbg_interactive.py.sample for more information)
#LoadExtension = "dbg_interactive.fdx";
# Load the RFC4005 dictionary objects
#LoadExtension = "dict_nasreq.fdx";
LoadExtension = "dict_nas_mipv6.fdx";
LoadExtension = "dict_s6a.fdx";
# Load RFC4072 dictionary objects
#LoadExtension = "dict_eap.fdx";
# Load the Diameter EAP server extension (requires diameap.conf)
#LoadExtension = "app_diameap.fdx" : "diameap.conf";
# Load the Accounting Server extension (requires app_acct.conf)
#LoadExtension = "app_acct.fdx" : "app_acct.conf";
# -------- Peers ---------
# The framework will actively attempt to establish and maintain a connection
# with the peers listed here.
# For only accepting incoming connections, see the acl_wl.fx extension.
# ConnectPeer
# Declare a remote peer to which this peer must maintain a connection.
# In addition, this allows specifying non-default parameters for this peer only
# (for example disable SCTP with this peer, or use RFC3588-flavour TLS).
# Note that by default, if a peer is not listed as a ConnectPeer entry, an
# incoming connection from this peer will be rejected. If you want to accept
# incoming connections from other peers, see the acl_wl.fdx? extension which
# allows exactly this.
@ConnectPeer@ = "@HSS_FQDN@" { ConnectTo = "@HSS_IP@"; No_IPv6; No_TLS ; port = 3868; Realm = "@REALM@"; };