A Discrete-Event Network Simulator
API
epc-enb-s1-sap.h
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Nicola Baldo <nbaldo@cttc.es>
19  */
20 
21 #ifndef EPC_ENB_S1_SAP_H
22 #define EPC_ENB_S1_SAP_H
23 
24 #include <list>
25 #include <ns3/eps-bearer.h>
26 #include <ns3/ipv4-address.h>
27 
28 namespace ns3 {
29 
30 
39 {
40 public:
41  virtual ~EpcEnbS1SapProvider ();
42 
49  virtual void InitialUeMessage (uint64_t imsi, uint16_t rnti) = 0;
50 
57  virtual void DoSendReleaseIndication (uint64_t imsi, uint16_t rnti, uint8_t bearerId) = 0;
58 
61  {
62  uint8_t epsBearerId;
63  uint32_t teid;
64  };
65 
68  {
69  uint16_t rnti;
70  uint16_t cellId;
71  uint32_t mmeUeS1Id;
72  std::list<BearerToBeSwitched> bearersToBeSwitched;
73  };
74 
80  virtual void PathSwitchRequest (PathSwitchRequestParameters params) = 0;
81 
82 
90  virtual void UeContextRelease (uint16_t rnti) = 0;
91 
92 };
93 
94 
95 
104 {
105 public:
106  virtual ~EpcEnbS1SapUser ();
107 
112  {
113  uint16_t rnti;
114  };
115 
122 
127  {
128  uint16_t rnti;
131  uint8_t bearerId;
132  uint32_t gtpTeid;
134  };
135 
142 
143 
146  {
147  uint16_t rnti;
148  };
149 
156 
157 };
158 
159 
160 
161 
167 template <class C>
169 {
170 public:
176  MemberEpcEnbS1SapProvider (C* owner);
177 
178  // inherited from EpcEnbS1SapProvider
179  virtual void InitialUeMessage (uint64_t imsi, uint16_t rnti);
180  virtual void DoSendReleaseIndication (uint64_t imsi, uint16_t rnti, uint8_t bearerId);
181 
182  virtual void PathSwitchRequest (PathSwitchRequestParameters params);
183  virtual void UeContextRelease (uint16_t rnti);
184 
185 private:
187  C* m_owner;
188 };
189 
190 template <class C>
192  : m_owner (owner)
193 {
194 }
195 
196 template <class C>
198 {
199 }
200 
201 
202 template <class C>
203 void MemberEpcEnbS1SapProvider<C>::InitialUeMessage (uint64_t imsi, uint16_t rnti)
204 {
205  m_owner->DoInitialUeMessage (imsi, rnti);
206 }
207 
208 template <class C>
209 void MemberEpcEnbS1SapProvider<C>::DoSendReleaseIndication (uint64_t imsi, uint16_t rnti, uint8_t bearerId)
210 {
211  m_owner->DoReleaseIndication (imsi, rnti, bearerId);
212 }
213 
214 template <class C>
216 {
217  m_owner->DoPathSwitchRequest (params);
218 }
219 
220 template <class C>
222 {
223  m_owner->DoUeContextRelease (rnti);
224 }
225 
231 template <class C>
233 {
234 public:
240  MemberEpcEnbS1SapUser (C* owner);
241 
242  // inherited from EpcEnbS1SapUser
246 
247 private:
249  C* m_owner;
250 };
251 
252 template <class C>
254  : m_owner (owner)
255 {
256 }
257 
258 template <class C>
260 {
261 }
262 
263 template <class C>
265 {
266  m_owner->DoInitialContextSetupRequest (params);
267 }
268 
269 template <class C>
271 {
272  m_owner->DoDataRadioBearerSetupRequest (params);
273 }
274 
275 template <class C>
277 {
278  m_owner->DoPathSwitchRequestAcknowledge (params);
279 }
280 
281 } // namespace ns3
282 
283 #endif // EPC_ENB_S1_SAP_H
Ipv4Address transportLayerAddress
IP Address of the SGW, see 36.423 9.2.1.
Parameters passed to DataRadioBearerSetupRequest ()
Template for the implementation of the EpcEnbS1SapUser as a member of an owner class of type C to whi...
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication...
virtual void PathSwitchRequest(PathSwitchRequestParameters params)=0
Path Switch Request.
virtual void UeContextRelease(uint16_t rnti)
release UE context at the S1 Application of the source eNB after reception of the UE CONTEXT RELEASE ...
uint32_t mmeUeS1Id
mmeUeS1Id in practice, we use the IMSI
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication...
virtual void DataRadioBearerSetupRequest(DataRadioBearerSetupRequestParameters params)=0
request the setup of a DataRadioBearer
uint16_t rnti
the RNTI identifying the UE for which the DataRadioBearer is to be created
std::list< BearerToBeSwitched > bearersToBeSwitched
list of bearers to be switched
EpsBearer bearer
the characteristics of the bearer to be setup
virtual void UeContextRelease(uint16_t rnti)=0
release UE context at the S1 Application of the source eNB after reception of the UE CONTEXT RELEASE ...
virtual void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId)
Triggers epc-enb-application to send ERAB Release Indication message towards MME. ...
uint32_t gtpTeid
S1-bearer GTP tunnel endpoint identifier, see 36.423 9.2.1.
virtual void InitialUeMessage(uint64_t imsi, uint16_t rnti)
PathSwitchRequestParameters structure.
BearerToBeSwitched structure.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual void DataRadioBearerSetupRequest(DataRadioBearerSetupRequestParameters params)
request the setup of a DataRadioBearer
Template for the implementation of the EpcEnbS1SapProvider as a member of an owner class of type C to...
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:91
PathSwitchRequestAcknowledgeParameters structure.
virtual void PathSwitchRequest(PathSwitchRequestParameters params)
Path Switch Request.
virtual void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId)=0
Triggers epc-enb-application to send ERAB Release Indication message towards MME. ...
virtual void InitialUeMessage(uint64_t imsi, uint16_t rnti)=0
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
virtual void PathSwitchRequestAcknowledge(PathSwitchRequestAcknowledgeParameters params)=0
request a path switch acknowledge
virtual void InitialContextSetupRequest(InitialContextSetupRequestParameters params)
Initial context setup request.
Parameters passed to InitialContextSetupRequest ()
virtual void InitialContextSetupRequest(InitialContextSetupRequestParameters params)=0
Initial context setup request.
virtual void PathSwitchRequestAcknowledge(PathSwitchRequestAcknowledgeParameters params)
request a path switch acknowledge