Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ip(7) — NEWS-os 5.0.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

read(2)

write(2)

connect(3N)

getsockopt(3N)

recv(3N)

send(3N)

routing(4)

icmp(7)

inet(7)

tcp(7)

udp(7)



IP(7)                  DEVICES AND MODULES                  IP(7)



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(7)  and  udp(7).
     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. The latter connects below to datalink pro-
     viders [interface drivers, see if(3N)], and above  to  tran-
     port providers such as TCP and UDP.

     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 incom-
     ing 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



                                                                1





IP(7)                  DEVICES AND MODULES                  IP(7)



     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 accord-
     ingly  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(7).

     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



                                                                2





IP(7)                  DEVICES AND MODULES                  IP(7)



     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
     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
     read(2), write(2),  connect(3N),  getsockopt(3N),  recv(3N),
     send(3N), routing(4), icmp(7), inet(7) tcp(7), udp(7).

     Postel, Jon, Internet Protocol - DARPA Internet Program Pro-
     tocol  Specification,  RFC  791, Network Information Center,
     SRI International, Menlo Park, Calif., September 1981.

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



                                                                3





IP(7)                  DEVICES AND MODULES                  IP(7)



                         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.

     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.




















                                                                4



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