src/internet/model/ipv6-raw-socket-impl.cc
changeset 9835 3efac978b3c9
parent 9236 3c5ea0bd869f
child 10410 4d4eb8097fa3
equal deleted inserted replaced
9834:0d35086abaaa 9835:3efac978b3c9
   242                   hdr.CalculatePseudoHeaderChecksum (route->GetSource (), dst, p->GetSize () + hdr.GetSerializedSize (), Icmpv6L4Protocol::GetStaticProtocolNumber ());
   242                   hdr.CalculatePseudoHeaderChecksum (route->GetSource (), dst, p->GetSize () + hdr.GetSerializedSize (), Icmpv6L4Protocol::GetStaticProtocolNumber ());
   243                   p->AddHeader (hdr);
   243                   p->AddHeader (hdr);
   244                 }
   244                 }
   245             }
   245             }
   246 
   246 
   247           ipv6->Send (p, route->GetSource (), dst, m_protocol, route);
   247           if (m_src.IsAny ())
       
   248             {
       
   249               ipv6->Send (p, route->GetSource (), dst, m_protocol, route);
       
   250             }
       
   251           else
       
   252             {
       
   253               ipv6->Send (p, m_src, dst, m_protocol, route);
       
   254             }
   248           // Return only payload size (as Linux does).
   255           // Return only payload size (as Linux does).
   249           return p->GetSize () - hdr.GetSerializedSize ();
   256           return p->GetSize () - hdr.GetSerializedSize ();
   250         }
   257         }
   251       else
   258       else
   252         {
   259         {