Annotation of 43BSDReno/share/doc/smm/13.kchanges/net.t, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1986 Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"    @(#)net.t       1.6 (Berkeley) 4/11/86
                      6: .\"
                      7: .NH
                      8: Network
                      9: .PP
                     10: There have been many changes in the kernel network support.
                     11: A major change is the addition of the Xerox NS protocols.
                     12: During the course of the integration of a second major protocol family
                     13: to the kernel, a number of Internet dependencies were removed from
                     14: common network code, and structural changes were made to accommodate
                     15: multiple protocol and address families simultaneously.
                     16: In addition, there were a large number of bug fixes and other cleanups
                     17: in the general networking code and in the Internet protocols.
                     18: The skeletal support for PUP that was in 4.2BSD has been removed.
                     19: .PP
                     20: The link layer drivers were changed to save an indication
                     21: of the incoming interface with each packet received, and this
                     22: information was made available to the protocol layer.
                     23: There were several problems that could be corrected
                     24: by taking advantage of this change.
                     25: The IMP code needed
                     26: to save error packets for software interrupt-level processing
                     27: in order to fix a race condition, but it needed to know which
                     28: interface had received the packet when decoding the addresses.
                     29: ICMP needed this information to support information requests
                     30: and (newly added) network mask requests properly, as these
                     31: request information about a specific network.
                     32: IP was able to take advantage of this change to implement redirect
                     33: generation when the incoming and outgoing interfaces are
                     34: the same.
                     35: .NH 2
                     36: Network common code
                     37: .PP
                     38: The changes in the common support routines for networking,
                     39: located in \fB/sys/net\fP, are described here.
                     40: .XP if_arp.h
                     41: This new file contains the definitions for the Address Resolution
                     42: Protocol (ARP) that are independent of the protocols using ARP.
                     43: .XP if.c
                     44: Most of the \fIif_ifwith*\fP functions that returned pointers
                     45: to \fIifnet\fP structures were converted to \fIifa_with*\fP equivalents
                     46: that return pointers to \fIifaddr\fP structures.
                     47: The old \fIif_ifonnetof\fP function is no longer provided,
                     48: as there is no concept of network number that is independent of address family. 
                     49: A new routine, \fIifa_ifwithdstaddr\fP, is provided
                     50: for use with point-to-point interfaces.
                     51: Interface \fIioctl\fPs that set interface addresses
                     52: are now passed to the appropriate protocol
                     53: using the PRU_CONTROL request of the \fIpr_usrreq\fP entry.
                     54: Additional \fIioctl\fP operations were added to get and set interface metrics
                     55: and to manipulate the ARP table (see \fInetinet/if_ether.c\fP).
                     56: .XP if.h
                     57: In 4.2BSD, the per-interface structure \fIifnet\fP held the address
                     58: of the interface, as well as the host and network numbers.
                     59: These have all been moved into a new structure, \fIifaddr\fP,
                     60: that is managed by the address family.
                     61: The \fIifnet\fP structure for an interface includes a pointer
                     62: to a linked list of addresses for the interface.
                     63: The IFF_ROUTE flag was also removed.
                     64: The software loopback interface is distinguished with a new flag.
                     65: Each interface now has a routing metric that is stored by the kernel
                     66: but only interpreted by user-level routing processes.
                     67: Additional interface \fIioctl\fP operations allow the metric
                     68: or the broadcast address to be read or set.
                     69: When received packets are passed to the receiving protocol,
                     70: they include a reference to the incoming interface;
                     71: a variant of the IF_DEQUEUE macro, IF_DEQUEUEIFP,
                     72: dequeues a packet and extracts the information about the receiving interface.
                     73: .XP if_loop.c
                     74: The software loopback driver now supports Xerox NS and Internet protocols.
                     75: It was modified to provide information on the incoming interface to the
                     76: receiving protocol.
                     77: The loopback driver's address(es) must now be set with \fIifconfig\fP.
                     78: .XP if_sl.c
                     79: This file was added to support a customized line discipline for
                     80: the use of an asynchronous serial line as a network interface.
                     81: Until the encapsulation is changed the interface supports only IP traffic.
                     82: .XP raw_cb.c
                     83: Raw sockets record the socket's protocol number and address family
                     84: in a \fIsockproto\fP structure in the raw connection block.
                     85: This allows a wildcard raw protocol entry to support
                     86: raw sockets using any single protocol.
                     87: .XP raw_cb.h
                     88: A \fIsockproto\fP description and a hook for protocol-specific options
                     89: were added to the raw protocol control block.
                     90: .XP raw_usrreq.c
                     91: A bug was fixed that caused received packet return addresses
                     92: to be corrupted periodically;
                     93: an mbuf was being used after it was freed.
                     94: Routing is no longer done here, although the raw socket protocol control block
                     95: includes a routing entry for use by the transport protocol.
                     96: The SO_DONTROUTE flag now works correctly with raw sockets.
                     97: .XP route.c
                     98: The routing algorithm was changed to use the first route found
                     99: in the table instead of the one with the lowest use count.
                    100: This reduces routing overhead and makes response more predictable.
                    101: The load-sharing effect of the old algorithm was minimal under
                    102: most circumstances.
                    103: Several races were fixed.
                    104: The hash indexes have been declared as unsigned; negative indices
                    105: worked for the network route hash table but not for the host hash table.
                    106: (This fix was included on most 4.2BSD tapes.)
                    107: New routes are placed at the front of the hash chains
                    108: instead of at the end.
                    109: The redirect handling is more robust;
                    110: redirects are only accepted from the current router,
                    111: and are not used if the new gateway is the local host.
                    112: The route allocated while checking a redirect is freed
                    113: even if the redirect is disbelieved.
                    114: Host redirects cause a new route to be created if the previous route
                    115: was to the network.
                    116: Routes created dynamically by redirects are marked as such.
                    117: When adding new routes, the gateway address is checked against
                    118: the addresses of point-to-point links for exact matches before using 
                    119: another interface on the appropriate network.
                    120: \fIRtinit\fP takes arguments for flags and operation separately,
                    121: allowing point-to-point interfaces to delete old routes.
                    122: .XP route.h
                    123: The size of the routing hash table has been changed to a power of two,
                    124: allowing unsigned modulus operations to be performed with a mask.
                    125: The size of the table is expanded if the GATEWAY option is configured.

unix.superglobalmegacorp.com

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