NAME
ip - Internet Protocol
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
s = socket(AF_INET, SOCK_RAW, proto);
DESCRIPTION
IP is the transport 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 "raw socket" when developing
new protocols,
or special purpose applications.
A single generic option is
supported at the IP level, IP_OPTIONS,
that may be used to provide IP options to be transmitted in
the IP
header of each outgoing packet. Options are set with
setsockopt(2)
and examined with getsockopt(2). The format of IP options to
be
sent is that specified by the IP protocol specification,
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. IP
options may be used with any socket type in the Internet
family.
Raw IP sockets are
connectionless, and are normally used with the
sendto and recvfrom calls, though the connect(2) call may
also be
used to fix the destination for future packets (in which
case the
read(2) or recv(2) and write(2) or send(2) system calls may
be
used).
If proto is 0, the default
protocol IPPROTO_RAW is used for
outgoing packets, and only incoming packets destined for
that
protocol are received. If proto is non-zero, that protocol
number
will be used on outgoing packets and to filter incoming
packets.
Outgoing packets automatically
have an IP header prepended to them
(based on the destination address and the protocol number
the
socket is created with). Incoming packets are received with
IP
header and options intact.
DIAGNOSTICS
A socket operation may fail with one of the following errors
returned:
[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;
[ENOTCONN] when trying to send a
datagram, but no destination
address is specified, and the socket hasn’t been
connected;
[ENOBUFS] when the system runs
out of memory for an internal
data structure;
[EADDRNOTAVAIL]
when an attempt is made to create a socket with a
network address for which no network interface
exists.
The following errors specific to
IP may occur when setting or
getting IP options:
[EINVAL] An unknown socket option name was given.
[EINVAL] The IP option field was
improperly formed; an option
field was shorter than the minimum value or longer
than the option buffer provided.
SEE ALSO
getsockopt(2), send(2), recv(2), intro(4), icmp(4),
inet(4)