Commit ee5928e1 authored by Raphael Defosseux's avatar Raphael Defosseux

Merge branch 'develop_integration_2018_w_41' into 'develop'

Develop integration 2018 week 41

See merge request !415
parents f34e735e 9e0e8a7b
Pipeline #10786 failed with stage
in 0 seconds
...@@ -127,7 +127,7 @@ case $key in ...@@ -127,7 +127,7 @@ case $key in
ARCHIVES_LOC=enb_usrp ARCHIVES_LOC=enb_usrp
LOG_PATTERN=.Rel14.txt LOG_PATTERN=.Rel14.txt
NB_PATTERN_FILES=4 NB_PATTERN_FILES=4
BUILD_OPTIONS="--eNB -w USRP" BUILD_OPTIONS="--eNB -w USRP --mu"
shift shift
;; ;;
-v2) -v2)
...@@ -181,7 +181,7 @@ case $key in ...@@ -181,7 +181,7 @@ case $key in
ARCHIVES_LOC=enb_usrp ARCHIVES_LOC=enb_usrp
LOG_PATTERN=.Rel14.txt LOG_PATTERN=.Rel14.txt
NB_PATTERN_FILES=4 NB_PATTERN_FILES=4
BUILD_OPTIONS="--eNB -w USRP" BUILD_OPTIONS="--eNB -w USRP --mu"
;; ;;
basic-sim) basic-sim)
VM_NAME=ci-basic-sim VM_NAME=ci-basic-sim
......
...@@ -13,10 +13,8 @@ eNBs = ...@@ -13,10 +13,8 @@ eNBs =
eNB_name = "eNB_Eurecom_LTEBox"; eNB_name = "eNB_Eurecom_LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,10 +13,8 @@ eNBs = ...@@ -13,10 +13,8 @@ eNBs =
eNB_name = "eNB_Eurecom_LTEBox"; eNB_name = "eNB_Eurecom_LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,10 +13,8 @@ eNBs = ...@@ -13,10 +13,8 @@ eNBs =
eNB_name = "eNB_Eurecom_LTEBox"; eNB_name = "eNB_Eurecom_LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
tr_s_preference = "local_mac" tr_s_preference = "local_mac"
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
tr_s_preference = "local_mac" tr_s_preference = "local_mac"
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
tr_s_preference = "local_mac" tr_s_preference = "local_mac"
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "93";
tr_s_preference = "local_mac" tr_s_preference = "local_mac"
......
...@@ -13,10 +13,8 @@ eNBs = ...@@ -13,10 +13,8 @@ eNBs =
eNB_name = "eNB_Eurecom_LTEBox"; eNB_name = "eNB_Eurecom_LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "93";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -13,11 +13,8 @@ eNBs = ...@@ -13,11 +13,8 @@ eNBs =
eNB_name = "eNB-Eurecom-LTEBox"; eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = 1;
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
mobile_country_code = "208";
mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
......
...@@ -683,7 +683,7 @@ install_asn1c_from_source(){ ...@@ -683,7 +683,7 @@ install_asn1c_from_source(){
# better to use a given commit than a branch in case the branch # better to use a given commit than a branch in case the branch
# is updated and requires modifications in the source of OAI # is updated and requires modifications in the source of OAI
#git checkout velichkov_s1ap_plus_option_group #git checkout velichkov_s1ap_plus_option_group
git checkout 73d6b23dcec9ab36605b4af884143824392134c1 git checkout d3aed06bb2bec7df1b5c6d0333f8c7dfc5993372
autoreconf -iv autoreconf -iv
./configure ./configure
make -j`nproc` make -j`nproc`
......
...@@ -29,6 +29,9 @@ ...@@ -29,6 +29,9 @@
* \note * \note
* \warning * \warning
*/ */
#define _GNU_SOURCE
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
...@@ -210,6 +213,36 @@ configmodule_interface_t *cfgif = config_get_if(); ...@@ -210,6 +213,36 @@ configmodule_interface_t *cfgif = config_get_if();
return ret; return ret;
} }
int config_getlist(paramlist_def_t *ParamList, paramdef_t *params, int numparams, char *prefix)
{
if (CONFIG_ISFLAGSET(CONFIG_ABORT)) {
fprintf(stderr,"[CONFIG] config_get skipped, config module not properly initialized\n");
return -1;
}
if (!config_get_if())
return -1;
const int ret = config_get_if()->getlist(ParamList, params, numparams, prefix);
if (ret >= 0 && params) {
char *newprefix;
if (prefix) {
int rc = asprintf(&newprefix, "%s.%s", prefix, ParamList->listname);
if (rc < 0) newprefix = NULL;
} else {
newprefix = ParamList->listname;
}
char cfgpath[MAX_OPTNAME_SIZE*2 + 6]; /* prefix.listname.[listindex] */
for (int i = 0; i < ParamList->numelt; ++i) {
// TODO config_process_cmdline?
sprintf(cfgpath, "%s.[%i]", newprefix, i);
config_execcheck(ParamList->paramarray[i], numparams, cfgpath);
}
if (prefix)
free(newprefix);
}
return ret;
}
int config_isparamset(paramdef_t *params,int paramidx) int config_isparamset(paramdef_t *params,int paramidx)
{ {
if ((params[paramidx].paramflags & PARAMFLAG_PARAMSET) != 0) { if ((params[paramidx].paramflags & PARAMFLAG_PARAMSET) != 0) {
......
...@@ -57,7 +57,7 @@ extern int config_assign_ipv4addr(paramdef_t *cfgoptions, char *ipv4addr); ...@@ -57,7 +57,7 @@ extern int config_assign_ipv4addr(paramdef_t *cfgoptions, char *ipv4addr);
/* apis to get parameters, to be used by oai modules, at configuration time */ /* apis to get parameters, to be used by oai modules, at configuration time */
extern int config_get(paramdef_t *params,int numparams, char *prefix); extern int config_get(paramdef_t *params,int numparams, char *prefix);
#define config_getlist config_get_if()->getlist extern int config_getlist(paramlist_def_t *ParamList, paramdef_t *params, int numparams, char *prefix);
/* apis to retrieve parameters info after calling get or getlist functions */ /* apis to retrieve parameters info after calling get or getlist functions */
extern int config_isparamset(paramdef_t *params,int paramidx); extern int config_isparamset(paramdef_t *params,int paramidx);
......
...@@ -97,9 +97,10 @@ typedef struct RrcConfigurationReq_s { ...@@ -97,9 +97,10 @@ typedef struct RrcConfigurationReq_s {
uint16_t tac; uint16_t tac;
uint16_t mcc; uint16_t mcc[PLMN_LIST_MAX_SIZE];
uint16_t mnc; uint16_t mnc[PLMN_LIST_MAX_SIZE];
uint8_t mnc_digit_length; uint8_t mnc_digit_length[PLMN_LIST_MAX_SIZE];
uint8_t num_plmn;
paging_drx_t default_drx; paging_drx_t default_drx;
......
...@@ -325,12 +325,14 @@ typedef struct s1ap_register_enb_req_s { ...@@ -325,12 +325,14 @@ typedef struct s1ap_register_enb_req_s {
/* Tracking area code */ /* Tracking area code */
uint16_t tac; uint16_t tac;
#define PLMN_LIST_MAX_SIZE 6
/* Mobile Country Code /* Mobile Country Code
* Mobile Network Code * Mobile Network Code
*/ */
uint16_t mcc; uint16_t mcc[PLMN_LIST_MAX_SIZE];
uint16_t mnc; uint16_t mnc[PLMN_LIST_MAX_SIZE];
uint8_t mnc_digit_length; uint8_t mnc_digit_length[PLMN_LIST_MAX_SIZE];
uint8_t num_plmn;
/* Default Paging DRX of the eNB as defined in TS 36.304 */ /* Default Paging DRX of the eNB as defined in TS 36.304 */
paging_drx_t default_drx; paging_drx_t default_drx;
...@@ -342,6 +344,8 @@ typedef struct s1ap_register_enb_req_s { ...@@ -342,6 +344,8 @@ typedef struct s1ap_register_enb_req_s {
uint8_t nb_mme; uint8_t nb_mme;
/* List of MME to connect to */ /* List of MME to connect to */
net_ip_address_t mme_ip_address[S1AP_MAX_NB_MME_IP_ADDRESS]; net_ip_address_t mme_ip_address[S1AP_MAX_NB_MME_IP_ADDRESS];
uint8_t broadcast_plmn_num[S1AP_MAX_NB_MME_IP_ADDRESS];
uint8_t broadcast_plmn_index[S1AP_MAX_NB_MME_IP_ADDRESS][PLMN_LIST_MAX_SIZE];
/* Number of SCTP streams used for a mme association */ /* Number of SCTP streams used for a mme association */
uint16_t sctp_in_streams; uint16_t sctp_in_streams;
...@@ -372,6 +376,10 @@ typedef struct s1ap_nas_first_req_s { ...@@ -372,6 +376,10 @@ typedef struct s1ap_nas_first_req_s {
/* UE id for initial connection to S1AP */ /* UE id for initial connection to S1AP */
uint16_t ue_initial_id; uint16_t ue_initial_id;
/* the chosen PLMN identity as index, see TS 36.331 6.2.2 RRC Connection
* Setup Complete. This index here is zero-based, unlike the standard! */
int selected_plmn_identity;
/* Establishment cause as sent by UE */ /* Establishment cause as sent by UE */
rrc_establishment_cause_t establishment_cause; rrc_establishment_cause_t establishment_cause;
......
This diff is collapsed.
...@@ -185,8 +185,8 @@ typedef enum { ...@@ -185,8 +185,8 @@ typedef enum {
#define ENB_CONFIG_STRING_CELL_TYPE "cell_type" #define ENB_CONFIG_STRING_CELL_TYPE "cell_type"
#define ENB_CONFIG_STRING_ENB_NAME "eNB_name" #define ENB_CONFIG_STRING_ENB_NAME "eNB_name"
#define ENB_CONFIG_STRING_TRACKING_AREA_CODE "tracking_area_code" #define ENB_CONFIG_STRING_TRACKING_AREA_CODE "tracking_area_code"
#define ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE "mobile_country_code" #define ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE_OLD "mobile_country_code"
#define ENB_CONFIG_STRING_MOBILE_NETWORK_CODE "mobile_network_code" #define ENB_CONFIG_STRING_MOBILE_NETWORK_CODE_OLD "mobile_network_code"
#define ENB_CONFIG_STRING_TRANSPORT_S_PREFERENCE "tr_s_preference" #define ENB_CONFIG_STRING_TRANSPORT_S_PREFERENCE "tr_s_preference"
#define ENB_CONFIG_STRING_LOCAL_S_IF_NAME "local_s_if_name" #define ENB_CONFIG_STRING_LOCAL_S_IF_NAME "local_s_if_name"
#define ENB_CONFIG_STRING_LOCAL_S_ADDRESS "local_s_address" #define ENB_CONFIG_STRING_LOCAL_S_ADDRESS "local_s_address"
...@@ -204,9 +204,9 @@ typedef enum { ...@@ -204,9 +204,9 @@ typedef enum {
{ENB_CONFIG_STRING_ENB_ID, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \ {ENB_CONFIG_STRING_ENB_ID, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_CELL_TYPE, NULL, 0, strptr:NULL, defstrval:"CELL_MACRO_ENB", TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_CELL_TYPE, NULL, 0, strptr:NULL, defstrval:"CELL_MACRO_ENB", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_ENB_NAME, NULL, 0, strptr:NULL, defstrval:"OAIeNodeB", TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_ENB_NAME, NULL, 0, strptr:NULL, defstrval:"OAIeNodeB", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_TRACKING_AREA_CODE, NULL, 0, strptr:NULL, defstrval:"0", TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_TRACKING_AREA_CODE, NULL, 0, uptr:NULL, defuintval:0, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE, NULL, 0, strptr:NULL, defstrval:"0", TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE_OLD, NULL, 0, strptr:NULL, defstrval:NULL, TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_MOBILE_NETWORK_CODE, NULL, 0, strptr:NULL, defstrval:"0", TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_MOBILE_NETWORK_CODE_OLD, NULL, 0, strptr:NULL, defstrval:NULL, TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_TRANSPORT_S_PREFERENCE, NULL, 0, strptr:NULL, defstrval:"local_mac", TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_TRANSPORT_S_PREFERENCE, NULL, 0, strptr:NULL, defstrval:"local_mac", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_LOCAL_S_IF_NAME, NULL, 0, strptr:NULL, defstrval:"lo", TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_LOCAL_S_IF_NAME, NULL, 0, strptr:NULL, defstrval:"lo", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_LOCAL_S_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.1", TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_LOCAL_S_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.1", TYPE_STRING, 0}, \
...@@ -220,8 +220,8 @@ typedef enum { ...@@ -220,8 +220,8 @@ typedef enum {
#define ENB_CELL_TYPE_IDX 1 #define ENB_CELL_TYPE_IDX 1
#define ENB_ENB_NAME_IDX 2 #define ENB_ENB_NAME_IDX 2
#define ENB_TRACKING_AREA_CODE_IDX 3 #define ENB_TRACKING_AREA_CODE_IDX 3
#define ENB_MOBILE_COUNTRY_CODE_IDX 4 #define ENB_MOBILE_COUNTRY_CODE_IDX_OLD 4
#define ENB_MOBILE_NETWORK_CODE_IDX 5 #define ENB_MOBILE_NETWORK_CODE_IDX_OLD 5
#define ENB_TRANSPORT_S_PREFERENCE_IDX 6 #define ENB_TRANSPORT_S_PREFERENCE_IDX 6
#define ENB_LOCAL_S_IF_NAME_IDX 7 #define ENB_LOCAL_S_IF_NAME_IDX 7
#define ENB_LOCAL_S_ADDRESS_IDX 8 #define ENB_LOCAL_S_ADDRESS_IDX 8
...@@ -230,9 +230,56 @@ typedef enum { ...@@ -230,9 +230,56 @@ typedef enum {
#define ENB_REMOTE_S_PORTC_IDX 11 #define ENB_REMOTE_S_PORTC_IDX 11
#define ENB_LOCAL_S_PORTD_IDX 12 #define ENB_LOCAL_S_PORTD_IDX 12
#define ENB_REMOTE_S_PORTD_IDX 13 #define ENB_REMOTE_S_PORTD_IDX 13
#define TRACKING_AREA_CODE_OKRANGE {0x0001,0xFFFD}
#define ENBPARAMS_CHECK { \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s2 = { config_check_intrange, TRACKING_AREA_CODE_OKRANGE } },\
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
/* PLMN ID configuration */
#define ENB_CONFIG_STRING_PLMN_LIST "plmn_list"
#define ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE "mcc"
#define ENB_CONFIG_STRING_MOBILE_NETWORK_CODE "mnc"
#define ENB_CONFIG_STRING_MNC_DIGIT_LENGTH "mnc_length"
#define ENB_MOBILE_COUNTRY_CODE_IDX 0
#define ENB_MOBILE_NETWORK_CODE_IDX 1
#define ENB_MNC_DIGIT_LENGTH 2
#define PLMNPARAMS_DESC { \
/* optname helpstr paramflags XXXptr def val type numelt */ \
{ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE, "mobile country code", 0, uptr:NULL, defuintval:1000, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_MOBILE_NETWORK_CODE, "mobile network code", 0, uptr:NULL, defuintval:1000, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_MNC_DIGIT_LENGTH, "length of the MNC (2 or 3)", 0, uptr:NULL, defuintval:0, TYPE_UINT, 0}, \
}
#define MCC_MNC_OKRANGES {0,999}
#define MNC_DIGIT_LENGTH_OKVALUES {2,3}
#define PLMNPARAMS_CHECK { \
{ .s2 = { config_check_intrange, MCC_MNC_OKRANGES } }, \
{ .s2 = { config_check_intrange, MCC_MNC_OKRANGES } }, \
{ .s1 = { config_check_intval, MNC_DIGIT_LENGTH_OKVALUES, 2 } }, \
}
/* component carries configuration parameters name */ /* component carries configuration parameters name */
...@@ -681,6 +728,7 @@ typedef enum { ...@@ -681,6 +728,7 @@ typedef enum {
#define ENB_CONFIG_STRING_MME_IPV6_ADDRESS "ipv6" #define ENB_CONFIG_STRING_MME_IPV6_ADDRESS "ipv6"
#define ENB_CONFIG_STRING_MME_IP_ADDRESS_ACTIVE "active" #define ENB_CONFIG_STRING_MME_IP_ADDRESS_ACTIVE "active"
#define ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE "preference" #define ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE "preference"
#define ENB_CONFIG_STRING_MME_BROADCAST_PLMN_INDEX "broadcast_plmn_index"
/*-------------------------------------------------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------------------------------------------------*/
...@@ -692,12 +740,14 @@ typedef enum { ...@@ -692,12 +740,14 @@ typedef enum {
{ENB_CONFIG_STRING_MME_IPV6_ADDRESS, NULL, 0, uptr:NULL, defstrval:NULL, TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_MME_IPV6_ADDRESS, NULL, 0, uptr:NULL, defstrval:NULL, TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_MME_IP_ADDRESS_ACTIVE, NULL, 0, uptr:NULL, defstrval:NULL, TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_MME_IP_ADDRESS_ACTIVE, NULL, 0, uptr:NULL, defstrval:NULL, TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE, NULL, 0, uptr:NULL, defstrval:NULL, TYPE_STRING, 0}, \ {ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE, NULL, 0, uptr:NULL, defstrval:NULL, TYPE_STRING, 0}, \