ConnectionControlBase.h Source File

Simu5G: ConnectionControlBase.h Source File
Simu5G
ConnectionControlBase.h
1//
2// Simu5G
3//
4// Authors: Andras Varga (OpenSim Ltd)
5//
6// This file is part of a software released under the license included in file
7// "license.pdf". Please read LICENSE and README files before using it.
8// The above files and the present reference are part of the software itself,
9// and cannot be removed from it.
10//
11
12#ifndef _CONNECTIONCONTROLBASE_H_
13#define _CONNECTIONCONTROLBASE_H_
14
15#include <inet/common/packet/Packet.h>
16
17#include "simu5g/common/LteCommon.h"
18#include "simu5g/common/QfiRuleSet.h"
19#include "simu5g/stack/rrc/DrbDesc.h"
20
21namespace simu5g {
22
29{
30 bool d2d = false; // the leg can take part in D2D (sidelink) communication
31};
32
41class ConnectionControlBase : public omnetpp::cSimpleModule
42{
43 public:
44 // ---- requests from the node's own data path and RRC ----
45
46 // The data path found no bearer for a flow of the given session of the UE that it
47 // classified: establish one whose properties come from the session's bearer
48 // definition the packet matches (Ip2Nic; see ConnectionControlEnb::establishBearer()).
49 // Returns the bearer's DRB id.
50 virtual DrbId establishBearer(const FlowId& flow, SessionId session, const FlowBindingKey& key, const inet::Packet *pkt) = 0;
51
52 // Establish the bearer of a flow whose DRB the requester already knows (SDAP's
53 // mapped-but-not-established case, and the static definitions). Returns the DRB id.
54 virtual DrbId establishBearer(const FlowId& flow, const BearerRequest& req) = 0;
55
56 // The DRB an unmapped QFI of the given session resolves to at the given UE,
57 // materializing an on-demand definition's bearer on first use; DRBID_NONE if
58 // nothing covers it (SDAP). A QFI identifies a QoS flow within a session.
59 virtual DrbId resolveDrbForQfi(MacNodeId ueNodeId, SessionId session, Qfi qfi) = 0;
60
61 // A bearer of this node was torn down: its DRB id returns to its pool where this
62 // node owns the pool (BearerManagement)
63 virtual void bearerReleased(DrbKey bearer) = 0;
64
65 // The node joined a multicast group (Registration; legacy sidelink multicast)
66 virtual void multicastGroupJoined(MacNodeId nodeId, MacNodeId groupId) = 0;
67
68 // A radio link of this node failed, as its RLC detected it and after the node
69 // released its own end (BearerManagement): the stack with the given id (a UE leg,
70 // or the base station itself) lost its link to the peer, which is told through
71 // its control-plane entry point, so that it releases its end the same way
72 virtual void radioLinkFailure(MacNodeId localId, MacNodeId peerId) = 0;
73
74 // ---- bearer installation, from the control plane of another node ----
75 // The group a 3GPP RRCReconfiguration carries at once; each forwards to the
76 // node's BearerManagement. Kept as several calls in this round.
77
78 virtual void configureDrb(const DrbDesc& drb) = 0;
79 virtual void createIncomingConnection(const FlowId& flow, const BearerRequest& req, bool withPdcp) = 0;
80 virtual void createOutgoingConnection(const FlowId& flow, const BearerRequest& req, bool withPdcp) = 0;
81 virtual void setUplinkQfiRules(QfiRuleSet&& rules) = 0;
82};
83
84} //namespace
85
86#endif
Definition ConnectionControlBase.h:42
Definition LteTypes.h:191
An ordered set of QFI-assignment rules, shared by every module that classifies packets to QoS flows.
Definition QfiRuleSet.h:57
Definition AlertReceiver.h:24
Definition ConnectionControlBase.h:29