Commit Graph

71 Commits

Author SHA1 Message Date
tuexen
e684942ac0 When using SCTP for sending probe packets, use INIT chunks for payloads
larger than or equal to 32 bytes. For smaller probe packets, keep using
SHUTDOWN-ACK chunks, possibly bundled with a PAD chunk.
Packets with INIT chunks more likely pass through firewalls. Therefore,
use them when possible.

MFC after:	1 week
2018-01-27 19:23:42 +00:00
oshogbo
37b8624aaf We use a few different ifdef's names to check if we are using Casper or not,
let's standardize this. Now we are always use WITH_CASPER name.

Discussed with:	emaste@
MFC after:	1 month
2017-09-21 14:41:41 +00:00
pkelsey
f3f1c24017 Fix userland tools that don't check the format of routing socket
messages before accessing message fields that may not be present,
removing dead/duplicate/misleading code along the way.

Document the message format for each routing socket message in
route.h.

Fix a bug in usr.bin/netstat introduced in r287351 that resulted in
pointer computation with essentially random 16-bit offsets and
dereferencing of the results.

Reviewed by:	ae
MFC after:	1 month
Differential Revision:	https://reviews.freebsd.org/D10330
2017-04-16 19:17:10 +00:00
mmel
8911b8bd0f Unbreak traceroute on system built without CAPSICUM 2017-03-16 13:01:23 +00:00
oshogbo
17edc3edd9 Cache NLS data for strerror(3). 2017-03-09 06:41:00 +00:00
oshogbo
55750dcd0b Capsicumize traceroute.
PR:		 193973
Submitted by:	 Mikhail <mp39590@gmail.com>
Reviewed by:	 pjd, bapt, emaste, AllanJude
Differential Revision:	https://reviews.freebsd.org/D9303
2017-02-20 23:48:50 +00:00
tuexen
5577b97ec5 The code starts with base + 1 as the first port. Fix to documentation
to match that.

MFC after: 3 days
2015-05-31 12:18:30 +00:00
tuexen
e5205dfbe6 A TCP checksum of 0 is completely valid. Mapping 0 to 0xffff only
applies to UDP and UDP-Lite.

MFC after: 3 days
2015-05-31 12:11:05 +00:00
tuexen
b8a0027b6d Don't send illegal packets when using UDP-Lite.
MFC after: 3 days
2015-05-31 12:03:38 +00:00
tuexen
f9ecf23a49 Use an empty string for field descriptions of unknown protocols.
MFC after: 3 days
2015-05-31 10:51:36 +00:00
tuexen
f8cf17bf1f Don't send malformed SCTP probe packets.
MFC after: 3 days
2015-05-31 09:12:46 +00:00
tuexen
b00b964fab When the packet verification fails in verbose mode, print the correct
number of words in host byte order. Also remove a stray 'x'.

MFC after: 3 days
2015-05-31 08:10:35 +00:00
tuexen
9dca4be9f7 There is no payload anymore. So compute the minimum packet length
correctly and use 40 as the default (if the minumum allows it), as
specified in the man page.

MFC after: 3 days
2015-05-30 20:39:19 +00:00
tuexen
e99dc1c8d6 Require the embedded packet to contain 8 bytes after the IP header instead
of only 4. This is guaranteed by RFC 792 and the verification of GRE, ICMP
and TCP packets use 8 bytes.

MFC after: 3 days
2015-05-30 19:52:28 +00:00
tuexen
19ecd65a1e Remove trailing whitespaces. 2015-05-30 19:48:40 +00:00
joel
ce200c466e mdocify and update the traceroute(8) manual page.
Reviewed by:	brueffer
No objection:	ru, uqs
2012-06-27 07:41:21 +00:00
tuexen
11840986fd Fix a bug in the TCP tracerouting which resulted in not accepting any
incoming packets. So all packets seemed to be lost.

MFC after: 1 week
2012-04-26 13:45:17 +00:00
dim
d2ac8b8fc0 For some reason, contrib/traceroute/traceroute.c ensures MAXHOSTNAMELEN
is defined, but then proceeds to use a hardcoded maximum hostname length
of 64 anyway.  Fix this by checking against MAXHOSTNAMELEN instead.

PR:		bin/157732
MFC after:	3 days
2011-06-26 19:03:33 +00:00
simon
5cb5f5de18 Check return code of setuid() in traceroute.
While it will not fail in normal circumstances, better safe than sorry.

Reported by:	LLVM's clang static analyzer
MFC after:	3 days
2011-04-23 13:07:35 +00:00
uqs
1651f46830 traceroute(8): make WARNS=3 clean
Also fixes an operator precedence bug for TCP tracerouting
2010-12-04 14:19:27 +00:00
uqs
2b3ba2d9b6 Remove unused traceroute(8) contrib code from head
It still lives on under vendor/traceroute.
2010-11-27 09:26:46 +00:00
uqs
3736e8ec9d Remove clause 3 and 4 from TNF licenses.
Obtained from:	NetBSD
Approved by:	core
2010-11-26 20:34:43 +00:00
ed
25792810f8 Remove unneeded struct timezone passed to gettimeofday(). 2010-08-08 08:22:53 +00:00
ume
e9fb7bf28d - Add AS lookup functionality to traceroute6(8) as well.
- Support for IPv6 transport for AS lookup.
- Introduce $RA_SERVER to set whois server.
- Support for 4 byte ASN.
- ANSIfy function declaration in as.c.

Tested by:	IHANet folks.
2009-08-23 17:00:16 +00:00
rpaulo
63199bf7b7 Add AS lookup functionality. On each hop we query a whois server to
find the corresponding AS for that IP (-a switch).
We can also choose a different whois server with the -A switch. The
default is whois.radb.net.

Obtained from:	       NetBSD
Reviewed by:	       bms, njl (mentor)
Approved by:	       njl (mentor)
2008-02-20 23:29:53 +00:00
gnn
f5875f045c Commit IPv6 support for FAST_IPSEC to the tree.
This commit includes all remaining changes for the time being including
user space updates.

Submitted by:    bz
Approved by:    re
2007-07-01 12:08:08 +00:00
maxim
b4aa820f70 o I failed to find a suitable explanation why traceroute(8) and
traceroute6(8) force -w flag (wait time) to be > 1 sec.  Make it
possible to use 1 sec wait time.

PR:		bin/110933
Submitted by:	Dmitry Marakasov
Reviewed by:	freebsd-net (silence)
MFC after:	1 month
2007-04-30 19:08:13 +00:00
dwmalone
57c8475ce7 Make it so that the synopsis and usage message almost agree.
MFC after:	3 weeks
2006-10-15 17:44:49 +00:00
dwmalone
72234e1fdc Add a -D option to traceroute that prints the differences between
the probe packet we sent and the packet quoted by the ICMP response.
Can be useful for spotting hops that change the packet in-flight
or have problems generating correct ICMP responses.

MFC after:	3 weeks
2006-10-15 17:34:51 +00:00
dwmalone
929e55d609 Make traceroute decode all the ICMP unreachable messages defined
in http://www.iana.org/assignments/icmp-parameters. Thankfully
IANA's list aggrees with <netinet/ip_icmp.h>.

I've tried to do this in a way which is mostly consistent with
tcptraceroute and Debian's version of traceroute. However, sometimes
a letter is used twice by these versions, so I've gone with:

                                LBL     tcptr   Debian          (chosen)
ICMP_UNREACH_NET                !N      !N      !N              !N
ICMP_UNREACH_HOST               !H      !H      !H              !H
ICMP_UNREACH_PROTOCOL           !P      !P      !P              !P
ICMP_UNREACH_PORT               !       !p      !               !
ICMP_UNREACH_NEEDFRAG           !F-%d   !F      !F-<%d>         !F-<%d>
ICMP_UNREACH_SRCFAIL            !S      !S      !S              !S
ICMP_UNREACH_NET_UNKNOWN        !<%d>   !U      !<%d>           !U
ICMP_UNREACH_HOST_UNKNOWN       !<%d>   !U      !<%d>           !W
ICMP_UNREACH_ISOLATED           !<%d>   !I      !I              !I
ICMP_UNREACH_NET_PROHIB         !<%d>   !A      !A              !A
ICMP_UNREACH_HOST_PROHIB        !<%d>   !C      !C              !Z
ICMP_UNREACH_TOSNET             !<%d>   !T      !T              !Q
ICMP_UNREACH_TOSHOST            !<%d>   !T      !T              !T
ICMP_UNREACH_FILTER_PROHIB      !X      !A      !A              !X
ICMP_UNREACH_HOST_PRECEDENCE    !V      !<%d>   !V              !V
ICMP_UNREACH_PRECEDENCE_CUTOFF  !C      !<%d>   !C              !C

Graham Wilson is planning to use the same codes in Debian's version.

MFC after:	3 weeks
2006-06-13 14:59:07 +00:00
maxim
45a0e271b2 o It's lilac-dmc.Berkeley.EDU, not lbl-csam.arpa.
Obtained from:	NetBSD
2006-06-07 21:37:42 +00:00
cjc
297aabd6d9 Option for setting a fixed destination port. This is useful for tracing
to a host behind a firewall where only specific services are allowed.
For example, to trace the hops to an HTTP server behind a firewall,

  $ traceroute -e -P tcp -p 80 www-firewalled.example.com

MFC after:	1 week
2006-05-11 06:30:18 +00:00
pav
fd030aecaa - Update pretty print of multipath routes to better handle timeout of first
probe

  Before:
   5  *
    freebsd (195.250.137.134)  19.086 ms  24.694 ms

  After:
   5  * freebsd (195.250.137.134)  19.086 ms  24.694 ms

Fixes:		bin/90098
Reported by:	Jeremy Chadwick <freebsd@jdc.parodius.com>
Approved by:	andre
MFC after:	1 day
2006-01-10 16:48:52 +00:00
andre
dda5a2d10a Pretty print multipath routes.
Before (backslash in c syntax meaning):
 6  p16-2-0-0.r21.sttlwa01.us.bb.verio.net (129.250.2.180)  71.027 ms \
p16-1-1-3.r20.sttlwa01.us.bb.verio.net (129.250.2.6)  66.730 ms  66.535 ms
 7  xe-0-2-0.r20.sttlwa01.us.bb.verio.net (129.250.4.16)  71.092 ms \
xe-3-1.r00.sttlwa01.us.bb.verio.net (129.250.2.205)  66.598 ms \
xe-0-2-0.r20.sttlwa01.us.bb.verio.net (129.250.4.16)  71.024 ms

After:
 6  p16-2-0-0.r21.sttlwa01.us.bb.verio.net (129.250.2.180)  71.027 ms
    p16-1-1-3.r20.sttlwa01.us.bb.verio.net (129.250.2.6)  66.730 ms  66.535 ms
 7  xe-0-2-0.r20.sttlwa01.us.bb.verio.net (129.250.4.16)  71.092 ms
    xe-3-1.r00.sttlwa01.us.bb.verio.net (129.250.2.205)  66.598 ms
    xe-0-2-0.r20.sttlwa01.us.bb.verio.net (129.250.4.16)  71.024 ms

Submitted by:	Richard A Steenbergen <ras at e-gerbil.net>
MFC after:	3 days
2005-08-26 18:08:24 +00:00
thomas
9221188604 Fix minor discrepancy between documentation and implementation: the
destination port is incremented for each packet sent to the same hop.

MFC after:	1 week
2005-04-12 15:16:32 +00:00
mux
8b1be14544 Remove an empty default: case to please GCC 3.4.2. 2004-07-28 14:21:25 +00:00
pb
0333af10cb Check -s option source address for validity.
PR:		bin/29026
MFC after:	1 week
2004-04-17 18:44:23 +00:00
cperciva
47f77ea3ba Fix traceroute where [number of hops] * [number of packets per hop] > 255.
PR:		misc/61336
Submitted by:	Mike Hibler <mike@cs.utah.edu>
Approved by:	rwatson (mentor)
2004-01-23 06:55:15 +00:00
fenner
d054c72488 Fix misspelling.
PR:		docs/44930
Submitted by:	Michael McGoldrick <mmcgoldrick@linuxdriven.net>
2002-12-13 22:26:10 +00:00
fenner
83c61fd14f Routing socket messages are padded to sizeof(long), not just
sizeof(u_int32_t).
2002-07-30 04:49:13 +00:00
fenner
b61bd3d174 Calculate checksums correctly when LSRR is in effect by passing the
IP header and protocol header seperately.
Also calculate TCP checksums.

Submitted by:	orion
2002-07-28 02:34:39 +00:00
fenner
ee621bb64a Merge 1.4a12 2002-07-28 02:26:31 +00:00
fenner
c8bf584e69 This commit was generated by cvs2svn to compensate for changes in r100784,
which included commits to RCS files with non-trunk default branches.
2002-07-28 02:24:33 +00:00
fenner
30e877e999 Virgin import of LBL traceroute v1.4a12 2002-07-28 02:24:33 +00:00
dcs
6045b837d6 s/ifdef/ifndef/.
Fenner got this inverted through a misunderstanding between us.
2002-07-23 12:25:34 +00:00
fenner
d5467bd904 Add '+FreeBSD' to the version string, to reflect that this program
bears little relationship to the one from LBL with the same
 name and version number.
2002-07-23 00:56:52 +00:00
fenner
c9f6925854 Add an ICMP protocol handler, partly based on LBL's traceroute 1.4 .
Submitted by:	dcs
2002-07-22 23:01:11 +00:00
fenner
818d4f6499 Actually use gen_prep() and gen_check(), instead of udp_prep() and
udp_check(), for unknown protocols.
2002-07-22 22:07:23 +00:00
robert
594ec288d5 Allocate and clear the correct number of bytes for a
struct fd_set that should be able to hold sock + 1 bits.
Before, it was apparently assumed that an fd_mask has
the same size as type char.

PR:		bin/39617
Reported by:	Peter N Lewis <peter@stairways.com.au>
2002-06-23 21:54:18 +00:00
ru
c4aabf68c9 Fetch the default maximum TTL value from the net.inet.ip.ttl MIB.
PR:		bin/19598
MFC after:	1 week
2001-06-06 16:12:59 +00:00