A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
epc-s11-sap.h
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;
51  Ipv4Address address;
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 
83  EpcS11Sap::Fteid sgwFteid;
84  uint8_t epsBearerId;
85  EpsBearer bearerLevelQos;
86  Ptr<EpcTft> tft;
87  };
88 
89 
93  struct CreateSessionResponseMessage : public GtpcMessage
94  {
95  std::list<BearerContextCreated> bearerContextsCreated;
96  };
97 
98 
105 
106 
110  struct ModifyBearerResponseMessage : public GtpcMessage
111  {
112  enum Cause {
113  REQUEST_ACCEPTED = 0,
114  REQUEST_ACCEPTED_PARTIALLY,
115  REQUEST_REJECTED,
116  CONTEXT_NOT_FOUND
117  } cause;
118  };
119 
125  virtual void ModifyBearerResponse (ModifyBearerResponseMessage msg) = 0;
126 
127 };
128 
135 class EpcS11SapSgw : public EpcS11Sap
136 {
137 public:
138 
140  {
141  EpcS11Sap::Fteid sgwFteid;
142  uint8_t epsBearerId;
143  EpsBearer bearerLevelQos;
144  Ptr<EpcTft> tft;
145  };
146 
147 
152  {
153  uint64_t imsi;
154  Uli uli;
155  std::list<BearerContextToBeCreated> bearerContextsToBeCreated;
156  };
157 
163  virtual void CreateSessionRequest (CreateSessionRequestMessage msg) = 0;
164 
165 
170  {
171  Uli uli;
172  };
173 
179  virtual void ModifyBearerRequest (ModifyBearerRequestMessage msg) = 0;
180 
181 };
182 
183 
184 
185 
186 
187 
188 
194 template <class C>
196 {
197 public:
198  MemberEpcS11SapMme (C* owner);
199 
200  // inherited from EpcS11SapMme
203 
204 private:
206  C* m_owner;
207 };
208 
209 template <class C>
211  : m_owner (owner)
212 {
213 }
214 
215 template <class C>
216 MemberEpcS11SapMme<C>::MemberEpcS11SapMme ()
217 {
218 }
219 
220 template <class C>
222 {
223  m_owner->DoCreateSessionResponse (msg);
224 }
225 
226 template <class C>
228 {
229  m_owner->DoModifyBearerResponse (msg);
230 }
231 
232 
233 
234 
235 
241 template <class C>
243 {
244 public:
245  MemberEpcS11SapSgw (C* owner);
246 
247  // inherited from EpcS11SapSgw
250 
251 private:
253  C* m_owner;
254 };
255 
256 template <class C>
258  : m_owner (owner)
259 {
260 }
261 
262 template <class C>
263 MemberEpcS11SapSgw<C>::MemberEpcS11SapSgw ()
264 {
265 }
266 
267 template <class C>
269 {
270  m_owner->DoCreateSessionRequest (msg);
271 }
272 
273 template <class C>
275 {
276  m_owner->DoModifyBearerRequest (msg);
277 }
278 
279 
280 
281 
282 
283 
284 
285 
286 
287 } //namespace ns3
288 
289 #endif /* EPC_S11_SAP_H */
290 
smart pointer class similar to boost::intrusive_ptr
Definition: ptr.h:59
virtual void CreateSessionRequest(CreateSessionRequestMessage msg)
Definition: epc-s11-sap.h:268
virtual void ModifyBearerRequest(ModifyBearerRequestMessage msg)=0
virtual void ModifyBearerResponse(ModifyBearerResponseMessage msg)=0
virtual void ModifyBearerResponse(ModifyBearerResponseMessage msg)
Definition: epc-s11-sap.h:227
virtual void ModifyBearerRequest(ModifyBearerRequestMessage msg)
Definition: epc-s11-sap.h:274
virtual void CreateSessionRequest(CreateSessionRequestMessage msg)=0
virtual void CreateSessionResponse(CreateSessionResponseMessage msg)
Definition: epc-s11-sap.h:221
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:38
virtual void CreateSessionResponse(CreateSessionResponseMessage msg)=0