NDIS Implementation Information for IBM LAN Systems - IBM OS/2 LAN Technical Reference Extensions

About This Publication
This publication explains the changes made to the LAN Adapter and Protocol Support (LAPS) shipped with IBM Extended Services for OS/2 and IBM OS/2 LAN Server Version 2.0 and later, and NTS/2 (Network Transport Services/2) Version 1.0. The information in this publication can also be obtained from IBM in the Supplement to the IBM LAN Technical Reference.

Related Publications
 * IBM Network Transport Services/2 LAN Adapter and Protocol Support Configuration Guide
 * IBM Extended Services for OS/2 Network Administration Guide
 * IBM Extended Services for OS/2 Communications Manager Configuration Guide
 * IBM Extended Services for OS/2 LAN Adapter and Protocol Support Configuration Guide
 * IBM Extended Services for OS/2 Programming Services and Advanced Problem Determination for Communications
 * IBM OS/2 LAN Server Version 3.0 Network Administrator Reference Volume 1: Planning and Installation
 * IBM OS/2 LAN Server Version 3.0 Network Administrator Reference Volume 2: Performance Tuning Guide
 * IBM OS/2 LAN Server Version 3.0 Application Programmer's Reference
 * IBM OS/2 Server Version 2.0 Network Administrator Reference Volume 1: Planning and Installation
 * IBM OS/2 LAN Server Version 2.0 Network Administrator Reference Volume 2: Performance Tuning
 * IBM OS/2 LAN Server Version 2.0 Network Administrator Reference Supplement for OS/2 2.0
 * IBM Local Area Network Technical Reference
 * TCP/IP for OS/2: LAPS Introduction and Configuration Guide
 * 3Com/Microsoft LAN Manager Network Driver Interface Specification Version 2.0.1 Final
 * NDIS Implementation Information for IBM LAN Systems, Extended NIF Format
 * NDIS Implementation Information for IBM LAN Systems, NDIS Extensions
 * NDIS Implementation Information for IBM LAN Systems, OS/2 Messaging and National Language Support
 * NDIS Implementation Information for IBM LAN Systems, IBM OS/2 LAN Technical Reference Extensions

1.0 NDIS Overview
The Network Driver Interface Specification (NDIS) developed jointly by 3Com and Microsoft is a standardized interface for network adapter drivers and protocol drivers. NDIS separates protocol handling from hardware manipulation by defining functions that protocol drivers and network adapter drivers must provide to each other. It defines a configuration and binding process, which is handled by the protocol manager. NDIS has become an accepted industry standard, providing a common, open interface that enables different manufacturers of network adapters and LAN software to communicate. Figure 1 illustrates the major software components in the NDIS environment.



A network adapter driver provides the communication between a network adapter and a protocol. The main function of the network adapter driver is to support network packet reception and transmission. A protocol driver provides the communication between an application and a network adapter driver. The main function of the protocol manager is to read configuration information from the configuration file, PROTOCOL.INI, and make it available to the network adapter drivers and protocol drivers. It also coordinates connections between protocol drivers and network adapter drivers. Before the protocol driver and the network adapter driver can communicate, they must be bound together (entry points are exchanged). NETBIND initiates the binding process based on information in PROTOCOL.INI.

2.0 LAN Adapter and Protocol Support Overview
LAN Adapter and Protocol Support is network communication software that consists of NDIS-compliant protocol drivers, NDIS-compliant network adapter drivers, API support software, and configuration and installation software for these drivers. LAN Adapter and Protocol Support is the network communication software necessary to support the LAN connectivity for OS/2 LAN products, and is a subsystem in IBM Extended Services for OS/2, IBM OS/2 LAN Server Version 2.0, and IBM LAN Enabler Version 2.0. A version of LAN Adapter and Protocol Support that contains only a TCP/IP protocol stack is included in TCP/IP for OS/2 1.2.1. A later release of LAN Adapter and Protocol Support is included in LAN Server 3.0 and NTS/2.

IEEE 802.2 and NETBIOS are the protocol drivers available with LAN Adapter and Protocol Support. A device driver interface API and a dynamic link interface API exist for both protocols. The IEEE 802.2 and NETBIOS APIs and the IEEE 802.2 and NETBIOS protocols are described in detail in the IBM Local Area Network Technical Reference.

NDIS allows multiple protocols to bind to the same network adapter driver. Therefore, both the NETBIOS and 802.2 protocol drivers can bind to the same network adapter driver. Figure 2 shows the relationship between LAN adapters, network adapter drivers, protocol drivers, and applications.



In addition to the OS/2 API support, LAN Adapter and Protocol Support provides OS/2 2.0 Virtual LAN Support. This will enable existing DOS NETBIOS and IEEE 802.2 applications running in the OS/2 2.0 Virtual DOS Machine environment to share an adapter with other DOS, OS/2 NETBIOS, and IEEE 802/2 applications running on the same machine.

Configuration parameters for LAN Adapter and Protocol Support network adapter drivers and protocol drivers exist in the file PROTOCOL.INI, which also contain the binding information for each driver. For a detailed explanation of configuration parameters and PROTOCOL.INI see the Extended Services Communications Manager Configuration Guide, or the Extended Services LAN Adapter and Protocol Support Configuration Guide, or the OS/2 LAN Server Network Administrator Reference Volume 2: Performance Tuning. For the LAN Server 3.0 and NTS/2 release of LAN Adapter and Protocol Support, see the LAN Adapter and Protocol Support Configuration Guidefor a detailed explanation of configuration parameters and PROTOCOL.INI. The network information file (NIF) supports the user interface in providing network driver information to the PROTOCOL.INI.

3.0 LAN Adapters Supported
The following network adapters are supported by IBM Extended Services for OS/2, IBM OS/2 LAN Server, and NTS/2. See 4.0, "Deliverables" for the network adapter drivers included with LAN Adapter and Protocol Support.

3.1 ISA Adapters (AT Bus)
The network adapters listed below are designed for the Industry Standard Architecture Bus.
 * IBM Adapters1
 * IBM Token-Ring Network Adapter II
 * IBM Token-Ring Network 16/4 Adapter
 * IBM Token-Ring Network 16/4 Adapter II
 * IBM PC Network Broadband Adapter II
 * IBM PC Network Adapter 11 Frequency 2
 * IBM PC Network Adapter II Frequency 3
 * IBM PC Network Baseband Adapter II
 * IBM 3174 Peer Communications Network Using the 3278/79 Emulation Adapter
 * OEM Adapters2
 * DCA IRMAtrac
 * NCR WaveLAN
 * SMC EtherCard PLUS
 * Ungermann-Bass NIUpc
 * Western Digital EtherCard PLUS
 * 3Com Etherlink II
 * Note:1 Network adapter drivers will be made available for IBM adapters that announce NDIS support after the initial shipment of any IBM product containing LAN Adapter and Protocol Support.
 * 2 IBM is putting in place enablement support for development and test if network adapter drivers produced by network interface card vendors.

3.2 MCA Adapters (Micro Channel)
The network adapters listed below are designed for the Micro Channel Architecture Bus.
 * IBM Adapters1
 * IBM Token-Ring Network Adapter/A
 * IBM Token-Ring Network 16/4 Adapter/A
 * IBM Token-Ring Network 16/4 Busmaster Server Adapter/A
 * IBM Adapter/A for Ethernet Networks
 * IBM PC Network Broadband Adapter II/A
 * IBM PC Network Adapter II/A Frequency 2
 * IBM PC Network Adapter II/A Frequency 3
 * IBM PC Network Baseband Adapter II/A
 * IBM 3174 Peer Communications Network Using the 3270 Connection
 * OEM Adapters2
 * DCA IRMAtrac
 * NCR WaveLAN
 * SMC EtherCard PLUS/A
 * Ungermann-Bass NIUps/2
 * Western Digital EtherCard PLUS/A
 * 3Com EtherLink/MC

4.0 Deliverables
The following files are provided with LAN Adapter and Protocol Support:

Note: 3 Not part of NTS/2 or LAN Server 3.0. 4 New for NTS/2 nad LAN Server 3.0.

5.0 Programming Information - NETBIOS API
The release of NETBIOS included in LAN Adapter and Protocol Support is NETBIOS 4.0. NETBIOS 4.0 is NDIS-based. This section documents the changes to the API as a result of the new release. This section also contains answers to user questions about the OS/2 NETBIOS API that have not yet been included in the IBM Local Area Network Technical Reference.

5.1 No-Wait Command and Post Routines
When using a no-wait command at either the dynamic link or device driver interface, the user commonly has a post routine that gets control upon command completion. When the post routine is called, NETBIOS is running on interrupt. Therefore, the post routine should be as short in duration as possible. It is valid to issue NCB commands inside the post routine as long as the command is a no-wait command.

For the dynamic link interface, the NETBIOS stack used by the thread that calls the user's post routine is 4KB. Before calling the post routine, NETBIOS pushes the NCB pointer ES: BX on the stack. Upon entry, to the user's post routine, ES and BX are at the following location in the stack frame.

Use a C calling convention, not Pascal, to access the NCB pointer on the stack.

The priority of the NETBIOS dynamic link interface thread that calls the user's post routine is set to priority class fixed high and priority delta zero. Some dynamic link interface applications have experienced performance degradation when setting threads to a priority higher than the NETBIOS post routine thread.

5.2 Dynamic Link Interface
The ACS.LIB library shipped with IBM OS/2 Extended Services contains the dynamic link definition for the NETBIOS DLL user. ACS.LIB is not included in IBM OS/2 LAN Server Version 2.0. However, the user can create a .DEF file to create the same definition without linking to ACS.LIB. The .DEF file should contain the following statements: IMPORTS ACSNETB.NETBIOS For the dynamic link interface NETBIOS locks the data buffers (NCB_BUFFER) associated with the NCB. The overhead associated with operating system locks and unlocks may be minimized if the application uses the same segment or segments for all of its data buffers.

5.3 Device Driver Interface
In an application program using the NETBIOS OS/2 device driver interface, the register pair ES: BX contains a pointer to the NCB issued. This pointer must be a GDT when using the device driver interface.

5.4 Memory Restrictions
OS/2 2.0 introduces a paged memory model. However, NETBIOS 4.0 is a 16-bit device driver. Any memory passed to NETBIOS in the form of NCBs or buffers must be contiguous in physical memory. The IBM C Set/2 compiler provides the /Gt-compiler option, which defines 16-bit versions of the malloc family of functions. Use of this option guarantees that memory allocated and freed will not cross a 64KB boundary. Refer to the IBM C Set/2 User's Guide for more information on compiler options. OS/2 2.0 ensures that a 16-bit application's memory is physically contiguous.

The NETBIOS API device driver uses a single 64K data area for allocation of resources. To determine the resources to allocate for NETBIOS APIs, you need to know the RAM usage of the NETBIOS API driver to stay within the 64K limitation. The sum of the following must be less than or equal to 64KB:
 * 11200 bytes overhead
 * 95 bytes for each NCB available to the NETBIOS API
 * 15x(NCBs available to the NETBIOS API - 15)
 * (use 0 if less that 0)
 * 990 for each adapter configured for NETBIOS

Example 1

From IBMLAN.INI [networks] net1=netbeui$,0,LM10, 32, 50, 14
 * This information is read by the redirector at device initialization time.

From IBMLAN.INI [NETBEUI_nif] DriverName = netbeui$ Bindings = IBMTOK_nif NCBS = 95 NCBS available to NETBIOS API's is 45. 50 are configured for adapter 0 on the netl line in IBMLAN.INI. 95 are configured for adapter 0 in PROTOCOL.INI.

Example 2

From IBMLAN.INI [networks] net1=netbeui$,0,LM10, 32, 50, 14
 * This information is read by the redirector at device initialization time.

From IBMLAN.INI [NETBEUI_nif] DriverName = netbeui$ Bindings = IBMTOK_nif, ELNKMC_nif NCBS = 95 NCBS available to NETBIOS API's is 135. 50 are configured for adapter 0 on the netl line in IBMLAN.INI. 95 are configured for adapter 0, and 95 are configured for adapter 1 in PROTOCOL.INI.

5.5 Resource Information
NETBIOS uses the message logging facility of LAN Adapter and Protocol Support at IPL time. Following is the NETBIOS information extracted from a log: IBM 0S/2 NETBIOS 4.0 Adapter 0 has 32 NCBs, 32 sessions, and 32 names available to NETBIOS applications. NETBI0S 4.0 is loaded and operational. NETBIOS will log the sessions, commands, and names available to the NETBIOS API user for each adapter configured. In this example, only adapter 0 is configured. NETBIOS 4.0 will Support a maximum of four adapters. A maximum of 251 application programs (processes) can use NETBIOS 4.0 simultaneously.

5.6 NCB Reserve Field Change
The only returned field defined for the NCB_RESERVE area of the NCB is offset 6. It will contain the last Adapter Check reason code. Refer to the IBM Local Area Network Technical Reference for information on Adapter Check reason codes.

5.7 NCB.STATUS Command Extension
The NCB.STATUS command has been extended to return the locally administered address on local status. Offset 36 of the status buffer is now defined for OS/2 for local status only. If the NCB is passed to the dynamic link interface, offset 36 is an LDT; if the NCB is passed to the device driver interface, offset 36 is a GDT. The LDT or GDT is the address of the extended status information. The locally administered address is returned in the extended status information at offset 40 through 45. If a locally administered address is not configured, the adapter's encoded address is returned. Other areas defined in the extended status information are: The NCB.STATUS command originally reported only that the adapter or type was Token-Ring or PC Network. The command has been extended to support additional adapter types as defined below:
 * Bytes 2 and 3 contain the latest NDIS Open Adapter return code
 * Bytes 4 and 5 contain the latest NDIS Ring Status status code
 * Bytes 6 and 7 contain the latest NDIS Adapter Check reason code.

5.8 Piggybacked Acknowledgement Behavior
NETBIOS 4.0 will not attempt to piggyback acknowledgements if the data is received on an NCB.RECEIVE; a DATA_ACK will be sent upon receipt of the data. However, if an NCB.RECEIVE.ANY is used to receive data, the protocol will attempt to piggyback the acknowledgement. Piggybacked acknowledgement is only applicable for the NETBIOS device driver interface. Piggybacked acknowledgement is configurable. However, the configuration parameter sets piggybacking for the adapter, not the application. Therefore, use caution when changing this parameter. It will affect the performance of other NETBIOS applications. See the Extended Services Communications Manager Configuration Guide, the Extended Services LAN Adapter and Protocol Support Configuration Guide, or the OS/2 LAN Server Network Administrator Reference Volume 2: Performance Tuningfor more information on NETBIOS configuration parameters.

6.0 Programming Information - IEEE 802.2 API
The IEEE 802.2 protocol stack included in LAN Adapter and Protocol Support is NDIS-based. This section documents the changes to the API as a result of the new release. This section also contains answers to user questions about the OS/2 IEEE 802.2 API that have not yet been included in the IBM Local Area Network Technical Reference.

6.1 Dynamic Link Interface
The ACS.LIB library shipped with IBM OS/2 Extended Services contains the dynamic link definition for the IEEE 802.2 DLL user. ACS.LIB is not included in IBM OS/2 LAN Server Version 2.0. However the user can create a .DEF file to create the same definition without linking to ACS.LIB. The .DEF file should contain the following statements: IMPORTS ACSLAN. ACSLAN For the dynamic link interface IEEE 802.2 locks the data buffers associated with the CCB. The overhead associated with operating system locks and unlocks may be minimized if the application uses the same segment or segments for all of its data buffers.

6.2 Device Driver Interface
In an application program using the IEEE 802.2 OS/2 device driver interface, the register pair ES: BX contains a pointer to the CCB issued. This pointer must be a GDT when using the device driver interface.

6.3 Memory Restriction
OS/2 2.0 introduces a paged memory model. However, the IEEE 802.2 protocol stack is a 16-bit device driver. Any memory passed to the IEEE 802.2 protocol stack in the form of CCBs or buffers must be contiguous in physical memory. The IBM C Set/2 compiler provides the /Gt compiler option, which defines 16-bit versions of the malloc family of functions. Use of this option guarantees that memory allocated and freed will not cross a 64KB boundary. Refer to the IBM C Set/2 User's Guide for more information on compiler options. OS/2 2.0 ensures that a 16-bit application's memory is physically contiguous.

7.0 Differences and Restrictions
The following is a list of differences between the version of LAN Adapter and Protocol Support included in IBM Extended Services for OS/2 and IBM OS/2 LAN Server Version 2.0 and the network communication software included in IBM OS/2 Extended Edition 1.3 and IBM LAN Server 1.2. Many of the changes are a result of moving to NDIS-compliant network adapter drivers and protocol drivers. Some, such as support of four network adapters, are enhancements. The restrictions resulting from these changes are related to NDIS requirements and OS/2 2.0.


 * A protocol driver using the NDIS interface now implements all the LLC function. The LLC function is handled in the protocol driver, not on the adapter. For the Token-Ring Network adapters, the LLC function is now handled in the protocol driver.
 * The LAN protocol drivers will now bind to a maximum of four network adapter drivers. Therefore, adapter numbers 0 through 3 are valid parameters for the NETBIOS API and the IEEE 802.2 CCB2 and CCB3 APIs.
 * The NDIS interface now restricts the number of chained transmit buffers to 8. Therefore, if an attempt is made to transmit a frame that is contained in more than 8 buffers, the CCB2 and CCB3 TRANSMlT command will be returned with a return code of X'23'. This return code will also be reported if the internal supply of NDIS frame descriptors is exhausted.
 * The NDIS interface now restricts the number of chained receive buffers to 8. Therefore, if an attempt is made to receive a frame that is larger than 8 SAP buffers, the CCB2 and CCB3 RECEIVE command will be resumed with a return code of X'18'
 * IBM Token-Ring and PC Network network adapter drivers now implement NDIS 2.02 to allow the protocol stack to access adapter-specific information. For network adapter drivers that do not support NDIS 2.02, the following CCB2 and CCB3 return fields are undefined:
 * DIR.INITIALIZE
 * BRING_UPS
 * SRAM_ADDRESS
 * VIRTUAL_SRAM_ADDRESS
 * VIRTUAL_MMIO_ADDRESS
 * DIR.OPEN.ADAPTER
 * OPEN_ERROR_CODE
 * BRING_UPS
 * DIR.STATUS
 * MICROCODE_LEVEL
 * ADAPTER_PARMS_ADDR
 * ADAPTER_MAC_ADDR
 * DIR.OPEN.ADAPTER command for CCB2 and CCB3. The value resumed in the parameter DATA_HOLD_BUFFERS, offset 24 of the Adapter Parms Open Parameters, is the value present in the characteristic table for the network adapter driver to which the IEEE 802.2 protocol is bound. The value resumed in the parameter DHB_BUFFER_LENGTH, offset 22 of the Adapter Parms Open Parameters, minus 6 is the length of the maximum guaranteed l-field.
 * The term data hold buffer (DHB) is only applicable when the network adapter driver is Token-Ring.
 * DIR.READ.LOG adapter log change. The adapter log data resumed by DIR.READ.LOG will be the data returned by a Read Error Log request to the network adapter driver. For IBM Token-Ring and PC Network adapters, the format is unchanged from the previous version of adapter support software.
 * If the network adapter driver does not support the Read Error Log function, the adapter log contents will be undefined.
 * DIR.SET.FUNCTIONAL.ADDRESS command for CCB2 and CCB3. The following applies only to network adapter drivers that do not support functional addresses, as indicated by the Service Flags parameter in the MAC Service Specific Characteristics table. For each bit to be set in the functional address, an NDIS Add Multicast Address command is issued to add a multicast address with that bit on. For each bit to be reset in the functional address, an NDIS Delete Multicast Address command is issued to delete the corresponding multicast address. If the number of bits to be in the functional address exceeds the number of available multicast addresses, the DIR.SET.FUNCTIONAL.ADDRESS command is not executed and a return code of X'1E' is posted to the CCB.
 * The algorithms for calculating RAM, shared RAM, and work area are new. Refer to the Extended Services Communications Manager Configuration Guide, the Extended Services LAN Adapter and Protocol Support Configuration Guide, or the OS/2 LAN Server, Network Administrator Reference Volume 2: Performance Tuning for the calculation tables.
 * NETBIOS provided in LAN Adapter and Protocol Support is NETBIOS Version 4.0.
 * A maximum of 251 application programs (processes) can use NETBIOS 4.0 simultaneously.
 * The only returned field defined for the NCB_RESERVE area of the NCB is offset 6. This field will contain the last Adapter Check reason code.
 * NCB.STATUS command. This command has been extended to return the locally administered address on local status. Offset 36 of the status buffer is now defined for local status only. If the NCB is passed to the DLL interface, offset 36 is an LDT; if the NCB is passed to the DD interface, offset 36 is a GDT. The LDT or GDT is the address of the extended status information. The locally administered address is returned in the extended status information at offset 40 through 45. If a locally administered address is not configured, the adapter's encoded address is returned. Other areas defined in the extended status information are
 * Bytes 2 to 3 contain the latest NDIS Open Adapter return code
 * Bytes 4 to 5 contain the latest NDIS Ring Status status code
 * Bytes 6 to 7 contain the latest NDIS Adapter Check reason code.
 * NETBIOS 4.0 will not attempt to piggyback acknowledgements if the data is received on an NCB.RECEIVE; a DATA_ACK will be sent upon receipt of the data. However, if an NCB.RECEIVE.ANY is used to receive data, the protocol will attempt to piggyback the acknowledgment. Piggybacked acknowledgment is only applicable for the NETBIOS device driver interface. Piggybacked acknowledgment is configurable. However, the configuration parameter sets piggybacking for the adapter, not the application. Therefore, use caution when changing this parameter. It will affect the performance of other NETBIOS applications. See the Extended Services Communications Manager Confguration Guide, the Extended Services LAN Adapter and Protocol Support Configuration Guide, or the OS/2 LAN Server Network Administrator Reference Volume 2: Performance Tuningfor more information on NETBIOS configuration parameters.
 * The Adapter Status parameter table returned by the CCB2 and CCB3 DIR.STATUS command may contain all zeroes if the network adapter driver to which IEEE 802.2 is bound is not NDIS Version 2.02.
 * OS/2 2.0 Virtual DOS LAN Support operates only on OS/2 2.0 or greater.
 * OS/2 2.0 Virtual DOS LAN Support will share the adapter with other OS/2 and DOS NETBIOS applications. Therefore, a DOS-based NETBIOS application can experience problems if it assumes that it is the only user of the adapter. For example, NCB.STATUS will return the names in the adapter's name table, which includes names in use for all NETBIOS applications using the adapter. The LTSVCFG configuration utility is provided to handle some inconsistencies between the DOS and OS/2 NETBIOS environment. Refer to the OS/2 LAN Server Network Administrator Reference Supplement for OS/2 2.0for more information on OS/2 2.0 Virtual DOS LAN Support configuration.
 * The Token-Ring Network 16/4 Busmaster Server Adapter/A is a DMA adapter. Due to a hardware limitation, the adapter does not access memory above a boundary of 16MB in physical memory. Therefore, any 32-bit device driver written to the IEEE 802.2 device driver interface API or the NISTBIOS device driver interface API that wants to successfully run on the Token-Ring Network 16/4 Busmaster Server Adapter/A network adapter must ensure that all memory passed to the API exists below the 16MB boundary in physical memory. The 16-bit device driver interface applications, 16-bit dynamic link interface applications, and 32-bit dynamic link interface applications are not affected.
 * Memory passed to a LAN Adapter and Protocol Support interfaces must be contiguous in physical memory. OS/2 2.0 introduces a paged memory model. However, the IEEE 802.2 protocol stack and the NETBIOS 4.0 protocol stack are both 16-bit device drivers. Any memory passed to either protocol stack in the form of control blocks or buffers must be contiguous in physical memory. OS/2 2.0 ensures that a 16-bit application's memory is physically contiguous. See also 5.0, "Programming Information NETBIOS API" and 6.0, "Programming Information - IEEE 802.2 API".
 * The 3COM/Microsoft LAN Manager Network Driver Interface Specification Version 2.0/ Final defines syntax guidelines for the PROTOCOL.INI files. The specification states that all PROTOCOL.INI keywords that contain multiple values on the right-hand side of the equals sign may be separated by commas, semicolons, or spaces. However, the LAN Adapter and Protocol Support Configuration utility included with IBM Extended Services for OS/2 and IBM OS/2 LAN Server Version 2.0 supports commas and semicolons as separators but does not support spaces as separators.

8.0 Message Logging Facility
LAN Adapter and Protocol Support includes a message logging facility. This facility serializes logging of messages to a common log file, or optionally, to the screen. Service is provided for both ring 0 and ring 3 users. The LAN Adapter and Protocol Support protocol and network adapter drivers log messages at IPL time to the common log file LANTRAN.LOG. Some of the network adapter drivers will also log error messages at run time. The contents of the file help with debugging information as well as with resource and configuration information.

Figure 3 is a screen display of LANTRAN.LOG. In this example, the NETBIOS protocol driver and the IEEE: 802.2 protocol driver are bound to the Token-Ring network adapter driver. The Token-Ring adapter is configured as adapter 0 for both protocols. IBM OS/2 LANMSGDD [12/03/91] 2.01 is loaded and operational. IBM OS/2 LAN Protocol Manager IBM OS/2 NETBEUI 2.01 IBM - IBM Token-Ring Network Driver, Version V.2.02 IBM OS/2 LANDD [11/12/91] 2.01.2 IBM OS/2 LANDLLDD 2.01 IBM OS/2 LANDLLDD is loaded and operational. IBM OS/2 NETBIOS 4.0 Adapter 0 has 32 NCBs, 32 sessions, and 32 names available to NETBIOS applications. NETBIOS 4.0 is loaded and operational. IBM OS/2 LAN Netbind IBM Token-Ring adapter data rate is 4 mbps. IBM LANDD is accessing IBM 802.5 LAN Interface. Adapter 0 was initialized and opened successfully. Adapter 0 is using node address 10005A8D4426. IBM LANDD was successfully bound to MAC: IBMTOK->VECTOR. ''Figure 3. Sample LANTRAN.LOG''

To learn more about the message logging facility, refer to the NDIS Implementation Information for IBM LAN Systems OS/2 Messaging & National Language Support.

9.0 Configuring the LAN Virtual Device Driver
You must first configure the total IBM OS/2 NETBIOS and IBM IEEE 802.2 resources that your workstation requires before configuring the LAN VDD.

The LAN VDD indirectly uses the IBM OS/2 NETBIOS and IBM IEEE 802.2 resources. Changing the LAN VDD parameters has no effect on the total IBM OS/2 NETBIOS and IBM IEEE 802.2 resources allocated. The configuration of the LAN VDD only sets the number of resources a DOS NETBIOS or a DOS IEEE 802.2 application can request for each DOS session. Each DOS session that uses the LAN VDD is considered a single user to LAPS, regardless of the number of LAN applications running in a DOS session.

9.1 NETBIOS Considerations
If a DOS NETBIOS application requires more than the default number of NETBIOS commands, sessions, and names, or requires Name Number 1 support, use the LTSVCFG utility program to change the defaults.

9.2 IEEE 802.2 Considerations
If a DOS IEEE 802.2 application requires Direct Station support, use LTSVCFG to configure. If a DOS IEEE 802.2 application requires a group address, the System key parameter of the IBM IEEE 802.2 protocol driver must specify a value greater than 0.

10.0 Using the LTSVCFG Utility Program
LTSVCFG enables you to configure NETBIOS and IEEE 802.2 resources on a per DOS session basis. You can also request Name Number 1 support for DOS NETBIOS applications and Direct Station support for DOS IEEE 802.2 applications.

In most situations, the following resources support DOS NETBIOS and DOS IEEE 802.2 applications when the following line is added to the AUTOEXEC.BAT file: x:\IBMCOM\LTSVCFG S=12 C=14 N=8 N1=0 D=C where x is the drive where you installed LAPS, S is the number of sessions, C is the number of commands, N is the number of names, N1 is Name Number 1 support is not requested, and D is Direct Station support not requested.

This command must be invoked before any DOS NETBIOS or DOS IEEE 802.2 applications are started. You can also invoke it from the IBMCOM subdirectory at a DOS command line.

LTSVCFG enables you to set DOS NETBIOS and DOS IEEE 802.2 parameters for each network adapter. Currently, support is provided for up to four network adapters. See 10.3, "Examples"for setting parameters.

If you receive an error from a DOS application requiring more NETBIOS or IEEE 802.2 resources you need to:
 * 1) Close the specific DOS session affected.
 * 2) Restart the DOS session.
 * 3) Run LTSVCFG and reconfigure the appropriate parameters.
 * 4) Restart the application.

10.1 Syntax
The following diagram illustrates LTSVCCFG syntax:



10.2 Parameters
You can specify parameters for different network adapters by using the slash (/) to separate the adapter settings. You can also specify the same parameters for different adapters by using an equal sign ( = ). Default values are used if the syntax is not correct, a value is not specified, or the value specified is out of range.

The following list describes the LAN VDD parameters:

10.3 Examples
The following example requests 10 sessions, 30 commands, 14 names, Name Number 1, and Direct Station support for adapter 0. LTSVCFG S=10 C=30 N=14 N1=1 D=1 ''Figure 4. LTSVCFG Example (1)''

The following example requests the defaults for adapter 0. It also requests 12 sessions, 25 commands, default (16) names, and no Name Number 1 support for adapter 1. LTSVCFG / S=12 C=25 N1=0 ''Figure 5. LTSVCFG Example (2)''

The following example requests 12 sessions, 25 commands, 20 names, and no Name Number 1 support for adapter 0. It also requests those same values for adapter 1. LTSVCFG S=12 C=25 N=20 N1=0 / = ''Figure 6. LTSVCFG Example (3)''

The following example requests 10 sessions and Name Number 1 for support adapter 0, it also requests 12 sessions, 25 commands, and no Name Number 1 Support for adapter 1. For adapter 3 it requests the defaults and no Name Number 1 support and for adapter 4 it requests 14 sessions, 20 commands, 18 names and Name Number 1 support. LTSVCFG S=10 N1=1 / S=12 C=25 N1=0 // S=14 C=20 N=18 N1=1 ''Figure 7. LTSVCFG Example (4)''

10.4 Restrictions
The following restrictions apply to the LAN VDD:
 * There can be only one OS/2 or DOS application per adapter that uses any given SAP number.
 * There can be only one OS/2 or DOS NETBIOS application per adapter that uses Name Number 1 support.
 * There can be only one OS/2 or DOS IEEE 802.2 application per adapter that uses Direct Station support.
 * You cannot use the IBM LAN Support Program with the LAN VDD.
 * All DOS IEEE 802.2 commands are implemented with the exception of RECEIVE.MODIFY.

11.0 Operating System/2 Trace Facility
The Operating System/2 System Trace functions are redefined for the NDIS-based version of IEEE 802.2 adapter support software. The major code for IEEE 802.2 system traces will remain 164 (0xA4). Minor codes 64 (0x40) through 81 (0x51) will be used by the NDIS-based version of IEEE 802.2 adapter support software. The format of the trace data for each of the minor codes is explained in 11.1, "Minor Codes for IEEE 802.2 Traces."

The Operating System/2 System Trace functions are redefined for NETBIOS 4.0. The major trace code for NETBIOS 4.0 is still 164 (0xA4). Minor codes defined for NETBIOS 4.0 are 96 (0x60) through 106 (0x 6A) and 120 (0x78) through 123 (px7B). The format of the trace data for each of the minor codes is explained in 11.3, "minor Codes for NETBIOS Traces".

To enable the OS12 Trace Facility, the user must specify a trace buffer in CONFIG.SYS. Add the following statement to CONFIG.SYS to specify the trace buffer: TRACEBUF=63 The information traced is controlled by the OS/2 major code trace selection and the protocol trace bit mask. The major code for LAPS is 164 (0xA4). Both NETBIOS and IEEE 802.2 have defined trace bit masks to select minor code information traced.

The IEEE 802.2 tracing is controlled by the TRACE parameter in the LANDD section of the PROTOCOL.INI file. This parameter is a bitmap of flags for enabling or disabling subsets of the available trace points. The TRACE parameter consists of 10 bit flags. To enable a particular subset of traces, the bit controlling those traces is set on in the TRACE parameter. For example, to trace CCBs issued and their parameter tables and status events, set TRACE = 0x000E. The subset of traces controlled by each bit of the TRACE parameter is explained in 11.2, "PROTOCOL.INI TRACE Parameter - IEEE 802.2"and summarized in Figure 8.

The OS2TRACEMASK parameter in the NETBEUI section of PROTOCOL.INI controls the tracing of NETBIOS minor code events. Enabling and disabling tracing of minor codes is controlled by bit selection in OS2TRACE:VIASK. For example, to trace NCBs issued, pending, and completed set 0S2TRACEMASK = 0X0700. The bits associated with each minor code are defined in 11.4, "PROTOCOL.INI OS2TRACEMASK Parameter - NETBIOS" and summarized in Figure 9.

After making changes to CONFIG.SYS and PROTOCOL.INI for NETBIOS or IEEE 802.2, reboot the machine. To begin tracing, type the following at the command prompt: TRACE ON 164

11.1 Minor Codes for IEEE 802.2 Traces
The following minor codes are defined for IEEE 802.2:


 * 0x40 - CCB RECEIVED ENTRY:This trace entry indicates a CCB received at the CCB3 entry point. CCB2s will also be traced since they are converted to CCB3s and then sent to the CCB3 entry point. The trace data is the contents of the CCB3, except for the CCB_POINTER field. Instead of its actual contents, the CCB_POINTER field will contain the address of the CCB3.
 * 0x41 - CCB RECEIVED EXIT:This trace entry indicates the immediate return of a CCB. The trace data is the first 8 bytes of the CCB3, except that the CCB_POINTER field will be set to the address of the CCB3 and the CCB_RETURN_CODE field will be set to 0.
 * 0x42, 0x43 - CCB FINAL COMPLETION:This trace entry indicates the final completion of a CCB3. The trace data is the contents of the CCB3, except for the CCB_POINTER field. Instead of its actual contents, the CCB_POINTER field will contain the address of the CCB3. Minor code 43 is used for CCBs that are returning an information table, and code 42 is used for CCBs that are not.
 * 0x44 - CCB PARAMETER TABLE:This trace entry will follow a trace entry for minor codes 0x40, 0x41, 0x42, 0x43, and 0x50, if the CCB being traced has a parameter table. The trace data is the CCB parameter table.
 * 0x45 - DLC STATUS EVENT:This trace entry indicates a DLC status event. The trace data is the DLC status table, followed by 1 byte for the adapter number, 1 byte for the application ID, and 2 bytes of reserved data.[[Image:TECH111.GIF|right]]
 * 0x46- EXCEPTION EVENT:This trace entry indicates one of the exception events controlled by the DIR.SET.EXCEPTION.FLAGS CCB. These events are Adapter Check, Network Status, PC Error, and System Action. The trace data is the CCB3 exception event information table (padded with 0 to 20 bytes in the case of Adapter Check and System Action), followed by 1 byte for the adapter number, 1 byte for the application ID, 1 byte for the exception type, and 1 byte of reserved data. The exception type values are:
 * 0 Adapter Check
 * 2 Network Status
 * 4 PC Error
 * 6 System Action.[[Image:TECH112.GIF|right]]


 * 0x47 - CCB INFORMATION TABLE:This trace entry will follow a trace entry for minor code 0x43. The trace data is the CCB information table.
 * 0x48, 0x49 - NDIS DATA, RECEIVE:This trace entry indicates data received at the NDIS interface, through either a ReceiveLookahead or a ReceiveChain indication. The trace data is the received frame. The length of the trace is either the first 32 or 128 bytes of the frame, depending on the state of the Data trace Size flag. If the indication is ReceiveLookahead, then there will be only one trace entry per frame, and it will be minor code 49. If the indication is ReceiveChain, then there will be one trace entry for every buffer in the chain, up to the number of buffers required to reach the 32 - or 128-byte trace limit. The last trace entry per frame will be minor code 49 and all others, if any, will be minor code 48.
 * 0x4A, 0x4B - NDIS DATA, TRANSMIT:This trace entry indicates data transmitted at the NDIS interface through the TransmitChain interface. The trace data is the transmitted frame. The length of the trace is either the first 32 or 128 bytes of the frame, depending on the state of the Data Trace Size flag. There will be one trace entry for every buffer in the chain, up to the number of buffers required to reach the 32- or 128-byte trace limit. The last trace entry per frame will be minor code 4B and all others, if any, will be minor code 4A.
 * 0x4C, 0x4D - CCB DATA, RECEIVE:This trace entry indicates data received at the CCB interface, either through a Receive or a Receive_Modify CCB. The trace data is the SAP buffer contents, including buffer headers and frame data. The length of the trace is either the first 64 or 128 bytes of the SAP buffer, depending on the state of the Data Trace Size Tag. There will be one trace entry for every SAP buffer in the chain, up to the number of buffers required to reach the 64- or 128-byte trace limit. The last trace entry per frame will be minor code 4D and all others, if any, will be minor code 4C.
 * 0x4E, 0x4F - CCB DATA, TRANSMIT:This trace entry indicates data transmitted at the CCB interface through any of the Transmit CCBs. The trace data is the user-supplied transmit-frame data. The length of the trace is either the first 32 or 128 bytes of the frame, depending on the state of the Data Trace Size flag. There will be one trace entry for every buffer in the frame, up to the number of buffers required to reach the 32- or 128-byte trace limit. The last Race entry per frame will be minor code 4F and all others, if any, will be minor code 4E.
 * 0x50 - CCB RECEIVED FRAME EVENT:This trace entry indicates data received at the CCB interface, either through a Receive or a Receive_Modify CCB. The trace data is the Receive CCB3. This entry is only used for Receive CCBs that do not complete when a frame is received. If the CCB completes when the frame is received, whether due to an error or not, only the CCB completion trace entry will be logged.
 * 0x51 - DLR CCB RECEIVED ENTRY:This trace entry indicates a CCB received at the CCB2 entry point. The trace data is the CCB2.

11.2 PROTOCOL.INI TRACE Parameter - IEEE 802.2
The TRACE parameter in the LANDD section of the PROTOCOL.INI file consists of 10 bit flags. The format of this parameter for each trace event is as follows:
 * Bit 0 (0x0001) - Validation
 * Enables debugging-level CCB validation. When enabled, addressability to all buffers defined by the CCB will be verified. This verification is only considered necessary for programs under development, so it defaults to disabled to improve performance.
 * Bit 1 (0x0002) - CCBs
 * Enables tracing of CCB contents at CCB3 entry, CCB3 immediate return, and CCB3 final completion, plus CCB3 receive frame events where the Receive CCB3 does not complete. CCB2s will also be traced because when they are received they are converted to CCB3s and then sent to the CCB3 entry.
 * Bit 2 (0x0004) - CCB Parameter Tables
 * Enables tracing of the CCB parameter table contents at CCB entry, CCB final completion, and CCB receive frame events where the Receive CCB does not complete. This bit also enables the tracing of the CCB information table at CCB final completion.
 * Bit 3 (0x0008) - Status Events
 * Enables tracing of DLC Status, Adapter Check, Network Status, PC Error, and System Action events.
 * Bit 4 (0x0010) - DLL CCBs
 * Enables tracing of CCB2 contents at CCB entry.
 * Bit 5 (0x0020) - CCB Interface Received Data
 * Enables tracing of the contents of the SAP buffers containing received data.
 * Bit 6 (0x0040) - CCB Interface Transmit Data
 * Enables tracing of the contents of the transmit data supplied with a transmit CCB.
 * Bit 7 (0x0080) - Data Trace Size
 * Enables large size data traces for transmit and receive at both the CCB and NDIS interfaces. For Transmit Data traces at both the CCB and NDIS interface, the first 128 bytes of data of each frame are traced if large size is enabled. If large size is disabled, only the first 32 bytes of each frame are traced. For Receive Data traces at the NDIS interface, the first 128 bytes of data of each frame are traced if large size is enabled. If large size is disabled, only the first 32 bytes of each frame are traced. For Receive Data traces at the CCB interface, the first 128 bytes of SAP buffer contents of each frame are traced if large size is enabled. If large size is disabled, only the first 64 bytes of SAP buffer contents are traced. The SAP buffer contents will include header information in addition to the frame data. The SAP buffer contents are described in the IBM local Area Network Technical Reference.
 * Bit 8 (0x0100) - NDIS Interface Received Data
 * Enables tracing of the contents of the data received from the NDIS interface. This will include user-generated frames destined for the CCB interface, as well as LLC control frames such as SABME and DISC.
 * Bit 9 (0x0200) - NDIS Interface Transmit Data
 * Enables tracing of the data sent to the NDIS interface. This will include user-generated frames from the CCB interface, as well as LLC control Barnes such as SABME and DISC.

Figure 8 provides a summary of the IEEE 802.2 trace point minor codes and the TRACE parameter bit flags.



''Figure 8. IEEE 802.2 TRACE Bit Definition''

Refer to the IBM Local Area Network Technical Referencefor documentation on the following:

Refer to the 3Com/Microsoft LAN Manager Network Driver Interface Specification Version 2.0 Final for more information on ReceiveLookahead, ReceiveChain, and TransmitChain.

11.3 Minor Codes for NETBIOS Traces
The following minor codes are defined for NETBIOS:
 * 0x60 - TRANSMIT I FRAME:The first 14 bytes of the trace data are the NETBIOS I-frame header. The next 2 bytes contain the return code received from the network adapter driver on the TransmitChain primitive. The last 2 bytes are the adapts number.
 * 0x61 - TRANSMIT UI FRAME:The first 44 bytes of the trace data are the NETBIOS Ul-frame header. The next 2 bytes contain the return code received from the network adapter driver on the TransmitChain primitive. The last 2 bytes are the adapter number.
 * 0x62 - TRANSMIT COMPLETE:The first 14 bytes of the trace data are the NETBIOS I-frame header and the last 2 bytes are the adapter number.
 * 0x63 - RECEIVE I FRAME:The first 14 bytes of the trace data are the NETBIOS I-frame header and the last 2 bytes are the adapter number.
 * 0x64 - RECEIVE I FRAME:The first 44 bytes of the trace data are the NETBIOS I-frame header and the last 2 bytes are the adapter number.
 * 0x65 - NETWORK STATUS:The first 2 bytes of the trace data are the Ring Status bit mask and the next 2 bytes are the adapter number.
 * 0x66 - ADAPTER CHECK:The first 2 bytes of the trace data are the Adapter Check reason code and the next 2 bytes are the adapter number.
 * 0x67 - DLC STATUS:The following are the contents of the trace data in detail:
 * 0x68 - NCB RECEIVED:This trace entry indicates the NCB was received by the NETBEUI device driver. The first 64 bytes are the NCB contents and the last 4 bytes are the NCB address.
 * 0x69 - NCB PENDING:This trace entry indicates the NCB is pending in the NETBEUI device driver. The first 64 bytes are the NCB contents and the last 4 bytes are the NCB address.
 * 0x6A - NCB COMPLETE:This trace entry indicates the NCB is completed by the NETBEUI device driver. The first 64 bytes are the NCB contents and the last 4 bytes are the NCB address.
 * 0x78, 0x79 - NDIS DATA, RECEIVE:This trace entry data received from the NDIS interface. This will also include LLC control frames such as SABME and DISC. The last trace entry per frame will be minor code 0x7B and all others, if any, will be minor code 0x78.
 * 0x7A, 0x7B - NDIS DATA, TRANSMIT:This trace data is the data sent to the NDIS interface. This will also include LLC control frames such as SABME and DISC. The last trace entry per frame will be minor code 0x7B and all others, if any, will be minor code 0x7A.

11.4 PROTOCOL.INI OS2TRACEMASK Parameter- NETBIOS
The OS2TRACE.MASK parameter in the NETBEUI section of PROTOCOL.INI consists of 16 bit flags. The format of this parameter for each minor code is as follows:


 * Bit 0 (0x0001) - Transmit I Frame:Enables tracing of NETBIOS I frames transmitted.
 * Bit I (0x0002) - Transmit UI Frame:Enables tracing of NETBIOS UI frames transmitted.
 * Bit 2 (0X0004) - Transmit Complete:Enables tracing of completion of NETBIOS I frames transmitted.
 * Bit 3 (Ox0008)- Receive I Frame:Enables tracing of NETBIOS I frames received.
 * Bit 4 (0x0010) - Receive UI Frame:Enables tracing of NETBIOS UI frames received.
 * Bit 5 (0x0020) - Network Status:Enables tracing of Network Status events.
 * Bit 6 (0x0040) - Adapter Check:Enables tracing of Adapter Check events.
 * Bit 7(0x0080) - DLC Status:Enables tracing of DLC Status events.
 * Bit 8 (0x0100) - NCB Received:Enables tracing of the NCB contents at entry to the NETBEUI device driver.
 * Bit 9 (0x0200) - NCB Pending:Enables tracing of the NCB contents at immediate return from the NETBEUI device driver if the NCB return code is X'FF', which indicates a pending state.
 * Bit 10 (0x0400) - NCB Complete:Enables tracing of the NCB contents at completion of the NCB in the NETBEUI device driver.
 * Bit 11 (0x0800)- NDIS Data:Enables data traces for transmit and receive at the NDIS interface. This bit enables minor codes X'78' through X'7B'.
 * Bit 12 (0x1000) - NDIS Size:Enables large size data traces for transmit and receive at the NDIS interface. For Transmit Data traces and for Receive Data traces, the first 128 bytes of data of each frame are traced if large size is enabled. If large size is disabled, only the first 32 bytes of each frame are traced.

Figure 9 provides a summary of the NETBIOS trace point minor codes and the OS2TRACEMASK parameter bit flags.



''Figure 9. NETBIOS OS2TRACEMASK Bit Definition''

Refer to the IBM Local Area Network Technical Reference for documentation on the following:

Refer to the 3Com/Microsoft LAN Manager Network Driver Interface Specification Version 2.01 Final for return code information on the TransmitChain primitive.

11.5 Tracing for OS/2 2.0 Virtual DOS LAN Support
Major code 164 (0xA4) enables tracing for OS/2 2.0 Virtual DOS LAN Support. The minor codes 162 (0xA2), 163 (0xA3), and 164 (0xA4) are defined for OS/2 2.0 Virtual DOS LAN Support.

11.5.1 Minor Codes for OS/2 2.0 Virtual DOS LAN Support
The following minor codes are defined for OS/2 2.0 Virtual DOS LAN Support:   0xA2 - NCB ISSUED This trace entry indicates that the NCB issued by DOS was received by OS/2 2.0 Virtual DOS LAN Support. The first 64 bytes are the contents of the DOS NCB. The last 4 bytes are the linear address of the DOS NCB.   0xA3 - NCB COMPLETE This trace entry indicates that the DOS NCB was completed by OS/2 2.0 Virtual DOS LAN Support. The first 64 bytes are the contents of the DOS NCB. The last 4 bytes are the linear address of the DOS NCB.   0xA4 - NCB IMMEDIATE RETURN This trace entry indicates the immediate return from interrupt SC. The first 64 bytes are the contents of the DOS NCB. The last 4 bytes are the linear address of the DOS NCB.   0xB0 - CCB INTERMEDIATE RESULT This trace entry indicates the intermediate results of the CCB request as it appears after issuing the CCB request to the OS/2 802.2 protocol stack. The data is the contents of the CCB and parameter table as is is received from the OS/2 802.2 protocol stack.   0xB1 - CCB INTERMEDIATE RESULT This trace entry indicates that an asynchronous command is being completed to OS/2 2.0 Virtual LAN Support from the OS/2 802.2 protocol stack. The data is the contents of the CCB and parameter table as is is received from the OS/2 802.2 protocol stack.   0xB2 - CCB ISSUED This trace entry indicates that the CCB issued by DOS was received by the OS/2 Virtual LAN Support. The data is the contents of the DOS CCB.   0xB3 - CCB ISSUED This trace entry indicates that the DOS CCB was completed by OS/2 Virtual LAN Support. The data is the contents of the DOS CCB. </li>  0xB4 - CCB IMMEDIATE RETURN This trace entry indicates the immediate return from interrupt SC. The data is the contents of the CCB. </li>  0xB5 - STATUS EVENT This trace entry indicates that a status event occurred and information was passed to the DOS exception handler. The data is the information table that is passed to the DOS application. </li>  0xB6- CCB PARMTABLE ISSUED This trace entry indicates the DOS parameter table, if any, that was passed to OS/2 Virtual LAN Support. The data is the contents of the parameter table. </li>  0xB7 - CCB PARMTABLE COMPLETE This trace entry indicates the DOS parameter table, if any, that was passed back to the DOS application as a result of the CCB command completed. The data is the contents of the CCB parameter table. </li></ul>

Notices
May, 1993

Issued by:
 * IBM Corporation
 * Personal Software Products
 * 11400 Burnet Road
 * Austin, Texas 78758

First Edition (May 1992)

Second Edition (May 1993)

The following paragraph does not apply to the United Kingdom or any country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.

This publication could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or program(s) described in this publication at any time.

It is possible that this publication may contain reference to, or information about, IBM products (machines and programs), programming, or services that are not announced in your country. Such references or information must not be construed to mean that IBM intends to announce such IBM products, programming, or services in your country.

Copyright Notices
© '''Copyright International Business Machines Corporation 1992, 1993. All rights reserved.'''

Note to U.S. Government Users - Documentation related to restricted rights - Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp.

Disclaimers
References in this publication to IBM products, programs, or services do not imply that IBM intends to make these available in all countries in which IBM operates. Any reference to an IBM product, program, or service is not intended to state or imply that only IBM's product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any of IBM's intellectual property rights or other legally protectible rights may be used instead of the IBM product, program, or service. Evaluation and verification of operation in conjunction with other products, programs, or services, except those expressly designated by IBM, are the user's responsibility.

IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to the IBM Director of Commercial Relations, IBM Corporation, Purchase, NY 10577.

Trademarks
The following terms, denoted by an asterisk (*) in this publication, are trademarks of the IBM Corporation in the United States and/or other countries: The following terms, denoted by a double asterisk (**) in this publication, are trademarks of other companies as follows: All other company, brand, and product names are trademarks or registered trademarks of their respective owners.