-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
111 lines (86 loc) · 4.01 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
SendIP
Author: Mike Ricketts <mike@earth.li>
Web: http://www.earth.li/projectpurple/progs/sendip.html
Part of Project Purple. (http://www.earth.li/projectpurple/)
Repository of this fork: https://github.com/jelmd/sendip/
1. Introduction
SendIP is a tool to send completely arbitrary packets out over the network.
In conjunction with PackPrint (see
http://www.earth.li/projectpurple/progs/packprint.html), this makes an
extremely powerful debugging tool for networks.
1.1 Home page
All the latest news, documentation and versions of SendIP will be made
available from http://www.earth.li/projectpurple/ or directly from the
the author.
Please, if you find SendIP useful, consider visiting making a donation
at http://heaven.on.earth.li/donate. The more donations I get the more
time I can afford to spend improving SendIP!
2. Protocols
Here is the initial list of protocols that SendIP understands:
* IPv4 (but see below section 7)
* TCP
* BGP
* ICMP
* UDP
* RIP
* NTP
* IPv6
* ICMPv6
* TCP
* UDP
* RIPng
* NTP?
Since than other modules have been added, which allow more IP header
manipulations, support more protocols. Just have a look at the sendip(1)
man page or "sendip [-p module]... -h" to get more information.
Of course, it is still possible to send packets using other protocols, but
you have to construct the packet data and headers entirely by hand.
3. Usage instructions
SendIP can take a huge number of commandline parameters.
Please read the man page or check sendip -h for details.
4. Installation
make ; make install should work.
You MUST use GNU make (on Solaris & friends it is called gmake).
You may also set your CC environment variable to 'gcc' to pull in GCC
support. If it is set to 'cc', Sun Studio Compiler is assumed and thus
will use GCC incompatible flags.
You can change where it installs by changing BINDIR and/or PREFIX at the
top of the Makefile or by setting the corresponding env variables.
If you have install problems, try GNU install from GNU coreutils, and check
whether this works, e.g.:
make install INSTALL=gnu-install CC=gcc DESTDIR=/tmp/foo
5. Problems, Bugs, and Comments
If you have any comments, suggestions, or bug reports, please file an issue
via https://github.com/jelmd/sendip/issues, describe there
what goes wrong, and what system you are trying to install it on.
Providing the follwoing information may help to solve the problem faster:
- output of [g]make -k distclean all
- OS, including version
- version of GNU make, compiler, etc.
- the C compiler you use
- version/commit of sendip
- exact command line that fails
- exact error messages, if any
- exactly what you expected to happen that didn't, or what didn't happen
that you expected
- anything else you think might be relevant
6. License
SendIP is distributed under the GNU Public License a copy of which is
included in this archive as LICENSE.
7. Note on IPv4 options
Many operating systems rewrite some or all of the IP header when sending
packets. Exactly which headers get rewritten depends on the OS. There is
no portable way to bypass this that I am aware of. so some IP options do not
work on some operating systems. Listed below are the ones I know about.
This list is not by any means complete and what is here may not be accurate,
and I would welcome more information.
Solaris:
- IP header length works provided that the length given is not greater
than the number of bytes in the packet. If it is, sendip will segfault.
- IP don't fragment flag always set, other IP flags always cleared.
Linux, *BSD, Solaris:
- IP source address is rewritten if it is zero.
- IP checksum is always rewritten to the correct value.
- IP packet ID is rewritten (to a randomish value) if it is zero.
- Total packet length is always rewritten to the number of bytes sent.
- All other headers work as expected.