- except:
- src_if.close()
- if dst_if_defined:
- dst_if.close()
- raise
-
- check_ttl(pkt_req_send[IP].ttl, pkt_req_recv[IP].ttl, hops)
- pkt_req_send_mod = pkt_req_send.copy()
- pkt_req_send_mod[IP].ttl = pkt_req_recv[IP].ttl
- del pkt_req_send_mod[IP].chksum # update checksum
- ckeck_packets_equal(pkt_req_send_mod[IP], pkt_req_recv[IP])
-
- pkt_resp_send = auto_pad(Ether(src=dst_mac, dst=pkt_req_recv.src) /
- IP(src=dst_ip, dst=src_ip) /
- ICMP(type=0)) # echo-reply
- pkt_resp_send = Ether(pkt_resp_send)
- dst_if.send_pkt(pkt_resp_send)
-
-try:
+ if pkt_req_recv is None:
+ raise Exception('Timeout waiting for packet')
+
+ check_ttl(pkt_req_send[IP].ttl, pkt_req_recv[IP].ttl, hops)
+ pkt_req_send_mod = pkt_req_send.copy()
+ pkt_req_send_mod[IP].ttl = pkt_req_recv[IP].ttl
+ del pkt_req_send_mod[IP].chksum # update checksum
+ ckeck_packets_equal(pkt_req_send_mod[IP], pkt_req_recv[IP])
+
+ pkt_resp_send = (Ether(src=dst_mac, dst=pkt_req_recv.src) /
+ IP(src=dst_ip, dst=src_ip) /
+ ICMP(type=0)) # echo-reply
+ dst_if.send_pkt(pkt_resp_send)
+