@@ -264,7 +264,7 @@ Ipv4Address Ipv4::getNextHop(Packet *packet)
264264void Ipv4::handleIncomingDatagram (Packet *packet)
265265{
266266 ASSERT (packet);
267- int interfaceId = packet->getTag <InterfaceInd>()-> getInterfaceId ( );
267+ ASSERT ( packet->getTag <InterfaceInd>());
268268 emit (packetReceivedFromLowerSignal, packet);
269269
270270 //
@@ -286,7 +286,7 @@ void Ipv4::handleIncomingDatagram(Packet *packet)
286286
287287 if (ipv4Header->getTotalLengthField () > packet->getDataLength ()) {
288288 EV_WARN << " length error found, sending ICMP_PARAMETER_PROBLEM\n " ;
289- sendIcmpError (packet, interfaceId, ICMP_PARAMETER_PROBLEM , 0 );
289+ sendIcmpError (packet, ICMP_PARAMETER_PROBLEM , 0 );
290290 return ;
291291 }
292292
@@ -302,7 +302,7 @@ void Ipv4::handleIncomingDatagram(Packet *packet)
302302 double relativeHeaderLength = ipv4Header->getHeaderLength ().get <B>() / (double )ipv4Header->getChunkLength ().get <B>();
303303 if (dblrand () <= relativeHeaderLength) {
304304 EV_WARN << " bit error found, sending ICMP_PARAMETER_PROBLEM\n " ;
305- sendIcmpError (packet, interfaceId, ICMP_PARAMETER_PROBLEM , 0 );
305+ sendIcmpError (packet, ICMP_PARAMETER_PROBLEM , 0 );
306306 return ;
307307 }
308308 }
@@ -656,7 +656,7 @@ void Ipv4::routeUnicastPacket(Packet *packet)
656656 PacketDropDetails details;
657657 details.setReason (NO_ROUTE_FOUND );
658658 emit (packetDroppedSignal, packet, &details);
659- sendIcmpError (packet, fromIE ? fromIE-> getInterfaceId () : - 1 , ICMP_DESTINATION_UNREACHABLE , 0 );
659+ sendIcmpError (packet, ICMP_DESTINATION_UNREACHABLE , 0 );
660660 }
661661 else { // fragment and send
662662 if (fromIE != nullptr ) {
@@ -883,9 +883,7 @@ void Ipv4::reassembleAndDeliverFinish(Packet *packet)
883883 else {
884884 EV_ERROR << " Transport protocol '" << protocol->getName () << " ' not connected, discarding packet\n " ;
885885 packet->setFrontOffset (ipv4HeaderPosition);
886- // get source interface:
887- const auto & tag = packet->findTag <InterfaceInd>();
888- sendIcmpError (packet, tag ? tag->getInterfaceId () : -1 , ICMP_DESTINATION_UNREACHABLE , ICMP_DU_PROTOCOL_UNREACHABLE );
886+ sendIcmpError (packet, ICMP_DESTINATION_UNREACHABLE , ICMP_DU_PROTOCOL_UNREACHABLE );
889887 }
890888}
891889
@@ -944,7 +942,7 @@ void Ipv4::fragmentAndSend(Packet *packet)
944942 details.setReason (HOP_LIMIT_REACHED );
945943 emit (packetDroppedSignal, packet, &details);
946944 EV_WARN << " datagram TTL reached zero, sending ICMP_TIME_EXCEEDED\n " ;
947- sendIcmpError (packet, - 1 /* TODO */ , ICMP_TIME_EXCEEDED , 0 );
945+ sendIcmpError (packet, ICMP_TIME_EXCEEDED , 0 );
948946 numDropped++;
949947 return ;
950948 }
@@ -1485,9 +1483,9 @@ void Ipv4::receiveSignal(cComponent *source, simsignal_t signalID, cObject *obj,
14851483 }
14861484}
14871485
1488- void Ipv4::sendIcmpError (Packet *origPacket, int inputInterfaceId, IcmpType type, IcmpCode code)
1486+ void Ipv4::sendIcmpError (Packet *origPacket, IcmpType type, IcmpCode code)
14891487{
1490- icmp->sendErrorMessage (origPacket, inputInterfaceId, type, code);
1488+ icmp->sendErrorMessage (origPacket, type, code);
14911489 delete origPacket;
14921490}
14931491
0 commit comments