Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ intro(5N) — A/UX 0.7

Media Vault

Software Library

Restoration Projects

Artifacts Sought



     intro(5N)                                               intro(5N)



     NAME
          networking - introduction to networking facilities

     SYNOPSIS
          #include <sys/socket.h>
          #include <net/route.h>
          #include <net/if.h>

     DESCRIPTION
          This section briefly describes the networking facilities
          available in the system.  Documentation in this part of
          Section 5 is broken up into three areas: protocol-families,
          protocols, and network interfaces.  Entries describing a
          protocol-family are marked ``5F'', while entries describing
          protocol use are marked ``5P''.  Hardware support for
          network interfaces are found among the standard Section 5
          entries.

          All network protocols are associated with a specific
          protocol-family.  A protocol-family provides basic services
          to the protocol implementation to allow it to function
          within a specific network environment.  These services may
          include packet fragmentation and reassembly, routing,
          addressing, and basic transport.  A protocol-family may
          support multiple methods of addressing, though the current
          protocol implementations do not.  A protocol-family is
          normally comprised of a number of protocols, one per
          socket(2N) type.  It is not required that a protocol-family
          support all socket types.  A protocol-family may contain
          multiple protocols supporting the same socket abstraction.

          A protocol supports one of the socket abstractions detailed
          in socket(2N).  A specific protocol may be accessed either
          by creating a socket of the appropriate type and protocol-
          family, or by requesting the protocol explicitly when
          creating a socket.  Protocols normally accept only one type
          of address format, usually determined by the addressing
          structure inherent in the design of the protocol-
          family/network architecture.  Certain semantics of the basic
          socket abstractions are protocol specific.  All protocols
          are expected to support the basic model for their particular
          socket type, but may, in addition, provide non-standard
          facilities or extensions to a mechanism.  For example, a
          protocol supporting the SOCKSTREAM abstraction may allow
          more than one byte of out-of-band data to be transmitted per
          out-of-band message.

          A network interface is similar to a device interface.
          Network interfaces comprise the lowest layer of the
          networking subsystem, interacting with the actual transport
          hardware.  An interface may support one or more protocol
          families, and/or address formats.



     Page 1                                        (last mod. 1/14/87)





     intro(5N)                                               intro(5N)



     PROTOCOLS
          The system currently supports only the DARPA Internet
          protocols fully.  Raw socket interfaces are provided to IP
          protocol layer of the DARPA Internet, to the IMP link layer
          (1822), and to Xerox PUP-1 layer operating on top of 3Mb/s
          Ethernet interfaces.  Consult the appropriate manual pages
          in this section for more information regarding the support
          for each protocol family.

     ADDRESSING
          Associated with each protocol family is an address format.
          The following address formats are used by the system:

          #define AF_UNIX    1  /*local to host (pipes, portals)*/
          #define AF_INET    2  /*internetwork: UDP, TCP, etc.*/
          #define AF_IMPLINK 3  /*arpanet imp addresses*/
          #define AF_PUP     4  /*pup protocols: e.g. BSP*/

     ROUTING
          The network facilities provided limited packet routing.  A
          simple set of data structures comprise a ``routing table''
          used in selecting the appropriate network interface when
          transmitting packets.  This table contains a single entry
          for each route to a specific network or host.  A user
          process, the routing daemon, maintains this data base with
          the aid of two socket specific ioctl(2) commands, SIOCADDRT
          and SIOCDELRT.  The commands allow the addition and deletion
          of a single routing table entry, respectively.  Routing
          table manipulations may only be carried out by super-user.

          A routing table entry has the following form, as defined in
          <net/route.h>;

          struct rtentry {
                 u_long    rt_hash;
                 struct    sockaddr rt_dst;
                 struct    sockaddr rt_gateway;
                 short     rt_flags;
                 short     rt_refcnt;
                 u_long    rt_use;
                 struct    ifnet *rt_ifp;
          };

          with rtflags defined from,

          #define RTF_UP      0x1   /*route usable*/
          #define RTF_GATEWAY 0x2   /*destination is a gateway*/
          #define RTF_HOST    0x4   /*host entry (net otherwise)*/

          Routing table entries come in three flavors: for a specific
          host, for all hosts on a specific network, for any
          destination not matched by entries of the first two types (a



     Page 2                                        (last mod. 1/14/87)





     intro(5N)                                               intro(5N)



          wildcard route). When the system is booted, each network
          interface autoconfigured installs a routing table entry when
          it wishes to have packets sent through it.  Normally the
          interface specifies the route through it is a ``direct''
          connection to the destination host or network.  If the route
          is direct, the transport layer of a protocol family usually
          requests the packet be sent to the same host specified in
          the packet.  Otherwise, the interface may be requested to
          address the packet to an entity different from the eventual
          recipient (i.e. the packet is forwarded).

          Routing table entries installed by a user process may not
          specify the hash, reference count, use, or interface fields;
          these are filled in by the routing routines.  If a route is
          in use when it is deleted (rtrefcnt is non-zero), the
          resources associated with it will not be reclaimed until
          further references to it are released.

          The routing code returns EEXIST if requested to duplicate an
          existing entry, ESRCH if requested to delete a non-existant
          entry, or ENOBUFS if insufficient resources were available
          to install a new route.

          User processes read the routing tables through the /dev/kmem
          device.

          The rtuse field contains the number of packets sent along
          the route.  This value is used to select among multiple
          routes to the same destination.  When multiple routes to the
          same destination exist, the least used route is selected.

          A wildcard routing entry is specified with a zero
          destination address value.  Wildcard routes are used only
          when the system fails to find a route to the destination
          host and network.  The combination of wildcard routes and
          routing redirects can provide an economical mechanism for
          routing traffic.

     INTERFACES
          Each network interface in a system corresponds to a path
          through which messages may be sent and received.  A network
          interface usually has a hardware device associated with it,
          though certain interfaces such as the loopback interface,
          lo(5), do not.

          At boot time each interface which has underlying hardware
          support makes itself known to the system during the
          autoconfiguration process.  Once the interface has acquired
          its address it is expected to install a routing table entry
          so that messages may be routed through it.  Most interfaces
          require some part of their address specified with an
          SIOCSIFADDR ioctl before they will allow traffic to flow



     Page 3                                        (last mod. 1/14/87)





     intro(5N)                                               intro(5N)



          through them.  On interfaces where the network-link layer
          address mapping is static, only the network number is taken
          from the ioctl; the remainder is found in a hardware
          specific manner.  On interfaces which provide dynamic
          network-link layer address mapping facilities (e.g.  10Mb/s
          Ethernets), the entire address specified in the ioctl is
          used.

          The following ioctl calls may be used to manipulate network
          interfaces.  Unless specified otherwise, the request takes
          an ifrequest structure as its parameter.  This structure has
          the form

          struct ifreq {
                 char    ifr_name[16];    /* name of interface
                                             (e.g. "ec0") */
                 union {
                         struct    sockaddr ifru_addr;
                         struct    sockaddr ifru_dstaddr;
                         short     ifru_flags;
              } ifr_ifru;
          #define ifr_addr    ifr_ifru.ifru_addr    /* address */
          #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of
                                                       p-to-p link */
          #define ifr_flags   ifr_ifru.ifru_flags   /* flags */
          };

          SIOCSIFADDR
               Set interface address.  Following the address
               assignment, the ``initialization'' routine for the
               interface is called.

          SIOCGIFADDR
               Get interface address.

          SIOCSIFDSTADDR
               Set point to point address for

          SIOCGIFDSTADDR
               Get point to point address for interface.

          SIOCSIFFLAGS
               Set interface flags field.  If the interface is marked
               down, any processes currently routing packets through
               the interface are notified.

          SIOCGIFFLAGS
               Get interface flags.

          SIOCGIFCONF
               Get interface configuration list.  This request takes
               an ifconf structure (see below) as a value-result



     Page 4                                        (last mod. 1/14/87)





     intro(5N)                                               intro(5N)



               parameter.  The ifclen field should be initially set
               to the size of the buffer pointed to by ifcbuf.  On
               return it will contain the length, in bytes, of the
               configuration list.

          /*
           * .B Structure used in SIOCGIFCONF request.
           * Used to retrieve interface configuration
           * for machine (useful for programs which
           * must know all networks accessible).
           */
          struct    ifconf {
               int  ifc_len;    /* size of associated
                                               buffer */
               union {
                    caddr_t   ifcu_buf;
                    struct    ifreq *ifcu_req;
               } ifc_ifcu;
          #define   ifc_buf   ifc_ifcu.ifcu_buf  /* buffer address */
          #define   ifc_req   ifc_ifcu.ifcu_req  /* array of structures
                                                returned */
          };
          socket(2N), ioctl(2), routed(1M).
































     Page 5                                        (last mod. 1/14/87)



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