NOVELL TECHNICAL INFORMATION DOCUMENT TITLE: TCP16.EXE; Client TCP/IP Transport (update) README FOR: TCP16.EXE NOVELL PRODUCTS and VERSIONS: NetWare Connect 1.0 LAN WorkGroup 4.1 LAN WorkGroup 4.2 LAN WorkPlace for DOS 4.2 LAN WorkPlace for DOS 4.1 NetWare/IP 1.1 LANalyzer for Windows 2.1 NetWare Client for DOS/MS Windows 1.2 LAN WorkPlace 5 for MS Windows and DOS NetWare/IP 2.1 NetWare Connect 2.0 NetWare/IP 2.2 ABSTRACT: [UPDATED: 1996/03/25] TCP16.EXE is the latest maintenance patch for the client TCP/IP protocol stack. It contains the latest fixes for Novell's 16-bit Client TCP/IP protocol stack. Files which are no longer associated with this protocol stack remain available via LW42T3.EXE. ----------------------------------------------------------------- DISCLAIMER THE ORIGIN OF THIS INFORMATION MAY BE INTERNAL OR EXTERNAL TO NOVELL. NOVELL MAKES EVERY EFFORT WITHIN ITS MEANS TO VERIFY THIS INFORMATION. HOWEVER, THE INFORMATION PROVIDED IN THIS DOCUMENT IS FOR YOUR INFORMATION ONLY. NOVELL MAKES NO EXPLICIT OR IMPLIED CLAIMS TO THE VALIDITY OF THIS INFORMATION. ----------------------------------------------------------------- ISSUE: Table of Contents 1 - INTRODUCTION / INSTALLATION INSTRUCTIONS 2 - NEW THIS REVISION 2.1 - TCPIP.EXE 2.2 - WLIBSOCK.DLL 2.3 - PING.EXE 2.4 - EXTRANEOUS FILES REMOVED 2.5 - NEW INSTALLATION NOW SUPPORTED 3 - UPDATES FROM PREVIOUS REVISION(S) 4 - ENHANCEMENT HISTORY 5 - WINSOCK V1.1 COMPLIANCE ----------------------------------------------------------------- 1 - INTRODUCTION / INSTALLATION INSTRUCTIONS 1.1 - INTRODUCTION This document is formatted as a reference document. Rather than trying to read this entire document, use the Table of Contents to determine which sections to read in detail. Module versions are indicated at the beginning of each symptom below. In all cases, these fixes are the current (included) version of the given module. The name of this patch, TCP16.EXE, will not change while the contents will with new revisions of the TCP/IP client. Updates to this patch will be indicated in the ABSTRACT with the date the patch was updated. 1.2 - INSTALLATION INSTRUCTIONS Install this patch by: - Running the INSTALLR.BAT batch file, or - COPYing the files in this patch into the proper product \NET\BIN directory (d:\NET\BIN, or server/volume:NET\BIN). - Run LWP_CHK.BAT and address any warnings that are applicable. 1.3 - PATCH HISTORY TCP16.EXE (Rev 4) partially supersedes LW42T3.EXE (Rev 3). (LW42T3.EXE is still available.) LW42T3.EXE (Rev 3) supersedes LW42T2.EXE (Rev 2). (VTCPIP.386 re-added.) LW42T2.EXE (Rev 2) supersedes LWP42T.EXE (Rev 1). LWP42T.EXE (Rev 1) supersedes LWP208.EXE. 2 - NEW THIS REVISION 2.1 - TCPIP.EXE 2.1.1 - 5.00.201: New baseline. Same as 5.00.104. 2.1.2 - 5.00.104: Completed implementing the TCP and UDP socket fix started in 5.00.102. 2.1.3 - 5.00.103: Added NetWare/IP support for accessing a specific route. 2.1.4 - 5.00.102: Support of feature to flush UDP packets when resource shortages occur (LSL buffers, PECBs) made optional. To enable this functionality, add the following keyword to the PROTOCOL TCPIP section. PROTOCOL TCPIP UDP_FLUSH ## Flush UDP packets when resources are low. 2.1.5 - 5.00.102: Automatic ARP of the local workstation IP address made optional. When the protocol stack initializes, a RARP request is generated with a zero source IP address to see if the IP address is in use. The zero source IP address causes Wellfleet routers to generate errors logs, which in turn cause unwanted network degradation. To enable this functionality, add the following keyword to the PROTOCOL TCP/IP section. PROTOCOL TCPIP NO_DUPCHK ## Disable the RARP request when the stack loads. 2.1.6 - 5.00.102: Corrected problems with garbage BOOTPTAB files. The return code from the call NWGetConnectionInformation() was being ignored. The return code is now checked and an error returned, if appropriate. 2.1.7 - 5.00.102: Fixed a TCP protocol reconnect problem. When a TCP/IP client crashes and attempts to reconnect, the protocol stack did not properly respond to the SYN (Synchronize) packet request. Likewise, when a server attempted to reconnect, the stack did not respond properly to the RST (Reset) packet request. 2.1.8 - 5.00.102: Increased the default TCP and UDP default number of sockets to 15 each. Formerly, the default number of sockets for the TCP and UDP protocols defaulted to 8. These have been maximized in Novell's 16-bit WinSock environment to 15 for both TCP and UDP. This fix helps maintain web surfing configurations by balancing and maximizing the default number of TCP and UDP sockets. Due to Novell's 16-bit WinSock limitation of 31 total sockets (15 TCP sockets, 15 UDP sockets and 1 raw (ICMP) socket), the number of TCP and UDP sockets are actually less than those supported by the WLIBSOCK.DLL interface. To alter the balance or reduce the number of sockets, add the following keywords to the PROTOCOL TCP/IP section. PROTOCOL TCPIP TCP_SOCKETS 12 ## Set (reduce) the number of TCP sockets to 12. UDP_SOCKETS 12 ## Set (reduce) the number of UDP sockets to 12. RAW_SOCKETS 1 ## This is the maximum value supported for ICMP sockets. 2.1.9 - 5.00.101: Merged R42-1U and 5.00.100. 2.1.10 - R42-1U: Added UDP_FLUSH and NO_DUPCHK keywords to PROTOCOL TCPIP section. (See 2.1.4 and 2.1.5.) 2.2 - WLIBSOCK.DLL 2.2.1 - 5.00.201: New baseline. Same as 5.00.101. 2.2.2 - 5.00.101: Corrected resource and memory leaks. These leaks were found when opening and closing Host Presenter sessions using host names rather than IP addresses on a continuous basis. The resource and memory leaks eventually resulted in DNS failures. Once this failure occurred, DNS functionality was disabled, though direct IP addresses still continued to work. Prior to this fix the only solution was to unload and reload the stack (the quickest way being to reboot). 2.3 - PING.EXE 2.3.1 - 5.00.201: New baseline. Same as 5.00.102. 2.3.2 - 5.00.102: Now supports Client-32 for DOS / Windows. 2.4 - EXTRANEOUS FILES REMOVED In order to provide a minimal and freely available technology, Novell is releasing these files independent of a product mechanism. As such, the following files are no longer associated with this patch: LWPCON.EXE, LWPCON.MSG, LWPCON.HLP, SNMP.EXE, IPTUNNEL.EXE, RFCNBIOS.EXE 2.5 - New Installations Now Supported. This patch now provides minimum support for configuring a client with the Novell TCP/IP-16 protocol stack. This patch looks for the following products via their signature file, in the order below, to determine how the installation / update should take place. LWPCON.EXE -- LAN WorkPlace / LAN WorkGroup / NetWare Connect VLM.EXE -- NetWare Client, other Novell products. If these two files are not found on your path, the patch installer will create C:\NWCLIENT and drop all files in that directory. It will also create / append to the NET.CFG in that directory with comments on how to minimally configure your client. It is recommended that the NetWare Client be installed prior to the installation of this patch, but this patch may be installed on a clean system as long as the required ODI components are obtained elsewhere. If the required ODI components (LSL.COM and your LAN driver) do not exist on your client, your new installation will be incomplete. Full documentation for this information can be found on the web at these locations: http://occam.sjf.novell.com:8080/iamg.lwp50.english/transenu/1.toc http://occam.sjf.novell.com:8080/nw410.english/ws_d2enu/1.toc 3 - UPDATES FROM PREVIOUS REVISION(S) The following details are from previous revisions of this patch. 3.1 - INSTALLR.BAT / WHICH.EXE The installer uses the utilities WHICH.EXE and DOS REPLACE.EXE. It also requires about 1024 bytes of free environment space. The batch file will find the correct directory tree by looking for a signature file (namely LWPCON.EXE or VLM.EXE). If there are any problems running the installer batch utility, manually update your appropriate directories with the files contained in this patch using the REPLACE or COPY command. Usage: INSTALLR [/h] [/p] [/r] [/d dir] where: /hDisplays this information. /rView the TCP16.TXT file after installing. /pPrompts user before adding/replacing each file. dirOptionally specifies the directory to be upgraded. WARNING: This batch file requires an environment size of 1024 or more. Add this line to CONFIG.SYS to ensure proper execution. SHELL=C:\MSDOS\6\COMMAND.COM C:\ /E:2048 /P NOTE: WHICH.EXE identifies the locations and full names of specified files found in DOS PATH. "WHICH -h" will produce a usage description. This program is not supported by Novell, Inc and is a utility provided by Technical Support. It is donated to this patch by John "Frotz" Fa'atuai (Frotz@novell.com). 3.2 - LWP_CHK.BAT / LWP_LOG.BAT LWP_CHK.BAT will examine your environment and determine if there are multiple copies of files in unexpected locations. It will generate a log file (LWP.LOG) in the TEMP directory. LWP.LOG lists the important files that were found via your PATH, complete with version and path information. Run this batch file to determine if your client TCP/IP environment is stable. LWP_LOG.BAT is used by LWP_CHK.BAT to create LWP.LOG. NOTE: When running LWP_CHK.BAT and LWP_LOG.BAT, these files must either be in a directory on the PATH or in your current directory. 3.3 - PING.EXE 3.3.1 - R412-2B: PING now correctly handles user-interrupts (Control-C, or Control-Break) and avoids the error "Unable to open a socket, error 55". 3.3.2 - R412-2A: If the DNS server returns more than one IP address for a host name, PING.EXE will use the first address in the resulting list. 3.4 - TCPIP.EXE 3.4.1 - R42-1T: Now correctly responds to BOOTP requests from ARCNET clients. 3.4.2 - R42-1S: Implemented the SO_LINGER option for LAN WorkPlace for DOS Toolkit socket calls. This is required by Netscape Navigator and other World Wide Web browsers when the user interrupts an in-progress connection. 3.4.3 - R42-1R: Now correctly responds to a network PING. 3.4.4 - R42-1R: TCPIP.EXE no longer times out the internal route table. 3.4.5 - R42-1R: Corrected a problem with NetWare/IP (which did not work with R42-1N). 3.4.6 - R42-1Q: Fixes a problem sending UDP datagrams. This problem should only have affected DNS name resolution. 3.4.7 - R42-1P: TCP sockets opened with RFCNBIOS.EXE would sometimes be left open, even after the session was closed. 3.4.8 - R42-1P: Setting a TCP_WINDOW (under the NET.CFG PROTOCOL TCPIP) will now display a warning if the value is greater than 32767. In this situation, the value is now set to 32767, rather than 0 (as was the case in previous versions). 3.4.9 - R42-1O: The LAN WorkPlace for DOS Toolkit call so_write() would hang if the passed a buffer size larger than 32725 bytes. 3.4.10 - The correct usage for TCPIP.EXE is: TCPIP [-h] [-s] [-u] [-c=full path to NET.CFG] [-x=do not load high] -u -- Attempt to unload TCPIP.EXE. -h -- Display command line usage. -s -- Only display signon banner. -x -- Load in conventional memory only. Don't load high. -c=file -- Use 'file' as the preferred NET.CFG. Previous versions of TCPIP.EXE supported a "-W" parameter. This is now controlled in NET.CFG via the option CRITICAL_SECTION under PROTOCOL TCPIP. NOTE: R42-1T still supports the "-s" option, though future revisions of TCPIP.EXE will drop support for this command line switch. 3.4.11 - R42-1N: Now works with all versions of SLIP_PPP.COM. This includes SLIP_PPP.COM (prior to 7/20/94, 42,046 bytes) as well as the latest version of SLIP_PPP.COM found in LWP42D.EXE. NOTE: 1995/07/01: SLIP_PPP.COM has now be updated by NetWare Connect with NESL.COM, NCOMX.COM and NWREMOTE.COM. 3.4.12 - R42-1N: Now performs bounds checking when dispatching protocol control events. 3.4.13 - R42-1N: Now returns error code ENETDOWN on TCP sockets when the serial driver detects a dropped connection. 3.4.14 - R42-1N: Workstations with 3C509 cards no longer hang. The 3C509 MLID driver passed bad packets up the protocol stack, when TCPIP.EXE wasn't expecting them. These bad packets are now discarded. This was a problem with 3C509 cards and NetWare/IP. 3.4.15 - R42-1N: Resolves the RXMONSTK problem with LANalyzer for Windows 2.1. 3.4.16 - R42-1M: Entering and exiting of Windows Critical Sections were restructured. 3.4.17 - R42-1M: Now correctly deallocates all memory associated with the TSR upon unloading. Previously, the PSP did not deallocate if the TSR was loaded into upper memory (UMBs). 3.4.18 - R42-1L: TCPIP.EXE and WGTCPIP.EXE are merged into a common executable. LAN WorkGroup administrators need to change any references of WGTCPIP.EXE to TCPIP.EXE in the LANWG.BAT files. 3.4.19 - R42-1L: Now checks for COMPAQ CIM interface failures. 3.4.20 - R42-1L: Now tries to automatically load itself high into any available UMBs. If memory is unavailable, it loads in conventional memory. NOTE: To disable this functionality, invoke TCPIP.EXE with a "-x" parameter. 3.4.21 - R42-1K: Fixed a minor cosmetic bug when printing the sign-on banner. 3.4.22 - R42-1K: The frame types FDDI_SNAP and IBM_PCN2L were not displayed when the protocol stack loaded. Instead 'Unknown' was displayed. 3.4.23 - R42-1J: Fixes in the LAN WorkPlace Toolkit call connect_anr(). 3.4.24 - R42-1F: "LSLERR-DUPLICATE-ENTRY" error occurred if TCPIP.EXE was re-entered after loading WGTCPIP.EXE, or vice versa. This has been resolved by merging TCPIP.EXE and WGTCPIP.EXE. 3.4.25 - R42-1F: HARDWARE TYPE 6 was used instead of HARDWARE TYPE 1 when doing an ARP. Both HARDWARE TYPEs 1 and 6 are now supported. Only while doing an ARP send on HARDWARE TYPE 6 will the HARDWARE TYPE in the packet be sent as type 1. 3.4.26 - R42-1D: Applications would hang with Thomas Conrad 100 MBPS ARCNET cards and other ARCNET cards. 3.4.27 - R42-1N: A new feature of TCPIP.EXE automatically loads VTCPIP.386 VxD when MS Windows is started in Enhanced Mode (provided that VTCPIP.386 is on DOS PATH). Therefore, "DEVICE=VTCPIP.386" can now be removed from Windows SYSTEM.INI. VTCPIP.386 will no longer complain when MS Windows is started in enhanced mode with TCPIP.EXE not resident. 3.4.28 - R42-1A: Fixes a problem relative to Xserver (from VisionWare). The listen() call was being invoked with an argument of zero (0), which caused all incoming connections to be refused. 3.4.29 - R412-2B: No longer runs slowly or hangs when receiving packets that required re-assembly at the IP layer. 3.5 - WLIBSOCK.DLL 3.5.1 - R42-1D: WLIBSOCK.DLL no longer reports problems with multi-homed hosts. Previous versions of WLIBSOCK.DLL had the first byte set to zero and the last byte truncated. 3.5.2 - R42-1D: Now uses QUERY instead of IQUERY. Previously used a defunct INVERSE QUERY mechanism. 3.5.3 - R42-1D: Now supports partial host names. 3.5.4 - R42-1D: Now recursively walks up the DNS tree. 3.5.5 - R42-1D: RESOLV.CFG now supports up to 8 name servers. When a name resolution is started, the TCP/IP protocol stack currently queries all 8 servers at the same time. Users may want to change this so that the name servers are queried sequentially. The following enhanced commands may be placed anywhere within RESOLV.CFG. Syntax: SEARCH DNS HOSTS SEQUENTIAL This example searches the DNS first, then the HOSTS file, and search the DNS servers sequentially. Syntax: SEARCH DNS This searches DNS only and makes concurrent queries to the DNS servers. Syntax: SEARCH HOSTS This example searches the \NET\TCP\HOSTS file only. Syntax: SEARCH HOSTS DNS SEQUENTIAL This example searches the HOSTS file first, then the DNS servers sequentially. Syntax: SEARCH DNS HOSTS This is the default behavior, unless overridden. 3.5.6 - R42-1D: RESOLV.CFG now supports more than one domain name. The maximum number of domain names is: 20 The maximum number of name servers is: 8 Example \NET\TCP\RESOLV.CFG: domain novell.com domain sjf.novell.com domain prv.novell.com domain svl.novell.com domain dus.novell.com domain novell.jp.co nameserver xx.xx.xx.xx nameserver yy.yy.yy.yy nameserver zz.zz.zz.zz search dns hosts sequential 3.6 - WINSOCK.DLL 3.6.1 - R42-1A: Support for SO_LINGER implemented. SO_LINGER is a LAN WorkPlace Toolkit option passed to setsockopt() which allows the immediately tear-down of a socket once the local machine has closed the socket, rather than waiting for the remote machine to also close the socket. 3.6.2 - R-2C: Fixes a problem in gethostbyname() for multi-homed hosts. The list of address returned in struct hostent was incorrect when an address other than the last in the list contained a 0 in one of the address bytes. The problem occurs only if there is a 0 in one of the address bytes and there is more than one address for the host. 3.6.3 - R-2C: Fixes a problem where WASIsBlocking() would sometimes return TRUE while there was an outstanding call to WSAAsyncGetHostByName() yet no outstanding blocking function was being serviced. 3.6.4 - R-2B: Now returns WSASYSNOTREADY on WSAStartup() if stack is not loaded. 3.6.5 - R-2B: Now allows cancel of gethostbyname(). 3.6.6 - R-2B: Minimizes fixed low memory usage. 3.6.7 - R-2B: Now supports 16 addresses in struct hostent. 3.6.8 - R-2B: gethostbyname() now supports longer names (more than 32 bytes). 3.7 - VTCPIP.386 3.7.1 - R412-2a: VTCPIP.386 is now auto-loaded by TCPIP.EXE when Windows 3.1 Enhanced Mode (or later) loads without requiring an entry in SYSTEM.INI (DEVICE=VTCPIP.386). This VxD must be on the PATH. If TCPIP.EXE is not loaded when Windows starts, VTCPIP.386 won't complain about not finding the Novell 16-bit Client TCP/IP protocol stack. 3.8 - NOVASYNC.EXE 3.8.1 - R41-2B: Corrected internal timing problems which could cause General Protect Failures. 4 - ENHANCEMENT HISTORY 4.1 - NET.CFG: Windows Critical Section Enhancements. New Windows Critical Section code was written. By default, this code is enabled and the default for this option is YES. If there are any timing issues that are discovered after upgrading to the new TCPIP.EXE contained within this patch, disable this option with a value of NO. The syntax is as follow: PROTOCOL TCPIP CRITICAL_SECTION YES | NO Example: PROTOCOL TCPIP CRITICAL_SECTION YES ## Default is YES. 4.2 - NET.CFG: Dead Router Detection and Recovery The protocol stack will automatically switch to a backup router if the primary router fails. Switching to a backup router prevents the interruption of user applications. The switch occurs when the selected router does not respond to an ARP request or when the protocol stack detects excessive TCP retransmissions. Router switching applies to default routers as well as routers in the Route Cache Table. The syntax is: PROTOCOL TCPIP IP_ROUTER {ip_address} | {host_address} In the syntax given above, the IP_ROUTER line may be replicated up to 3 times. Example: PROTOCOL TCPIP IP_ROUTER 128.57.4.254 ## First router IP_ROUTER 128.57.4.253 ## Second router IP_ROUTER 128.57.4.252 ## Third router 4.3 - NET.CFG: Adding Static Routes. Allows you to set a permanent entry in the routing table to associate the destination network host address with a router address. Static route configuration places the indicated route(s) into the IP routing database. IP uses these routes in addition to dynamically discovered routes to direct packets. Static routes may either be added to manually NET.CFG or added by using d:\NET\BIN\LWPCON.EXE (Local Workstation | Tables | Routing Tables). The syntax is as follow: PROTOCOL TCPIP ROUTE { HOST | NET } {address} {router_address} Example 1: PROTOCOL TCPIP ROUTE HOST 128.57.225.24 128.57.4.19 Example 2: PROTOCOL TCPIP ROUTE NET 128.90.0.0 128.57.6.55 4.4 - NET.CFG: New Frame Types Supported TCPIP will now automatically perform a protocol registration for frame types FDDI_SNAP and IBM_PCN2_SNAP. Example 1: LINK DRIVER FDDI_MLID FRAME FDDI_SNAP Example 2: LINK DRIVER IBM_PCN2_MLID FRAME IBM_PCN2_SNAP 4.5 - NET.CFG: Tuning the TCP Protocol Receive Window Size. WARNING: For performance reasons, Novell's 16-bit TCP/IP protocol stack does not calculate the window size at each packet. Instead, the value specified by the TCP_WINDOW parameter is blindly used. Increasing this value above the default of 2880 can cause TCP packet retransmissions due to dropped packets. This problem will be addressed with Novell's 32-bit TCP/IP protocol stack which will be available with Client-32 for DOS / Windows. Establishes the TCP protocol's initial maximum receive window size. This controls how many back-to-back packets a remote host will transmit. Since the TCP window size is a function of the ability to receive the data, adjusting the LSL BUFFERS is necessary to accommodate larger TCP_WINDOW settings. A simplistic relation (formula) which describes the TCP_WINDOW size setting is: window LESS THAN OR EQUAL TO (number_buffers * (packet_frame_size - packet_header_size)) To simplify this calculation, use zero for packet_header_size. Ethernet has 16 bytes of header overhead. FDDI has approximately 58 symbols of header overhead (approximately 36 bytes). ARCNet has 9 bytes of header overhead. Token Ring has 21 bytes of overhead. If other protocol stacks are utilizing the ODI BUFFERS for incoming data, the dynamic TCP_WINDOW size will be adjusted accordingly. A TCP_WINDOW size of 0 (only found in LAN traces) indicates that the sending host should wait until the receiving host's protocol stack has available buffers to receive the data. The syntax is: LINK SUPPORT BUFFERS {buffers} {frame_size} PROTOCOL TCPIP TCP_WINDOW {window_size} The minimum {window_size} is 512 and maximum is 32767. The default {window_size} is 2880. The {frame_size} for ETHERNET_II is 1518. The {frame_size} for FDDI is 4558. The {frame_size} for ARCNet is 517. The value of {frame_size} is the packet headers plus the packet data for a given media type. Ethernet Example: LINK SUPPORT BUFFERS 16 1518 ## Allow 16 inbound frames. PROTOCOL TCPIP TCP_WINDOW 17856 ## 12 packets sans headers. This example arbitrarily leaves 4 packets for use by other protocol stacks. Token Ring Example: LINK SUPPORT BUFFERS 8 4202 ## Allow 8 inbound frames. PROTOCOL TCPIP TCP_WINDOW 20905 ## 5 packets sans headers. This example arbitrarily leaves 3 packets for use by other protocol stacks. FDDI Example: LINK SUPPORT BUFFERS 10 4558 ## Allow 10 inbound frames. PROTOCOL TCPIP TCP_WINDOW 22500 ## 5 packets sans headers. This example arbitrarily leaves 5 packets for use by other protocol stacks. ARCNet Example: LINK SUPPORT BUFFERS 12 517 ## Allow 12 inbound frames PROTOCOL TCPIP TCP_WINDOW 6096 ## 12 packets sans headers. This example arbitrarily leaves 0 packets for use by other protocol stacks. 4.6 - NET.CFG: TCP Maximum Segment Size Tuning Controls the maximum TCP packet segment size to be used when communicating with other nodes. This packet segment size must be smaller than the current frame size. It might also be used to avoid down-stream packet fragmentation and subsequent reassembly if the packet crosses a heterogeneous protocol router, where the packet size shrinks. The minimum recommended segment size is 200 bytes. The maximum segment size depends on a particular MLID and is beyond the scope of this document. Example: PROTOCOL TCPIP TCP_MAXSEGSIZE 512 This example sets the maximum packet size to 512 bytes. This means that out-bound packets will be limited to 512 bytes of data (excluding headers). 4.7 - NET.CFG: Configuration of minimum and maximum transmission timeouts. TCPIP.EXE now allows the configuration of the minimum and maximum retransmission timeouts. An example of timeout options in NET.CFG is as follow: PROTOCOL TCPIP TCP_MINRXMIT 1 ## 1 tick TCP_MAXRXMIT 540 ## 540 ticks TCP_MINRXMIT ranges between 1 and 540 ticks (default is 1). TCP_MAXRXMIT ranges from 540 to 1080 (default is 540). Example: Values are in units of 55 milliseconds (ticks). Since the standard BIOS tick rate is 18.2 times per second, you would use the following setting to have retransmits fire after approximately 1 second. PROTOCOL TCPIP TCP_MINRXMIT 18 ## 18 * 55 = 990ms (~1 second) 4.8 - NET.CFG: Duplicate IP Address Detection. Detects whether the assigned local IP address is already being used by another node on the local network. The IP address can be obtained either through NET.CFG configuration or dynamically from the BOOTP or RARP server. If TCP/IP detects a duplicate IP address, TCPIP.EXE will not load and the following error message appears: FATAL: IP address assigned is already in use by: NNNNNNNNNNNN. where NNNNNNNNNNNN is the six-byte hardware address of the node currently using the IP address. 5 - WinSock v1.1 Compliance Development with WINSOCK requires the WINSOCK.H file and the WINSOCK v1.1 specification also an import library of WINSOCK.DLL must be created. The WINSOCK.H file and WINSOCK v1.1 specification can be obtained at the following Internet addresses: ftp://sunsite.unc.edu/pub/micro/pc-stuff/ms-windows/winsock/winsock-1.1 5.1 - WINSOCK.DLL Dependencies After application of TCP16.EXE, WINSOCK.DLL relies on WLIBSOCK.DLL, NOVASYNC.EXE, and TCPIP.EXE if you are using Novell's 16-bit TCP/IP protocol stack. This might be via any one of the products listed above. 5.2 - UNSUPPORTED OR IMPLEMENTATION DIFFERENCES The following list identifies features of Windows Sockets that are unsupported or supported differently by Novell's 16-bit TCP/IP protocol stack. - MSG_PEEK is ignored on recv() or recvfrom(). - MSG_DONTROUTE is ignored on send() or sendto(). - The socket control option SIOACATMARK is not supported. WSAEINVAL will be returned if used. 5.3 - Socket Handling Options Summarized. The following notes refer to section 5.5 which summarizes handling of socket options. 5.3.1 - The following socket options default to TRUE and cannot be changed to FALSE. SO_BROADCAST SO_DONTLINGER SO_OOBINLINE 5.3.2 - The following socket options default to FALSE and cannot be changed to TRUE. SO_DEBUG SO_DONTROUTE SO_ERROR 5.3.3 - Out-of-Band Data Since SO_OOBINLINE is always TRUE, specifying MSG_OOB on recv() or recvfrom() has no effect. Out-of-band data is always received as normal data. Out-of-band data may be sent. 5.4 - Sockets 5.4.1 - The maximum number of sockets supported is 31. 5.4.2 - Raw Sockets You can create sockets of type SOCK_RAW using the socket function. The supported functions for raw sockets are: socket(), ioctlsocket() to set non-blocking mode, sendto(), recvfrom(), and closesocket(). 5.4.3 - Raw Sockets and Ping Raw sockets are supported only for Ping. The application is responsible for building and processing ICMP headers. 5.4.4 - Terminating communications Either do not use shutdown() at all, or use shutdown() only when preparing to terminate communications (for example, to close the socket). 5.4.5 - FIN packet If you use shutdown() to disable sending, Novell's 16-bit TCP/IP protocol stack sends a FIN packet. An application should not issue a send() or sendto() after a shutdown() which has disabled sending. 5.4.6 - Receiving After a Shutdown An application should not issue a recv() or recvfrom() after a shutdown() that disabled receiving. 5.5 - Socket Options
 Option        Default  setsockopt() Return Values
 ------------- -------- --------------------------
 SO_RCVBUF     4096     yes
 SO_SNDBUF     4096     yes
 SO_ACCEPTCONN FALSE    WSAENOPROTOOPT
 SO_BROADCAST  TRUE     WSAENOPROTOOPT if setsockopt() called with
SO_BROADCAST.
 SO_DONTLINGER TRUE     WSAENOPROTOOPT if setsockopt() called with
SO_DONTLINGER.
 SO_OOBINLINE  TRUE     WSAENOPROTOOPT if setsockopt() called with
SO_OOBINLINE.
 SO_DEBUG      FALSE    WSAENOPROTOOPT if setsockopt() called with SO_DEBUG.
 SO_DONTROUTE  FALSE    WSAENOPROTOOPT if setsockopt() called with
SO_DONTROUTE.
 SO_ERROR      FALSE    WSAENOPROTOOPT if setsockopt() called with SO_ERROR.
 SO_TYPE       none     WSAENOPROTOOPT
 SO_KEEPALIVE  FALSE    yes
 SO_REUSEADDR  FALSE    yes
 TCP_NODELAY   not supp WSAENOPROTOOPT
 SO_LINGER     FALSE    yes
 
Calling getsockopt() with TCP_NODELAY will return WSAENOPROTOOPT. All other options are supported. Self-Extracting File Name: tcp16.exe Files Included Size Date Time ..\ TCP16.TXT (This file) INSTALLR.BAT 8616 3-26-96 12:50:12 pm LWP_CHK.BAT 14436 3-31-95 5:01:00 pm LWP_LOG.BAT 1613 3-31-95 5:01:00 pm NOVASYNC.EXE 4960 3-5-96 5:01:00 pm PING.EXE 54666 3-5-96 5:01:00 pm PING.MSG 2500 3-5-96 5:01:00 pm PING.PIF 545 7-21-92 5:01:00 pm TCPIP.EXE 71169 3-5-96 5:01:00 pm VTCPIP.386 10995 3-5-96 5:01:00 pm WHICH.EXE 26751 12-7-94 5:01:00 pm WINSOCK.DLL 35632 3-5-96 5:01:00 pm WLIBSOCK.DLL 50170 3-5-96 5:01:00 pm Installation Instructions: Install this patch by: - Unpack this archive by running TCP16 in an empty TEMP directory. - Running the INSTALLR.BAT batch file, or - COPYing the files in this patch into the proper product \NET\BIN directory (d:\NET\BIN, or server/volume:NET\BIN). - Run LWP_CHK.BAT and address any warnings that are applicable. ----------------------------------------------------------------- Any trademarks referenced in this document are the property of their respective owners. Consult your product manuals for complete trademark information. -----------------------------------------------------------------