47 void DoDispose()
override;
61 const Ptr<Socket> s5uSocket,
62 const Ptr<Socket> s5cSocket);
80 const Address& source,
82 uint16_t protocolNumber);
116 void SendToS5uSocket(Ptr<Packet> packet, Ipv4Address sgwS5uAddress, uint32_t teid);
123 void AddSgw(Ipv4Address sgwS5Addr);
130 void AddUe(uint64_t imsi);
160 void DoRecvCreateSessionRequest(Ptr<Packet> packet);
166 void DoRecvModifyBearerRequest(Ptr<Packet> packet);
172 void DoRecvDeleteBearerCommand(Ptr<Packet> packet);
178 void DoRecvDeleteBearerResponse(Ptr<Packet> packet);
183 class NrUeInfo :
public SimpleRefCount<NrUeInfo>
195 void AddBearer(uint8_t bearerId, uint32_t teid, Ptr<NrEpcTft> tft);
202 void RemoveBearer(uint8_t bearerId);
215 uint32_t Classify(Ptr<Packet> p, uint16_t protocolNumber);
222 Ipv4Address GetSgwAddr();
229 void SetSgwAddr(Ipv4Address addr);
236 Ipv4Address GetUeAddr();
243 void SetUeAddr(Ipv4Address addr);
250 Ipv6Address GetUeAddr6();
257 void SetUeAddr6(Ipv6Address addr);
260 Ipv4Address m_ueAddr;
261 Ipv6Address m_ueAddr6;
262 Ipv4Address m_sgwAddr;
264 std::map<uint8_t, uint32_t> m_teidByBearerIdMap;
270 Ipv4Address m_pgwS5Addr;
275 Ptr<Socket> m_s5uSocket;
280 Ptr<Socket> m_s5cSocket;
286 Ptr<VirtualNetDevice> m_tunDevice;
291 std::map<Ipv4Address, Ptr<NrUeInfo>> m_ueInfoByAddrMap;
296 std::map<Ipv6Address, Ptr<NrUeInfo>> m_ueInfoByAddrMap6;
301 std::map<uint64_t, Ptr<NrUeInfo>> m_ueInfoByImsiMap;
306 uint16_t m_gtpuUdpPort;
311 uint16_t m_gtpcUdpPort;
316 Ipv4Address m_sgwS5Addr;
321 TracedCallback<Ptr<Packet>> m_rxTunPktTrace;
326 TracedCallback<Ptr<Packet>> m_rxS5PktTrace;