summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog448
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
+