The Q.93B driver is an M-to-N mux STREAMS driver. Multiple application programs can be plumbed above the driver, and multiple physical interfaces can be connected below Q.93B. Applications can access any or all of the physical interfaces, and messages received on the physical interfaces can be directed to any of the applications. To direct messages through the Q.93B driver, messages from applications must include a physical interface name to identify the outgoing interface and an SAP to identify the application to which the message should be directed on the receiving host.

Send messages to Q.93B by applications according to the format illustrated in FIGURE C-1; kernel applications use putnext(9f) to send the mblocks shown, and user applications send two corresponding strbufs using putmsg(2).

M_PROTO

mp

Ifname

Call_ID

Type

Error_Code

Call_Tag

FIGURE C-2Message Format

 

 

M_DATA

Q.2931

Message

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R

 

 

 

 

S

 

 

Information

 

 

V

 

 

Elements (IEs)

 

 

 

 

(9)

 

 

 

 

 

 

 

(16)

 

 

 

 

 

 

 

TABLE C-2Fields in the M_PROTO mblock

Message

Explanation

 

 

Ifname

Null-terminated string containing the device name

Call_ID

Unique number from Q.93B for each interface.

Type

Same as the Q.2931 message type except there is a local non-Q.2931

 

message type SETUP_ACK. The SETUP_ACK message is used to provide

 

the Call_ID to the user.

Error_Code

Error returned from Q.93B when an erroneous message is received from

 

the user. The same mblock chain is returned to the user with the

 

Error_Code field set. The user must always clear this field

Call_Tag

Number assigned by the calling application layer to a SETUP message.

 

When a SETUP_ACK is received from Q.93B, the Call_ID has been set;

 

use the Call_Tag field to identify the acknowledgment (ack) with the

 

original request. From that point on, use the Call_ID value to identify

 

the call.

 

 

The structure included in the M_PROTO mblock is defined as the qcc_hdr_t structure in the <atm/qcctypes.h> header file. In the second mblock, the Q.2931 header portion (9 bytes) of the Q.2931 message is blank and is later filled in by the

Appendix C Application Programmer’s Interface 91

Page 113
Image 113
Sun Microsystems 3U manual Figure C-2Message Format, Table C-2Fields in the Mproto mblock