ipsend(5)
- NetBSD Manual Pages
IPSEND(5) IPSEND(5)
NAME
ipsend - IP packet description language
DESCRIPTION
The ipsend program expects, with the -L option, input to
be a text file which fits the grammar described below.
The purpose of this grammar is to allow IP packets to be
described in an arbitary way which also allows encapsula-
tion to be so done to an arbitary level.
GRAMMAR
line ::= iface | arp | send | defrouter | ipv4line .
iface ::= ifhdr "{" ifaceopts "}" ";" .
ifhdr ::= "interface" | "iface" .
ifaceopts ::= "ifname" name | "mtu" mtu | "v4addr" ipaddr |
"eaddr" eaddr .
send ::= "send" ";" | "send" "{" sendbodyopts "}" ";" .
sendbodyopts ::= sendbody [ sendbodyopts ] .
sendbody ::= "ifname" name | "via" ipaddr .
defrouter ::= "router" ipaddr .
arp ::= "arp" "{" arpbodyopts "}" ";" .
arpbodyopts ::= arpbody [ arpbodyopts ] .
arpbody ::= "v4addr" ipaddr | "eaddr" eaddr .
bodyline ::= ipv4line | tcpline | udpline | icmpline | dataline .
ipv4line ::= "ipv4" "{" ipv4bodyopts "}" ";" .
ipv4bodyopts ::= ipv4body [ ipv4bodyopts ] | bodyline .
ipv4body ::= "proto" protocol | "src" ipaddr | "dst" ipaddr |
"off" number | "v" number | "hl" number| "id" number |
"ttl" number | "tos" number | "sum" number | "len" number |
"opt" "{" ipv4optlist "}" ";" .
ipv4optlist ::= ipv4option [ ipv4optlist ] .
ipv4optlist = "nop" | "rr" | "zsu" | "mtup" | "mtur" | "encode" | "ts" |
"tr" | "sec" | "lsrr" | "e-sec" | "cipso" | "satid" |
"ssrr" | "addext" | "visa" | "imitd" | "eip" | "finn" |
"secclass" ipv4secclass.
ipv4secclass := "unclass" | "confid" | "reserv-1" | "reserv-2" |
"reserv-3" | "reserv-4" | "secret" | "topsecret" .
tcpline ::= "tcp" "{" tcpbodyopts "}" ";" .
tcpbodyopts ::= tcpbody [ tcpbodyopts ] | bodyline .
tcpbody ::= "sport" port | "dport" port | "seq" number | "ack" number |
"off" number | "urp" number | "win" number | "sum" number |
"flags" tcpflags | data .
udpline ::= "udp" "{" udpbodyopts "}" ";" .
udpbodyopts ::= udpbody [ udpbodyopts ] | bodyline .
udpbody ::= "sport" port | "dport" port | "len" number | "sum" number |
data .
1
IPSEND(5) IPSEND(5)
icmpline ::= "icmp" "{" icmpbodyopts "}" ";" .
icmpbodyopts ::= icmpbody [ icmpbodyopts ] | bodyline .
icmpbody ::= "type" icmptype [ "code" icmpcode ] .
icmptype ::= "echorep" | "echorep" "{" echoopts "}" ";" | "unreach" |
"unreach" "{" unreachtype "}" ";" | "squench" | "redir" |
"redir" "{" redirtype "}" ";" | "echo" "{" echoopts "}" ";" |
"echo" | "routerad" | "routersol" | "timex" |
"timex" "{" timextype "}" ";" | "paramprob" |
"paramprob" "{" parapptype "}" ";" | "timest" | "timestrep" |
"inforeq" | "inforep" | "maskreq" | "maskrep" .
echoopts ::= echoopts [ icmpechoopts ] .
unreachtype ::= "net-unr" | "host-unr" | "proto-unr" | "port-unr" |
"needfrag" | "srcfail" | "net-unk" | "host-unk" | "isolate" |
"net-prohib" | "host-prohib" | "net-tos" | "host-tos" |
"filter-prohib" | "host-preced" | "cutoff-preced" .
redirtype ::= "net-redir" | "host-redir" | "tos-net-redir" |
"tos-host-redir" .
timextype ::= "intrans" | "reass" .
paramptype ::= "optabsent" .
data ::= "data" "{" databodyopts "}" ";" .
databodyopts ::= "len" number | "value" string | "file" filename .
icmpechoopts ::= "icmpseq" number | "icmpid" number .
COMMANDS
Before sending any packets or defining any packets, it is
necessary to describe the interface(s) which will be used
to send packets out.
interface
is used to describe a network interface. The
description included need not match the actual con-
figuration currently employed by the operating sys-
tem.
send is used to actually send out a packet across the
network. If the destination is not specified, it
will attempt to send the packet directly out on the
network to the destination without routing it.
router configures the default router for ipsend, as dis-
tinct from the default route installed in the ker-
nel.
ipv4 is used to describe an IP (version 4) packet. IP
header fields can be specified, including options,
followed by a data section which may contain fur-
ther protocol headers.
IPV4
hl <number>
manually specifies the IP header length
2
IPSEND(5) IPSEND(5)
(automatically adjusts with the presence of IP
options and defaults to 5);
v <number>
set the IP version. Default is 4.
tos <number>
set the type of service (TOS) field in the IP
header. Default is 0.
len <number>
manually specifies the length of the IP packet.
The length will automatically be adjusted to acco-
modate data or further protocol headers.
off <number>
sets the fragment offset field of the IP packet.
Default is 0.
ttl <number>
sets the time to live (TTL) field of the IP header.
Default is 60.
proto <protocol>
sets the protocol field of the IP header. The pro-
tocol can either be a number or a name found in
/etc/protocols.
sum manually specifies the checksum for the IP header.
If left unset (0), it will be calculated prior to
being sent.
src manually specifies the source address of the IP
header. If left unset, it will default to the
host's IP address.
dst sets the destination of the IP packet. The default
is 0.0.0.0.
opt is used to include IP options in the IP header.
tcp is used to indicate the a TCP protocol header is to
follow. See the TCP section for TCP header
options.
udp is used to indicate the a UDP protocol header is to
follow. See the UDP section for UDP header
options.
icmp is used to indicate the a ICMP protocol header is
to follow. See the ICMP section for ICMP header
options.
data is used to indicate that raw data is to be included
3
IPSEND(5) IPSEND(5)
in the IP packet. See the DATA section for details
on options available.
IPv4 Options
these keywords indicate that the releveant IP option
should be added to the IP header (the header length field
will be adjusted appropriately).
nop No Operation [RFC 791] (space filler).
rr <number>
Record Router [RFC 791]. The number given speci-
fies the number of bytes to be used for storage.
This should be a multiple of 4 for proper opera-
tion.
zsu Experimental Measurement.
mtup [RFC 1191].
MTU Probe.
mtur [RFC 1191].
MTU Ready.
encode
ts Timestamp [RFC 791].
tr Traceroute [RFC 1393].
sec-class <security-level>, sec
Security [RFC 1108]. This option specifies the
security label for the packet. Using sec sets up
the framework of the security option but unless
sec-class is given, the level may not be set.
lsrr <ip-address>
Loose Source Route [RFC 791].
e-sec Extended Security [RFC 1108].
cipso Commercial Security.
satid Stream ID [RFC 791].
ssrr <ip-address>
Strict Source Route [RFC 791].
addext Address Extension
visa Expermental Access Control.
imitd IMI Traffic Descriptor.
4
IPSEND(5) IPSEND(5)
eip [RFC 1358].
finn Experimental Flow Control.
TCP
sport <port>
sets the source port to the number/name given.
Default is 0.
dport <port>
sets the destination port to the number/name given.
Default is 0.
seq <number>
sets the sequence number to the number specified.
Default is 0.
ack <number>
sets the acknowledge number to the number speci-
fied. Default is 0.
off <number>
sets the offset value for the start of data to the
number specified. This implies the size of the TCP
header. It is automatically adjusted if TCP
options are included and defaults to 5.
urp <number>
sets the value of the urgent data pointer to the
number specified. Default is 0.
win <number>
sets the size of the TCP window to the number spec-
ified. Default is 4096.
sum <number>
manually specifies the checksum for the TCP pseudo-
header and data. If left unset, it defaults to 0
and is automatically calculated.
flags <tcp-flags>
sets the TCP flags field to match the flags speci-
fied. Valid flags are "S" (SYN), "A" (ACK), "R"
(RST), "F" (FIN), "U" (URG), "P" (PUSH).
opt indicates that TCP header options follow. As TCP
options are added to the TCP header, the off field
is updated to match.
data indicates that a data section is to follow and is
to be included as raw data, being appended to the
header.
5
IPSEND(5) IPSEND(5)
TCP options
With a TCP header, it is possible to append a number of
header options. The TCP header offset will be updated
automatically to reflect the change in size. The valid
options are: nop No Operation, eol End Of (option) List,
mss [ size ] Maximum Segment Size - this sets the maximum
receivable size of a packet containing data, wscale Window
Scale, ts Timestamp.
UDP
sport <port>
sets the source port to the number/name given.
Default is 0.
dport <port>
sets the destination port to the number/name given.
Default is 0.
len <number>
manually specifies the length of the UDP header and
data. If left unset, it is automatically adjusted
to match the header presence and any data if pre-
sent.
sum <number>
manually specifies the checksum for the UDP pseudo-
header and data. If left unset, it defaults to 0
and is automatically calculated.
data indicates that a data section is to follow and is
to be included as raw data, being appended to the
header.
ICMP
type <icmptype>
sets the ICMP type according the to the icmptype
tag. This may either be a number or one of the
recognised tags (see the ICMP TYPES section for a
list of names recognised).
code <icmpcode>
sets the ICMP code.
data indicates that a data section is to follow and is
to be included as raw data, being appended to the
header.
DATA
Each of the following extend the packet in a different
way. Len just increases the length (without adding any
content), value uses a string and file a file.
len <number>
extend the length of the packet by number bytes
6
IPSEND(5) IPSEND(5)
(without filling those bytes with any particular
data).
value <string>
indicates that the string provided should be added
to the current packet as data. A string may be a
consecutive list of characters and numbers (with no
white spaces) or bounded by "'s (may not contain
them, even if \'d). The \ charcater is recognised
with the appropriate C escaped values, including
octal numbers.
file <filename>
reads data in from the specified file and appends
it to the current packet. If the new total length
would exceed 64k, an error will be reported.
ICMP TYPES
echorep
Echo Reply.
unreach [ unreachable-code ]
Generic Unreachable error. This is used to indi-
cate that an error has occurred whilst trying to
send the packet across the network and that the
destination cannot be reached. The unreachable
code names are: net-unr network unreachable, host-
unr host unreachable, proto-unr protocol unreach-
able, port-unr port unreachable, needfrag, srcfail
source route failed, net-unk network unknown, host-
unk host unknown, isolate, net-prohib administra-
tively prohibited contact with network, host-prohib
administratively prohibited contact with host, net-
tos network unreachable with given TOS, host-tos
host unreachable with given TOS, filter-prohib
packet prohibited by packet filter, host-preced,
cutoff-preced.
squench
Source Quence.
redir [ redirect-code ]
Redirect (routing). This is used to indicate that
the route being chosen for forwarding the packet is
suboptimal and that the sender of the packet should
be routing packets via another route. The redirect
code names are: net-redir redirect packets for a
network, host-redir redirect packets for a host,
tos-net-redir redirect packets for a network with a
given TOS, tos-host-redir redirect packets for a
host with a given TOS.
echo Echo.
7
IPSEND(5) IPSEND(5)
routerad
Router Advertisment.
routersol
Router solicitation.
timex [ timexceed-code ]
Time Exceeded. This is used to indicate that the
packet failed to reach the destination because it
was in transit too long (i.e. ttl reached 0). The
valid code names are: intrans, reass could not
reassemble packet from fragments within a given
time.
paramprob [ paramprob-code ]
Parameter problem. There is only one available
parameter problem code name: optabsent.
timest Time stamp request.
timestrep [ { timestamp-code } ]
Time stamp reply. In a timestamp reply, it is pos-
sible to supply the following values: rtime, otime,
ttime.
inforeq
Information request.
inforep
Information reply.
maskreq
Address mask request.
maskrep
Address mask reply.
FILES
/etc/hosts
/etc/protocols
/etc/services
SEE ALSO
ipsend(1), iptest(1), hosts(5), protocols(5), services(5)
8
Powered by man-cgi (2024-03-20).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.