21 #include "ns3/epc-gtpc-header.h" 96 uint8_t firstByte = i.
ReadU8 ();
97 uint8_t
version = (firstByte >> 5) & 0x07;
212 uint8_t type = i.
ReadU8 ();
213 NS_ASSERT_MSG (type == 1,
"Wrong IMSI IE type = " << (uint16_t) type);
216 uint8_t instance = i.
ReadU8 () & 0x0f;
236 uint8_t type = i.
ReadU8 ();
237 NS_ASSERT_MSG (type == 2,
"Wrong Cause IE type = " << (uint16_t) type);
240 uint8_t instance = i.
ReadU8 () & 0x0f;
254 i.
WriteU8 (epsBearerId & 0x0f);
260 uint8_t type = i.
ReadU8 ();
261 NS_ASSERT_MSG (type == 73,
"Wrong EBI IE type = " << (uint16_t) type);
264 uint8_t instance = i.
ReadU8 ();
266 epsBearerId = i.
ReadU8 () & 0x0f;
314 uint8_t type = i.
ReadU8 ();
315 NS_ASSERT_MSG (type == 80,
"Wrong Bearer QoS IE type = " << (uint16_t) type);
318 uint8_t instance = i.
ReadU8 ();
319 NS_ASSERT_MSG (instance == 0,
"Wrong Bearer QoS IE instance");
335 i.
WriteU8 (0x20 + (packetFilters.size () & 0x0f));
337 for (
auto &pf : packetFilters)
339 i.
WriteU8 ((pf.direction << 4) & 0x30);
357 i.
WriteU8 (pf.typeOfServiceMask);
364 uint8_t type = i.
ReadU8 ();
365 NS_ASSERT_MSG (type == 84,
"Wrong Bearer TFT IE type = " << (uint16_t) type);
368 uint8_t numberOfPacketFilters = i.
ReadU8 () & 0x0f;
370 for (uint8_t pf = 0; pf < numberOfPacketFilters; ++pf)
391 epcTft->Add (packetFilter);
419 uint8_t type = i.
ReadU8 ();
420 NS_ASSERT_MSG (type == 86,
"Wrong ULI ECGI IE type = " << (uint16_t) type);
423 uint8_t instance = i.
ReadU8 () & 0x0f;
445 uint8_t type = i.
ReadU8 ();
446 NS_ASSERT_MSG (type == 87,
"Wrong FTEID IE type = " << (uint16_t) type);
449 uint8_t instance = i.
ReadU8 () & 0x0f;
451 uint8_t flags = i.
ReadU8 ();
470 uint8_t type = i.
ReadU8 ();
471 NS_ASSERT_MSG (type == 93,
"Wrong Bearer Context IE type = " << (uint16_t) type);
473 uint8_t instance = i.
ReadU8 () & 0x0f;
474 NS_ASSERT_MSG (instance == 0,
"Wrong Bearer Context IE instance");
484 static TypeId tid =
TypeId (
"ns3::GtpcCreateSessionRequestMessage")
486 .SetGroupName (
"Lte")
520 return serializedSize;
541 std::list<EpcTft::PacketFilter> packetFilters = bc.tft->GetPacketFilters ();
573 bearerContext.
tft = epcTft;
626 std::list<GtpcCreateSessionRequestMessage::BearerContextToBeCreated>
643 static TypeId tid =
TypeId (
"ns3::GtpcCreateSessionResponseMessage")
645 .SetGroupName (
"Lte")
678 return serializedSize;
698 std::list<EpcTft::PacketFilter> packetFilters = bc.tft->GetPacketFilters ();
729 bearerContext.
tft = epcTft;
770 std::list<GtpcCreateSessionResponseMessage::BearerContextCreated>
787 static TypeId tid =
TypeId (
"ns3::GtpcModifyBearerRequestMessage")
789 .SetGroupName (
"Lte")
819 return serializedSize;
901 std::list<GtpcModifyBearerRequestMessage::BearerContextToBeModified>
918 static TypeId tid =
TypeId (
"ns3::GtpcModifyBearerResponseMessage")
920 .SetGroupName (
"Lte")
977 os <<
" cause " << (uint16_t)
m_cause;
997 static TypeId tid =
TypeId (
"ns3::GtpcDeleteBearerCommandMessage")
999 .SetGroupName (
"Lte")
1025 return serializedSize;
1070 os <<
" bearerContexts [";
1073 os << (uint16_t)bearerContext.m_epsBearerId <<
" ";
1078 std::list<GtpcDeleteBearerCommandMessage::BearerContext>
1095 static TypeId tid =
TypeId (
"ns3::GtpcDeleteBearerRequestMessage")
1097 .SetGroupName (
"Lte")
1122 return serializedSize;
1151 uint8_t epsBearerId;
1162 os <<
" epsBearerIds [";
1165 os << (uint16_t)epsBearerId <<
" ";
1187 static TypeId tid =
TypeId (
"ns3::GtpcDeleteBearerResponseMessage")
1189 .SetGroupName (
"Lte")
1214 return serializedSize;
1247 uint8_t epsBearerId;
1258 os <<
" cause " << (uint16_t)
m_cause <<
" epsBearerIds [";
1261 os << (uint16_t)epsBearerId <<
" ";
std::list< BearerContextToBeCreated > m_bearerContextsToBeCreated
static TypeId GetTypeId(void)
Get the type ID.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
virtual uint32_t GetMessageSize(void) const
void WriteHtonU64(uint64_t data)
Direction
Indicates the direction of the traffic that is to be classified.
Smart pointer class similar to boost::intrusive_ptr.
std::list< BearerContextToBeModified > GetBearerContextsToBeModified() const
void SerializeEbi(Buffer::Iterator &i, uint8_t epsBearerId) const
GtpcModifyBearerRequestMessage()
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Ptr< EpcTft > tft
traffic flow template
GtpcModifyBearerResponseMessage()
NS_ASSERT_MSG(false, "Ipv4AddressGenerator::MaskToIndex(): Impossible")
static TypeId GetTypeId(void)
Get the type ID.
Direction direction
whether the filter needs to be applied to uplink / downlink only, or in both cases ...
static const uint8_t VERSION
GTPv2-C protocol version number.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
a class to represent an Ipv4 address mask
virtual uint32_t GetMessageSize(void) const
void SetBearerContextsToBeCreated(std::list< BearerContextToBeCreated > bearerContexts)
std::list< BearerContextToBeCreated > GetBearerContextsToBeCreated() const
uint32_t GetRemainingSize(void) const
virtual ~GtpcCreateSessionResponseMessage()
uint32_t DeserializeFteid(Buffer::Iterator &i, GtpcHeader::Fteid_t &fteid)
virtual void Print(std::ostream &os) const
virtual uint32_t GetSerializedSize(void) const
uint64_t ReadNtohU64(void)
virtual uint32_t GetSerializedSize(void) const
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
static TypeId GetTypeId(void)
Get the type ID.
uint16_t localPortEnd
end of the port number range of the UE
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
GtpcHeader::Fteid_t m_senderCpFteid
GtpcHeader::Fteid_t sgwS5uFteid
FTEID.
virtual void Print(std::ostream &os) const
virtual uint32_t GetMessageSize(void) const
void SerializeCause(Buffer::Iterator &i, Cause_t cause) const
virtual uint32_t Deserialize(Buffer::Iterator start)
virtual uint32_t GetMessageSize(void) const
void SetUliEcgi(uint32_t uliEcgi)
uint32_t DeserializeUliEcgi(Buffer::Iterator &i, uint32_t &uliEcgi)
std::list< BearerContext > m_bearerContexts
uint32_t ReadNtohU32(void)
virtual ~GtpcModifyBearerRequestMessage()
virtual void Print(std::ostream &os) const
virtual void Print(std::ostream &os) const
uint8_t epsBearerId
EPS bearer ID.
virtual uint32_t GetSerializedSize(void) const
uint32_t DeserializeEbi(Buffer::Iterator &i, uint8_t &epsBearerId)
iterator in a Buffer instance
std::list< BearerContext > GetBearerContexts() const
virtual ~GtpcCreateSessionRequestMessage()
GtpcDeleteBearerResponseMessage()
void SerializeBearerQos(Buffer::Iterator &i, EpsBearer bearerQos) const
virtual uint32_t GetMessageSize(void) const
void SetCause(Cause_t cause)
void SetSenderCpFteid(GtpcHeader::Fteid_t fteid)
std::list< uint8_t > m_epsBearerIds
GtpcDeleteBearerCommandMessage()
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
void SetCause(Cause_t cause)
virtual uint32_t Deserialize(Buffer::Iterator start)
const uint32_t serializedSizeFteid
virtual void Serialize(Buffer::Iterator start) const
uint32_t DeserializeCause(Buffer::Iterator &i, Cause_t &cause)
void SetImsi(uint8_t imsi)
uint64_t ReadNtohU40(Buffer::Iterator &i)
virtual void Serialize(Buffer::Iterator start) const
static TypeId GetTypeId(void)
Get the type ID.
void SetEpsBearerIds(std::list< uint8_t > epsBearerIds)
uint32_t DeserializeBearerQos(Buffer::Iterator &i, EpsBearer &bearerQos)
void WriteU16(uint16_t data)
Ipv4Mask localMask
IPv4 address mask of the UE.
uint32_t DeserializeBearerContextHeader(Buffer::Iterator &i, uint16_t &length)
void WriteHtonU16(uint16_t data)
std::list< BearerContextCreated > GetBearerContextsCreated() const
const uint32_t serializedSizeEbi
void Next(void)
go forward by one byte
virtual void Print(std::ostream &os) const
const uint32_t serializedSizePacketFilter
void SerializeBearerContextHeader(Buffer::Iterator &i, uint16_t length) const
virtual ~GtpcDeleteBearerResponseMessage()
virtual void Serialize(Buffer::Iterator start) const
const uint32_t serializedSizeUliEcgi
virtual uint32_t Deserialize(Buffer::Iterator start)
uint32_t GetUliEcgi() const
virtual void Print(std::ostream &os) const
Ipv4Address remoteAddress
IPv4 address of the remote host.
void WriteHtonU40(Buffer::Iterator &i, uint64_t data) const
virtual uint32_t GetSerializedSize(void) const
uint8_t epsBearerId
EPS bearer ID.
uint16_t remotePortEnd
end of the port number range of the remote host
static TypeId GetTypeId(void)
Get the type ID.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
GtpcDeleteBearerRequestMessage()
void SetBearerContexts(std::list< BearerContext > bearerContexts)
uint32_t GetUliEcgi() const
void SetCause(Cause_t cause)
void SerializeImsi(Buffer::Iterator &i, uint64_t imsi) const
virtual uint32_t Deserialize(Buffer::Iterator start)
GtpcHeader::Fteid_t GetSenderCpFteid() const
virtual ~GtpcDeleteBearerRequestMessage()
uint8_t typeOfService
type of service field
Ipv4Address localAddress
IPv4 address of the UE.
static TypeId GetTypeId(void)
Get the type ID.
const uint32_t serializedSizeBearerContextHeader
virtual uint32_t Deserialize(Buffer::Iterator start)
This class contains the specification of EPS Bearers.
virtual ~GtpcModifyBearerResponseMessage()
virtual uint32_t GetMessageSize(void) const
void WriteHtonU32(uint32_t data)
void SerializeUliEcgi(Buffer::Iterator &i, uint32_t uliEcgi) const
GtpcHeader::Fteid_t fteid
FTEID.
GtpcCreateSessionResponseMessage()
enum ns3::EpsBearer::Qci qci
Qos class indicator.
Ptr< EpcTft > tft
Bearer traffic flow template.
virtual void Serialize(Buffer::Iterator start) const
virtual void Serialize(Buffer::Iterator start) const
void SetImsi(uint64_t imsi)
virtual uint32_t GetSerializedSize(void) const
void Set(uint32_t address)
input address is in host order.
Ipv4 addresses are stored in host order in this class.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
EpsBearer bearerLevelQos
bearer QOS level
void SetUliEcgi(uint32_t uliEcgi)
GtpcHeader::Fteid_t fteid
FTEID.
virtual uint32_t Deserialize(Buffer::Iterator start)
virtual uint32_t GetSerializedSize(void) const
const uint32_t serializedSizeCause
uint8_t precedence
used to specify the precedence for the packet filter among all packet filters in the TFT; higher valu...
void WriteU8(uint8_t data)
std::list< BearerContextToBeModified > m_bearerContextsToBeModified
GbrQosInformation gbrQosInfo
GBR QOS information.
GtpcCreateSessionRequestMessage()
uint8_t epsBearerId
EPS bearer ID.
uint32_t DeserializeImsi(Buffer::Iterator &i, uint64_t &imsi)
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
static TypeId GetTypeId(void)
Get the type ID.
void SetSenderCpFteid(GtpcHeader::Fteid_t fteid)
virtual uint32_t GetSerializedSize(void) const
const uint32_t serializedSizeImsi
Ipv4Mask remoteMask
IPv4 address mask of the remote host.
uint32_t DeserializeBearerTft(Buffer::Iterator &i, Ptr< EpcTft > epcTft)
virtual uint32_t GetMessageSize(void) const
virtual void Serialize(Buffer::Iterator start) const
std::list< BearerContextCreated > m_bearerContextsCreated
virtual void Print(std::ostream &os) const
virtual void Serialize(Buffer::Iterator start) const
void SerializeBearerTft(Buffer::Iterator &i, std::list< EpcTft::PacketFilter > packetFilters) const
virtual ~GtpcDeleteBearerCommandMessage()
GtpcHeader::Fteid_t m_senderCpFteid
uint32_t Get(void) const
Get the host-order 32-bit IP address.
virtual uint32_t Deserialize(Buffer::Iterator start)
void SetBearerContextsCreated(std::list< BearerContextCreated > bearerContexts)
uint16_t ReadNtohU16(void)
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
EpsBearer bearerLevelQos
Bearer QOS level.
uint8_t typeOfServiceMask
type of service field mask
std::list< uint8_t > GetEpsBearerIds() const
std::list< uint8_t > GetEpsBearerIds() const
a unique identifier for an interface.
void SerializeFteid(Buffer::Iterator &i, GtpcHeader::Fteid_t fteid) const
TypeId SetParent(TypeId tid)
Set the parent TypeId.
GtpcHeader::Fteid_t GetSenderCpFteid() const
const uint32_t serializedSizeBearerQos
void SetBearerContextsToBeModified(std::list< BearerContextToBeModified > bearerContexts)
void SetEpsBearerIds(std::list< uint8_t > epsBearerIds)
uint16_t remotePortStart
start of the port number range of the remote host
uint8_t m_epsBearerId
EPS bearer ID.
uint32_t GetSerializedSizeBearerTft(std::list< EpcTft::PacketFilter > packetFilters) const
std::list< uint8_t > m_epsBearerIds
Implement the data structure representing a TrafficFlowTemplate Packet Filter.
uint16_t localPortStart
start of the port number range of the UE