Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ IP(4p) — CX/UX 6.20

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

connect(2)

getsockopt(2)

read(2)

recv(2)

send(2)

write(2)

inet(4F)

icmp(4P)

tcp(4P)

udp(4P)



ip(4P)                                                     ip(4P)



NAME
     IP - Internet Protocol

SYNOPSIS
     #include <sys/socket.h>
     #include <netinet/in.h>

     s = socket(AFINET, SOCKRAW, proto);

     t = topen ("/dev/rawip", ORDWR);

     d = open ("/dev/ip", ORDWR);

DESCRIPTION
     IP is the internetwork datagram delivery protocol that is
     central to the Internet protocol family.  Programs may use
     IP through higher-level protocols such as the Transmission
     Control Protocol (TCP) or the User Datagram Protocol (UDP),
     or may interface directly to IP.  See tcp(4P) and udp(4P).
     Direct access may be via the socket interface (using a raw
     socket) or the Transport Level Interface (TLI).  The proto-
     col options defined in the IP specification may be set in
     outgoing datagrams.

     The STREAMS driver /dev/rawip is the TLI transport provider
     that provides raw access to IP. The device /dev/ip is the
     multiplexing STREAMS driver that implements the protocol
     processing of IP. Raw IP sockets are connectionless and are
     normally used with the sendto() and recvfrom() calls, [(see
     send(2) and recv(2)] although the connect(2) call may also
     be used to fix the destination for future datagrams [in
     which case the read(2) or recv(2) and write(2) or send(2)
     calls may be used].  If proto is zero, the default protocol,
     IPPROTORAW, is used.  If proto is non-zero, that protocol
     number will be set in outgoing datagrams and will be used to
     filter incoming datagrams.  An IP header will be generated
     and prepended to each outgoing datagram; received datagrams
     are returned with the IP header and options intact.

     A single socket option, IPOPTIONS, is supported at the IP
     level.  This socket option may be used to set IP options to
     be included in each outgoing datagram.  IP options to be
     sent are set with setsockopt() [see getsockopt(2)].  The
     getsockopt(2) call returns the IP options set in the last
     setsockopt() call.  IP options on received datagrams are
     visible to user programs only using raw IP sockets.  The
     format of IP options given in setsockopt() matches those
     defined in the IP specification with one exception:  the
     list of addresses for the source routing 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



Page 1                                           CX/UX Networking





ip(4P)                                                     ip(4P)



     accordingly before use.  IP options may be used with any
     socket type in the Internet family.

     At the socket level, the socket option SODONTROUTE may be
     applied.  This option forces datagrams being sent to bypass
     the routing step in output.  Normally, IP selects a network
     interface to send the datagram, and possibly an intermediate
     gateway, based on an entry in the routing table.  See rout-
     ing(4).  When SODONTROUTE is set, the datagram will be sent
     using the interface whose network number or full IP address
     matches the destination address.  If no interface matches,
     the error ENETUNRCH will be returned.

     Raw IP datagrams can also be sent and received using the TLI
     connectionless primitives.

     Datagrams flow through the IP layer in two directions:  from
     the network up to user processes and from user processes
     down to the network.  Using this orientation, IP is layered
     above the network interface drivers and below the transport
     protocols such as UDP and TCP. The Internet Control Message
     Protocol (ICMP) is logically a part of IP. See icmp(4P).

     IP provides for a checksum of the header part, but not the
     data part of the datagram.  The checksum value is computed
     and set in the process of sending datagrams and checked when
     receiving datagrams.  IP header checksumming may be disabled
     for debugging purposes by patching the kernel variable ipck-
     sum to have the value zero.

     IP options in received datagrams are processed in the IP
     layer according to the protocol specification.  Currently
     recognized IP options include:  security, loose source and
     record route (LSRR), strict source and record route (SSRR),
     record route, stream identifier, and internet timestamp.

     The IP layer will normally forward received datagrams that
     are not addressed to it.  Forwarding is under the control of
     the kernel variable ipforwarding:  if ipforwarding is zero,
     IP datagrams will not be forwarded;  if ipforwarding is one,
     IP datagrams will be forwarded.  ipforwarding is usually set
     to one only in machines with more than one network interface
     (internetwork routers).  This kernel variable can be patched
     to enable or disable forwarding.

     The IP layer will send an ICMP message back to the source
     host in many cases when it receives a datagram that can not
     be handled.  A time exceeded ICMP message will be sent if
     the time to live field in the IP header drops to zero in the
     process of forwarding a datagram.  A destination unreachable
     message will be sent if a datagram can not be forwarded
     because there is no route to the final destination, or if it



Page 2                                           CX/UX Networking





ip(4P)                                                     ip(4P)



     can not be fragmented.  If the datagram is addressed to the
     local host but is destined for a protocol that is not sup-
     ported or a port that is not in use, a destination unreach-
     able message will also be sent.  The IP layer may send an
     ICMP source quench message if it is receiving datagrams too
     quickly.  ICMP messages are only sent for the first fragment
     of a fragmented datagram and are never returned in response
     to errors in other ICMP messages.

     The IP layer supports fragmentation and reassembly.
     Datagrams are fragmented on output if the datagram is larger
     than the maximum transmission unit (MTU) of the network
     interface.  Fragments of received datagrams are dropped from
     the reassembly queues if the complete datagram is not recon-
     structed within a short time period.

     Errors in sending discovered at the network interface driver
     layer are passed by IP back up to the user process.

SEE ALSO
     connect(2), getsockopt(2), read(2), recv(2), send(2),
     write(2), inet(4F) icmp(4P), tcp(4P), udp(4P).
     CX/UX Networking Reference Manual

DIAGNOSTICS
     A socket operation may fail with one of the following errors
     returned:

     EACCESS             A IP broadcast destination address was
                         specified and the caller was not the
                         privileged user.

     EISCONN             An attempt was made to establish a con-
                         nection on a socket which already had
                         one, or to send a datagram with the des-
                         tination address specified and the
                         socket was already connected.

     EMSGSIZE            An attempt was made to send a datagram
                         that was too large for an interface, but
                         was not allowed to be fragmented (such
                         as broadcasts).

     ENETUNREACH         An attempt was made to establish a con-
                         nection or send a datagram, where there
                         was no matching entry in the routing
                         table, or if an ICMP destination
                         unreachable message was received.

     ENOTCONN            A datagrem was sent, but no destination
                         address was specified, and the socket
                         had not been connected.



Page 3                                           CX/UX Networking





ip(4P)                                                     ip(4P)



     ENOBUFS             The system ran out of memory for frag-
                         mentation buffers or other internal data
                         structure.

     EADDRNOTAVAIL       An attempt was made to create a socket
                         with a local address that did not match
                         any network interface, or an IP broad-
                         cast destination address was specified
                         and the network interface does not sup-
                         port broadcast.

     The following errors 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.

NOTES
     Raw sockets should receive ICMP error packets relating to
     the protocol; currently such packets are simply discarded.

     Users of higher-level protocols such as TCP and UDP should
     be able to see received IP options.




























Page 4                                           CX/UX Networking



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026