A Discrete-Event Network Simulator
API
epc-s1ap-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.cat>
19  */
20 
21 #ifndef EPC_S1AP_SAP_H
22 #define EPC_S1AP_SAP_H
23 
24 #include <ns3/address.h>
25 #include <ns3/ptr.h>
26 #include <ns3/object.h>
27 #include <ns3/eps-bearer.h>
28 #include <ns3/epc-tft.h>
29 #include <list>
30 
31 
32 namespace ns3 {
33 
40 {
41 public:
42  virtual ~EpcS1apSap ();
43 
44 };
45 
46 
53 class EpcS1apSapMme : public EpcS1apSap
54 {
55 public:
56 
65  virtual void InitialUeMessage (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t stmsi, uint16_t ecgi) = 0;
66 
67 
73  {
74  uint8_t erabId;
75  };
76 
85  virtual void ErabReleaseIndication (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabToBeReleasedIndication> erabToBeReleaseIndication ) = 0;
86 
92  {
93  uint16_t erabId;
95  uint32_t enbTeid;
96  };
97 
106  virtual void InitialContextSetupResponse (uint64_t mmeUeS1Id,
107  uint16_t enbUeS1Id,
108  std::list<ErabSetupItem> erabSetupList) = 0;
109 
110 
116  {
117  uint16_t erabId;
119  uint32_t enbTeid;
120  };
121 
130  virtual void PathSwitchRequest (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t gci, std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList) = 0;
131 };
132 
133 
134 
141 class EpcS1apSapEnb : public EpcS1apSap
142 {
143 public:
144 
145 
148  {
149  uint8_t erabId;
152  uint32_t sgwTeid;
153  };
154 
163  virtual void InitialContextSetupRequest (uint64_t mmeUeS1Id,
164  uint16_t enbUeS1Id,
165  std::list<ErabToBeSetupItem> erabToBeSetupList) = 0;
166 
167 
173  {
174  uint8_t erabId;
176  uint32_t enbTeid;
177  };
178 
187  virtual void PathSwitchRequestAcknowledge (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList) = 0;
188 
189 
190 };
191 
192 
193 
194 
195 
196 
202 template <class C>
204 {
205 public:
211  MemberEpcS1apSapMme (C* owner);
212 
213  // inherited from EpcS1apSapMme
221  virtual void InitialUeMessage (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi);
228  virtual void ErabReleaseIndication (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabToBeReleasedIndication> erabToBeReleaseIndication );
229 
236  virtual void InitialContextSetupResponse (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabSetupItem> erabSetupList);
244  virtual void PathSwitchRequest (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList);
245 
246 private:
248  C* m_owner;
249 };
250 
251 template <class C>
253  : m_owner (owner)
254 {
255 }
256 
257 template <class C>
259 {
260 }
261 
262 template <class C>
263 void MemberEpcS1apSapMme<C>::InitialUeMessage (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi)
264 {
265  m_owner->DoInitialUeMessage (mmeUeS1Id, enbUeS1Id, imsi, ecgi);
266 }
267 
268 template <class C>
269 void MemberEpcS1apSapMme<C>::ErabReleaseIndication (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabToBeReleasedIndication> erabToBeReleaseIndication)
270 {
271  m_owner->DoErabReleaseIndication (mmeUeS1Id, enbUeS1Id, erabToBeReleaseIndication);
272 }
273 
274 template <class C>
275 void MemberEpcS1apSapMme<C>::InitialContextSetupResponse (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabSetupItem> erabSetupList)
276 {
277  m_owner->DoInitialContextSetupResponse (mmeUeS1Id, enbUeS1Id, erabSetupList);
278 }
279 
280 template <class C>
281 void MemberEpcS1apSapMme<C>::PathSwitchRequest (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList)
282 {
283  m_owner->DoPathSwitchRequest (enbUeS1Id, mmeUeS1Id, cgi, erabToBeSwitchedInDownlinkList);
284 }
285 
286 
287 
288 
289 
290 
291 
297 template <class C>
299 {
300 public:
306  MemberEpcS1apSapEnb (C* owner);
307 
308  // inherited from EpcS1apSapEnb
315  virtual void InitialContextSetupRequest (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabToBeSetupItem> erabToBeSetupList);
323  virtual void PathSwitchRequestAcknowledge (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList);
324 
325 private:
327  C* m_owner;
328 };
329 
330 template <class C>
332  : m_owner (owner)
333 {
334 }
335 
336 template <class C>
338 {
339 }
340 
341 template <class C>
342 void MemberEpcS1apSapEnb<C>::InitialContextSetupRequest (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabToBeSetupItem> erabToBeSetupList)
343 {
344  m_owner->DoInitialContextSetupRequest (mmeUeS1Id, enbUeS1Id, erabToBeSetupList);
345 }
346 
347 template <class C>
348 void MemberEpcS1apSapEnb<C>::PathSwitchRequestAcknowledge (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList)
349 {
350  m_owner->DoPathSwitchRequestAcknowledge (enbUeS1Id, mmeUeS1Id, cgi, erabToBeSwitchedInUplinkList);
351 }
352 
353 
354 
355 
356 
357 
358 
359 } //namespace ns3
360 
361 #endif /* EPC_S1AP_SAP_H */
362 
virtual void PathSwitchRequestAcknowledge(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInUplinkItem > erabToBeSwitchedInUplinkList)=0
PATH SWITCH REQUEST ACKNOWLEDGE message, see 3GPP TS 36.413 9.1.5.9.
E-RAB Release Indication Item IEs, 3GPP TS 36.413 version 9.8.0 section 9.1.3.7.
Definition: epc-s1ap-sap.h:72
MME side of the S1-AP Service Access Point (SAP), provides the MME methods to be called when an S1-AP...
Definition: epc-s1ap-sap.h:53
E-RAB Setup Item IEs, see 3GPP TS 36.413 9.1.4.2.
Definition: epc-s1ap-sap.h:91
virtual void InitialContextSetupResponse(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabSetupItem > erabSetupList)
Initial context setup response.
Definition: epc-s1ap-sap.h:275
virtual void ErabReleaseIndication(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabToBeReleasedIndication > erabToBeReleaseIndication)=0
As per 3GPP TS 23.401 Release 9 V9.5.0 Figure 5.4.4.2-1 eNB sends indication of Bearer Release to MME...
C * m_owner
owner class
Definition: epc-s1ap-sap.h:327
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:71
C * m_owner
owner class
Definition: epc-s1ap-sap.h:248
eNB side of the S1-AP Service Access Point (SAP), provides the eNB methods to be called when an S1-AP...
Definition: epc-s1ap-sap.h:141
Ipv4Address enbTransportLayerAddress
transport layer address
Definition: epc-s1ap-sap.h:94
virtual void PathSwitchRequestAcknowledge(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInUplinkItem > erabToBeSwitchedInUplinkList)
Path switch request acknowledge function.
Definition: epc-s1ap-sap.h:348
virtual void PathSwitchRequest(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t gci, std::list< ErabSwitchedInDownlinkItem > erabToBeSwitchedInDownlinkList)=0
PATH SWITCH REQUEST message, see 3GPP TS 36.413 9.1.5.8.
virtual ~EpcS1apSap()
Definition: epc-s1ap-sap.cc:25
virtual void ErabReleaseIndication(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabToBeReleasedIndication > erabToBeReleaseIndication)
ERAB Release Indiation function.
Definition: epc-s1ap-sap.h:269
Ipv4Address transportLayerAddress
transport layer address
Definition: epc-s1ap-sap.h:151
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual void InitialContextSetupResponse(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabSetupItem > erabSetupList)=0
INITIAL CONTEXT SETUP RESPONSE message, see 3GPP TS 36.413 9.1.4.2.
EpsBearer erabLevelQosParameters
Level QOS parameters.
Definition: epc-s1ap-sap.h:150
Base class that defines EPC S1-AP Service Access Point (SAP) interface.
Definition: epc-s1ap-sap.h:39
virtual void InitialContextSetupRequest(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabToBeSetupItem > erabToBeSetupList)=0
Initial context setup request.
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:40
virtual void InitialUeMessage(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi)
Initial UE Message function.
Definition: epc-s1ap-sap.h:263
virtual void InitialContextSetupRequest(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabToBeSetupItem > erabToBeSetupList)
Initial context setup request function.
Definition: epc-s1ap-sap.h:342
virtual void InitialUeMessage(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t stmsi, uint16_t ecgi)=0
Template for the implementation of the EpcS1apSapMme as a member of an owner class of type C to which...
Definition: epc-s1ap-sap.h:203
virtual void PathSwitchRequest(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInDownlinkItem > erabToBeSwitchedInDownlinkList)
Path switch request.
Definition: epc-s1ap-sap.h:281
ErabToBeSetupItem structure.
Definition: epc-s1ap-sap.h:147
Template for the implementation of the EpcS1apSapEnb as a member of an owner class of type C to which...
Definition: epc-s1ap-sap.h:298