A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
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
80
struct
BearerContextCreated
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
104
virtual
void
CreateSessionResponse
(
CreateSessionResponseMessage
msg) = 0;
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
139
struct
BearerContextToBeCreated
140
{
141
EpcS11Sap::Fteid
sgwFteid;
142
uint8_t epsBearerId;
143
EpsBearer
bearerLevelQos;
144
Ptr<EpcTft>
tft;
145
};
146
147
151
struct
CreateSessionRequestMessage
:
public
GtpcMessage
152
{
153
uint64_t imsi;
154
Uli
uli;
155
std::list<BearerContextToBeCreated> bearerContextsToBeCreated;
156
};
157
163
virtual
void
CreateSessionRequest
(
CreateSessionRequestMessage
msg) = 0;
164
165
169
struct
ModifyBearerRequestMessage
:
public
GtpcMessage
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>
195
class
MemberEpcS11SapMme
:
public
EpcS11SapMme
196
{
197
public
:
198
MemberEpcS11SapMme
(C* owner);
199
200
// inherited from EpcS11SapMme
201
virtual
void
CreateSessionResponse
(
CreateSessionResponseMessage
msg);
202
virtual
void
ModifyBearerResponse
(
ModifyBearerResponseMessage
msg);
203
204
private
:
205
MemberEpcS11SapMme
();
206
C* m_owner;
207
};
208
209
template
<
class
C>
210
MemberEpcS11SapMme<C>::MemberEpcS11SapMme
(C* owner)
211
: m_owner (owner)
212
{
213
}
214
215
template
<
class
C>
216
MemberEpcS11SapMme<C>::MemberEpcS11SapMme ()
217
{
218
}
219
220
template
<
class
C>
221
void
MemberEpcS11SapMme<C>::CreateSessionResponse
(
CreateSessionResponseMessage
msg)
222
{
223
m_owner->DoCreateSessionResponse (msg);
224
}
225
226
template
<
class
C>
227
void
MemberEpcS11SapMme<C>::ModifyBearerResponse
(
ModifyBearerResponseMessage
msg)
228
{
229
m_owner->DoModifyBearerResponse (msg);
230
}
231
232
233
234
235
241
template
<
class
C>
242
class
MemberEpcS11SapSgw
:
public
EpcS11SapSgw
243
{
244
public
:
245
MemberEpcS11SapSgw
(C* owner);
246
247
// inherited from EpcS11SapSgw
248
virtual
void
CreateSessionRequest
(
CreateSessionRequestMessage
msg);
249
virtual
void
ModifyBearerRequest
(
ModifyBearerRequestMessage
msg);
250
251
private
:
252
MemberEpcS11SapSgw
();
253
C* m_owner;
254
};
255
256
template
<
class
C>
257
MemberEpcS11SapSgw<C>::MemberEpcS11SapSgw
(C* owner)
258
: m_owner (owner)
259
{
260
}
261
262
template
<
class
C>
263
MemberEpcS11SapSgw<C>::MemberEpcS11SapSgw ()
264
{
265
}
266
267
template
<
class
C>
268
void
MemberEpcS11SapSgw<C>::CreateSessionRequest
(
CreateSessionRequestMessage
msg)
269
{
270
m_owner->DoCreateSessionRequest (msg);
271
}
272
273
template
<
class
C>
274
void
MemberEpcS11SapSgw<C>::ModifyBearerRequest
(
ModifyBearerRequestMessage
msg)
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
ns3::EpcS11Sap::Uli
Definition:
epc-s11-sap.h:58
ns3::Ptr
smart pointer class similar to boost::intrusive_ptr
Definition:
ptr.h:59
ns3::EpcS11SapMme::BearerContextCreated
Definition:
epc-s11-sap.h:80
ns3::EpcS11SapMme
Definition:
epc-s11-sap.h:72
ns3::EpcS11Sap::Fteid
Definition:
epc-s11-sap.h:48
ns3::MemberEpcS11SapSgw
Definition:
epc-s11-sap.h:242
ns3::EpcS11SapSgw::BearerContextToBeCreated
Definition:
epc-s11-sap.h:139
ns3::EpsBearer
Definition:
eps-bearer.h:71
ns3::MemberEpcS11SapSgw::CreateSessionRequest
virtual void CreateSessionRequest(CreateSessionRequestMessage msg)
Definition:
epc-s11-sap.h:268
ns3::EpcS11SapSgw::ModifyBearerRequest
virtual void ModifyBearerRequest(ModifyBearerRequestMessage msg)=0
ns3::EpcS11SapMme::ModifyBearerResponse
virtual void ModifyBearerResponse(ModifyBearerResponseMessage msg)=0
ns3::EpcS11SapSgw::ModifyBearerRequestMessage
Definition:
epc-s11-sap.h:169
ns3::MemberEpcS11SapMme::ModifyBearerResponse
virtual void ModifyBearerResponse(ModifyBearerResponseMessage msg)
Definition:
epc-s11-sap.h:227
ns3::MemberEpcS11SapSgw::ModifyBearerRequest
virtual void ModifyBearerRequest(ModifyBearerRequestMessage msg)
Definition:
epc-s11-sap.h:274
ns3::EpcS11Sap::GtpcMessage
Definition:
epc-s11-sap.h:39
ns3::EpcS11SapSgw::CreateSessionRequest
virtual void CreateSessionRequest(CreateSessionRequestMessage msg)=0
ns3::MemberEpcS11SapMme::CreateSessionResponse
virtual void CreateSessionResponse(CreateSessionResponseMessage msg)
Definition:
epc-s11-sap.h:221
ns3::Ipv4Address
Ipv4 addresses are stored in host order in this class.
Definition:
ipv4-address.h:38
ns3::EpcS11SapSgw
Definition:
epc-s11-sap.h:135
ns3::EpcS11SapMme::CreateSessionResponse
virtual void CreateSessionResponse(CreateSessionResponseMessage msg)=0
ns3::EpcS11Sap
Definition:
epc-s11-sap.h:33
ns3::EpcS11SapMme::ModifyBearerResponseMessage
Definition:
epc-s11-sap.h:110
ns3::MemberEpcS11SapMme
Definition:
epc-s11-sap.h:195
ns3::EpcS11SapSgw::CreateSessionRequestMessage
Definition:
epc-s11-sap.h:151
ns3::EpcS11SapMme::CreateSessionResponseMessage
Definition:
epc-s11-sap.h:93
src
lte
model
epc-s11-sap.h
Generated on Sun Mar 16 2014 11:25:05 for ns-3 by
1.8.6