Annotation of cci/usr/src/man/man4/intro.4n, revision 1.1

1.1     ! root        1: .TH INTRO 4N "7 July 1983"
        !             2: .UC 4
        !             3: .SH NAME
        !             4: networking \- introduction to networking facilities
        !             5: .SH SYNOPSIS
        !             6: .nf
        !             7: .ft B
        !             8: #include <sys/socket.h>
        !             9: #include <net/route.h>
        !            10: #include <net/if.h>
        !            11: .fi R
        !            12: .fi
        !            13: .SH DESCRIPTION
        !            14: .de _d
        !            15: .if t .ta .6i 2.1i 2.6i
        !            16: .\" 2.94 went to 2.6, 3.64 to 3.30
        !            17: .if n .ta .84i 2.6i 3.30i
        !            18: ..
        !            19: .de _f
        !            20: .if t .ta .5i 1.25i 2.5i
        !            21: .\" 3.5i went to 3.8i
        !            22: .if n .ta .7i 1.75i 3.8i
        !            23: ..
        !            24: This section briefly describes the networking facilities
        !            25: available in the system.
        !            26: Documentation in this part of section
        !            27: 4 is broken up into three areas:
        !            28: .IR protocol-families ,
        !            29: .IR protocols ,
        !            30: and
        !            31: .IR "network interfaces" .
        !            32: Entries describing a protocol-family are marked ``4F'',
        !            33: while entries describing protocol use are marked ``4P''.
        !            34: Hardware support for network interfaces are found
        !            35: among the standard ``4'' entries.
        !            36: .PP
        !            37: All network protocols are associated with a specific
        !            38: .IR protocol-family .
        !            39: A protocol-family provides basic services to the protocol
        !            40: implementation to allow it to function within a specific
        !            41: network environment.  These services may include 
        !            42: packet fragmentation and reassembly, routing, addressing, and 
        !            43: basic transport.  A protocol-family may support multiple
        !            44: methods of addressing, though the current protocol implementations
        !            45: do not.  A protocol-family is normally comprised of a number
        !            46: of protocols, one per
        !            47: .IR socket (2)
        !            48: type.  It is not required that a protocol-family support
        !            49: all socket types.  A protocol-family may contain multiple
        !            50: protocols supporting the same socket abstraction. 
        !            51: .PP
        !            52: A protocol supports one of the socket abstractions detailed
        !            53: in
        !            54: .IR socket (2).
        !            55: A specific protocol may be accessed either by creating a
        !            56: socket of the appropriate type and protocol-family, or
        !            57: by requesting the protocol explicitly when creating a socket.
        !            58: Protocols normally accept only one type of address format,
        !            59: usually determined by the addressing structure inherent in
        !            60: the design of the protocol-family/network architecture.
        !            61: Certain semantics of the basic socket abstractions are
        !            62: protocol specific.  All protocols are expected to support
        !            63: the basic model for their particular socket type, but may,
        !            64: in addition, provide non-standard facilities or extensions
        !            65: to a mechanism.  For example, a protocol supporting the
        !            66: SOCK_STREAM
        !            67: abstraction may allow more than one byte of out-of-band
        !            68: data to be transmitted per out-of-band message.
        !            69: .PP
        !            70: A network interface is similar to a device interface.
        !            71: Network interfaces comprise the lowest layer of the
        !            72: networking subsystem, interacting with the actual transport
        !            73: hardware.  An interface may support one or more protocol
        !            74: families, and/or address formats.
        !            75: The SYNOPSIS section of each network interface
        !            76: entry gives a sample specification
        !            77: of the related drivers for use in providing
        !            78: a system description to the
        !            79: .IR config (8)
        !            80: program.
        !            81: The DIAGNOSTICS section lists messages which may appear on the console
        !            82: and in the system error log
        !            83: .I /usr/adm/messages
        !            84: due to errors in device operation.
        !            85: .SH PROTOCOLS
        !            86: The system currently supports only the DARPA Internet
        !            87: protocols fully.  Raw socket interfaces are provided to IP protocol
        !            88: layer of the DARPA Internet, to the IMP link layer (1822), and to
        !            89: Xerox PUP-1 layer operating on top of 3Mb/s Ethernet interfaces.
        !            90: Consult the appropriate manual pages in this section for more
        !            91: information regarding the support for each protocol family.
        !            92: .SH ADDRESSING
        !            93: Associated with each protocol family is an address
        !            94: format.  The following address formats are used by the system:
        !            95: .sp 1
        !            96: .nf
        !            97: ._d
        !            98: #define        AF_UNIX 1       /* local to host (pipes, portals) */
        !            99: #define        AF_INET 2       /* internetwork: UDP, TCP, etc. */
        !           100: #define        AF_IMPLINK      3       /* arpanet imp addresses */
        !           101: #define        AF_PUP  4       /* pup protocols: e.g. BSP */
        !           102: .fi
        !           103: .SH ROUTING
        !           104: The network facilities provided limited packet routing.
        !           105: A simple set of data structures comprise a ``routing table''
        !           106: used in selecting the appropriate network interface when
        !           107: transmitting packets.  This table contains a single entry for
        !           108: each route to a specific network or host.  A user process,
        !           109: the routing daemon, maintains this data base with the aid
        !           110: of two socket specific 
        !           111: .IR ioctl (2)
        !           112: commands, SIOCADDRT and SIOCDELRT.  The commands allow
        !           113: the addition and deletion of a single routing
        !           114: table entry, respectively.  Routing table manipulations may
        !           115: only be carried out by super-user.
        !           116: .PP
        !           117: A routing table entry has the following form, as defined
        !           118: in
        !           119: .RI < net/route.h >;
        !           120: .sp 1
        !           121: ._f
        !           122: .nf
        !           123: struct rtentry {
        !           124:        u_long  rt_hash;
        !           125:        struct  sockaddr rt_dst;
        !           126:        struct  sockaddr rt_gateway;
        !           127:        short   rt_flags;
        !           128:        short   rt_refcnt;
        !           129:        u_long  rt_use;
        !           130:        struct  ifnet *rt_ifp;
        !           131: };
        !           132: .sp 1
        !           133: .fi
        !           134: with
        !           135: .I rt_flags
        !           136: defined from,
        !           137: .sp 1
        !           138: .nf
        !           139: ._d
        !           140: #define        RTF_UP  0x1             /* route usable */
        !           141: #define        RTF_GATEWAY     0x2             /* destination is a gateway */
        !           142: #define        RTF_HOST        0x4             /* host entry (net otherwise) */
        !           143: .fi
        !           144: .PP
        !           145: Routing table entries come in three flavors: for a specific
        !           146: host, for all hosts on a specific network, for any destination
        !           147: not matched by entries of the first two types (a wildcard route). 
        !           148: When the system
        !           149: is booted, each network interface autoconfigured 
        !           150: installs a routing table entry when it wishes to have packets
        !           151: sent through it.  Normally the interface specifies the route
        !           152: through it is a ``direct'' connection to the destination host
        !           153: or network.  If the route is direct, the transport layer of
        !           154: a protocol family usually requests the packet be sent to the
        !           155: same host specified in the packet.  Otherwise, the interface
        !           156: may be requested to address the packet to an entity different
        !           157: from the eventual recipient (i.e. the packet is forwarded).
        !           158: .PP
        !           159: Routing table entries installed by a user process may not specify
        !           160: the hash, reference count, use, or interface fields; these are filled
        !           161: in by the routing routines.  If
        !           162: a route is in use when it is deleted
        !           163: .RI ( rt_refcnt
        !           164: is non-zero),
        !           165: the resources associated with it will not
        !           166: be reclaimed until further references to it are released. 
        !           167: .PP
        !           168: The routing code returns EEXIST if
        !           169: requested to duplicate an existing entry, ESRCH if
        !           170: requested to delete a non-existant entry,
        !           171: or ENOBUFS if insufficient resources were available
        !           172: to install a new route.
        !           173: .PP
        !           174: User processes read the routing tables through the
        !           175: .I /dev/kmem 
        !           176: device.
        !           177: .PP
        !           178: The
        !           179: .I rt_use
        !           180: field contains the number of packets sent along the route.
        !           181: This value is used to select among multiple
        !           182: routes to the same destination.  When multiple routes to
        !           183: the same destination exist, the least used route is selected.
        !           184: .PP
        !           185: A wildcard routing entry is specified with a zero
        !           186: destination address value.  Wildcard routes are used
        !           187: only when the system fails to find a route to the
        !           188: destination host and network.  The combination of wildcard
        !           189: routes and routing redirects can provide an economical
        !           190: mechanism for routing traffic.
        !           191: .SH INTERFACES
        !           192: Each network interface in a system corresponds to a
        !           193: path through which messages may be sent and received.  A network
        !           194: interface usually has a hardware device associated with it, though
        !           195: certain interfaces such as the loopback interface,
        !           196: .IR lo (4),
        !           197: do not.
        !           198: .PP
        !           199: At boot time each interface which has underlying hardware support
        !           200: makes itself known to the system during the autoconfiguration
        !           201: process.  Once the interface has acquired its address it is
        !           202: expected to install a routing table entry so that messages may
        !           203: be routed through it.  Most interfaces require some part of
        !           204: their address specified with an SIOCSIFADDR ioctl before they
        !           205: will allow traffic to flow through them.  On interfaces where
        !           206: the network-link layer address mapping is static, only the
        !           207: network number is taken from the ioctl; the remainder is found
        !           208: in a hardware specific manner.  On interfaces which provide
        !           209: dynamic network-link layer address mapping facilities (e.g.
        !           210: 10Mb/s Ethernets), the entire address specified in the ioctl
        !           211: is used.
        !           212: .PP
        !           213: The following 
        !           214: .I ioctl
        !           215: calls may be used to manipulate network interfaces.  Unless
        !           216: specified otherwise, the request takes an
        !           217: .I ifrequest
        !           218: structure as its parameter.  This structure has the form
        !           219: .PP
        !           220: .nf
        !           221: .DT
        !           222: struct ifreq {
        !           223:        char    ifr_name[16];           /* name of interface (e.g. "ec0") */
        !           224:        union {
        !           225:                struct  sockaddr ifru_addr;
        !           226:                struct  sockaddr ifru_dstaddr;
        !           227:                short   ifru_flags;
        !           228:        } ifr_ifru;
        !           229: #define        ifr_addr        ifr_ifru.ifru_addr      /* address */
        !           230: #define        ifr_dstaddr     ifr_ifru.ifru_dstaddr   /* other end of p-to-p link */
        !           231: #define        ifr_flags       ifr_ifru.ifru_flags     /* flags */
        !           232: };
        !           233: .fi
        !           234: .TP
        !           235: SIOCSIFADDR
        !           236: Set interface address.  Following the address
        !           237: assignment, the ``initialization'' routine for
        !           238: the interface is called.
        !           239: .TP
        !           240: SIOCGIFADDR
        !           241: Get interface address.
        !           242: .TP
        !           243: SIOCSIFDSTADDR
        !           244: Set point to point address for interface.
        !           245: .TP
        !           246: SIOCGIFDSTADDR
        !           247: Get point to point address for interface.
        !           248: .TP
        !           249: SIOCSIFFLAGS
        !           250: Set interface flags field.  If the interface is marked down,
        !           251: any processes currently routing packets through the interface
        !           252: are notified.
        !           253: .TP
        !           254: SIOCGIFFLAGS
        !           255: Get interface flags.
        !           256: .TP
        !           257: SIOCGIFCONF
        !           258: Get interface configuration list.  This request takes an
        !           259: .I ifconf
        !           260: structure (see below) as a value-result parameter.  The 
        !           261: .I ifc_len
        !           262: field should be initially set to the size of the buffer
        !           263: pointed to by 
        !           264: .IR ifc_buf .
        !           265: On return it will contain the length, in bytes, of the
        !           266: configuration list.
        !           267: .PP
        !           268: .nf
        !           269: .DT
        !           270: /*
        !           271:  * Structure used in SIOCGIFCONF request.
        !           272:  * Used to retrieve interface configuration
        !           273:  * for machine (useful for programs which
        !           274:  * must know all networks accessible).
        !           275:  */
        !           276: struct ifconf {
        !           277:        int     ifc_len;                /* size of associated buffer */
        !           278:        union {
        !           279:                caddr_t ifcu_buf;
        !           280:                struct  ifreq *ifcu_req;
        !           281:        } ifc_ifcu;
        !           282: #define        ifc_buf ifc_ifcu.ifcu_buf       /* buffer address */
        !           283: #define        ifc_req ifc_ifcu.ifcu_req       /* array of structures returned */
        !           284: };
        !           285: .fi
        !           286: .SH SEE ALSO
        !           287: socket(2),
        !           288: ioctl(2),
        !           289: intro(4),
        !           290: config(8),
        !           291: routed(8C)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.