97 uint8_t firstByte = i.
ReadU8();
98 uint8_t version = (firstByte >> 5) & 0x07;
214 uint8_t type = i.
ReadU8();
215 NS_ASSERT_MSG(type == 1,
"Wrong IMSI IE type = " << (uint16_t)type);
218 uint8_t instance = i.
ReadU8() & 0x0f;
238 uint8_t type = i.
ReadU8();
239 NS_ASSERT_MSG(type == 2,
"Wrong Cause IE type = " << (uint16_t)type);
242 uint8_t instance = i.
ReadU8() & 0x0f;
262 uint8_t type = i.
ReadU8();
263 NS_ASSERT_MSG(type == 73,
"Wrong EBI IE type = " << (uint16_t)type);
266 uint8_t instance = i.
ReadU8();
268 epsBearerId = i.
ReadU8() & 0x0f;
316 uint8_t type = i.
ReadU8();
317 NS_ASSERT_MSG(type == 80,
"Wrong Bearer QoS IE type = " << (uint16_t)type);
320 uint8_t instance = i.
ReadU8();
321 NS_ASSERT_MSG(instance == 0,
"Wrong Bearer QoS IE instance");
333 std::list<EpcTft::PacketFilter> packetFilters)
const
338 i.
WriteU8(0x20 + (packetFilters.size() & 0x0f));
340 for (
auto& pf : packetFilters)
342 i.
WriteU8((pf.direction << 4) & 0x30);
360 i.
WriteU8(pf.typeOfServiceMask);
367 uint8_t type = i.
ReadU8();
368 NS_ASSERT_MSG(type == 84,
"Wrong Bearer TFT IE type = " << (uint16_t)type);
371 uint8_t numberOfPacketFilters = i.
ReadU8() & 0x0f;
373 for (uint8_t pf = 0; pf < numberOfPacketFilters; ++pf)
394 epcTft->Add(packetFilter);
422 uint8_t type = i.
ReadU8();
423 NS_ASSERT_MSG(type == 86,
"Wrong ULI ECGI IE type = " << (uint16_t)type);
426 uint8_t instance = i.
ReadU8() & 0x0f;
448 uint8_t type = i.
ReadU8();
449 NS_ASSERT_MSG(type == 87,
"Wrong FTEID IE type = " << (uint16_t)type);
452 uint8_t instance = i.
ReadU8() & 0x0f;
454 uint8_t flags = i.
ReadU8();
473 uint8_t type = i.
ReadU8();
474 NS_ASSERT_MSG(type == 93,
"Wrong Bearer Context IE type = " << (uint16_t)type);
476 uint8_t instance = i.
ReadU8() & 0x0f;
477 NS_ASSERT_MSG(instance == 0,
"Wrong Bearer Context IE instance");
487 static TypeId tid =
TypeId(
"ns3::GtpcCreateSessionRequestMessage")
523 return serializedSize;
544 std::list<EpcTft::PacketFilter> packetFilters = bc.tft->GetPacketFilters();
578 bearerContext.
tft = epcTft;
631std::list<GtpcCreateSessionRequestMessage::BearerContextToBeCreated>
639 std::list<GtpcCreateSessionRequestMessage::BearerContextToBeCreated> bearerContexts)
649 static TypeId tid =
TypeId(
"ns3::GtpcCreateSessionResponseMessage")
684 return serializedSize;
704 std::list<EpcTft::PacketFilter> packetFilters = bc.tft->GetPacketFilters();
737 bearerContext.
tft = epcTft;
778std::list<GtpcCreateSessionResponseMessage::BearerContextCreated>
786 std::list<GtpcCreateSessionResponseMessage::BearerContextCreated> bearerContexts)
796 static TypeId tid =
TypeId(
"ns3::GtpcModifyBearerRequestMessage")
828 return serializedSize;
910std::list<GtpcModifyBearerRequestMessage::BearerContextToBeModified>
918 std::list<GtpcModifyBearerRequestMessage::BearerContextToBeModified> bearerContexts)
928 static TypeId tid =
TypeId(
"ns3::GtpcModifyBearerResponseMessage")
987 os <<
" cause " << (uint16_t)
m_cause;
1007 static TypeId tid =
TypeId(
"ns3::GtpcDeleteBearerCommandMessage")
1009 .SetGroupName(
"Lte")
1035 return serializedSize;
1080 os <<
" bearerContexts [";
1083 os << (uint16_t)bearerContext.m_epsBearerId <<
" ";
1088std::list<GtpcDeleteBearerCommandMessage::BearerContext>
1096 std::list<GtpcDeleteBearerCommandMessage::BearerContext> bearerContexts)
1106 static TypeId tid =
TypeId(
"ns3::GtpcDeleteBearerRequestMessage")
1108 .SetGroupName(
"Lte")
1133 return serializedSize;
1162 uint8_t epsBearerId;
1173 os <<
" epsBearerIds [";
1176 os << (uint16_t)epsBearerId <<
" ";
1198 static TypeId tid =
TypeId(
"ns3::GtpcDeleteBearerResponseMessage")
1200 .SetGroupName(
"Lte")
1225 return serializedSize;
1258 uint8_t epsBearerId;
1269 os <<
" cause " << (uint16_t)
m_cause <<
" epsBearerIds [";
1272 os << (uint16_t)epsBearerId <<
" ";
iterator in a Buffer instance
uint32_t GetRemainingSize() const
void WriteHtonU64(uint64_t data)
void WriteU8(uint8_t data)
void WriteU16(uint16_t data)
void WriteHtonU16(uint16_t data)
void WriteHtonU32(uint32_t data)
void Next()
go forward by one byte
Direction
Indicates the direction of the traffic that is to be classified.
This class contains the specification of EPS Bearers.
Qci qci
Qos class indicator.
GbrQosInformation gbrQosInfo
GBR QOS information.
GTP-C Create Session Request Message.
std::list< BearerContextToBeCreated > m_bearerContextsToBeCreated
Bearer Context list.
static TypeId GetTypeId()
Get the type ID.
uint64_t GetImsi() const
Get the IMSI.
uint32_t Deserialize(Buffer::Iterator start) override
void SetUliEcgi(uint32_t uliEcgi)
Set the UliEcgi.
GtpcHeader::Fteid_t GetSenderCpFteid() const
Get the Sender CpFteid.
uint32_t GetUliEcgi() const
Get the UliEcgi.
uint32_t GetMessageSize() const override
Get the message size.
uint32_t GetSerializedSize() const override
uint32_t m_uliEcgi
UliEcgi.
GtpcHeader::Fteid_t m_senderCpFteid
Sender CpFteid.
void SetBearerContextsToBeCreated(std::list< BearerContextToBeCreated > bearerContexts)
Set the Bearer Contexts.
std::list< BearerContextToBeCreated > GetBearerContextsToBeCreated() const
Get the Bearer Contexts.
~GtpcCreateSessionRequestMessage() override
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
void Serialize(Buffer::Iterator start) const override
void SetImsi(uint64_t imsi)
Set the IMSI.
void Print(std::ostream &os) const override
void SetSenderCpFteid(GtpcHeader::Fteid_t fteid)
Set the Sender CpFteid.
GtpcCreateSessionRequestMessage()
GTP-C Create Session Response Message.
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
void SetCause(Cause_t cause)
Set the Cause.
static TypeId GetTypeId()
Get the type ID.
uint32_t Deserialize(Buffer::Iterator start) override
void SetBearerContextsCreated(std::list< BearerContextCreated > bearerContexts)
Set the Bearer Contexts.
Cause_t GetCause() const
Get the Cause.
void Print(std::ostream &os) const override
void SetSenderCpFteid(GtpcHeader::Fteid_t fteid)
Set the Sender CpFteid.
void Serialize(Buffer::Iterator start) const override
uint32_t GetSerializedSize() const override
std::list< BearerContextCreated > m_bearerContextsCreated
Container of Bearer Contexts.
std::list< BearerContextCreated > GetBearerContextsCreated() const
Get the Container of Bearer Contexts.
GtpcCreateSessionResponseMessage()
uint32_t GetMessageSize() const override
Get the message size.
GtpcHeader::Fteid_t m_senderCpFteid
Sender CpFteid.
~GtpcCreateSessionResponseMessage() override
GtpcHeader::Fteid_t GetSenderCpFteid() const
Get the Sender CpFteid.
GTP-C Delete Bearer Command Message.
void Print(std::ostream &os) const override
std::list< BearerContext > GetBearerContexts() const
Get the Bearer contexts.
GtpcDeleteBearerCommandMessage()
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
std::list< BearerContext > m_bearerContexts
Container of Bearer Contexts.
void SetBearerContexts(std::list< BearerContext > bearerContexts)
Set the Bearer contexts.
uint32_t GetMessageSize() const override
Get the message size.
static TypeId GetTypeId()
Get the type ID.
uint32_t GetSerializedSize() const override
uint32_t Deserialize(Buffer::Iterator start) override
~GtpcDeleteBearerCommandMessage() override
void Serialize(Buffer::Iterator start) const override
GTP-C Delete Bearer Request Message.
uint32_t GetSerializedSize() const override
uint32_t GetMessageSize() const override
Get the message size.
static TypeId GetTypeId()
Get the type ID.
void Print(std::ostream &os) const override
GtpcDeleteBearerRequestMessage()
~GtpcDeleteBearerRequestMessage() override
std::list< uint8_t > m_epsBearerIds
Container of Bearers IDs.
uint32_t Deserialize(Buffer::Iterator start) override
void Serialize(Buffer::Iterator start) const override
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
std::list< uint8_t > GetEpsBearerIds() const
Get the Bearers IDs.
void SetEpsBearerIds(std::list< uint8_t > epsBearerIds)
Set the Bearers IDs.
GTP-C Delete Bearer Response Message.
void Serialize(Buffer::Iterator start) const override
uint32_t GetSerializedSize() const override
GtpcDeleteBearerResponseMessage()
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
void SetCause(Cause_t cause)
Set the Cause.
Cause_t GetCause() const
Get the Cause.
std::list< uint8_t > m_epsBearerIds
Container of Bearers IDs.
uint32_t GetMessageSize() const override
Get the message size.
std::list< uint8_t > GetEpsBearerIds() const
Get the Bearers IDs.
void Print(std::ostream &os) const override
~GtpcDeleteBearerResponseMessage() override
uint32_t Deserialize(Buffer::Iterator start) override
static TypeId GetTypeId()
Get the type ID.
void SetEpsBearerIds(std::list< uint8_t > epsBearerIds)
Set the Bearers IDs.
uint32_t DeserializeFteid(Buffer::Iterator &i, GtpcHeader::Fteid_t &fteid) const
Deserialize the Fteid.
void SerializeEbi(Buffer::Iterator &i, uint8_t epsBearerId) const
Serialize the eps Bearer Id.
void SerializeBearerContextHeader(Buffer::Iterator &i, uint16_t length) const
Serialize the Bearer Context Header.
uint32_t DeserializeImsi(Buffer::Iterator &i, uint64_t &imsi) const
Deserialize the IMSI.
uint32_t DeserializeEbi(Buffer::Iterator &i, uint8_t &epsBearerId) const
Deserialize the eps Bearer Id.
const uint32_t serializedSizeEbi
EBI serialized size.
void WriteHtonU40(Buffer::Iterator &i, uint64_t data) const
void SerializeImsi(Buffer::Iterator &i, uint64_t imsi) const
Serialize the IMSI.
uint32_t DeserializeUliEcgi(Buffer::Iterator &i, uint32_t &uliEcgi) const
Deserialize the UliEcgi.
const uint32_t serializedSizeBearerContextHeader
Fteid serialized size.
uint32_t DeserializeCause(Buffer::Iterator &i, Cause_t &cause) const
Deserialize the Cause.
uint32_t GetSerializedSizeBearerTft(std::list< EpcTft::PacketFilter > packetFilters) const
void SerializeFteid(Buffer::Iterator &i, GtpcHeader::Fteid_t fteid) const
Serialize the Fteid_t.
uint32_t DeserializeBearerTft(Buffer::Iterator &i, Ptr< EpcTft > epcTft) const
Deserialize the Bearer TFT.
const uint32_t serializedSizePacketFilter
Packet filter serialized size.
uint64_t ReadNtohU40(Buffer::Iterator &i)
void SerializeUliEcgi(Buffer::Iterator &i, uint32_t uliEcgi) const
Serialize the UliEcgi.
const uint32_t serializedSizeImsi
IMSI serialized size.
const uint32_t serializedSizeBearerQos
Bearer QoS serialized size.
const uint32_t serializedSizeCause
Cause serialized size.
uint32_t DeserializeBearerContextHeader(Buffer::Iterator &i, uint16_t &length) const
Deserialize the Bearer Context Header.
void SerializeCause(Buffer::Iterator &i, Cause_t cause) const
Serialize the Cause.
uint32_t DeserializeBearerQos(Buffer::Iterator &i, EpsBearer &bearerQos)
Deserialize the eps Bearer QoS.
void SerializeBearerQos(Buffer::Iterator &i, EpsBearer bearerQos) const
Serialize the eps Bearer QoS.
const uint32_t serializedSizeUliEcgi
UliEcgi serialized size.
const uint32_t serializedSizeFteid
Fteid serialized size.
void SerializeBearerTft(Buffer::Iterator &i, std::list< EpcTft::PacketFilter > packetFilters) const
Serialize the Bearer TFT.
GTP-C Modify Bearer Request Message.
uint64_t GetImsi() const
Get the IMSI.
void Print(std::ostream &os) const override
void SetBearerContextsToBeModified(std::list< BearerContextToBeModified > bearerContexts)
Set the Bearer Contexts.
uint32_t GetUliEcgi() const
Get the UliEcgi.
void SetUliEcgi(uint32_t uliEcgi)
Set the UliEcgi.
GtpcModifyBearerRequestMessage()
uint32_t Deserialize(Buffer::Iterator start) override
std::list< BearerContextToBeModified > GetBearerContextsToBeModified() const
Get the Bearer Contexts.
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
uint32_t GetMessageSize() const override
Get the message size.
static TypeId GetTypeId()
Get the type ID.
void SetImsi(uint64_t imsi)
Set the IMSI.
std::list< BearerContextToBeModified > m_bearerContextsToBeModified
Bearer Context list.
uint32_t m_uliEcgi
UliEcgi.
uint32_t GetSerializedSize() const override
~GtpcModifyBearerRequestMessage() override
void Serialize(Buffer::Iterator start) const override
GTP-C Modify Bearer Response Message.
uint32_t Deserialize(Buffer::Iterator start) override
~GtpcModifyBearerResponseMessage() override
uint32_t GetSerializedSize() const override
uint32_t GetMessageSize() const override
Get the message size.
void SetCause(Cause_t cause)
Set the Cause.
GtpcModifyBearerResponseMessage()
static TypeId GetTypeId()
Get the type ID.
void Print(std::ostream &os) const override
Cause_t GetCause() const
Get the Cause.
void Serialize(Buffer::Iterator start) const override
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Ipv4 addresses are stored in host order in this class.
void Set(uint32_t address)
input address is in host order.
uint32_t Get() const
Get the host-order 32-bit IP address.
a class to represent an Ipv4 address mask
Smart pointer class similar to boost::intrusive_ptr.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static const uint8_t VERSION
GTPv2-C protocol version number.
Implement the data structure representing a TrafficFlowTemplate Packet Filter.
Ipv4Address localAddress
IPv4 address of the UE.
uint16_t localPortEnd
end of the port number range of the UE
Ipv4Mask localMask
IPv4 address mask of the UE.
uint16_t remotePortEnd
end of the port number range of the remote host
uint8_t precedence
Used to specify the precedence for the packet filter among all packet filters in the TFT; higher valu...
Direction direction
Whether the filter needs to be applied to uplink / downlink only, or in both cases.
Ipv4Mask remoteMask
IPv4 address mask of the remote host.
uint16_t remotePortStart
start of the port number range of the remote host
uint8_t typeOfService
type of service field
Ipv4Address remoteAddress
IPv4 address of the remote host.
uint8_t typeOfServiceMask
type of service field mask
uint16_t localPortStart
start of the port number range of the UE
Bearer Context structure.
EpsBearer bearerLevelQos
bearer QOS level
uint8_t epsBearerId
EPS bearer ID.
GtpcHeader::Fteid_t sgwS5uFteid
FTEID.
Ptr< EpcTft > tft
traffic flow template
Bearer Context structure.
GtpcHeader::Fteid_t fteid
FTEID.
uint8_t epsBearerId
EPS bearer ID.
Ptr< EpcTft > tft
Bearer traffic flow template.
EpsBearer bearerLevelQos
Bearer QOS level.
uint8_t m_epsBearerId
EPS bearer ID.
Bearer Context structure.
uint8_t epsBearerId
EPS bearer ID.
GtpcHeader::Fteid_t fteid
FTEID.