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
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
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
;
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
src
lte
model
epc-s11-sap.h
Generated on Tue May 14 2013 11:08:24 for ns-3 by
1.8.1.2