equal
deleted
inserted
replaced
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 { |