Annotation of researchv10dc/man/man4/ip.4, revision 1.1.1.1

1.1       root        1: .TH IP 4
                      2: .CT 2 comm_mach
                      3: .SH NAME
                      4: ip, ip_ld \- DARPA internet protocol
                      5: .SH SYNOPSIS
                      6: .B #include <sys/inio.h>
                      7: .br
                      8: .B #include <sys/inet/in.h>
                      9: .br
                     10: .B #include <sys/inet/ip_var.h>
                     11: .SH DESCRIPTION
                     12: .PP
                     13: The
                     14: .I ip_ld
                     15: line discipline and the
                     16: .F /dev/ip*
                     17: files together implement the DARPA IP datagram protocol.
                     18: They are used by
                     19: the programs described in
                     20: .IR ipconfig (8)
                     21: and
                     22: .IR route (8).
                     23: .PP
                     24: Each Ethernet device,
                     25: Datakit channel,
                     26: or other stream
                     27: that is to send and receive IP packets
                     28: must be registered as an
                     29: `IP interface'
                     30: by pushing
                     31: .I ip_ld
                     32: and setting local and remote addresses
                     33: with
                     34: .I ioctl
                     35: calls.
                     36: Thereafter,
                     37: data received from the network
                     38: are assumed to be IP packets,
                     39: and are intercepted by the line discipline.
                     40: Packets destined for the local address of an active IP interface
                     41: are routed for reading on one of the
                     42: .I ip
                     43: device files.
                     44: Other packets are routed to the IP interface
                     45: with a matching remote address
                     46: and retransmitted.
                     47: .PP
                     48: Data written on
                     49: .I ip
                     50: devices
                     51: are taken to be IP packets,
                     52: are handed to the IP interface
                     53: with a matching address,
                     54: and are sent.
                     55: Packets destined for unreachable places
                     56: are quietly dropped.
                     57: .PP
                     58: A packet consists of a single stream record,
                     59: followed by a delimiter:
                     60: at most one packet is returned by a
                     61: .I read
                     62: call;
                     63: an entire packet must be presented in a single
                     64: .IR write .
                     65: A packet includes the IP header.
                     66: Numbers in the header are in host byte order.
                     67: .PP
                     68: Different
                     69: .I ip
                     70: devices handle different protocols atop IP.
                     71: The minor device is the protocol number in the IP header;
                     72: e.g. 6 for TCP or 17 for UDP.
                     73: While an
                     74: .I ip
                     75: device is open,
                     76: it may not be opened again.
                     77: IP packets are often processed by pushing a line discipline
                     78: such as
                     79: .IR tcp_ld
                     80: on an
                     81: .I ip
                     82: device,
                     83: rather than by explicit
                     84: .I read
                     85: and
                     86: .I write
                     87: calls;
                     88: see
                     89: .IR tcp (4).
                     90: .PP
                     91: The following
                     92: .IR ioctl (2)
                     93: calls, defined in
                     94: .BR <sys/inio.h> ,
                     95: apply to an IP interface.
                     96: .B IPIOLOCAL
                     97: and either
                     98: .B IPIOHOST
                     99: or
                    100: .B IPIONET
                    101: must be called on each interface
                    102: before packets will be routed correctly.
                    103: Type
                    104: .BR in_addr ,
                    105: defined in
                    106: .BR <sys/inet/in.h> ,
                    107: is a 32-bit integer
                    108: representing an IP address
                    109: in host byte order.
                    110: .nr Pw \w'\f5IPIORESOLVE 'u
                    111: .TP \n(Pwu
                    112: .B IPIOLOCAL
                    113: The third argument points to an
                    114: .BR in_addr :
                    115: the local IP address for this interface.
                    116: .TP
                    117: .B IPIOHOST
                    118: The third argument points to an
                    119: .BR in_addr :
                    120: the remote IP address of the single host
                    121: reachable through this interface.
                    122: .TP
                    123: .B IPIONET
                    124: The third argument
                    125: points to an
                    126: .BR in_addr :
                    127: the remote IP address of the network of many hosts
                    128: reachable through this interface.
                    129: IP addresses are matched to the network address
                    130: by applying an internal bit-mask:
                    131: any IP address for which
                    132: .BI ( address & mask )== net-address
                    133: is part of the network.
                    134: The default mask depends on
                    135: the IP address class;
                    136: see the IP protocol standard for details.
                    137: .TP
                    138: .B IPIOMASK
                    139: The third argument points to an
                    140: .B in_addr
                    141: containing a new network mask for this interface.
                    142: .TP
                    143: .B IPIOMTU
                    144: The third argument points to an integer number of bytes.
                    145: IP packets larger than this size (1500 by default)
                    146: will be split into smaller ones
                    147: before being sent through this interface.
                    148: .TP
                    149: .B IPIOARP
                    150: The network device for this interface
                    151: is an Ethernet.
                    152: Discard the Ethernet header from each incoming packet.
                    153: When sending a packet,
                    154: prefix an Ethernet header
                    155: containing protocol type
                    156: .B 0x8
                    157: and a destination address
                    158: obtained by looking up the IP destination address
                    159: in a table.
                    160: If the IP address is not in the table,
                    161: discard the packet,
                    162: and make an
                    163: .B in_addr
                    164: containing the offending address
                    165: available for reading
                    166: on this file descriptor
                    167: (the one on which
                    168: .I ip_ld
                    169: was pushed).
                    170: .TP
                    171: .B IPIORESOLVE
                    172: The third argument points to a structure:
                    173: .EX
                    174: struct {
                    175:        in_addr inaddr;
                    176:        unsigned char enaddr[6];
                    177: };
                    178: .EE
                    179: Add an entry to the table consulted after
                    180: .BR IPIOARP ,
                    181: mapping IP address
                    182: .B inaddr
                    183: to Ethernet address
                    184: .BR enaddr .
                    185: .LP
                    186: The following
                    187: .I ioctl
                    188: calls, define in
                    189: .BR <sys/inio.h> ,
                    190: apply to the entire IP subsystem;
                    191: they may be used on any file with
                    192: .I ip_ld
                    193: pushed.
                    194: .TP \n(Pwu
                    195: .B IPIOROUTE
                    196: The third argument points to a structure:
                    197: .EX
                    198: struct route {
                    199:        in_addr dst;
                    200:        in_addr gate;
                    201: };
                    202: .EE
                    203: Arrange that henceforth,
                    204: any IP packet destined for address
                    205: .B dst
                    206: will be routed as if destined for
                    207: .BR gate .
                    208: .TP
                    209: .B IPIOGETIFS
                    210: The third argument points to a union as follows.
                    211: The structure is defined in
                    212: .BR <sys/inet/ip_var.h> .
                    213: .EX
                    214: union {
                    215:        int index;
                    216:        struct ipif {
                    217:                struct queue *queue;
                    218:                int flags;
                    219:                int mtu;
                    220:                in_addr thishost;
                    221:                in_addr that;
                    222:                in_addr mask;
                    223:                in_addr broadcast;
                    224:                int ipackets, ierrors;
                    225:                int opackets, oerrors;
                    226:                int arp;
                    227:                int dev;
                    228:        } ipif;
                    229: };
                    230: .EE
                    231: Before the call,
                    232: .B index
                    233: should contain an integer
                    234: naming an entry in the system's table
                    235: of active interfaces.
                    236: Interfaces are numbered in a continuous sequence starting at 0.
                    237: Out-of-range numbers return an error.
                    238: After the call,
                    239: .B ipif
                    240: is filled in with various numbers
                    241: about that interface.
                    242: .SH FILES
                    243: .B /dev/ip*
                    244: .SH SEE ALSO
                    245: .IR ioctl (2),
                    246: .IR internet (3),
                    247: .IR ipconfig (8),
                    248: .IR route (8)
                    249: .br
                    250: DARPA standards RFC 791, RFC 1122
                    251: .SH BUGS
                    252: The ARP mechanism should be generalized
                    253: to deal with networks other than Ethernet.
                    254: There is only one ARP table for the entire system;
                    255: there should be one for each interface.
                    256: .br
                    257: The structures used by
                    258: .B IPIOROUTE
                    259: and
                    260: .B IPIORESOLVE
                    261: should appear in a header file somewhere.

unix.superglobalmegacorp.com

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