3838#include " cu_appconfig.h"
3939#include " cu_appconfig_validator.h"
4040#include " cu_appconfig_yaml_writer.h"
41+ #include " srsran/cu_cp/cu_cp_operation_controller.h"
4142#include " srsran/e1ap/gateways/e1_local_connector_factory.h"
4243#include " srsran/e2/e2ap_config_translators.h"
4344#include " srsran/f1ap/gateways/f1c_network_server_factory.h"
@@ -312,7 +313,7 @@ int main(int argc, char** argv)
312313 cu_f1u_gtpu_msg.gtpu_pcap = cu_up_dlt_pcaps.f1u .get ();
313314 std::unique_ptr<gtpu_demux> cu_f1u_gtpu_demux = create_gtpu_demux (cu_f1u_gtpu_msg);
314315 // > Create UDP gateway(s).
315- std::vector<std::unique_ptr<gtpu_gateway>> cu_f1u_gws ;
316+ srs_cu_up::gtpu_gateway_maps f1u_gw_maps ;
316317 for (const srs_cu::cu_f1u_socket_appconfig& sock_cfg : cu_cfg.f1u_cfg .f1u_socket_cfg ) {
317318 udp_network_gateway_config cu_f1u_gw_config = {};
318319 cu_f1u_gw_config.bind_address = sock_cfg.bind_addr ;
@@ -321,12 +322,17 @@ int main(int argc, char** argv)
321322 cu_f1u_gw_config.reuse_addr = false ;
322323 cu_f1u_gw_config.pool_occupancy_threshold = sock_cfg.udp_config .pool_threshold ;
323324 cu_f1u_gw_config.rx_max_mmsg = sock_cfg.udp_config .rx_max_msgs ;
325+ cu_f1u_gw_config.dscp = sock_cfg.udp_config .dscp ;
324326 std::unique_ptr<gtpu_gateway> cu_f1u_gw = create_udp_gtpu_gateway (
325327 cu_f1u_gw_config, *epoll_broker, workers.cu_up_exec_mapper ->io_ul_executor (), *workers.non_rt_low_prio_exec );
326- cu_f1u_gws.push_back (std::move (cu_f1u_gw));
328+ if (not sock_cfg.five_qi .has_value ()) {
329+ f1u_gw_maps.default_gws .push_back (std::move (cu_f1u_gw));
330+ } else {
331+ f1u_gw_maps.five_qi_gws [sock_cfg.five_qi .value ()].push_back (std::move (cu_f1u_gw));
332+ }
327333 }
328334 std::unique_ptr<f1u_cu_up_udp_gateway> cu_f1u_conn =
329- srs_cu_up::create_split_f1u_gw ({cu_f1u_gws , *cu_f1u_gtpu_demux, *cu_up_dlt_pcaps.f1u , GTPU_PORT});
335+ srs_cu_up::create_split_f1u_gw ({f1u_gw_maps , *cu_f1u_gtpu_demux, *cu_up_dlt_pcaps.f1u , GTPU_PORT});
330336
331337 // Create E1AP local connector
332338 std::unique_ptr<e1_local_connector> e1_gw =
@@ -377,7 +383,7 @@ int main(int argc, char** argv)
377383
378384 // start O-CU-CP
379385 cu_logger.info (" Starting CU-CP..." );
380- o_cucp_obj.get_cu_cp ().start ();
386+ o_cucp_obj.get_operation_controller ().start ();
381387 cu_logger.info (" CU-CP started successfully" );
382388
383389 // Check connection to AMF
@@ -409,7 +415,7 @@ int main(int argc, char** argv)
409415 // Connect the forwarder to the metrics manager.
410416 metrics_notifier_forwarder.connect (metrics_mngr);
411417
412- o_cuup_unit.unit ->get_power_controller ().start ();
418+ o_cuup_unit.unit ->get_operation_controller ().start ();
413419 {
414420 app_services::application_message_banners app_banner (app_name);
415421
@@ -419,10 +425,10 @@ int main(int argc, char** argv)
419425 }
420426
421427 // Stop O-CU-UP activity.
422- o_cuup_unit.unit ->get_power_controller ().stop ();
428+ o_cuup_unit.unit ->get_operation_controller ().stop ();
423429
424430 // Stop O-CU-CP activity.
425- o_cucp_obj.get_cu_cp ().stop ();
431+ o_cucp_obj.get_operation_controller ().stop ();
426432
427433 // Stop the timer source before stopping the workers.
428434 time_source.reset ();
0 commit comments