25 #include "ns3/buffer.h" 
   26 #include "ns3/address-utils.h" 
   37     m_destinationPort (0),
 
   42     m_windowSize (0xffff),
 
   44     m_calcChecksum (false),
 
   45     m_goodChecksum (true),
 
   57   static const char* flagNames[8] = {
 
   67   std::string flagsDescription = 
"";
 
   68   for (uint8_t i = 0; i < 8; ++i)
 
   72           if (flagsDescription.length() > 0) 
 
   74               flagsDescription += delimiter;
 
   76           flagsDescription.append (flagNames[i]);
 
   79   return flagsDescription;
 
  223   uint32_t hdrSize = 0;
 
  262     .SetGroupName (
"Internet")
 
  286   TcpOptionList::const_iterator op;
 
  290       os << 
" " << (*op)->GetInstanceTypeId ().GetName () << 
"(";
 
  318   uint32_t optionLen = 0;
 
  319   TcpOptionList::const_iterator op;
 
  322       optionLen += (*op)->GetSerializedSize ();
 
  323       (*op)->Serialize (i);
 
  324       i.
Next ((*op)->GetSerializedSize ());
 
  328   while (optionLen % 4)
 
  339       uint16_t checksum = i.CalculateIpChecksum (start.
GetSize (), headerChecksum);
 
  343       i.WriteU16 (checksum);
 
  364   uint32_t optionLen = (
m_length - 5) * 4;
 
  367       NS_LOG_ERROR (
"Illegal TCP option length " << optionLen << 
"; options discarded");
 
  372       uint8_t kind = i.
PeekU8 ();
 
  382           NS_LOG_WARN (
"Option kind " << static_cast<int> (kind) << 
" unknown, skipping.");
 
  390       if (optionLen >= optionSize)
 
  392           optionLen -= optionSize;
 
  398           NS_LOG_ERROR (
"Option exceeds TCP option space; option discarded");
 
  414       NS_LOG_ERROR (
"Mismatch between calculated length and in-header value");
 
  422       uint16_t checksum = i.CalculateIpChecksum (start.
GetSize (), headerChecksum);
 
  433   TcpOptionList::const_iterator i;
 
  437       len += (*i)->GetSerializedSize ();
 
  442       len += 4 - (len % 4);
 
  454           NS_LOG_WARN (
"The option kind " << static_cast<int> (option->
GetKind ()) << 
" is unknown");
 
  476   TcpOptionList::const_iterator i;
 
  480       if ((*i)->GetKind () == kind)
 
  492   TcpOptionList::const_iterator i;
 
  496       if ((*i)->GetKind () == kind)
 
uint16_t CalculateIpChecksum(uint16_t size)
Calculate the checksum. 
 
void AddAtStart(uint32_t start)
 
NUMERIC_TYPE GetValue() const 
Extracts the numeric value of the sequence number. 
 
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system. 
 
automatically resized byte buffer 
 
void WriteTo(Buffer::Iterator &i, Ipv4Address ad)
Write an Ipv4Address to a Buffer. 
 
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
 
uint32_t ReadNtohU32(void)
 
iterator in a Buffer instance 
 
a polymophic address class 
 
virtual uint32_t Deserialize(Buffer::Iterator start)=0
Deserialize the Option from a buffer iterator. 
 
void WriteU16(uint16_t data)
 
void WriteHtonU16(uint16_t data)
 
void Next(void)
go forward by one byte 
 
static bool IsMatchingType(const Address &address)
 
Buffer::Iterator Begin(void) const 
 
std::ostream & operator<<(std::ostream &os, const Angles &a)
print a struct Angles to output 
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
void WriteHtonU32(uint32_t data)
 
not a standardized value; for unknown recv'd options 
 
Describes an IPv6 address. 
 
Ipv4 addresses are stored in host order in this class. 
 
void WriteU8(uint8_t data)
 
static bool IsKindKnown(uint8_t kind)
Check if the option is implemented. 
 
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN. 
 
virtual uint8_t GetKind(void) const =0
Get the `kind' (as in RFC 793) of this option. 
 
bool operator==(const EventId &a, const EventId &b)
 
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR. 
 
uint16_t ReadNtohU16(void)
 
uint32_t GetSize(void) const 
 
a unique identifier for an interface. 
 
static Ptr< TcpOption > CreateOption(uint8_t kind)
Creates an option. 
 
TypeId SetParent(TypeId tid)
Set the parent TypeId. 
 
virtual uint32_t GetSerializedSize(void) const =0
Returns number of bytes required for Option serialization.