135 lines
4.0 KiB
Plaintext
135 lines
4.0 KiB
Plaintext
'\"macro stdmacro
|
|
.if n .pH man7.ip @(#)ip 30.3 of 2/1/86
|
|
.nr X
|
|
.if \nX=0 .ds x} IP 7P "Silicon Graphics" "\&"
|
|
.if \nX=1 .ds x} IP 7P "Source Code Control System Utilities"
|
|
.if \nX=2 .ds x} IP 7P "" "\&"
|
|
.if \nX=3 .ds x} IP "" "" "\&"
|
|
.TH \*(x}
|
|
.UC 5
|
|
.SH NAME
|
|
ip \- Internet Protocol
|
|
.SH SYNOPSIS
|
|
.B #include <sys/socket.h>
|
|
.br
|
|
.B #include <netinet/in.h>
|
|
.PP
|
|
.B s = socket(AF_INET, SOCK_RAW, proto);
|
|
.SH DESCRIPTION
|
|
IP is the network layer protocol used
|
|
by the Internet protocol family.
|
|
Options may be set at the IP level
|
|
when using higher-level protocols that are based on IP
|
|
(such as TCP and UDP).
|
|
It may also be accessed
|
|
through a \*(lqraw socket\*(rq when developing new protocols, or
|
|
special purpose applications.
|
|
.PP
|
|
There are several IP-level
|
|
.IR setsockopt (2)/ getsockopt (2)
|
|
options.
|
|
IP_OPTIONS may be used to provide IP header options to be transmitted
|
|
in each outgoing packet or to examine the header options on incoming packets.
|
|
IP_OPTIONS may be used with any socket type in the Internet family.
|
|
The format of IP options to be sent is that specified by the IP protocol
|
|
specification (RFC-791), with one exception:
|
|
the list of addresses for Source Route options must include the first-hop
|
|
gateway at the beginning of the list of gateways.
|
|
The first-hop gateway address will be extracted from the option list
|
|
and the size adjusted accordingly before use.
|
|
To disable previously specified options, use a zero-length buffer:
|
|
.Ex
|
|
setsockopt(s, IPPROTO_IP, IP_OPTIONS, NULL, 0);
|
|
.Ee
|
|
IP_TOS and IP_TTL may be used to set the type-of-service and time-to-live
|
|
fields in the IP header for SOCK_STREAM and SOCK_DGRAM sockets. For example,
|
|
.Ex
|
|
int tos = IPTOS_LOWDELAY; /* see <netinet/ip.h> */
|
|
int ttl = 60; /* max = 255 */
|
|
setsockopt(s, IPPROTO_IP, IP_TOS, &tos, sizeof(tos));
|
|
setsockopt(s, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl));
|
|
.Ee
|
|
IP_HDRINCL indicates the complete IP header is included with the data
|
|
and may be used only with the SOCK_RAW type.
|
|
.Ex
|
|
int hincl = 1; /* 1 = on, 0 = off */
|
|
setsockopt(s, IPPROTO_IP, IP_HDRINCL, &hincl, sizeof(hincl));
|
|
.Ee
|
|
.SS "Raw IP Sockets"
|
|
.PP
|
|
Raw IP sockets are connectionless,
|
|
and are normally used with the
|
|
.I sendto
|
|
and
|
|
.I recvfrom
|
|
calls, though the
|
|
.IR connect (2)
|
|
call may also be used to fix the destination for future
|
|
packets (in which case the
|
|
.IR read (2)
|
|
or
|
|
.IR recv (2)
|
|
and
|
|
.IR write (2)
|
|
or
|
|
.IR send (2)
|
|
system calls may be used).
|
|
Only the super-user can create raw IP sockets.
|
|
.PP
|
|
If
|
|
.I proto
|
|
is 0, the default protocol IPPROTO_RAW is used for outgoing
|
|
packets, and only incoming packets destined for that protocol
|
|
are received.
|
|
If
|
|
.I proto
|
|
is non-zero, that protocol number will be used on outgoing packets
|
|
and to filter incoming packets.
|
|
.PP
|
|
Outgoing packets automatically have an IP header prepended to
|
|
them (based on the destination address and the protocol
|
|
number the socket is created with), unless the IP_HDRINCL option has been set.
|
|
Incoming packets are received with IP header and options intact.
|
|
.SH DIAGNOSTICS
|
|
A socket operation may fail with one of the following errors returned:
|
|
.TP 15
|
|
[EACESS]
|
|
Permission to create a raw IP socket is denied.
|
|
.TP 15
|
|
[EISCONN]
|
|
when trying to establish a connection on a socket which
|
|
already has one, or when trying to send a datagram with the destination
|
|
address specified and the socket is already connected;
|
|
.TP 15
|
|
[ENOTCONN]
|
|
when trying to send a datagram, but
|
|
no destination address is specified, and the socket hasn't been
|
|
connected;
|
|
.TP 15
|
|
[ENOBUFS]
|
|
when the system runs out of memory for
|
|
an internal data structure;
|
|
.TP 15
|
|
[EADDRNOTAVAIL]
|
|
when an attempt is made to create a
|
|
socket with a network address for which no network interface
|
|
exists.
|
|
.PP
|
|
The following errors specific to IP
|
|
may occur when setting or getting IP options:
|
|
.TP 15
|
|
[EINVAL]
|
|
An unknown socket option name was given.
|
|
.TP 15
|
|
[EINVAL]
|
|
The IP option field was improperly formed;
|
|
an option field was shorter than the minimum value
|
|
or longer than the option buffer provided.
|
|
.SH SEE ALSO
|
|
getsockopt(2), send(2), recv(2), intro(3), icmp(7P), inet(7F), route(7F),
|
|
.br
|
|
\f2IRIX Network Programming Guide\fP
|
|
.br
|
|
RFC-791
|
|
'\".so /pubs/tools/origin.bsd
|