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, 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:
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 ioctl subroutine argument structure for enabling a service access point (SAP), dlc_esap_arg, has the following specifics:
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:
ADDR | The address indicator flag is ignored. |
Switched Virtual Circuit | 23422560010502 |
Permanent Virtual Circuit | P13 |
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. |
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.
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:
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: |
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. |
The ioctl subroutine argument structure for altering a link station, dlc_alter_arg, has the following specifics:
AKT | Alter acknowledgment time out. |
RTE | Alter routing. |
XWIN | Alter transmit window size. |
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.
There is no protocol specific data area supported by DLCQLLC for the query link station ioctl operation.
The enter_short_hold option is not supported by DLCQLLC.
The exit_short_hold option is not supported by DLCQLLC.
The add_group or multicast address option is not supported by DLCQLLC.
The add_functional_address option is not supported by DLCQLLC.
The delete_functional_address option is not supported by DLCQLLC.
The ioctype variable is defined as a DD_DLC definition and the subtype is DS_DLCQLLC.
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.