Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ intro(4N) — UTek 4.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

socket(2)

ioctl(2)

netconfig(8n)

lan(4n)

routed(8n)



INTRO(4N)               COMMAND REFERENCE               INTRO(4N)



NAME
     intro - 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 4 describes three network-related areas: protocol-
     families, protocols, and network interfaces.

     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(2) 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(2).  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 SOCK_STREAM 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.  The SYNOPSIS section of
     each network interface entry gives a sample specification of
     the related drivers for use in providing a system
     description to the netconfig(8n) program.  The DIAGNOSTICS
     section lists messages which may appear on the console and



Printed 4/6/89                                                  1





INTRO(4N)               COMMAND REFERENCE               INTRO(4N)



     in the system error log /usr/adm/messages due to errors in
     device operation.

     Protocols

     The system currently supports only the DARPA Internet
     protocols fully.  Raw socket interfaces are provided to the
     IP protocol layer of the DARPA Internet.  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, streams) */
          #define   AF_INET   2    /* internetwork: UDP, TCP, etc. */

     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 superuser.

     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 rt_flags defined from,

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





Printed 4/6/89                                                  2





INTRO(4N)               COMMAND REFERENCE               INTRO(4N)



     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
     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 that 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 (rt_refcnt 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-existent
     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 rt_use 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(4n), 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



Printed 4/6/89                                                  3





INTRO(4N)               COMMAND REFERENCE               INTRO(4N)



     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
     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. "lan0") */
                 union {
                       struct sockaddr ifru_addr;
                       struct sockaddr ifru_dstaddr;
                       short           ifru_flags;
                       caddr_t         ifru_data;
                       u_short         ifru_tdr;
                       u_char          ifru_eaddr[6];
                 } 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 */
          #define ifr_data    ifr_ifru.ifru_data    /* data */
          #define ifr_tdr     ifr_ifru.ifru_tdr     /* tdr result */
          #define ifr_eaddr   ifr_ifru.ifru_eaddr   /* IEEE 802.3 address */
          };

     SIOCSIFADDR  Set interface address.  If the family is
                  AF_INET then the Internet address is set;
                  family AF_UNSPEC sets the hardware address
                  (Ethernet).  Following the address assignment,
                  the ``initialization'' routine for the
                  interface is called.

     SIOCGIFADDR  Get interface address.

     SIOCSIFDSTADDR
                  Set point to point address for interface.

     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.



Printed 4/6/89                                                  4





INTRO(4N)               COMMAND REFERENCE               INTRO(4N)



     SIOCGIFFLAGS Get interface flags.

     SIOCGIFCONF  Get interface configuration list.  This request
                  takes an ifconf structure (see below) as a
                  value-result parameter.  The ifc_len field
                  should be initially set to the size of the
                  buffer pointed to by ifc_buf.  On return it
                  will contain the length, in bytes, of the
                  configuration list.

                  /*
                   * 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 */
                  };

SEE ALSO
     socket(2), ioctl(2), netconfig(8n), lan(4n), and routed(8n).



























Printed 4/6/89                                                  5





































































%%index%%
na:288,97;
sy:385,782;
de:1167,2914;4441,2325;7126,2750;10236,2434;13030,1233;
se:14263,243;
%%index%%000000000126

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