A Discrete-Event Network Simulator
API
epc-s11-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_S11_SAP_H
22 #define EPC_S11_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 namespace ns3 {
32 
33 class EpcS11Sap
34 {
35 public:
36 
37  virtual ~EpcS11Sap ();
38 
39  struct GtpcMessage
40  {
41  uint32_t teid;
42  };
43 
48  struct Fteid
49  {
50  uint32_t teid;
52  };
53 
58  struct Uli
59  {
60  uint16_t gci;
61  };
62 
63 
64 };
65 
72 class EpcS11SapMme : public EpcS11Sap
73 {
74 public:
75 
81  {
82 
84  uint8_t epsBearerId;
87  };
88 
89 
94  {
95  std::list<BearerContextCreated> bearerContextsCreated;
96  };
97 
98 
105 
107  {
108  uint8_t epsBearerId;
109  };
110 
114  struct DeleteBearerRequestMessage : public GtpcMessage
115  {
116  std::list<BearerContextRemoved> bearerContextsRemoved;
117  };
118 
123  virtual void DeleteBearerRequest (DeleteBearerRequestMessage msg) = 0;
124 
125 
126 
127 
131  struct ModifyBearerResponseMessage : public GtpcMessage
132  {
133  enum Cause {
138  } cause;
139  };
140 
146  virtual void ModifyBearerResponse (ModifyBearerResponseMessage msg) = 0;
147 
148 };
149 
156 class EpcS11SapSgw : public EpcS11Sap
157 {
158 public:
159 
161  {
163  uint8_t epsBearerId;
166  };
167 
168 
173  {
174  uint64_t imsi;
176  std::list<BearerContextToBeCreated> bearerContextsToBeCreated;
177  };
178 
184  virtual void CreateSessionRequest (CreateSessionRequestMessage msg) = 0;
185 
187  {
188  uint8_t epsBearerId;
189  };
190 
194  struct DeleteBearerCommandMessage : public GtpcMessage
195  {
196  std::list<BearerContextToBeRemoved> bearerContextsToBeRemoved;
197  };
198 
202  virtual void DeleteBearerCommand (DeleteBearerCommandMessage msg) = 0;
203 
204 
206  {
207  uint8_t epsBearerId;
208  };
209 
213  struct DeleteBearerResponseMessage : public GtpcMessage
214  {
215  std::list<BearerContextRemovedSgwPgw> bearerContextsRemoved;
216  };
217 
222  virtual void DeleteBearerResponse (DeleteBearerResponseMessage msg) = 0;
223 
228  {
229  Uli uli;
230  };
231 
237  virtual void ModifyBearerRequest (ModifyBearerRequestMessage msg) = 0;
238 
239 };
240 
241 
242 
243 
244 
245 
246 
252 template <class C>
254 {
255 public:
256  MemberEpcS11SapMme (C* owner);
257 
258  // inherited from EpcS11SapMme
262 
263 private:
266 };
267 
268 template <class C>
270  : m_owner (owner)
271 {
272 }
273 
274 template <class C>
276 {
277 }
278 
279 template <class C>
281 {
282  m_owner->DoCreateSessionResponse (msg);
283 }
284 
285 template <class C>
287 {
288  m_owner->DoDeleteBearerRequest (msg);
289 }
290 
291 template <class C>
293 {
294  m_owner->DoModifyBearerResponse (msg);
295 }
296 
297 
298 
299 
300 
306 template <class C>
308 {
309 public:
310  MemberEpcS11SapSgw (C* owner);
311 
312  // inherited from EpcS11SapSgw
317 
318 private:
321 };
322 
323 template <class C>
325  : m_owner (owner)
326 {
327 }
328 
329 template <class C>
331 {
332 }
333 
334 template <class C>
336 {
337  m_owner->DoCreateSessionRequest (msg);
338 }
339 
340 template <class C>
342 {
343  m_owner->DoModifyBearerRequest (msg);
344 }
345 
346 template <class C>
348 {
349  m_owner->DoDeleteBearerCommand (msg);
350 }
351 
352 template <class C>
354 {
355  m_owner->DoDeleteBearerResponse (msg);
356 }
357 
358 
359 
360 
361 } //namespace ns3
362 
363 #endif /* EPC_S11_SAP_H */
364 
std::list< BearerContextRemoved > bearerContextsRemoved
Definition: epc-s11-sap.h:116
TS 29.274 8.21 User Location Information (ULI)
Definition: epc-s11-sap.h:58
enum ns3::EpcS11SapMme::ModifyBearerResponseMessage::Cause cause
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:73
3GPP TS 29.274 version 8.3.1 Release 8 section 8.28
Definition: epc-s11-sap.h:80
Delete Bearer Command message, see 3GPP TS 29.274 Release 9 V9.3.0 section 7.2.17.1.
Definition: epc-s11-sap.h:194
Ipv4Address address
Definition: epc-s11-sap.h:51
MME side of the S11 Service Access Point (SAP), provides the MME methods to be called when an S11 mes...
Definition: epc-s11-sap.h:72
virtual void DeleteBearerCommand(DeleteBearerCommandMessage msg)
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Command message shall be sent on the S11 inte...
Definition: epc-s11-sap.h:347
Fully-qualified TEID, see 3GPP TS 29.274 section 8.22.
Definition: epc-s11-sap.h:48
Delete Bearer Request message, see 3GPP TS 29.274 Release 9 V9.3.0 section 7.2.9.2.
Definition: epc-s11-sap.h:114
std::list< BearerContextRemovedSgwPgw > bearerContextsRemoved
Definition: epc-s11-sap.h:215
virtual void DeleteBearerRequest(DeleteBearerRequestMessage msg)
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Request message shall be sent on the S11 inte...
Definition: epc-s11-sap.h:286
std::list< BearerContextToBeRemoved > bearerContextsToBeRemoved
Definition: epc-s11-sap.h:196
virtual void DeleteBearerRequest(DeleteBearerRequestMessage msg)=0
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Request message shall be sent on the S11 inte...
Delete Bearer Response message, see 3GPP TS 29.274 Release 9 V9.3.0 section 7.2.10.2.
Definition: epc-s11-sap.h:213
Template for the implementation of the EpcS11SapSgw as a member of an owner class of type C to which ...
Definition: epc-s11-sap.h:307
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:71
virtual void CreateSessionRequest(CreateSessionRequestMessage msg)
send a Create Session Request message
Definition: epc-s11-sap.h:335
virtual void ModifyBearerRequest(ModifyBearerRequestMessage msg)=0
send a Modify Bearer Request message
virtual void ModifyBearerResponse(ModifyBearerResponseMessage msg)=0
send a Modify Bearer Response message
Modify Bearer Request message, see 3GPP TS 29.274 7.2.7.
Definition: epc-s11-sap.h:227
virtual void ModifyBearerResponse(ModifyBearerResponseMessage msg)
send a Modify Bearer Response message
Definition: epc-s11-sap.h:292
virtual void ModifyBearerRequest(ModifyBearerRequestMessage msg)
send a Modify Bearer Request message
Definition: epc-s11-sap.h:341
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::list< BearerContextCreated > bearerContextsCreated
Definition: epc-s11-sap.h:95
virtual void CreateSessionRequest(CreateSessionRequestMessage msg)=0
send a Create Session Request message
virtual ~EpcS11Sap()
Definition: epc-s11-sap.cc:25
virtual void CreateSessionResponse(CreateSessionResponseMessage msg)
send a Create Session Response message
Definition: epc-s11-sap.h:280
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:40
SGW side of the S11 Service Access Point (SAP), provides the SGW methods to be called when an S11 mes...
Definition: epc-s11-sap.h:156
virtual void DeleteBearerResponse(DeleteBearerResponseMessage msg)
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Command message shall be sent on the S11 inte...
Definition: epc-s11-sap.h:353
std::list< BearerContextToBeCreated > bearerContextsToBeCreated
Definition: epc-s11-sap.h:176
virtual void CreateSessionResponse(CreateSessionResponseMessage msg)=0
send a Create Session Response message
Modify Bearer Response message, see 3GPP TS 29.274 7.2.7.
Definition: epc-s11-sap.h:131
Template for the implementation of the EpcS11SapMme as a member of an owner class of type C to which ...
Definition: epc-s11-sap.h:253
virtual void DeleteBearerCommand(DeleteBearerCommandMessage msg)=0
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Command message shall be sent on the S11 inte...
virtual void DeleteBearerResponse(DeleteBearerResponseMessage msg)=0
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Command message shall be sent on the S11 inte...
Create Session Request message, see 3GPP TS 29.274 7.2.1.
Definition: epc-s11-sap.h:172
Create Session Response message, see 3GPP TS 29.274 7.2.2.
Definition: epc-s11-sap.h:93