1313#include " srsran/gtpu/gtpu_demux.h"
1414#include " srsran/pcap/dlt_pcap.h"
1515#include " srsran/support/executors/task_executor.h"
16+ #include " fmt/format.h"
1617#include < memory>
1718#include < unordered_map>
1819
@@ -21,7 +22,7 @@ namespace srsran {
2122class gtpu_demux_impl final : public gtpu_demux
2223{
2324public:
24- explicit gtpu_demux_impl (task_executor& cu_up_exec, dlt_pcap& gtpu_pcap_);
25+ explicit gtpu_demux_impl (gtpu_demux_cfg_t cfg_, task_executor& cu_up_exec, dlt_pcap& gtpu_pcap_);
2526 ~gtpu_demux_impl () = default ;
2627
2728 // gtpu_demux_rx_upper_layer_interface
@@ -35,8 +36,9 @@ class gtpu_demux_impl final : public gtpu_demux
3536 // Actual demuxing, to be run in CU-UP executor.
3637 void handle_pdu_impl (gtpu_teid_t teid, byte_buffer pdu, const sockaddr_storage& src_addr);
3738
38- task_executor& cu_up_exec;
39- dlt_pcap& gtpu_pcap;
39+ const gtpu_demux_cfg_t cfg;
40+ task_executor& cu_up_exec;
41+ dlt_pcap& gtpu_pcap;
4042
4143 // /< TODO: revisit mapping of TEID to executors, one executor per UE should be doable.
4244 std::unordered_map<gtpu_teid_t , gtpu_tunnel_rx_upper_layer_interface*, gtpu_teid_hasher_t > teid_to_tunnel;
@@ -45,3 +47,21 @@ class gtpu_demux_impl final : public gtpu_demux
4547};
4648
4749} // namespace srsran
50+
51+ namespace fmt {
52+ // GTP-U demux config formatter
53+ template <>
54+ struct formatter <srsran::gtpu_demux_cfg_t > {
55+ template <typename ParseContext>
56+ auto parse (ParseContext& ctx) -> decltype(ctx.begin())
57+ {
58+ return ctx.begin ();
59+ }
60+
61+ template <typename FormatContext>
62+ auto format (srsran::gtpu_demux_cfg_t cfg, FormatContext& ctx) -> decltype(std::declval<FormatContext>().out())
63+ {
64+ return format_to (ctx.out (), " warn_on_drop={}" , cfg.warn_on_drop );
65+ }
66+ };
67+ } // namespace fmt
0 commit comments