Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lizhongxiao
OpenXG-RAN
Commits
dc8694ce
Commit
dc8694ce
authored
Jan 03, 2024
by
Sreeshma Shiv
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cleaning-xnsetup
parent
b633b497
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
125 additions
and
176 deletions
+125
-176
openair2/COMMON/xnap_messages_types.h
openair2/COMMON/xnap_messages_types.h
+7
-3
openair2/GNB_APP/gnb_app.c
openair2/GNB_APP/gnb_app.c
+3
-7
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+79
-111
openair2/GNB_APP/gnb_config.h
openair2/GNB_APP/gnb_config.h
+1
-2
openair2/XNAP/xnap_gNB_generate_messages.c
openair2/XNAP/xnap_gNB_generate_messages.c
+35
-36
openair2/XNAP/xnap_gNB_task.c
openair2/XNAP/xnap_gNB_task.c
+0
-17
No files found.
openair2/COMMON/xnap_messages_types.h
View file @
dc8694ce
...
@@ -95,6 +95,11 @@ typedef struct xnap_tdd_info_t {
...
@@ -95,6 +95,11 @@ typedef struct xnap_tdd_info_t {
xnap_transmission_bandwidth_t
tbw
;
xnap_transmission_bandwidth_t
tbw
;
}
xnap_tdd_info_t
;
}
xnap_tdd_info_t
;
typedef
struct
xnap_snssai_s
{
uint8_t
sst
;
uint8_t
sd
;
}
xnap_snssai_t
;
typedef
struct
xnap_served_cell_info_t
{
typedef
struct
xnap_served_cell_info_t
{
// NR CGI
// NR CGI
xnap_plmn_t
plmn
;
xnap_plmn_t
plmn
;
...
@@ -120,9 +125,8 @@ typedef struct xnap_setup_req_s {
...
@@ -120,9 +125,8 @@ typedef struct xnap_setup_req_s {
uint32_t
tai_support
;
uint32_t
tai_support
;
xnap_plmn_t
plmn_support
;
xnap_plmn_t
plmn_support
;
// Number of slide support items
// Number of slide support items
uint16_t
num_ssi
;
uint16_t
num_snssai
;
uint8_t
sst
;
xnap_snssai_t
snssai
[
2
];
uint8_t
sd
;
xnap_amf_regioninfo_t
amf_region_info
;
xnap_amf_regioninfo_t
amf_region_info
;
uint8_t
num_cells_available
;
uint8_t
num_cells_available
;
xnap_served_cell_info_t
info
;
xnap_served_cell_info_t
info
;
...
...
openair2/GNB_APP/gnb_app.c
View file @
dc8694ce
...
@@ -127,13 +127,9 @@ void gNB_app_register_xn(uint32_t gnb_id_num)
...
@@ -127,13 +127,9 @@ void gNB_app_register_xn(uint32_t gnb_id_num)
LOG_I
(
XNAP
,
"GNB_ID: %d
\n
"
,
gnb_id
);
LOG_I
(
XNAP
,
"GNB_ID: %d
\n
"
,
gnb_id
);
uint64_t
id
;
uint64_t
id
;
char
*
name
=
NULL
;
char
*
name
=
NULL
;
xnap_served_cell_info_t
info
;
read_xn_setup
(
&
id
,
&
name
,
&
XNAP_REGISTER_GNB_REQ
(
msg
).
setup_req
);
read_xn_cell_info
(
&
id
,
&
name
,
&
info
);
XNAP_REGISTER_GNB_REQ
(
msg
).
net_config
=
Read_IPconfig_Xn
();
//read_xn_cell_info (&id, &name, &XNAP_REGISTER_GNB_REQ(msg).setup_req);
XNAP_REGISTER_GNB_REQ
(
msg
).
gNB_name
=
name
;
//XNAP_REGISTER_GNB_REQ(msg).setup_req = Read_setup_req_Xn (&id, &name, &info, &XNAP_REGISTER_GNB_REQ(msg).setup_req);
Read_setup_req_Xn
(
&
id
,
&
name
,
&
info
,
&
XNAP_REGISTER_GNB_REQ
(
msg
).
setup_req
);
XNAP_REGISTER_GNB_REQ
(
msg
).
net_config
=
Read_IPconfig_Xn
();
//F1AP_DU_REGISTER_REQ(msg).net_config = read_DU_IP_config(&RC.nrmac[0]->eth_params_n);
itti_send_msg_to_task
(
TASK_XNAP
,
GNB_MODULE_ID_TO_INSTANCE
(
gnb_id
),
msg
);
itti_send_msg_to_task
(
TASK_XNAP
,
GNB_MODULE_ID_TO_INSTANCE
(
gnb_id
),
msg
);
}
}
}
}
...
...
openair2/GNB_APP/gnb_config.c
View file @
dc8694ce
...
@@ -2227,47 +2227,37 @@ int gNB_app_handle_f1ap_gnb_cu_configuration_update(f1ap_gnb_cu_configuration_up
...
@@ -2227,47 +2227,37 @@ int gNB_app_handle_f1ap_gnb_cu_configuration_update(f1ap_gnb_cu_configuration_up
return
(
ret
);
return
(
ret
);
}
}
int
read_xn_cell_info
(
uint64_t
*
id
,
void
read_xn_setup
(
uint64_t
*
id
,
char
**
name
,
xnap_setup_req_t
*
req
)
char
**
name
,
xnap_served_cell_info_t
*
info
)
{
{
memset
(
info
,
0
,
sizeof
(
*
info
));
memset
(
req
,
0
,
sizeof
(
*
req
));
int
k
=
0
;
xnap_served_cell_info_t
*
info
=
&
req
->
info
;
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
paramdef_t
GNBParams
[]
=
GNBPARAMS_DESC
;
paramdef_t
GNBParams
[]
=
GNBPARAMS_DESC
;
paramlist_def_t
GNBParamList
=
{
GNB_CONFIG_STRING_GNB_LIST
,
NULL
,
0
};
paramlist_def_t
GNBParamList
=
{
GNB_CONFIG_STRING_GNB_LIST
,
NULL
,
0
};
config_get
(
config_get_if
(),
GNBSParams
,
sizeofArray
(
GNBSParams
),
NULL
);
config_get
(
config_get_if
(),
GNBSParams
,
sizeofArray
(
GNBSParams
),
NULL
);
NR_ServingCellConfigCommon_t
*
scc
=
calloc
(
1
,
sizeof
(
NR_ServingCellConfigCommon_t
));
uint64_t
ssb_bitmap
=
0xff
;
memset
((
void
*
)
scc
,
0
,
sizeof
(
NR_ServingCellConfigCommon_t
));
prepare_scc
(
scc
);
paramdef_t
SCCsParams
[]
=
SCCPARAMS_DESC
(
scc
);
paramlist_def_t
SCCsParamList
=
{
GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON
,
NULL
,
0
};
int
num_gnbs
=
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
;
int
num_gnbs
=
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
;
AssertFatal
(
num_gnbs
>
0
,
"Failed to parse config file
\n
"
);
AssertFatal
(
num_gnbs
==
1
,
"Failed to parse config file
\n
"
);
// Output a list of all gNBs.
// Output a list of all gNBs.
config_getlist
(
config_get_if
(),
&
GNBParamList
,
GNBParams
,
sizeofArray
(
GNBParams
),
NULL
);
config_getlist
(
config_get_if
(),
&
GNBParamList
,
GNBParams
,
sizeof
(
GNBParams
)
/
sizeof
(
paramdef_t
),
NULL
);
AssertFatal
(
GNBParamList
.
paramarray
[
0
][
GNB_GNB_ID_IDX
].
uptr
!=
NULL
,
"gNB id %u is not defined in configuration file
\n
"
,
0
);
AssertFatal
(
config_isparamset
(
GNBParamList
.
paramarray
[
0
],
GNB_GNB_ID_IDX
),
for
(
int
j
=
0
;
j
<
num_gnbs
;
j
++
)
{
"%s is not defined in configuration file
\n
"
,
if
(
strcmp
(
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
strlistptr
[
j
],
*
(
GNBParamList
.
paramarray
[
k
][
GNB_GNB_NAME_IDX
].
strptr
))
==
0
)
{
GNB_CONFIG_STRING_GNB_ID
);
*
id
=
*
GNBParamList
.
paramarray
[
0
][
GNB_GNB_ID_IDX
].
uptr
;
AssertFatal
(
strcmp
(
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
strlistptr
[
0
],
*
GNBParamList
.
paramarray
[
0
][
GNB_GNB_NAME_IDX
].
strptr
)
==
0
,
"no active gNB found/mismatch of gNBs: %s vs %s
\n
"
,
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
strlistptr
[
0
],
*
GNBParamList
.
paramarray
[
0
][
GNB_GNB_NAME_IDX
].
strptr
);
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
sprintf
(
aprefix
,
"%s.[0]"
,
GNB_CONFIG_STRING_GNB_LIST
);
sprintf
(
aprefix
,
"%s.[0]"
,
GNB_CONFIG_STRING_GNB_LIST
);
paramdef_t
PLMNParams
[]
=
GNBPLMNPARAMS_DESC
;
paramdef_t
PLMNParams
[]
=
GNBPLMNPARAMS_DESC
;
/* map parameter checking array instances to parameter definition array instances */
/* map parameter checking array instances to parameter definition array instances */
checkedparam_t
config_check_PLMNParams
[]
=
PLMNPARAMS_CHECK
;
checkedparam_t
config_check_PLMNParams
[]
=
PLMNPARAMS_CHECK
;
/* char* gnb_ipv4_address_for_NGU = NULL;
uint32_t gnb_port_for_NGU = 0;
char* gnb_ipv4_address_for_S1U = NULL;
uint32_t gnb_port_for_S1U = 0;*/
for
(
int
I
=
0
;
I
<
sizeof
(
PLMNParams
)
/
sizeof
(
paramdef_t
);
++
I
)
for
(
int
I
=
0
;
I
<
sizeof
(
PLMNParams
)
/
sizeof
(
paramdef_t
);
++
I
)
PLMNParams
[
I
].
chkPptr
=
&
(
config_check_PLMNParams
[
I
]);
PLMNParams
[
I
].
chkPptr
=
&
(
config_check_PLMNParams
[
I
]);
paramlist_def_t
PLMNParamList
=
{
GNB_CONFIG_STRING_PLMN_LIST
,
NULL
,
0
};
paramlist_def_t
PLMNParamList
=
{
GNB_CONFIG_STRING_PLMN_LIST
,
NULL
,
0
};
config_getlist
(
config_get_if
(),
&
PLMNParamList
,
PLMNParams
,
sizeofArray
(
PLMNParams
),
aprefix
);
config_getlist
(
config_get_if
(),
&
PLMNParamList
,
PLMNParams
,
sizeofArray
(
PLMNParams
),
aprefix
);
*
id
=
*
(
GNBParamList
.
paramarray
[
0
][
GNB_GNB_ID_IDX
].
uptr
);
*
name
=
strdup
(
*
(
GNBParamList
.
paramarray
[
0
][
GNB_GNB_NAME_IDX
].
strptr
));
*
name
=
strdup
(
*
(
GNBParamList
.
paramarray
[
0
][
GNB_GNB_NAME_IDX
].
strptr
));
//info->tac = malloc(sizeof(*info->tac));
//AssertFatal(info->tac != NULL, "out of memory\n");
info
->
tac
=
*
GNBParamList
.
paramarray
[
0
][
GNB_TRACKING_AREA_CODE_IDX
].
uptr
;
info
->
tac
=
*
GNBParamList
.
paramarray
[
0
][
GNB_TRACKING_AREA_CODE_IDX
].
uptr
;
info
->
plmn
.
mcc
=
*
PLMNParamList
.
paramarray
[
0
][
GNB_MOBILE_COUNTRY_CODE_IDX
].
uptr
;
info
->
plmn
.
mcc
=
*
PLMNParamList
.
paramarray
[
0
][
GNB_MOBILE_COUNTRY_CODE_IDX
].
uptr
;
info
->
plmn
.
mnc
=
*
PLMNParamList
.
paramarray
[
0
][
GNB_MOBILE_NETWORK_CODE_IDX
].
uptr
;
info
->
plmn
.
mnc
=
*
PLMNParamList
.
paramarray
[
0
][
GNB_MOBILE_NETWORK_CODE_IDX
].
uptr
;
...
@@ -2276,13 +2266,18 @@ int read_xn_cell_info(uint64_t *id,
...
@@ -2276,13 +2266,18 @@ int read_xn_cell_info(uint64_t *id,
"BAD MNC DIGIT LENGTH %d"
,
"BAD MNC DIGIT LENGTH %d"
,
info
->
plmn
.
mnc_digit_length
);
info
->
plmn
.
mnc_digit_length
);
info
->
nr_cellid
=
(
uint64_t
)
*
(
GNBParamList
.
paramarray
[
0
][
GNB_NRCELLID_IDX
].
u64ptr
);
info
->
nr_cellid
=
(
uint64_t
)
*
(
GNBParamList
.
paramarray
[
0
][
GNB_NRCELLID_IDX
].
u64ptr
);
//sprintf(aprefix, "%s.[%i]", GNB_CONFIG_STRING_GNB_LIST, 0);
paramdef_t
SNSSAIParams
[]
=
GNBSNSSAIPARAMS_DESC
;
config_getlist
(
config_get_if
(),
&
SCCsParamList
,
NULL
,
0
,
aprefix
);
checkedparam_t
config_check_SNSSAIParams
[]
=
SNSSAIPARAMS_CHECK
;
if
(
SCCsParamList
.
numelt
>
0
)
{
for
(
int
J
=
0
;
J
<
sizeofArray
(
SNSSAIParams
);
++
J
)
//sprintf(aprefix, "%s.[%i].%s.[%i]", GNB_CONFIG_STRING_GNB_LIST, 0, GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON, 0);
SNSSAIParams
[
J
].
chkPptr
=
&
(
config_check_SNSSAIParams
[
J
]);
config_get
(
config_get_if
(),
SCCsParams
,
sizeofArray
(
SCCsParams
),
aprefix
);
paramlist_def_t
SNSSAIParamList
=
{
GNB_CONFIG_STRING_SNSSAI_LIST
,
NULL
,
0
};
fix_scc
(
scc
,
ssb_bitmap
);
config_getlist
(
config_get_if
(),
&
SNSSAIParamList
,
SNSSAIParams
,
sizeofArray
(
SNSSAIParams
),
aprefix
);
req
->
num_snssai
=
SNSSAIParamList
.
numelt
;
for
(
int
s
=
0
;
s
<
SNSSAIParamList
.
numelt
;
++
s
)
{
req
->
snssai
[
s
].
sst
=
*
SNSSAIParamList
.
paramarray
[
s
][
GNB_SLICE_SERVICE_TYPE_IDX
].
uptr
;
req
->
snssai
[
s
].
sd
=
(
*
SNSSAIParamList
.
paramarray
[
s
][
GNB_SLICE_DIFFERENTIATOR_IDX
].
uptr
&
0xffffff
);
}
}
NR_ServingCellConfigCommon_t
*
scc
=
get_scc_config
(
config_get_if
(),
6
);
info
->
nr_pci
=
*
scc
->
physCellId
;
info
->
nr_pci
=
*
scc
->
physCellId
;
struct
NR_FrequencyInfoDL
*
frequencyInfoDL
=
scc
->
downlinkConfigCommon
->
frequencyInfoDL
;
struct
NR_FrequencyInfoDL
*
frequencyInfoDL
=
scc
->
downlinkConfigCommon
->
frequencyInfoDL
;
if
(
scc
->
tdd_UL_DL_ConfigurationCommon
)
{
if
(
scc
->
tdd_UL_DL_ConfigurationCommon
)
{
...
@@ -2304,44 +2299,19 @@ int read_xn_cell_info(uint64_t *id,
...
@@ -2304,44 +2299,19 @@ int read_xn_cell_info(uint64_t *id,
fdd
->
dl_freqinfo
.
band
=
*
frequencyInfoDL
->
frequencyBandList
.
list
.
array
[
0
];
fdd
->
dl_freqinfo
.
band
=
*
frequencyInfoDL
->
frequencyBandList
.
list
.
array
[
0
];
fdd
->
ul_freqinfo
.
band
=
*
scc
->
uplinkConfigCommon
->
frequencyInfoUL
->
frequencyBandList
->
list
.
array
[
0
];
fdd
->
ul_freqinfo
.
band
=
*
scc
->
uplinkConfigCommon
->
frequencyInfoUL
->
frequencyBandList
->
list
.
array
[
0
];
}
}
info
->
measurement_timing_information
=
"0"
;
info
->
measurement_timing_information
=
"0"
;
}
}
return
1
;
}
void
Read_setup_req_Xn
(
uint64_t
*
id
,
char
**
name
,
xnap_served_cell_info_t
*
info
,
xnap_setup_req_t
*
req
)
{
memset
(
req
,
0
,
sizeof
(
*
req
));
AssertFatal
(
info
!=
NULL
,
"out of memory
\n
"
);
printf
(
"gnb id %lu
\n
"
,
*
id
);
req
->
gNB_id
=
*
id
;
req
->
gNB_id
=
*
id
;
req
->
info
=
*
info
;
req
->
tai_support
=
info
->
tac
;
req
->
tai_support
=
info
->
tac
;
req
->
plmn_support
=
info
->
plmn
;
req
->
plmn_support
=
info
->
plmn
;
LOG_I
(
GNB_APP
,
"XNAP: gNB_id %ld, TAC %d MCC/MNC/length %d/%d/%d cellID %ld
\n
"
,
req
->
gNB_id
,
req
->
info
.
tac
,
req
->
info
.
plmn
.
mcc
,
req
->
info
.
plmn
.
mnc
,
req
->
info
.
plmn
.
mnc_digit_length
,
req
->
info
.
nr_cellid
);
//req.gNB_id = *(GNBParamList.paramarray[0][GNB_GNB_ID_IDX].uptr);
//req.tai_support = *GNBParamList.paramarray[0][GNB_TRACKING_AREA_CODE_IDX].uptr;
// return req;
}
}
xnap_net_config_t
Read_IPconfig_Xn
(
void
)
xnap_net_config_t
Read_IPconfig_Xn
(
void
)
{
{
char
*
cidr
=
NULL
;
char
*
cidr
=
NULL
;
char
*
address
=
NULL
;
char
*
address
=
NULL
;
char
*
gnb_ipv4_address_for_NGU
=
NULL
;
char
*
gnb_ipv4_address_for_NGU
=
NULL
;
uint32_t
gnb_port_for_NGU
=
0
;
uint32_t
gnb_port_for_NGU
=
0
;
char
*
gnb_ipv4_address_for_S1U
=
NULL
;
char
*
gnb_ipv4_address_for_S1U
=
NULL
;
uint32_t
gnb_port_for_S1U
=
0
;
uint32_t
gnb_port_for_S1U
=
0
;
xnap_net_config_t
nc
=
{
0
};
xnap_net_config_t
nc
=
{
0
};
paramdef_t
XnParams
[]
=
XnPARAMS_DESC
;
paramdef_t
XnParams
[]
=
XnPARAMS_DESC
;
...
@@ -2350,13 +2320,15 @@ xnap_net_config_t Read_IPconfig_Xn(void)
...
@@ -2350,13 +2320,15 @@ xnap_net_config_t Read_IPconfig_Xn(void)
paramdef_t
SCTPParams
[]
=
GNBSCTPPARAMS_DESC
;
paramdef_t
SCTPParams
[]
=
GNBSCTPPARAMS_DESC
;
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
config_getlist
(
config_get_if
(),
&
XnParamList
,
XnParams
,
sizeofArray
(
XnParams
),
aprefix
);
config_getlist
(
config_get_if
(),
&
XnParamList
,
XnParams
,
sizeofArray
(
XnParams
),
aprefix
);
AssertFatal
(
XnParamList
.
numelt
<=
XNAP_MAX_NB_GNB_IP_ADDRESS
,
"value of XnParamList.numelt %d must be lower than XnAP_MAX_NB_GNB_IP_ADDRESS %d value: reconsider to increase XNAP_MAX_NB_GNB_IP_ADDRESS
\n
"
,
XnParamList
.
numelt
,
XNAP_MAX_NB_GNB_IP_ADDRESS
);
AssertFatal
(
XnParamList
.
numelt
<=
XNAP_MAX_NB_GNB_IP_ADDRESS
,
"value of XnParamList.numelt %d must be lower than XnAP_MAX_NB_GNB_IP_ADDRESS %d value: reconsider to increase "
"XNAP_MAX_NB_GNB_IP_ADDRESS
\n
"
,
XnParamList
.
numelt
,
XNAP_MAX_NB_GNB_IP_ADDRESS
);
for
(
int
l
=
0
;
l
<
XnParamList
.
numelt
;
l
++
)
{
for
(
int
l
=
0
;
l
<
XnParamList
.
numelt
;
l
++
)
{
nc
.
nb_xn
+=
1
;
nc
.
nb_xn
+=
1
;
strcpy
(
nc
.
target_gnb_xn_ip_address
[
l
].
ipv4_address
,
strcpy
(
nc
.
target_gnb_xn_ip_address
[
l
].
ipv4_address
,
*
(
XnParamList
.
paramarray
[
l
][
GNB_Xn_IPV4_ADDRESS_IDX
].
strptr
));
*
(
XnParamList
.
paramarray
[
l
][
GNB_Xn_IPV4_ADDRESS_IDX
].
strptr
));
strcpy
(
nc
.
target_gnb_xn_ip_address
[
l
].
ipv6_address
,
*
(
XnParamList
.
paramarray
[
l
][
GNB_Xn_IPV6_ADDRESS_IDX
].
strptr
));
strcpy
(
nc
.
target_gnb_xn_ip_address
[
l
].
ipv6_address
,
*
(
XnParamList
.
paramarray
[
l
][
GNB_Xn_IPV6_ADDRESS_IDX
].
strptr
));
if
(
strcmp
(
*
(
XnParamList
.
paramarray
[
l
][
GNB_Xn_IP_ADDRESS_PREFERENCE_IDX
].
strptr
),
"ipv4"
)
==
0
)
{
if
(
strcmp
(
*
(
XnParamList
.
paramarray
[
l
][
GNB_Xn_IP_ADDRESS_PREFERENCE_IDX
].
strptr
),
"ipv4"
)
==
0
)
{
nc
.
target_gnb_xn_ip_address
[
l
].
ipv4
=
1
;
nc
.
target_gnb_xn_ip_address
[
l
].
ipv4
=
1
;
...
@@ -2373,10 +2345,6 @@ xnap_net_config_t Read_IPconfig_Xn(void)
...
@@ -2373,10 +2345,6 @@ xnap_net_config_t Read_IPconfig_Xn(void)
// NETWORK_INTERFACES
// NETWORK_INTERFACES
config_get
(
config_get_if
(),
NETParams
,
sizeofArray
(
NETParams
),
aprefix
);
config_get
(
config_get_if
(),
NETParams
,
sizeofArray
(
NETParams
),
aprefix
);
nc
.
gnb_port_for_XNC
=
(
uint32_t
)
*
(
NETParams
[
GNB_PORT_FOR_XNC_IDX
].
uptr
);
nc
.
gnb_port_for_XNC
=
(
uint32_t
)
*
(
NETParams
[
GNB_PORT_FOR_XNC_IDX
].
uptr
);
if
(
NETParams
[
GNB_IPV4_ADDR_FOR_XNC_IDX
].
strptr
==
NULL
){
printf
(
"fhjjkkjhhjkj
\n
"
);
}
printf
(
"gnb port %d
\n
"
,
nc
.
gnb_port_for_XNC
);
if
((
NETParams
[
GNB_IPV4_ADDR_FOR_XNC_IDX
].
strptr
==
NULL
)
||
(
nc
.
gnb_port_for_XNC
==
0
))
{
if
((
NETParams
[
GNB_IPV4_ADDR_FOR_XNC_IDX
].
strptr
==
NULL
)
||
(
nc
.
gnb_port_for_XNC
==
0
))
{
LOG_E
(
RRC
,
"Add gNB IPv4 address and/or port for XNC in the CONF file!
\n
"
);
LOG_E
(
RRC
,
"Add gNB IPv4 address and/or port for XNC in the CONF file!
\n
"
);
exit
(
1
);
exit
(
1
);
...
@@ -2392,7 +2360,7 @@ xnap_net_config_t Read_IPconfig_Xn(void)
...
@@ -2392,7 +2360,7 @@ xnap_net_config_t Read_IPconfig_Xn(void)
nc
.
sctp_streams
.
sctp_out_streams
=
SCTP_OUT_STREAMS
;
nc
.
sctp_streams
.
sctp_out_streams
=
SCTP_OUT_STREAMS
;
nc
.
sctp_streams
.
sctp_in_streams
=
SCTP_IN_STREAMS
;
nc
.
sctp_streams
.
sctp_in_streams
=
SCTP_IN_STREAMS
;
if
(
get_softmodem_params
()
->
sa
)
{
if
(
get_softmodem_params
()
->
sa
)
{
//sprintf(aprefix, "%s.[%i].%s", GNB_CONFIG_STRING_GNB_LIST, 0, GNB_CONFIG_STRING_SCTP_CONFIG);
//
sprintf(aprefix, "%s.[%i].%s", GNB_CONFIG_STRING_GNB_LIST, 0, GNB_CONFIG_STRING_SCTP_CONFIG);
config_get
(
config_get_if
(),
SCTPParams
,
sizeofArray
(
SCTPParams
),
aprefix
);
config_get
(
config_get_if
(),
SCTPParams
,
sizeofArray
(
SCTPParams
),
aprefix
);
nc
.
sctp_streams
.
sctp_in_streams
=
(
uint16_t
)
*
(
SCTPParams
[
GNB_SCTP_INSTREAMS_IDX
].
uptr
);
nc
.
sctp_streams
.
sctp_in_streams
=
(
uint16_t
)
*
(
SCTPParams
[
GNB_SCTP_INSTREAMS_IDX
].
uptr
);
nc
.
sctp_streams
.
sctp_out_streams
=
(
uint16_t
)
*
(
SCTPParams
[
GNB_SCTP_OUTSTREAMS_IDX
].
uptr
);
nc
.
sctp_streams
.
sctp_out_streams
=
(
uint16_t
)
*
(
SCTPParams
[
GNB_SCTP_OUTSTREAMS_IDX
].
uptr
);
...
...
openair2/GNB_APP/gnb_config.h
View file @
dc8694ce
...
@@ -108,8 +108,7 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i);
...
@@ -108,8 +108,7 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i);
void
wait_f1_setup_response
(
void
);
void
wait_f1_setup_response
(
void
);
int
gNB_app_handle_f1ap_gnb_cu_configuration_update
(
f1ap_gnb_cu_configuration_update_t
*
gnb_cu_cfg_update
);
int
gNB_app_handle_f1ap_gnb_cu_configuration_update
(
f1ap_gnb_cu_configuration_update_t
*
gnb_cu_cfg_update
);
MessageDef
*
RCconfig_NR_CU_E1
(
const
E1_t
*
entity
);
MessageDef
*
RCconfig_NR_CU_E1
(
const
E1_t
*
entity
);
int
read_xn_cell_info
(
uint64_t
*
id
,
char
**
name
,
xnap_served_cell_info_t
*
info
);
void
read_xn_setup
(
uint64_t
*
id
,
char
**
name
,
xnap_setup_req_t
*
req
);
void
Read_setup_req_Xn
(
uint64_t
*
id
,
char
**
name
,
xnap_served_cell_info_t
*
info
,
xnap_setup_req_t
*
req
);
xnap_net_config_t
Read_IPconfig_Xn
(
void
);
xnap_net_config_t
Read_IPconfig_Xn
(
void
);
ngran_node_t
get_node_type
(
void
);
ngran_node_t
get_node_type
(
void
);
...
...
openair2/XNAP/xnap_gNB_generate_messages.c
View file @
dc8694ce
...
@@ -112,15 +112,14 @@ int xnap_gNB_generate_xn_setup_request(sctp_assoc_t assoc_id, xnap_setup_req_t *
...
@@ -112,15 +112,14 @@ int xnap_gNB_generate_xn_setup_request(sctp_assoc_t assoc_id, xnap_setup_req_t *
req
->
info
.
plmn
.
mnc_digit_length
,
req
->
info
.
plmn
.
mnc_digit_length
,
&
e_BroadcastPLMNinTAISupport_ItemIE
->
plmn_id
);
&
e_BroadcastPLMNinTAISupport_ItemIE
->
plmn_id
);
{
for
(
int
k
=
0
;
k
<
1
;
k
++
)
{
for
(
int
k
=
0
;
k
<
1
;
k
++
)
{
e_S_NSSAI_ItemIE
=
(
XNAP_S_NSSAI_t
*
)
calloc
(
1
,
sizeof
(
XNAP_S_NSSAI_t
));
e_S_NSSAI_ItemIE
=
(
XNAP_S_NSSAI_t
*
)
calloc
(
1
,
sizeof
(
XNAP_S_NSSAI_t
));
e_S_NSSAI_ItemIE
->
sst
.
size
=
1
;
// OCTET STRING(SIZE(1))
INT8_TO_OCTET_STRING
(
req
->
snssai
[
k
].
sst
,
&
e_S_NSSAI_ItemIE
->
sst
);
e_S_NSSAI_ItemIE
->
sst
.
buf
=
calloc
(
e_S_NSSAI_ItemIE
->
sst
.
size
,
sizeof
(
OCTET_STRING_t
));
if
(
req
->
snssai
[
k
].
sd
!=
0xffffff
&&
req
->
snssai
[
k
].
sd
!=
0
)
{
e_S_NSSAI_ItemIE
->
sst
.
buf
[
0
]
=
1
;
e_S_NSSAI_ItemIE
->
sd
=
calloc
(
3
,
sizeof
(
OCTET_STRING_t
));
INT24_TO_OCTET_STRING
(
req
->
snssai
[
k
].
sd
,
e_S_NSSAI_ItemIE
->
sd
);
asn1cSeqAdd
(
&
e_BroadcastPLMNinTAISupport_ItemIE
->
tAISliceSupport_List
.
list
,
e_S_NSSAI_ItemIE
);
}
}
asn1cSeqAdd
(
&
e_BroadcastPLMNinTAISupport_ItemIE
->
tAISliceSupport_List
.
list
,
e_S_NSSAI_ItemIE
);
}
}
asn1cSeqAdd
(
&
TAISupport_ItemIEs
->
broadcastPLMNs
.
list
,
e_BroadcastPLMNinTAISupport_ItemIE
);
asn1cSeqAdd
(
&
TAISupport_ItemIEs
->
broadcastPLMNs
.
list
,
e_BroadcastPLMNinTAISupport_ItemIE
);
}
}
...
@@ -310,7 +309,6 @@ int xnap_gNB_generate_xn_setup_request(sctp_assoc_t assoc_id, xnap_setup_req_t *
...
@@ -310,7 +309,6 @@ int xnap_gNB_generate_xn_setup_request(sctp_assoc_t assoc_id, xnap_setup_req_t *
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRSCS
=
XNAP_NRSCS_scs120
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRSCS
=
XNAP_NRSCS_scs120
;
break
;
break
;
}
}
switch
(
tdd
->
tbw
.
nrb
)
{
switch
(
tdd
->
tbw
.
nrb
)
{
case
11
:
case
11
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb11
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb11
;
...
@@ -371,7 +369,7 @@ int xnap_gNB_generate_xn_setup_request(sctp_assoc_t assoc_id, xnap_setup_req_t *
...
@@ -371,7 +369,7 @@ int xnap_gNB_generate_xn_setup_request(sctp_assoc_t assoc_id, xnap_setup_req_t *
e_GlobalAMF_Region_Information_ItemIEs
->
amf_region_id
.
size
=
1
;
e_GlobalAMF_Region_Information_ItemIEs
->
amf_region_id
.
size
=
1
;
e_GlobalAMF_Region_Information_ItemIEs
->
amf_region_id
.
buf
=
e_GlobalAMF_Region_Information_ItemIEs
->
amf_region_id
.
buf
=
calloc
(
1
,
e_GlobalAMF_Region_Information_ItemIEs
->
amf_region_id
.
size
);
calloc
(
1
,
e_GlobalAMF_Region_Information_ItemIEs
->
amf_region_id
.
size
);
e_GlobalAMF_Region_Information_ItemIEs
->
amf_region_id
.
buf
[
0
]
=
80
;
e_GlobalAMF_Region_Information_ItemIEs
->
amf_region_id
.
buf
[
0
]
=
80
;
// TODO: Hardcoded for now
e_GlobalAMF_Region_Information_ItemIEs
->
amf_region_id
.
bits_unused
=
0
;
e_GlobalAMF_Region_Information_ItemIEs
->
amf_region_id
.
bits_unused
=
0
;
asn1cSeqAdd
(
&
ie
->
value
.
choice
.
AMF_Region_Information
.
list
,
e_GlobalAMF_Region_Information_ItemIEs
);
asn1cSeqAdd
(
&
ie
->
value
.
choice
.
AMF_Region_Information
.
list
,
e_GlobalAMF_Region_Information_ItemIEs
);
...
@@ -608,28 +606,28 @@ int xnap_gNB_generate_xn_setup_response(sctp_assoc_t assoc_id, xnap_setup_resp_t
...
@@ -608,28 +606,28 @@ int xnap_gNB_generate_xn_setup_response(sctp_assoc_t assoc_id, xnap_setup_resp_t
}
}
switch
(
fdd
->
ul_tbw
.
nrb
)
{
switch
(
fdd
->
ul_tbw
.
nrb
)
{
case
11
:
case
0
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb11
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb11
;
break
;
break
;
case
1
8
:
case
1
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb18
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb18
;
break
;
break
;
case
2
4
:
case
2
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb24
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb24
;
break
;
break
;
case
78
:
case
11
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb78
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb78
;
break
;
break
;
case
1
06
:
case
1
4
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb106
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb106
;
break
;
break
;
case
162
:
case
21
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb162
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb162
;
break
;
break
;
case
2
17
:
case
2
4
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb217
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb217
;
break
;
break
;
case
2
73
:
case
2
8
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb273
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
ulNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb273
;
break
;
break
;
default:
default:
...
@@ -651,32 +649,32 @@ int xnap_gNB_generate_xn_setup_response(sctp_assoc_t assoc_id, xnap_setup_resp_t
...
@@ -651,32 +649,32 @@ int xnap_gNB_generate_xn_setup_response(sctp_assoc_t assoc_id, xnap_setup_resp_t
break
;
break
;
}
}
switch
(
fdd
->
dl_tbw
.
nrb
)
{
switch
(
fdd
->
dl_tbw
.
nrb
)
{
case
11
:
case
0
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb11
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb11
;
break
;
break
;
case
1
8
:
case
1
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb18
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb18
;
break
;
break
;
case
2
4
:
case
2
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb24
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb24
;
break
;
break
;
case
78
:
case
11
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb78
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb78
;
break
;
break
;
case
1
06
:
case
1
4
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb106
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb106
;
break
;
break
;
case
162
:
case
21
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb162
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb162
;
break
;
break
;
case
2
17
:
case
2
4
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb217
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb217
;
break
;
break
;
case
2
73
:
case
2
8
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb273
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
fdd
->
dlNRTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb273
;
break
;
break
;
default:
default:
AssertFatal
(
0
,
"Failed: Check value for N_RB_DL/N_RB_UL"
);
AssertFatal
(
0
,
"Failed: Check value for N_RB_DL/N_RB_UL"
);
// TODO: Add all values or function to convert
break
;
break
;
}
}
}
else
if
(
resp
->
info
.
mode
==
XNAP_MODE_TDD
)
{
// TDD
}
else
if
(
resp
->
info
.
mode
==
XNAP_MODE_TDD
)
{
// TDD
...
@@ -690,6 +688,7 @@ int xnap_gNB_generate_xn_setup_response(sctp_assoc_t assoc_id, xnap_setup_resp_t
...
@@ -690,6 +688,7 @@ int xnap_gNB_generate_xn_setup_response(sctp_assoc_t assoc_id, xnap_setup_resp_t
asn1cSeqAdd
(
&
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrFrequencyInfo
.
frequencyBand_List
.
list
,
asn1cSeqAdd
(
&
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrFrequencyInfo
.
frequencyBand_List
.
list
,
nrfreqbanditem
);
nrfreqbanditem
);
}
}
printf
(
"nrnrb %d
\n
"
,
tdd
->
tbw
.
nrb
);
switch
(
tdd
->
tbw
.
scs
)
{
switch
(
tdd
->
tbw
.
scs
)
{
case
15
:
case
15
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRSCS
=
XNAP_NRSCS_scs15
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRSCS
=
XNAP_NRSCS_scs15
;
...
@@ -705,32 +704,32 @@ int xnap_gNB_generate_xn_setup_response(sctp_assoc_t assoc_id, xnap_setup_resp_t
...
@@ -705,32 +704,32 @@ int xnap_gNB_generate_xn_setup_response(sctp_assoc_t assoc_id, xnap_setup_resp_t
break
;
break
;
}
}
switch
(
tdd
->
tbw
.
nrb
)
{
switch
(
tdd
->
tbw
.
nrb
)
{
case
11
:
case
0
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb11
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb11
;
break
;
break
;
case
1
8
:
case
1
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb18
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb18
;
break
;
break
;
case
2
4
:
case
2
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb24
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb24
;
break
;
break
;
case
78
:
case
11
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb78
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb78
;
break
;
break
;
case
1
06
:
case
1
4
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb106
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb106
;
break
;
break
;
case
162
:
case
21
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb162
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb162
;
break
;
break
;
case
2
17
:
case
2
4
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb217
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb217
;
break
;
break
;
case
2
73
:
case
2
8
:
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb273
;
servedCellMember
->
served_cell_info_NR
.
nrModeInfo
.
choice
.
tdd
->
nrTransmissonBandwidth
.
nRNRB
=
XNAP_NRNRB_nrb273
;
break
;
break
;
default:
default:
AssertFatal
(
0
,
"Failed: Check value for N_RB_DL/N_RB_UL"
);
AssertFatal
(
0
,
"Failed: Check value for N_RB_DL/N_RB_UL"
);
// TODO: Add all values or function to convert.
break
;
break
;
}
}
}
}
...
...
openair2/XNAP/xnap_gNB_task.c
View file @
dc8694ce
...
@@ -74,7 +74,6 @@ static void xnap_gNB_handle_sctp_association_resp(instance_t instance, sctp_new_
...
@@ -74,7 +74,6 @@ static void xnap_gNB_handle_sctp_association_resp(instance_t instance, sctp_new_
xnap_gNB_instance_t
*
instance_xn
=
xnap_gNB_get_instance
(
instance
);
// managementproc;
xnap_gNB_instance_t
*
instance_xn
=
xnap_gNB_get_instance
(
instance
);
// managementproc;
DevAssert
(
sctp_new_association_resp
!=
NULL
);
DevAssert
(
sctp_new_association_resp
!=
NULL
);
DevAssert
(
instance_xn
!=
NULL
);
DevAssert
(
instance_xn
!=
NULL
);
printf
(
"reached ass resp %d
\n
"
,
sctp_new_association_resp
->
assoc_id
);
/*Return if connection to gNB failed- to be modified if needed. (Exit on error in X2AP)*/
/*Return if connection to gNB failed- to be modified if needed. (Exit on error in X2AP)*/
if
(
sctp_new_association_resp
->
sctp_state
==
SCTP_STATE_UNREACHABLE
)
{
if
(
sctp_new_association_resp
->
sctp_state
==
SCTP_STATE_UNREACHABLE
)
{
LOG_E
(
XNAP
,
LOG_E
(
XNAP
,
...
@@ -106,8 +105,6 @@ static void xnap_gNB_handle_sctp_association_resp(instance_t instance, sctp_new_
...
@@ -106,8 +105,6 @@ static void xnap_gNB_handle_sctp_association_resp(instance_t instance, sctp_new_
xnap_gnb_data_p
->
out_streams
=
sctp_new_association_resp
->
out_streams
;
xnap_gnb_data_p
->
out_streams
=
sctp_new_association_resp
->
out_streams
;
xnap_dump_trees
(
instance
);
xnap_dump_trees
(
instance
);
xnap_insert_gnb
(
instance
,
xnap_gnb_data_p
);
xnap_insert_gnb
(
instance
,
xnap_gnb_data_p
);
// RB_INSERT(xnap_gnb_tree, &instance_xn->xnap_gnbs, xnap_gnb_data_p);
// instance_xn->num_gnbs++;
xnap_dump_trees
(
instance
);
xnap_dump_trees
(
instance
);
xnap_gNB_generate_xn_setup_request
(
sctp_new_association_resp
->
assoc_id
,
&
instance_xn
->
setup_req
);
xnap_gNB_generate_xn_setup_request
(
sctp_new_association_resp
->
assoc_id
,
&
instance_xn
->
setup_req
);
}
}
...
@@ -141,9 +138,7 @@ static void xnap_gNB_send_sctp_assoc_req(instance_t instance, xnap_net_config_t
...
@@ -141,9 +138,7 @@ static void xnap_gNB_send_sctp_assoc_req(instance_t instance, xnap_net_config_t
MessageDef
*
message
=
NULL
;
MessageDef
*
message
=
NULL
;
sctp_new_association_req_t
*
sctp_new_association_req
=
NULL
;
sctp_new_association_req_t
*
sctp_new_association_req
=
NULL
;
DevAssert
(
nc
!=
NULL
);
DevAssert
(
nc
!=
NULL
);
printf
(
"blahblahblah
\n
"
);
message
=
itti_alloc_new_message
(
TASK_XNAP
,
0
,
SCTP_NEW_ASSOCIATION_REQ
);
message
=
itti_alloc_new_message
(
TASK_XNAP
,
0
,
SCTP_NEW_ASSOCIATION_REQ
);
printf
(
"ghjfghjjdfhj
\n
"
);
sctp_new_association_req
=
&
message
->
ittiMsg
.
sctp_new_association_req
;
sctp_new_association_req
=
&
message
->
ittiMsg
.
sctp_new_association_req
;
sctp_new_association_req
->
port
=
nc
->
gnb_port_for_XNC
;
sctp_new_association_req
->
port
=
nc
->
gnb_port_for_XNC
;
sctp_new_association_req
->
ppid
=
XNAP_SCTP_PPID
;
sctp_new_association_req
->
ppid
=
XNAP_SCTP_PPID
;
...
@@ -155,7 +150,6 @@ static void xnap_gNB_send_sctp_assoc_req(instance_t instance, xnap_net_config_t
...
@@ -155,7 +150,6 @@ static void xnap_gNB_send_sctp_assoc_req(instance_t instance, xnap_net_config_t
sizeof
(
nc
->
target_gnb_xn_ip_address
[
index
]));
sizeof
(
nc
->
target_gnb_xn_ip_address
[
index
]));
memcpy
(
&
sctp_new_association_req
->
local_address
,
&
nc
->
gnb_xn_ip_address
,
sizeof
(
nc
->
gnb_xn_ip_address
));
memcpy
(
&
sctp_new_association_req
->
local_address
,
&
nc
->
gnb_xn_ip_address
,
sizeof
(
nc
->
gnb_xn_ip_address
));
sctp_new_association_req
->
ulp_cnx_id
=
index
;
sctp_new_association_req
->
ulp_cnx_id
=
index
;
// instance_p->xn_target_gnb_pending_nb++;
itti_send_msg_to_task
(
TASK_SCTP
,
instance
,
message
);
itti_send_msg_to_task
(
TASK_SCTP
,
instance
,
message
);
}
}
...
@@ -185,20 +179,13 @@ static void xnap_gNB_handle_sctp_init_msg_multi_cnf(instance_t instance, sctp_in
...
@@ -185,20 +179,13 @@ static void xnap_gNB_handle_sctp_init_msg_multi_cnf(instance_t instance, sctp_in
static
void
xnap_gNB_handle_sctp_association_ind
(
instance_t
instance
,
sctp_new_association_ind_t
*
sctp_new_association_ind
)
static
void
xnap_gNB_handle_sctp_association_ind
(
instance_t
instance
,
sctp_new_association_ind_t
*
sctp_new_association_ind
)
{
{
// f1ap_cudu_inst_t *f1ap_cu_data = getCxt(instance);
xnap_gNB_instance_t
*
instance_p
=
xnap_gNB_get_instance
(
instance
);
xnap_gNB_instance_t
*
instance_p
=
xnap_gNB_get_instance
(
instance
);
DevAssert
(
instance_p
!=
NULL
);
DevAssert
(
instance_p
!=
NULL
);
xnap_gNB_data_t
*
xnap_gnb_data_p
;
xnap_gNB_data_t
*
xnap_gnb_data_p
;
DevAssert
(
sctp_new_association_ind
!=
NULL
);
DevAssert
(
sctp_new_association_ind
!=
NULL
);
// we don't need the assoc_id, subsequent messages (the first being Xn Setup
// Request), will deliver the assoc_id
// f1ap_cu_data->sctp_in_streams = sctp_new_association_ind->in_streams;
// f1ap_cu_data->sctp_out_streams = sctp_new_association_ind->out_streams;
LOG_W
(
XNAP
,
"SCTP Association IND Received.
\n
"
);
LOG_W
(
XNAP
,
"SCTP Association IND Received.
\n
"
);
xnap_dump_trees
(
instance
);
xnap_dump_trees
(
instance
);
xnap_gnb_data_p
=
xnap_get_gNB
(
instance
,
sctp_new_association_ind
->
assoc_id
);
xnap_gnb_data_p
=
xnap_get_gNB
(
instance
,
sctp_new_association_ind
->
assoc_id
);
// DevAssert(xnap_gnb_data_p != NULL);
if
(
xnap_gnb_data_p
==
NULL
)
{
if
(
xnap_gnb_data_p
==
NULL
)
{
LOG_W
(
XNAP
,
"xnap_gnb_data_p does not exist
\n
"
);
LOG_W
(
XNAP
,
"xnap_gnb_data_p does not exist
\n
"
);
/* TODO: Create new gNB descriptor-not yet associated? */
/* TODO: Create new gNB descriptor-not yet associated? */
...
@@ -206,13 +193,10 @@ static void xnap_gNB_handle_sctp_association_ind(instance_t instance, sctp_new_a
...
@@ -206,13 +193,10 @@ static void xnap_gNB_handle_sctp_association_ind(instance_t instance, sctp_new_a
AssertFatal
(
xnap_gnb_data_p
!=
NULL
,
"out of memory
\n
"
);
AssertFatal
(
xnap_gnb_data_p
!=
NULL
,
"out of memory
\n
"
);
xnap_gnb_data_p
->
assoc_id
=
sctp_new_association_ind
->
assoc_id
;
xnap_gnb_data_p
->
assoc_id
=
sctp_new_association_ind
->
assoc_id
;
xnap_gnb_data_p
->
state
=
XNAP_GNB_STATE_WAITING
;
xnap_gnb_data_p
->
state
=
XNAP_GNB_STATE_WAITING
;
printf
(
"reached here1
\n
"
);
xnap_gnb_data_p
->
in_streams
=
sctp_new_association_ind
->
in_streams
;
xnap_gnb_data_p
->
in_streams
=
sctp_new_association_ind
->
in_streams
;
xnap_gnb_data_p
->
out_streams
=
sctp_new_association_ind
->
out_streams
;
xnap_gnb_data_p
->
out_streams
=
sctp_new_association_ind
->
out_streams
;
xnap_dump_trees
(
instance
);
xnap_dump_trees
(
instance
);
xnap_insert_gnb
(
instance
,
xnap_gnb_data_p
);
xnap_insert_gnb
(
instance
,
xnap_gnb_data_p
);
// RB_INSERT(xnap_gnb_tree, &instance_xn->xnap_gnbs, xnap_gnb_data_p);
// instance_xn->num_gnbs++;
xnap_dump_trees
(
instance
);
xnap_dump_trees
(
instance
);
}
else
{
}
else
{
xnap_gnb_data_p
->
in_streams
=
sctp_new_association_ind
->
in_streams
;
xnap_gnb_data_p
->
in_streams
=
sctp_new_association_ind
->
in_streams
;
...
@@ -227,7 +211,6 @@ void *xnap_task(void *arg)
...
@@ -227,7 +211,6 @@ void *xnap_task(void *arg)
MessageDef
*
received_msg
=
NULL
;
MessageDef
*
received_msg
=
NULL
;
int
result
;
int
result
;
LOG_D
(
XNAP
,
"Starting XNAP layer
\n
"
);
LOG_D
(
XNAP
,
"Starting XNAP layer
\n
"
);
// xnap_gNB_prepare_internal_data(); // management procedures
itti_mark_task_ready
(
TASK_XNAP
);
itti_mark_task_ready
(
TASK_XNAP
);
while
(
1
)
{
while
(
1
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment