[ Next Article | Previous Article | Book Contents | Library Home | Legal | Search ]
Communications Programming Concepts

Qualified Logical Link Control (DLCQLLC) Overview

Qualified logical link control (QLLC) data link control (DLCQLLC) is one of the generic data link controls. It provides an access procedure to attach to X.25 packet-switching networks.

DLCQLLC fully supports the 1980 and 1984 versions of the CCITT recommendation relevant to Systems Network Architecture (SNA)-to-SNA connections. It allows point-to-point connections over an X.25 network between a pair of primary and secondary link stations.

DLCQLLC provides two-way alternate (half-duplex) data flow over switched or permanent virtual circuits.

For more information about the DLCQLLC controls, see:

DLCQLLC supports the following X.25 optional facilities:

DLCQLLC Device Manager Functions

DLCQLLC, as described in the X.25 Interface for Attaching SNA Nodes to Packet-Switch Data Networks and X.25 1984 Interface Architectural Reference, is split between a physical adapter with its associated device handler and a data link control component. The DLC component is responsible for the following QLLC functions:

The data link control and device handler components are jointly responsible for:

The device handler and adapter are jointly responsible for:

DLCQLLC Programming Interfaces

QLLC data link control (DLCQLLC) conforms to the GDLC guidelines except where noted below.

Note: The dlc prefix is replaced with qlc prefix for DLCQLLC device manager.
qlcclose DLCQLLC is fully compatible with the dlcclose GDLC interface.
qlcconfig DLCQLLC is fully compatible with the dlcconfig GDLC interface. No initialization parameters are required.
qlcmpx DLCQLLC is fully compatible with the dlcmpx GDLC interface.
qlcopen DLCQLLC is fully compatible with the dlcopen GDLC interface.
qlcread DLCQLLC is compatible with the dlcread GDLC interface, except that network data and datagram receive data are not supported.
qlcselect DLCQLLC is fully compatible with the dlcselect GDLC interface.
qlcwrite DLCQLLC is compatible with the dlcwrite GDLC interface with the exception that network data and datagram data are not supported.
qlcioctl DLCQLLC is compatible with the dlcioctl GDLC interface with conditions on the following operations:

The following sections describe these conditions.

DLC_ENABLE_SAP

The ioctl subroutine argument structure for enabling a service access point (SAP), dlc_esap_arg, has the following specifics:

DLC_START_LS

DLCQLLC supports up to 255 concurrent link stations (LS) on a single SAP. Each active link station becomes a virtual circuit to the X.25 device. The actual number of possible link stations may be less than 255, based on the number of virtual circuits available from the X.25 device.

The ioctl subroutine argument structure for starting an LS, dlc_sls_arg, has the following specifics:

Example of Protocol-Specific Configuration Parameters

The following is an example of a structure that provides DLCQLLC with additional protocol-specific configuration parameters:

struct qlc_start_psd
{
  char     listen_name[8];
  unsigned short support_level;
  struct   sna_facilities_type facilities;
};

The protocol-specific parameters are:

listen_name The name of the entry in the X.25 routing list that specifies the characteristics of incoming calls. This field is used only when a station is listening; that is, when the LSVC flag in the dlc_sls_arg argument structure is 0.
support_level The version of CCITT recommendation X.25 to support. It must be the same as or earlier than the CCITT attribute specified for the X.25 adapter.
facilities A structure that contains the X.25 facilities required for use on the virtual circuit for the duration of this attachment.

Facilities Structure

The following is an example of a structure that provides DLCQLLC with facilities parameters:

struct sna_facilities_type
{
  unsigned       facs:1;
  unsigned       rpoa:1;
  unsigned       psiz:1;
  unsigned       wsiz:1;
  unsigned       tcls:1;
  unsigned       cug :1;
  unsigned       cugo:1;
  unsigned       res1:1;
  unsigned       res2:1;
  unsigned       nui :1;
  unsigned           :21;
  unsigned char  recipient_tx_psiz;
  unsigned char  originator_tx_psiz;
  unsigned char  recipient_tx_wsiz;
  unsigned char  originator_tx_wsiz;
  unsigned char  recipient_tx_tcls;
  unsigned char  originator_tx_tcls;
  unsigned short reserved;
  unsigned short cug_index;
  unsigned short rpoa_id_count;
  unsigned short rpoa_id[30];
  unsigned int   nui_length;
  char           nui_data[109];
};

In the following list of fields, bits with a value of 0 indicate False and with a value of 1 indicate True.

facs Indicates whether there are any facilities being requested. If this field is set to 0, all the remaining facilities structure is ignored.
rpoa Indicates whether to use a recognized private operating agency.
psiz Indicates whether to use a packet size other than the default.
wsiz Indicates whether to use a window size other than the default.
tcls Indicates whether to use a throughput class other than the default.
cug Indicates whether to supply an index to a closed user group.
cugo Indicates whether to supply an index to a closed user group with outgoing access.
res1 Reserved.
res2 Reserved.
nui Indicates whether network user identification (NUI) is supplied to the network.

The remaining fields provide the values or data associated with each of the above facilities bits that are set to 1. If the corresponding facilities bit is set to 0, each of these fields is ignored:

recipient_tx_psiz Indicates the coded value of packet size to use when sending data to the node that initiated the call. The values are coded as follows:

0x06 = 64 octets

0x07 = 128 octets

0x08 = 256 octets

0x09 = 512 octets

0x0A = 1024 octets

0x0B = 2048 octets

0x0C = 4096 octets

Note: 4096-octet packets are allowed only in the 1984 CCITT recommendation. For the call to be valid, the value of the X.25 CCITT attribute and the corresponding QLLC attribute must be set to 1984.
originator_tx_psiz Indicates the coded value of packet size to use when sending data from the node that initiated the call. The values are coded as for the recipient_tx_psiz field.
recipient_tx_wsiz Reserved for QLLC use.
originator_tx_wsiz Reserved for QLLC use.
recipient_tx_tcls Indicates the coded values of the throughput class requested for this virtual circuit when sending data to the node that initiated the call. The values are coded as follows:

0x07 = 1200 bits per second

0x08 = 2400 bits per second

0x09 = 4800 bits per second

0x0A = 9600 bits per second

0x0B = 19200 bits per second

0x0C = 48000 bits per second

originator_tx_tcls Indicates the coded values of the throughput class requested for this virtual circuit when sending data from the node that initiated the call. The values are coded as for the recipient_tx_tcls field.
cug_index Indicates the decimal value of the index of the closed user group (CUG) within which this call is to be placed. This field is used for either CUG or CUG with outgoing access (CUGO) facilities.
rpoa_id_count Indicates the number of recognized private operating agency (RPOA) identifiers to supply in the rpoa_id field.
rpoa_id Indicates an array of RPOA identifiers that contains the number of identifiers specified in the rpoa_id_count field. The RPOA identifiers appear in the order in which they will be traversed when the call is initiated. The content of each array element is the decimal value of an RPOA identifier.
nui_length The length, in bytes, of the nui_data field.
nui_data Network user identification (NUI) data. The contents of this array are defined by the user in conjunction with the network provider. Note that the maximum allowable X.25 facilities string is 109 bytes. Even if NUI is the only facility requested, the facility code occupies one byte, so it is impossible to send more than 108 bytes of NUI data. Each additional facility requested reduces the space available for NUI data.

DLC_ALTER

The ioctl subroutine argument structure for altering a link station, dlc_alter_arg, has the following specifics:

DLC_QUERY_SAP

The device driver dependent data returned from DLCQLLC for this ioctl operation is the cio_stats_t structure defined in the /usr/include/sys/comio.h file.

DLC_QUERY_LS

There is no protocol specific data area supported by DLCQLLC for the query link station ioctl operation.

DLC_ENTER_SHOLD

The enter_short_hold option is not supported by DLCQLLC.

DLC_EXIT_SHOLD

The exit_short_hold option is not supported by DLCQLLC.

DLC_ADD_GRP

The add_group or multicast address option is not supported by DLCQLLC.

DLC_ADD_FUNC_ADDR

The add_functional_address option is not supported by DLCQLLC.

DLC_DEL_FUNC_ADDR

The delete_functional_address option is not supported by DLCQLLC.

IOCINFO

The ioctype variable is defined as a DD_DLC definition and the subtype is DS_DLCQLLC.

DLCQLLC Asynchronous Function Subroutine Calls

Network and datagram data are not supported, so the rcvn_fa and rcvd_fa data functions are never called by DLCQLLC.

DLCQLLC is compatible with each of the other asynchronous function subroutine calls for the kernel user.


[ Next Article | Previous Article | Book Contents | Library Home | Legal | Search ]