src/internet-node/udp-header.cc
changeset 1232 2e8c3f8bb77f
parent 1152 1d06449f0a98
child 1234 ca195a6a7e1e
equal deleted inserted replaced
1231:01baeebb110e 1232:2e8c3f8bb77f
    91   uint8_t buf[12];
    91   uint8_t buf[12];
    92   source.Serialize (buf);
    92   source.Serialize (buf);
    93   destination.Serialize (buf+4);
    93   destination.Serialize (buf+4);
    94   buf[8] = 0;
    94   buf[8] = 0;
    95   buf[9] = protocol;
    95   buf[9] = protocol;
    96   uint16_t udpLength = m_payloadSize + GetSize ();
    96   uint16_t udpLength = m_payloadSize + GetSerializedSize ();
    97   buf[10] = udpLength >> 8;
    97   buf[10] = udpLength >> 8;
    98   buf[11] = udpLength & 0xff;
    98   buf[11] = udpLength & 0xff;
    99 
    99 
   100   m_initialChecksum = Ipv4ChecksumCalculate (0, buf, 12);
   100   m_initialChecksum = Ipv4ChecksumCalculate (0, buf, 12);
   101 }
   101 }
   102 
   102 
   103 std::string 
   103 std::string 
   104 UdpHeader::DoGetName (void) const
   104 UdpHeader::GetName (void) const
   105 {
   105 {
   106   return "UDP";
   106   return "UDP";
   107 }
   107 }
   108 
   108 
   109 void 
   109 void 
   110 UdpHeader::PrintTo (std::ostream &os) const
   110 UdpHeader::Print (std::ostream &os) const
   111 {
   111 {
   112   os << "(" 
   112   os << "(" 
   113      << "length: " << m_payloadSize + GetSize ()
   113      << "length: " << m_payloadSize + GetSerializedSize ()
   114      << ") "
   114      << ") "
   115      << m_sourcePort << " > " << m_destinationPort
   115      << m_sourcePort << " > " << m_destinationPort
   116     ;
   116     ;
   117 }
   117 }
   118 
   118 
   121 {
   121 {
   122   return 8;
   122   return 8;
   123 }
   123 }
   124 
   124 
   125 void
   125 void
   126 UdpHeader::SerializeTo (Buffer::Iterator start) const
   126 UdpHeader::Serialize (Buffer::Iterator start) const
   127 {
   127 {
   128   Buffer::Iterator i = start;
   128   Buffer::Iterator i = start;
   129   i.WriteHtonU16 (m_sourcePort);
   129   i.WriteHtonU16 (m_sourcePort);
   130   i.WriteHtonU16 (m_destinationPort);
   130   i.WriteHtonU16 (m_destinationPort);
   131   i.WriteHtonU16 (m_payloadSize + GetSize ());
   131   i.WriteHtonU16 (m_payloadSize + GetSerializedSize ());
   132   i.WriteU16 (0);
   132   i.WriteU16 (0);
   133 
   133 
   134   if (m_calcChecksum) 
   134   if (m_calcChecksum) 
   135     {
   135     {
   136 #if 0
   136 #if 0
   137       //XXXX
   137       //XXXX
   138       uint16_t checksum = Ipv4ChecksumCalculate (m_initialChecksum, 
   138       uint16_t checksum = Ipv4ChecksumCalculate (m_initialChecksum, 
   139                                                   buffer->PeekData (), 
   139                                                   buffer->PeekData (), 
   140                                                   GetSize () + m_payloadSize);
   140                                                   GetSerializedSize () + m_payloadSize);
   141       checksum = Ipv4ChecksumComplete (checksum);
   141       checksum = Ipv4ChecksumComplete (checksum);
   142       i = buffer->Begin ();
   142       i = buffer->Begin ();
   143       i.Next (6);
   143       i.Next (6);
   144       i.WriteU16 (checksum);
   144       i.WriteU16 (checksum);
   145 #endif
   145 #endif
   146     }
   146     }
   147 }
   147 }
   148 uint32_t
   148 uint32_t
   149 UdpHeader::DeserializeFrom (Buffer::Iterator start)
   149 UdpHeader::Deserialize (Buffer::Iterator start)
   150 {
   150 {
   151   Buffer::Iterator i = start;
   151   Buffer::Iterator i = start;
   152   m_sourcePort = i.ReadNtohU16 ();
   152   m_sourcePort = i.ReadNtohU16 ();
   153   m_destinationPort = i.ReadNtohU16 ();
   153   m_destinationPort = i.ReadNtohU16 ();
   154   m_payloadSize = i.ReadNtohU16 () - GetSize ();
   154   m_payloadSize = i.ReadNtohU16 () - GetSerializedSize ();
   155   if (m_calcChecksum) 
   155   if (m_calcChecksum) 
   156     {
   156     {
   157       // XXX verify checksum.
   157       // XXX verify checksum.
   158     }
   158     }
   159   return GetSerializedSize ();
   159   return GetSerializedSize ();