home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Interactive Guide
/
c-cplusplus-interactive-guide.iso
/
c_ref
/
csource5
/
314_01
/
mnpdat.h
< prev
next >
Wrap
C/C++ Source or Header
|
1990-05-16
|
8KB
|
218 lines
/***************************************************************************
General MNP Definitions
2/4/88 - RBUF_LEN changed for Class 4,
lcb.class4 added
8/27/87 - RBUF_LEN increased to 576..gp
10/29/87 - explict data typing..gp
***************************************************************************/
/* Data Types
*/
#define SIGN_8 signed char
#define USIGN_8 unsigned char
#define SIGN_16 signed short int
#define USIGN_16 unsigned short int
#define SUCCESS 0 /* success return code from all functions */
#define TRUE 1
#define FALSE 0
/*-------------------- Return Codes used by LLVL -------------------------*/
#define FAILURE (-64) /* no further information */
#define TIME_OUT (-65) /* timeout */
#define NO_PHYSICAL (-66) /* physical connection down */
#define LNK_DOWN (-67) /* link connection down */
/* see mnp_cb.ld_reason for LD reason code */
#define LR_CODE (-73) /* when there is an error in parsing an LR,
an LD is sent back with reason code (1-5)
LR_CODE is added to that reason code and
returned as one of the 5 error codes below
-72 received LPDU not LR as expected
-71 reserved
-70 incompatible or unknown parameters
-69 reserved
-68 reserved
*/
#define BUFF_ERR (-75) /* buffer error */
/* -----------------------------------------------------------------------*/
#define NULL 0
/* Protocol Data Units */
#define LR 1
#define LD 2
#define LT 4
#define LA 5
#define LN 6
#define LNA 7
/* Protocol Data Units Formats (Offsets) */
#define PDU_LI 0 /* header length indicator */
#define PDU_TYPE 1 /* type of pdu */
struct TIMERS {
USIGN_16 g;
USIGN_16 ack;
USIGN_16 fcw;
USIGN_16 lr;
USIGN_16 lt;
USIGN_16 ln;
};
/***************************************************************************
* *
* Buffer Management Definitions *
* *
***************************************************************************/
/* each blst (buffer list) structure controls an actual buffer */
struct BLST {
USIGN_16 mark; /* 0: free | 1: used */
USIGN_8 *bptr; /* pointer to the actual buffer */
USIGN_16 len; /* lenght of data in buffer */
struct BLST *next_b; /* pointer to next structure */
};
/* each buffer structure controls a linked list of blst structures */
struct BUFFER {
struct BLST *list; /* pointer to head node */
struct BLST *free; /* pointer to node with free buffer */
USIGN_16 num; /* total number of nodes (buffers) */
USIGN_16 used; /* number of buffers being used */
struct BLST *used_lst; /* pointer to head of list
of buffers in use */
struct BLST *next_lst;
};
#define BIT0_ON (0x01)
/***************************************************************************
LLVL Definitions
***************************************************************************/
/* Link Disconnect reason code */
#define PROT_ERR 1
#define PROT_LVL_MISMATCH 2
#define BAD_LR_PARMS 3
#define RETRAN_TMR_EXP 4
#define INACT_TMR_EXP 5
struct link_ctl_blk {
/* variables initialized at one-time initialization */
USIGN_8 status_1; /* link status */
USIGN_8 status_2; /* link status */
USIGN_8 status_3; /* link status */
USIGN_16 ack_timer; /* acknowledgement timer value */
USIGN_16 max_data_sz; /* negotiated maximum user data size */
USIGN_16 prot_level; /* negotiated protocol level */
USIGN_16 lt_tmr; /* lt (data) retransmission timer value */
USIGN_16 srv_class; /* local service class */
USIGN_16 window_sz; /* negotiated window size */
USIGN_16 window_tmr; /* flow control window timer value */
USIGN_8 baud_rate; /* current link baud rate */
USIGN_8 ln_rsn; /* last ln (remote) receive sequence number */
USIGN_8 ln_ssn; /* last ln (local) send sequence number */
USIGN_16 class4; /* MNP Class 4 operation enabled if TRUE */
/* variables initialized/reset at link reset */
USIGN_8 ltssn_acked; /* last lt sent seq. # that has been acked */
/* by remote link */
USIGN_8 ltrsn_acked; /* last lt received seq. # that has been */
/* acked by local link */
USIGN_8 lt_rsn; /* last lt (remote) received sequence number */
USIGN_8 lt_ssn; /* last lt (local) sent sequence number */
USIGN_16 ln_ret_cnt; /* ln retransmission count */
USIGN_16 lt_ret_cnt; /* lt retransmission count */
/* variables initialized at start of data phase */
USIGN_16 ack_threshold; /* acknowledgement threshold */
USIGN_16 lcl_credit; /* receive (local) credit */
USIGN_16 rem_credit; /* send (remote) credit */
/* other variables */
USIGN_16 l_disc_code; /* link layer disconnect code */
USIGN_16 ln_rtype; /* ln lpdu type received */
USIGN_16 ln_stype; /* ln lpdu type to be sent */
USIGN_16 lpdu_type; /* type of last lpdu received */
USIGN_16 u_disc_code; /* user disconnect code */
USIGN_8 lr_parm; /* lr parameter flag */
};
/* Link Status Byte 1 bit definition (lcb.status_1)
*/
#define LA_RECEIVED 1 /* on: la lpdu received */
#define LINK_EST 2 /* on: link established */
#define DATA_READY 4 /* on: user data available (lt received) */
#define ACK_TIMER 8 /* on: timer set */
#define RET_TIMER 16 /* on: retran timer set */
#define MODE 32 /* on: acceptor ║ off: initiator */
#define HDUPLEX 64 /* on: half duplex ║ off: full duplex */
#define ACK 128 /* on: ack needed - normal ack sequence */
/* Link Status Byte 2 bit definition (lcb.status_2)
*/
#define FORCE_ACK 1 /* on: force ack needed - lt received bad */
#define FORCE_RET 2 /* on: lt retran needed - la received bad */
#define ZERO_WNDW 4 /* on: zero window in effect */
#define WNDW_TIMER 8 /* on: flow control window timer set */
/* Link Status Byte 3 bit definition (lcb.status_3)
*/
#define LN_RECEIVED 1 /* on: ln lpdu received */
#define LNA_RECEIVED 2 /* on: lna lpdu received */
#define FORCE_LNA 4 /* on: need to send an lna lpdu */
#define LN_TIMER 16 /* on: ln retran timer set */
#define DUP_IGNORED 32 /* on: received an immediate duplicate LT */
/* it was ignored */
#define LN_SENT 64 /* on: ln lpdu sent, not acked */
/* timer event flag definition */
#define FRAME_SND 1 /* frame has been sent */
#define FRAME_RCV 2 /* a frame has been received */
#define FRAME_DN 3 /* frame sent, including end flag */
/* offsets of LPDU */
#define LT_SEQ 4 /* sequence number in LT */
/* Link buffer size definitions */
#define RBUF_LEN 2304 /* 9 x 256 (Class 4 max) */
#define SBUF_LEN 1024
/***************************************************************************
* *
* MNP Control Block Definitions *
* *
***************************************************************************/
struct MNP_CB {
SIGN_16 (*l_connect)(); /* function to establish a link connection */
SIGN_16 (*l_disconnect)(); /* function to disconnect a link connection */
SIGN_16 (*l_link)(); /* function to maintain link */
SIGN_16 (*lt_send)(); /* function to send an lt lpdu */
SIGN_16 (*lt_receive)(); /* function to receive an lt lpdu */
SIGN_16 (*l_update)(); /* function to change link variables */
SIGN_16 (*ret_rcvbuf)(); /* function to return a receive buffer */
struct BUFFER *rb; /* addr of struct to control receive buffers */
struct BUFFER *ftb; /* addr of struct to control transmit buffers */
struct BUFFER *rlkb; /* addr of struct to control lnk rec buffers */
struct BUFFER *lkb; /* addr of struct to control lnk xmit buffers */
SIGN_16 ld_reason; /* reason code in the received LD */
USIGN_16 ld_source; /* disc source: 0=layer, 1=user */
USIGN_16 parity; /* parity type */
};