src/internet/model/icmpv6-l4-protocol.cc
changeset 9817 cfb7c304cf2d
parent 9802 5dea58a3b261
child 9833 a12922454a0c
child 9870 6543f3876ff5
equal deleted inserted replaced
9816:e86da132e7e9 9817:cfb7c304cf2d
   290   Icmpv6OptionMtu mtuHdr;
   290   Icmpv6OptionMtu mtuHdr;
   291   Icmpv6OptionLinkLayerAddress llaHdr;
   291   Icmpv6OptionLinkLayerAddress llaHdr;
   292   bool next = true;
   292   bool next = true;
   293   bool hasLla = false;
   293   bool hasLla = false;
   294   bool hasMtu = false;
   294   bool hasMtu = false;
       
   295   Ipv6Address defaultRouter = Ipv6Address::GetZero ();
   295 
   296 
   296   p->RemoveHeader (raHeader);
   297   p->RemoveHeader (raHeader);
       
   298 
       
   299   if (raHeader.GetLifeTime())
       
   300     {
       
   301       defaultRouter = src;
       
   302     }
   297 
   303 
   298   while (next == true)
   304   while (next == true)
   299     {
   305     {
   300       uint8_t type = 0;
   306       uint8_t type = 0;
   301       p->CopyData (&type, sizeof(type));
   307       p->CopyData (&type, sizeof(type));
   303       switch (type)
   309       switch (type)
   304         {
   310         {
   305         case Icmpv6Header::ICMPV6_OPT_PREFIX:
   311         case Icmpv6Header::ICMPV6_OPT_PREFIX:
   306           p->RemoveHeader (prefixHdr);
   312           p->RemoveHeader (prefixHdr);
   307           ipv6->AddAutoconfiguredAddress (ipv6->GetInterfaceForDevice (interface->GetDevice ()), prefixHdr.GetPrefix (), prefixHdr.GetPrefixLength (),
   313           ipv6->AddAutoconfiguredAddress (ipv6->GetInterfaceForDevice (interface->GetDevice ()), prefixHdr.GetPrefix (), prefixHdr.GetPrefixLength (),
   308                                           prefixHdr.GetFlags (), prefixHdr.GetValidTime (), prefixHdr.GetPreferredTime (), src);
   314                                           prefixHdr.GetFlags (), prefixHdr.GetValidTime (), prefixHdr.GetPreferredTime (), defaultRouter);
   309           break;
   315           break;
   310         case Icmpv6Header::ICMPV6_OPT_MTU:
   316         case Icmpv6Header::ICMPV6_OPT_MTU:
   311           /* take in account the first MTU option */
   317           /* take in account the first MTU option */
   312           if (!hasMtu)
   318           if (!hasMtu)
   313             {
   319             {