26 #include "ns3/uinteger.h"
27 #include "ns3/tcp-header.h"
28 #include "ns3/udp-header.h"
43 .SetGroupName (
"Internet")
62 return (DynamicCast<Ipv6QueueDiscItem> (item) != 0);
72 static TypeId tid =
TypeId (
"ns3::FqCoDelIpv6PacketFilter")
74 .SetGroupName (
"Internet")
76 .AddAttribute (
"Perturbation",
77 "The salt used as an additional input to the hash function of this filter",
80 MakeUintegerChecker<uint32_t> ())
110 uint16_t srcPort = 0;
111 uint16_t destPort = 0;
133 buf[33] = (srcPort >> 8) & 0xff;
134 buf[34] = srcPort & 0xff;
135 buf[35] = (destPort >> 8) & 0xff;
136 buf[36] = destPort & 0xff;
143 uint32_t hash =
Hash32 ((
char*) buf, 41);
145 NS_LOG_DEBUG (
"Found Ipv6 packet; hash of the five tuple " << hash);
FqCoDelIpv6PacketFilter is the filter to be added to the FQCoDel queue disc to simulate the behavior ...
Smart pointer class similar to boost::intrusive_ptr.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
static TypeId GetTypeId(void)
Get the type ID.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
static TypeId GetTypeId(void)
Get the type ID.
Hold an unsigned integer type.
uint32_t Hash32(const char *buffer, const size_t size)
Compute 32-bit hash of a byte buffer, using the default hash function.
uint32_t PeekHeader(Header &header) const
Deserialize but does not remove the header from the internal buffer.
virtual int32_t DoClassify(Ptr< QueueDiscItem > item) const
Classify a packet.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint32_t m_perturbation
hash perturbation value
Describes an IPv6 address.
virtual ~Ipv6PacketFilter()
Ipv6PacketFilter is the abstract base class for filters defined for IPv6 packets. ...
virtual ~FqCoDelIpv6PacketFilter()
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
PacketFilter is the abstract base class for filters used by queue discs to classify packets...
FqCoDelIpv6PacketFilter()
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
virtual bool CheckProtocol(Ptr< QueueDiscItem > item) const
Checks if the filter is able to classify a kind of items.
void Serialize(uint8_t buf[16]) const
Serialize this address to a 16-byte buffer.