The following parameter block returns asynchronous exception notifications to the application user:
struct dlc_getx_arg { ulong_t user_sap_corr; /* user SAP corr - RETURNED */ ulong_t user_ls_corr; /* user ls corr - RETURNED */ ulong_t result_ind; /* the flags identifying the type */ /* of excep*/ int result_code; /* the manner of excep */ u_char_t result_ext[DLC_MAX_EXT];/* excep specific ext */ };
The fields of this ioctl operation are:
user_sap_corr | Indicates the user service access point (SAP) correlator for this exception. | ||||||||||||||||||||
user_ls_corr | Indicates the user link station (LS) correlator for this exception. | ||||||||||||||||||||
result_ind | Result indicators:
| ||||||||||||||||||||
result_code | Indicates the result code. The following values specify the result codes for GDLC. Negative return codes that are even indicate that the error condition can be remedied by restarting the LS returning the error. Return codes that are odd indicate that the error is catastrophic, and, at the minimum, the SAP must be restarted. Additional error data may be obtained from the GDLC error log and link trace entries. | ||||||||||||||||||||
result_ext | Indicates result extension. Several results carry extension areas to provide additional information about them. The user must provide a full-sized area for each result requested since there is no way to tell if the next result is extended or nonextended. The extended result areas are described by type below. |
The following parameter block enables a service access point (SAP) result extension:
struct dlc_sape_res { ulong_t max_net_send; /* maximum write network data length */ ulong_t lport_addr_len; /* local port network address length */ u_char_t lport_addr[DLC_MAX_ADDR];/* the local port address */ };
The fields of this extension are:
The following parameter block starts a link station (LS) result extension:
struct dlc_stas_res { ulong_t maxif; /* max size of the data sent */ /* on a write */ ulong_t rport_addr_len; /* remote port network address */ /* length */ u_char_t rport_addr[DLC_MAX_ADDR]; /* remote port address */ ulong_t rname_len; /* remote network name length */ u_char_t rname[DLC_MAX_NAME]; /* remote network name */ uchar_t res[3]; /* reserved */ uchar_t rsap; /* remote SAP */ ulong_t max_data_off; /* the maximum data offsets for sends*/ };
The fields of this extension are:
maxif | Contains the maximum byte size allowable for user data. This value is derived from the value supplied by the user at the start link station (DLC_START_LS) and the actual number of bytes that can be handled by the GDLC and device handler on a single transmit or receive. Generally this value is less than the size of a communications mbuf page cluster. However, some communications devices may be able to link page clusters together, so the maximum I-field receivable may exceed the length of a single mbuf cluster. The returned value never exceeds the value supplied by the user, but may be smaller if buffering is not large enough to hold the specified value. |
rport_addr_len | Contains the byte length of the remote port network address. |
rport_addr | Contains the hexadecimal value of the remote port network address. |
rname_len | Contains the byte length of the remote port network name. This is returned only when name discovery procedures are used to locate the remote station. Otherwise this field is set to 0 (zero). Network names can be 1 to 20 characters in length. |
rname | Contains the name used by the remote SAP. This field is valid only if name-discovery procedures were used to locate the remote station. |
rsap | Contains the hexadecimal value of the remote SAP address. |
max_data_off | Contains the write data offset in bytes of a communications mbuf cluster where transmit data must minimally begin. This allows ample room for the DLC and MAC headers to be inserted if needed. Some DLCs may be able to prepend additional mbuf clusters for their headers, and in this case will set this field to 0 (zero).
This field is only valid for kernel users that pass in a communications mbuf structure on write operations. Note: To align the data moves to a particular byte boundary, the kernel user may wish to choose a value larger than the minimum value returned. |
The following parameter block halts the link station (LS) result extension:
struct dlc_stah_res { ulong conf_ls_corr; /* conflicting link station corr */ };
The field of this extension is:
conf_ls_corr | Indicates conflicting link station correlator. Contains the user's link station identifier that already has the specified remote station attached. |
This extension is valid only if the result code value indicates -936 (specified remote is already connected).
The following parameter block changes the remote address or name of the result extension:
struct dlc_radd_res { ulong rname_len; /* remote network name/addr length */ u_char rname[DLC_MAX_NAME];/* remote network name/addr */ };
The fields of this extension are:
The DLC_GET_EXCEP ioctl operation is selectable through the fp_ioctl kernel service or the ioctl subroutine. It can be called from the process environment only.