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-mme.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.es>
19
*/
20
21
#ifndef EPC_MME_H
22
#define EPC_MME_H
23
24
#include <ns3/object.h>
25
#include <ns3/epc-s1ap-sap.h>
26
#include <ns3/epc-s11-sap.h>
27
28
#include <map>
29
#include <list>
30
31
namespace
ns3 {
32
33
class
Node;
34
class
NetDevice;
35
40
class
EpcMme
:
public
Object
41
{
42
43
friend
class
MemberEpcS1apSapMme
<EpcMme>;
44
friend
class
MemberEpcS11SapMme
<EpcMme>;
45
46
public
:
47
51
EpcMme
();
52
56
virtual
~EpcMme
();
57
58
// inherited from Object
59
static
TypeId
GetTypeId (
void
);
60
protected
:
61
virtual
void
DoDispose
();
62
63
public
:
64
65
70
EpcS1apSapMme
*
GetS1apSapMme
();
71
77
void
SetS11SapSgw
(
EpcS11SapSgw
* s);
78
83
EpcS11SapMme
*
GetS11SapMme
();
84
90
void
AddEnb
(uint16_t egci,
Ipv4Address
enbS1UAddr,
EpcS1apSapEnb
* enbS1apSap);
91
98
void
AddUe
(uint64_t imsi);
99
109
void
AddBearer
(uint64_t imsi,
Ptr<EpcTft>
tft,
EpsBearer
bearer);
110
111
112
private
:
113
114
// S1-AP SAP MME forwarded methods
115
void
DoInitialUeMessage (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi);
116
void
DoInitialContextSetupResponse (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<EpcS1apSapMme::ErabSetupItem> erabSetupList);
117
void
DoPathSwitchRequest (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<EpcS1apSapMme::ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList);
118
119
120
// S11 SAP MME forwarded methods
121
void
DoCreateSessionResponse (
EpcS11SapMme::CreateSessionResponseMessage
msg);
122
void
DoModifyBearerResponse (
EpcS11SapMme::ModifyBearerResponseMessage
msg);
123
128
struct
BearerInfo
129
{
130
Ptr<EpcTft>
tft;
131
EpsBearer
bearer;
132
uint8_t bearerId;
133
};
134
139
struct
UeInfo
:
public
SimpleRefCount
<UeInfo>
140
{
141
uint64_t mmeUeS1Id;
142
uint16_t enbUeS1Id;
143
uint64_t imsi;
144
uint16_t cellId;
145
std::list<BearerInfo> bearersToBeActivated;
146
uint16_t bearerCounter;
147
};
148
153
std::map<uint64_t, Ptr<UeInfo> >
m_ueInfoMap
;
154
159
struct
EnbInfo
:
public
SimpleRefCount
<EnbInfo>
160
{
161
uint16_t gci;
162
Ipv4Address
s1uAddr;
163
EpcS1apSapEnb
* s1apSapEnb;
164
};
165
170
std::map<uint16_t, Ptr<EnbInfo> >
m_enbInfoMap
;
171
172
173
174
175
EpcS1apSapMme
* m_s1apSapMme;
176
177
EpcS11SapMme
* m_s11SapMme;
178
EpcS11SapSgw
* m_s11SapSgw;
179
180
};
181
182
183
184
185
}
// namespace ns3
186
187
#endif // EPC_MME_H
ns3::EpcMme::AddUe
void AddUe(uint64_t imsi)
Definition:
epc-mme.cc:100
ns3::Ptr
smart pointer class similar to boost::intrusive_ptr
Definition:
ptr.h:59
ns3::EpcS1apSapMme
Definition:
epc-s1ap-sap.h:48
ns3::EpcS11SapMme
Definition:
epc-s11-sap.h:72
ns3::EpcMme::m_enbInfoMap
std::map< uint16_t, Ptr< EnbInfo > > m_enbInfoMap
Definition:
epc-mme.h:170
ns3::EpcMme::GetS1apSapMme
EpcS1apSapMme * GetS1apSapMme()
Definition:
epc-mme.cc:71
ns3::EpcMme
This object implements the MME functionality.
Definition:
epc-mme.h:40
ns3::EpcMme::AddBearer
void AddBearer(uint64_t imsi, Ptr< EpcTft > tft, EpsBearer bearer)
Definition:
epc-mme.cc:111
ns3::EpsBearer
Definition:
eps-bearer.h:71
ns3::EpcMme::EnbInfo
Definition:
epc-mme.h:159
ns3::EpcS1apSapEnb
Definition:
epc-s1ap-sap.h:111
ns3::EpcMme::GetS11SapMme
EpcS11SapMme * GetS11SapMme()
Definition:
epc-mme.cc:83
ns3::EpcMme::UeInfo
Definition:
epc-mme.h:139
ns3::EpcMme::~EpcMme
virtual ~EpcMme()
Definition:
epc-mme.cc:47
ns3::EpcMme::AddEnb
void AddEnb(uint16_t egci, Ipv4Address enbS1UAddr, EpcS1apSapEnb *enbS1apSap)
Definition:
epc-mme.cc:89
ns3::EpcMme::DoDispose
virtual void DoDispose()
Definition:
epc-mme.cc:53
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::EpcMme::m_ueInfoMap
std::map< uint64_t, Ptr< UeInfo > > m_ueInfoMap
Definition:
epc-mme.h:153
ns3::MemberEpcS1apSapMme
Definition:
epc-s1ap-sap.h:166
ns3::Object
a base class which provides memory management and object aggregation
Definition:
object.h:63
ns3::EpcS11SapMme::ModifyBearerResponseMessage
Definition:
epc-s11-sap.h:110
ns3::EpcMme::EpcMme
EpcMme()
Definition:
epc-mme.cc:38
ns3::SimpleRefCount
A template-based reference counting class.
Definition:
simple-ref-count.h:63
ns3::EpcMme::SetS11SapSgw
void SetS11SapSgw(EpcS11SapSgw *s)
Definition:
epc-mme.cc:77
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:44
ns3::MemberEpcS11SapMme
Definition:
epc-s11-sap.h:195
ns3::EpcMme::BearerInfo
Definition:
epc-mme.h:128
ns3::EpcS11SapMme::CreateSessionResponseMessage
Definition:
epc-s11-sap.h:93
src
lte
model
epc-mme.h
Generated on Sun Mar 16 2014 11:25:05 for ns-3 by
1.8.6