diff options
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 448 |
1 files changed, 448 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..0c7c6d0 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,448 @@ +2023-02-13 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.1.2 + + * Fix unprivileged ICMP tracerouting with Linux kernel >= 6.1 + (Eric Dumazet, SF bug #14) + +2022-12-27 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.1.1 + + * Interpret ipv4-mapped ipv6 addresses (::ffff:A.B.C.D) as true ipv4. + + There are no ipv4-mapped addresses in the real network which we + operate on, so use just ipv4 in such cases, but allow users + to specify it this way for convenience. + + * Return back more robast poll(2) loop handling. + + +2016-03-08 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.1.0 + + * Improve the main loop for better interactivity. + + Instead of waiting silently for maximum expiration time of probes + in progress, use timeout of the first probe (which will be printed + first from now) only. + + * Speedup wait mechanism. + + Traditional traceroute implementation always waited the whole timeout + for any probe. But if we already have some replies from the same hop, + or even from some next hop, we can use the round trip time + of such a reply as a hint to determine the actual reasonable + amount of time to wait. + + Now the `-w' option has a form of three (in general) float values + separated by a comma (or a slash): `-w MAX_SECS,HERE,NEAR' . + (last two are optional). MAX_SECS specifies the maximum time + (in seconds) to wait, in any case. + + The optional HERE specifies a factor to multiply the round trip time + of an already received response from the same hop. + The resulting value is used as a timeout for the probe, instead of + (but no more than) MAX_SECS. The optional NEAR specifies a similar + factor for a response from some next hop. + The time of the first found result is used in both cases. + + First, we look for the same hop (of the probe which will be printed + first from now). If nothing found, then look for some next hop. + If nothing found, use MAX_SECS. If HERE and/or NEAR have zero values, + the corresponding computation is skipped. + + HERE and NEAR are always set to zero if only MAX_SECS is specified + (which provides compatibility with previous versions). Thus, if your + scripts use `-w SECS', then nothing changed for you, since + the lonely SECS implies `-w SECS,0,0' . + + Defaults are 5.0 seconds for MAX_SECS, 3.0 times for HERE and + 10.0 times for NEAR. + + Certainly, the new algorithm can lead to premature expiry + (especially when response times differ at times) and printing "*" + instead of a time. Anyway, you can always switch this algorithm off, + just by specifying `-w' with the desired timeout only (fe. `-w 5'). + + We continue to wait whole MAX_SECS when one probe per time + must be sent (`--sport', `-P proto'), because it seems more harmful + rather than helpful to try to wait less in such cases. + + To provide compatibility with 2.0.x versions, use: + + traceroute -w 5 + + (or any other desired `-w' value). + + * Hint people to use the system traceroute(8) instead of + tcptraceroute wrapper (by providing a stderr header). + + The using of this wrapper is a little bit harmful, since it has + less possibilities and a little different set of options. + + For those who are used to use tcptraceroute in cmdline, + just create a link with that name to the system traceroute. + When invoked as "tcp*", it then behaves as `traceroute -T'. + (The simple manual page added for this case in the wrapper subdir). + + The original tcptraceroute had some options differ ("lpNSAE"), + but they was rare used. Most common "dnFifmqwst" was just the same. + Therefore it should be painless to use the system binary directly, + instead of the limited wrapper (which is still provided indeed). + + +2016-02-15 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.22 + + * Some portability fixing and improvements (Felix Janda) + + * Require clear numbers for options and arguments (Sergey Salnikov) + + * Drop compilation date from the version string (Debian #774365) + + * New tcp module option `reuse', which utilize SO_REUSEADDR + to reuse local port numbers for the huge workloads (Richard Sheehan) + + * Avoid poll(2) call with spurious zero timeout in some rare cases + by rounding the value properly using ceil(3) + + +2014-11-12 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.21 + + * Fix `--mtu' and `-F' working on kernels >= 3.13 + + * Some manual page improving (Christopher Mann) + + +2014-06-14 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.20 + + * Describe all complementary long options in the man page (Jan Synacek) + + * Use correct service name for AS lookups (Frederic Mangano) + + * Avoid some rare case null dereference (geogriffin@jsgriff.com) + + * Improve expiration check for simultaneous probes + + +2012-11-19 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.19 + + * DCCP protocol support (rfc4340), by Samuel Jero + + Use "-D" option for it (the protocol-specific options + are available too). + + * Update COPYING and COPYING.LIB license files to the latest + published ones (due to FSF address changes etc.) (Jan Synacek) + + * Add mention of "-l" option to manual (Filip Holec) + + +2011-08-16 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.18 + + * Handle new dgram icmp sockets ("echo ping sockets"), + appeared in kernel 3.0 . + + Now unprivileged users may perform ICMP tracerouting + without any special rights of the executable + (neither setuid bits nor cap_net_raw settings). + It is allowed if any group of a user matches sysctl range + of "net/ipv4/ping_group_range". + + The support for dgram icmp way (and whether it is allowed) + is auto-detected at runtime. First, the traditional raw socket + is tried (for full compatibility reasons), then new dgram + socket as a fallback. + The icmp module now has two additional options "raw" and "dgram", + which cause to try one particular way only. + + Note, that there is no IPv6 implementation for dgram icmp sockets + in kernels 3.0 yet, but new traceroute is ready for it anyway. + + * New tcp module option `info' ("-T -O info"), + which prints all tcp flags of tcp reply from the reached + target host. + + The flags are shown comma-separated in the same place + where icmp extensions is printed (ie. in `<>' brackets) + + This feature is utilized by tcptraceroute wrapper now, + and allow it to be completely functional replacement + of the original tcptraceroute. + + * Fix determination of system-wide ECN setings for tcp module. + + Since the kernel 2.6.31 the default sysctl net/ipv4/tcp_ecn + was changed from zero to '2', whereas the actual value + for ecn to be set is still '1' + + * Allow different packet sizes for `--mtu'. + Suport `-l' option for tracepath wrapper. + + * Some code and manual cleanups + + +2010-12-14 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.17 + + * Adapt code to make possible the use of Linux capabilities + (for raw sockets etc.) instead of superuser privileges only. + + On modern systems the capabilities can be stored as + file attributes, ie.: + + "setcap cap_net_raw=pe /usr/bin/traceroute" + + +2010-09-13 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.16 + + * A little work-around in the build system + for the new (buggy?) make 3.82 + + * Add `--fwmark=num' option for firewall mark (for kernel >= 2.6.25). + Idea comes from an anonymous SF patch #3042539 + + +2010-07-14 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.15 + + * Use string routines more safely (fix SF bug #3029216) + + * Provide help for lft wrapper + + +2010-04-21 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.14 + + * Fix support for IPv6's flow_labels and tclass. + Thanks to Peter Bieringer for testing + + * Use route header "type 2" instead of deprecated "type 0" + for `-g' option for IPv6. The default value can be changed + by specifying a number in the place of the first `-g' address. + + +2009-11-02 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.13 + + * Check for first_hop is not zero value (vladz@devzero.fr) + + * Always fill unresolved IP address by its numeric interpretation, + even if getnameinfo(3) leaves it untouched (as it does for ipv6 + in some glibc versions, whereas always fills for ipv4) + + * Cosmetic changes for man page (Andreas Mohr) + + +2008-09-15 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.12 + + * Use common recv_reply() routine for all modules which + do recvmsg(2) call. Method-specific things go to callbacks. + + Pass to init methods pointer to datalen instead of the value. + + * Implement ICMP Extension support (rfc4884), `-e' option. + Parse MPLS info (rfc4950) to be more readable (Kaj Niemi) + + * Implement Path MTU Discovery (similar to tracepath(1)), + with `--mtu' option. Changed mtu is printed once in a form + of `F=NUM' at the first probe of a hop which requires + such mtu to be reached. (Actually, the correspond "frag needed" + icmp message is normally sent by the previous hop). + + * Print the number of backward hops when it differs with forward, + by `--back' option. The backward hops is guessed by a technique + similar to tracepath(1), there is no reliable way to obtain + such info though. + + * The optional second argument (packet_len) now is the full length + of the packet, including IP headers. (It is obvious enough due to + the nature of this feature, and this is the behaviour of the + original traceroute). Particular trace methods can ignore this + (fe. tcp), or increase it up to the minimal value (udp, icmp). + The actual packet's size is alvays reported in the output header. + + * Add tracepath(1)/tracepath6(1) shell wrapper. + + * Allow DEF_AF to be redefined at cmdline (Teran McKinney) + + * Do not check the correctness of `sim_probes' value -- it is + unneeded at all. This also fixes a bug when a value of sim_probes + appears to be more than the total number of probes. + Reported by Milos Malik. + + * Allow default UDP method to cross zero port boundary (Milos Malik). + It is a strange corner case, but traditional traceroute + behaves exactly so. + + +2008-04-25 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.11 + + * Use new pmtudisc value "probe" instead of "do" for `-F' option + (available since the kernel 2.6.22). + + For kernels before 2.6.22, the `-F' (dontfragment) option + seems completely useless for IPv6 and partially useful + for IPv4 (when a user can flush routing caches some way). + + * Fix installation in build system (Mike Frysinger) + + * Don't compute checksum for ipv6 icmp packets ourselves, + the kernel overwrites it anyway by the proper values. + + * Don't use explicit path to traceroute in wrapper scripts + + +2008-04-17 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.10 + + * raw_can_connect(): ipv6 connected raw sockets + receive MSG_ERRQUEUE properly only for kernels >= 2.6.25 + + * remove useless "host" parameter for init methods + + * add probe_by_seq() and probe_by_sk() routines, + don't pass whole probes' pointer to recv_probe method + + * collect all sends in do_send() routine + + * Interpret ENOBUFS errors for send(2) as "can retry later". + + Slow devices (like ppp) with small tx_queue_len can reject + the sending of too many packets simultaneously. To handle this, + do_send() now returns a negate value in a case of ENOBUFS + and similar (instead of program exit). The send_probe method + clears the probe and returns immediately in such cases. + Then, if there is an amount of time to wait for something, + the failed probe will be attempted again after that time expired. + If nothing to wait more, the program is exited. + + +2007-09-26 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.9 + + * Complete manual page. + + * Edit manual page to sound more English, thanks to Chris Ward + + +2007-09-04 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.8 + + * Move all wrappers to special "wrappers/" dir. + Add lft(8) shell wrapper. + Add traceproto(8) shell wrapper. + Add traceroute-nanog(8) shell wrapper. + + * Interpret first_hop as number, not index + + * Build system is re-worked to match more the modern requirements + (Thanks to Mike Frysinger for testing). + + * Check for kernel version >= 2.6.22.2 in raw_can_connect() + + * Add generic "raw" method, "-P protonum" option. + New "one_per_time" flag for tr_module. + + +2007-07-31 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.7 + + * Fix revents checking typo + + * Expect normal data reply from udp too. + + * Implement udp to port (-U) and udplite (-UL) methods. + Both available for unprivileged users. + Add "coverage" option for udplite. + + * Allow non-digit service names for `-p' and `--sport' + + * Drop period at the end of "SEE ALSO" section, and + avoid specific distro names in the manual (Mike Frysinger) + + * Explicitly mention that this program is licensed + as "GPL version 2 or any later version". + (Similar for libsupp subdir: LGPL version 2.1 or any later). + + * Always check whether the dest and source port match in + received packets. Can decrease an amount of (hypothetical) + garbage received just after the bind() but before connect() + + +2007-07-19 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.6 + + * Rename tr_ops to tr_module + + * Implement module-specific options (-O opt,...) + + * Add TCP specific options (all the tcp header flags, + ecn, sack, timestamps, window_scaling, mss, sysctl) + Build tcp probe packet depending on them. + + * Add "--sport" option for explicit source port selection. + Always cause "-N 1" when it is set. + + * Add new routine bind_socket(). + Always (auto)bind sockets in tune_socket(). + + * Add tcptraceroute(8) shell wrapper + + +2007-07-16 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.5 + + * Use MSG_ERRQUEUE for raw sockets too. + + * raw_can_connect () work-around for kernel bug #8747 + + * random.c, csum.c: new separate files + + * New implementation of tcp method ("-T"), using + half-open technique. The old implementation module + renamed to "tcpconn" ("-M tcpconn"). + + * Common parse_cmsg() routine + + * put ee_info for parse_icmp_res() too, + handle ICMP6_PACKET_TOO_BIG for IPv6, + report "!F-num" when "frag needed" (legacy compatibility) + + +2007-07-11 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.4 + + * clear includes of unneeded headers + + * move poll stuff to separate poll.c + + * add module stuff (module.c), options etc. + Adapt udp/icmp/tcp for this. + + * Add common routines use_recverr() and set_ttl() + + +2007-02-28 Dmitry Butskoy <Dmitry@Butskoy.name> + + * fix variable type for getsockname (Mike Frysinger) + + +2007-01-09 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.3 + + * version 2.0.3 + + * allow option args without separator (add CLIF_MAY_JOIN_ARG flag), + for compatibility (Benjamin LaHaise) + + * no more "tcptraceroute" symlink for rpm packages, because + it conflicts with the same-name old package anyway (James Ralston) + + * fix compilation on glibc < 2.4 (Andy Shevchenko) + + +2006-10-30 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.2 + + * version 2.0.2 + + * More accurate check_expired() routine. + + * Some minor fixes. + + * Add NOTES section to manual + + +2006-10-20 Dmitry Butskoy <Dmitry@Butskoy.name> - 2.0.1 + + * version 2.0.1 + + * Now ops methods write send_time (as well as recv_time) + + * Use SO_TIMESTAMP to obtain msecs precisely + + * Complete manual + |