5G-MAG Reference Tools - MBMS Modem
Gw.h
Go to the documentation of this file.
1 // 5G-MAG Reference Tools
2 // MBMS Modem Process
3 //
4 // Copyright (C) 2021 Klaus Kühnhammer (Österreichische Rundfunksender GmbH & Co KG)
5 //
6 // This program is free software: you can redistribute it and/or modify
7 // it under the terms of the GNU Affero General Public License as published by
8 // the Free Software Foundation, either version 3 of the License, or
9 // (at your option) any later version.
10 //
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU Affero General Public License for more details.
15 //
16 // You should have received a copy of the GNU Affero General Public License
17 // along with this program. If not, see <http://www.gnu.org/licenses/>.
18 //
19 
20 #pragma once
21 #include "srsran/srsran.h"
22 #include "srsran/rlc/rlc.h"
23 #include "srsran/asn1/rrc.h"
24 #include "srsran/interfaces/ue_gw_interfaces.h"
25 
26 #include <string>
27 #include <libconfig.h++>
28 
29 #include "Phy.h"
30 
36 class Gw : public srsue::gw_interface_stack {
37  public:
44  Gw(const libconfig::Config& cfg, Phy& phy)
45  : _cfg(cfg)
46  , _phy(phy)
47  {}
48 
52  virtual ~Gw();
53 
57  void init();
58 
63  void write_pdu_mch(uint32_t mch_idx, uint32_t lcid, srsran::unique_byte_buffer_t pdu) override;
64 
65  // Unused interface methods
66  void add_mch_port(uint32_t lcid, uint32_t port) override {};
67  void write_pdu(uint32_t lcid, srsran::unique_byte_buffer_t pdu) override {};
68  int setup_if_addr(uint32_t lcid, uint8_t pdn_type, uint32_t ip_addr, uint8_t* ipv6_if_id, char* err_str) override { return -1; };
69  int apply_traffic_flow_template(const uint8_t& eps_bearer_id, const LIBLTE_MME_TRAFFIC_FLOW_TEMPLATE_STRUCT* tft) override { return -1; };
70  void set_test_loop_mode(const test_loop_mode_state_t mode, const uint32_t ip_pdu_delay_ms = 0) override {};
71 
72  int deactivate_eps_bearer(const uint32_t eps_bearer_id) override {return 0;};
73  bool is_running() override { return true; };
74  private:
75  const libconfig::Config& _cfg;
76 
77  std::mutex _wr_mutex;
78  int32_t _tun_fd = -1;
80 };
Network gateway component.
Definition: Gw.h:36
bool is_running() override
Definition: Gw.h:73
void set_test_loop_mode(const test_loop_mode_state_t mode, const uint32_t ip_pdu_delay_ms=0) override
Definition: Gw.h:70
int deactivate_eps_bearer(const uint32_t eps_bearer_id) override
Definition: Gw.h:72
int32_t _tun_fd
Definition: Gw.h:78
Phy & _phy
Definition: Gw.h:79
virtual ~Gw()
Default destructor.
Definition: Gw.cpp:93
int apply_traffic_flow_template(const uint8_t &eps_bearer_id, const LIBLTE_MME_TRAFFIC_FLOW_TEMPLATE_STRUCT *tft) override
Definition: Gw.h:69
const libconfig::Config & _cfg
Definition: Gw.h:73
void write_pdu(uint32_t lcid, srsran::unique_byte_buffer_t pdu) override
Definition: Gw.h:67
void add_mch_port(uint32_t lcid, uint32_t port) override
Definition: Gw.h:66
int setup_if_addr(uint32_t lcid, uint8_t pdn_type, uint32_t ip_addr, uint8_t *ipv6_if_id, char *err_str) override
Definition: Gw.h:68
void write_pdu_mch(uint32_t mch_idx, uint32_t lcid, srsran::unique_byte_buffer_t pdu) override
Handle a MCH PDU.
Definition: Gw.cpp:36
Gw(const libconfig::Config &cfg, Phy &phy)
Default constructor.
Definition: Gw.h:44
void init()
Creates the TUN interface according to params from Cfg.
Definition: Gw.cpp:99
std::mutex _wr_mutex
Definition: Gw.h:77
The PHY component.
Definition: Phy.h:42
static Config cfg
Global configuration object.
Definition: main.cpp:165