src/internet/model/icmpv6-header.cc
changeset 7416 91df05070541
parent 7385 10beb0e53130
child 9251 7c3f81b720a7
equal deleted inserted replaced
7415:a26626a4f5bf 7416:91df05070541
  1006 }
  1006 }
  1007 
  1007 
  1008 uint32_t Icmpv6DestinationUnreachable::Deserialize (Buffer::Iterator start)
  1008 uint32_t Icmpv6DestinationUnreachable::Deserialize (Buffer::Iterator start)
  1009 {
  1009 {
  1010   uint16_t length = start.GetSize () - 8;
  1010   uint16_t length = start.GetSize () - 8;
  1011   uint8_t data[length];
  1011   uint8_t* data = new uint8_t[length];
  1012   Buffer::Iterator i = start;
  1012   Buffer::Iterator i = start;
  1013 
  1013 
  1014   SetType (i.ReadU8 ());
  1014   SetType (i.ReadU8 ());
  1015   SetCode (i.ReadU8 ());
  1015   SetCode (i.ReadU8 ());
  1016   m_checksum = i.ReadU16 ();
  1016   m_checksum = i.ReadU16 ();
  1017   i.ReadNtohU32 ();
  1017   i.ReadNtohU32 ();
  1018   i.Read (data, length);
  1018   i.Read (data, length);
  1019   m_packet = Create<Packet> (data, length);
  1019   m_packet = Create<Packet> (data, length);
  1020 
  1020 
       
  1021   delete[] data;
  1021   return GetSerializedSize ();
  1022   return GetSerializedSize ();
  1022 }
  1023 }
  1023 
  1024 
  1024 NS_OBJECT_ENSURE_REGISTERED (Icmpv6TooBig);
  1025 NS_OBJECT_ENSURE_REGISTERED (Icmpv6TooBig);
  1025 
  1026 
  1104 }
  1105 }
  1105 
  1106 
  1106 uint32_t Icmpv6TooBig::Deserialize (Buffer::Iterator start) 
  1107 uint32_t Icmpv6TooBig::Deserialize (Buffer::Iterator start) 
  1107 {
  1108 {
  1108   uint16_t length = start.GetSize () - 8;
  1109   uint16_t length = start.GetSize () - 8;
  1109   uint8_t data[length];
  1110   uint8_t* data = new uint8_t[length];
  1110   Buffer::Iterator i = start;
  1111   Buffer::Iterator i = start;
  1111 
  1112 
  1112   SetType (i.ReadU8 ());
  1113   SetType (i.ReadU8 ());
  1113   SetCode (i.ReadU8 ());
  1114   SetCode (i.ReadU8 ());
  1114   m_checksum = i.ReadU16 ();
  1115   m_checksum = i.ReadU16 ();
  1115   SetMtu (i.ReadNtohU32 ());
  1116   SetMtu (i.ReadNtohU32 ());
  1116   i.Read (data, length);
  1117   i.Read (data, length);
  1117   m_packet = Create<Packet> (data, length);
  1118   m_packet = Create<Packet> (data, length);
  1118 
  1119 
       
  1120   delete[] data;
  1119   return GetSerializedSize ();
  1121   return GetSerializedSize ();
  1120 }
  1122 }
  1121 
  1123 
  1122 NS_OBJECT_ENSURE_REGISTERED (Icmpv6TimeExceeded);
  1124 NS_OBJECT_ENSURE_REGISTERED (Icmpv6TimeExceeded);
  1123 
  1125 
  1191 }
  1193 }
  1192 
  1194 
  1193 uint32_t Icmpv6TimeExceeded::Deserialize (Buffer::Iterator start)
  1195 uint32_t Icmpv6TimeExceeded::Deserialize (Buffer::Iterator start)
  1194 {
  1196 {
  1195   uint16_t length = start.GetSize () - 8;
  1197   uint16_t length = start.GetSize () - 8;
  1196   uint8_t data[length];
  1198   uint8_t* data = new uint8_t[length];
  1197   Buffer::Iterator i = start;
  1199   Buffer::Iterator i = start;
  1198 
  1200 
  1199   SetType (i.ReadU8 ());
  1201   SetType (i.ReadU8 ());
  1200   SetCode (i.ReadU8 ());
  1202   SetCode (i.ReadU8 ());
  1201   m_checksum = i.ReadU16 ();
  1203   m_checksum = i.ReadU16 ();
  1202   i.ReadNtohU32 ();
  1204   i.ReadNtohU32 ();
  1203   i.Read (data, length);
  1205   i.Read (data, length);
  1204   m_packet = Create<Packet> (data, length);
  1206   m_packet = Create<Packet> (data, length);
  1205 
  1207 
       
  1208   delete[] data;
  1206   return GetSerializedSize ();
  1209   return GetSerializedSize ();
  1207 }
  1210 }
  1208 
  1211 
  1209 NS_OBJECT_ENSURE_REGISTERED (Icmpv6ParameterError);
  1212 NS_OBJECT_ENSURE_REGISTERED (Icmpv6ParameterError);
  1210 
  1213 
  1289 }
  1292 }
  1290 
  1293 
  1291 uint32_t Icmpv6ParameterError::Deserialize (Buffer::Iterator start) 
  1294 uint32_t Icmpv6ParameterError::Deserialize (Buffer::Iterator start) 
  1292 {
  1295 {
  1293   uint16_t length = start.GetSize () - 8;
  1296   uint16_t length = start.GetSize () - 8;
  1294   uint8_t data[length];
  1297   uint8_t* data = new uint8_t[length];
  1295   Buffer::Iterator i = start;
  1298   Buffer::Iterator i = start;
  1296 
  1299 
  1297   SetType (i.ReadU8 ());
  1300   SetType (i.ReadU8 ());
  1298   SetCode (i.ReadU8 ());
  1301   SetCode (i.ReadU8 ());
  1299   m_checksum = i.ReadU16 ();
  1302   m_checksum = i.ReadU16 ();
  1300   SetPtr (i.ReadNtohU32 ());
  1303   SetPtr (i.ReadNtohU32 ());
  1301   i.Read (data, length);
  1304   i.Read (data, length);
  1302   m_packet = Create<Packet> (data, length);
  1305   m_packet = Create<Packet> (data, length);
       
  1306   delete[] data;
  1303 
  1307 
  1304   return GetSerializedSize ();
  1308   return GetSerializedSize ();
  1305 }
  1309 }
  1306 
  1310 
  1307 NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionHeader);
  1311 NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionHeader);
  1775   SetLength (length);
  1779   SetLength (length);
  1776   i.ReadU16 ();
  1780   i.ReadU16 ();
  1777   i.ReadU32 ();
  1781   i.ReadU32 ();
  1778 
  1782 
  1779   uint32_t len2 = (GetLength () - 1) * 8;
  1783   uint32_t len2 = (GetLength () - 1) * 8;
  1780   uint8_t buff[len2];
  1784   uint8_t* buff = new uint8_t[len2];
  1781   i.Read (buff, len2);
  1785   i.Read (buff, len2);
  1782   m_packet = Create<Packet> (buff, len2);
  1786   m_packet = Create<Packet> (buff, len2);
       
  1787   delete[] buff;
  1783 
  1788 
  1784   return GetSerializedSize ();
  1789   return GetSerializedSize ();
  1785 }
  1790 }
  1786 
  1791 
  1787 } /* namespace ns3 */
  1792 } /* namespace ns3 */