Malak: I think we made the merchant angry.
Conan: Are you surprised?
Malak: But we didn't steal everything he had!
Conan: We didn't have time.
Embed struct tv32 into struct opacket like traceroute.
This changes the data part of an icmp6 paket, before it only
contained the timestamp, now it contains a whole struct opacket.
Shouldn't be an issue as nobody looks at this data anyway.
OK benno@
sync to traceroute: s/opacket/packetdata/
OK lteo@, benno@
sync packet_ok signature to traceroute6
OK benno@
Sync to tracroute: handle "time exceeded in transit" before the
switch and add a default case.
OK benno@
spacing
spacing
guenther would prefer more separation
Sync to tracroute: don't print source IP if -s is not given
OK benno@ (who wants it back in some form after the merge)
fix previous
If -s is not given do a dummy connect to get outgoing ip,
unconditionally try to bind to this ip and get a source port for udp
this way, like traceroute6 is doing.  This means you can no longer
traceroute from IPs not present on the system. (There are probably
better tools if you want to send traffic from spoofed IPs.)
OK benno@
sync to traceroute:
* s/Dst/to/
* s/Src/from/
* drop Rcv
OK benno@
move ICMP code parsing to function
OK benno@
move ICMP6 code parsing to function
OK benno@
move cast from packet to ip up to avoid casts in print()
OK benno@
Structure wait_for_reply() loop like traceroute, thereby moving the
loop body one indent layer up.
OK benno@
replace perror(3) with err(3)/warn(3)
OK lteo@, benno@
We do have SO_SNDBUF and IP_HDRINCL.
OK benno@
We do have SO_SNDBUF.
OK benno@
this file is not relevant