Sna_dlc.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:15k
- /* sna_dlc.h */
- /*
- * (C) Copyright Data Connection Limited 1989-1992.
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * All Rights Reserved.
- */
- #ifndef SNA_DLCH_INCLUDED
- #define SNA_DLCH_INCLUDED
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*****************************************************************************/
- /* Type definitions for message fields */
- /*****************************************************************************/
- typedef signed long LONGINT;
- typedef signed short INTEGER;
- typedef signed char SENUMERATED;
- typedef signed short LENUMERATED;
- typedef unsigned char SUBRNG0;
- typedef signed char SUBRNG1;
- typedef signed short SUBRNG2;
- typedef signed char SET1;
- typedef signed short SET2;
- typedef signed long SET;
- typedef SET2 THFORMAT;
- #define VOID void
- /*****************************************************************************/
- /* Element offset and length definitions */
- /*****************************************************************************/
- #define SBCBELT1 1
- #define SBCBELT3 13
- #define SNANBEDA 268 /* LENGTH OF BUFFER ELEMENT */
- /*****************************************************************************/
- /* POINTERS TO STRUCTURES IN SBTBUFPT */
- /*****************************************************************************/
- #ifdef WIN32_SUPPORT
- #define PTRBFELT struct bufelt *
- #define PTRBFHDR struct bufhdr *
- #else
- #define PTRBFELT struct bufelt far *
- #define PTRBFHDR struct bufhdr far *
- #endif
- /*****************************************************************************/
- /* SIZE OF BUFFER HEADER: */
- /* - 10 BYTES FOR FIXED PART */
- /* - 16 BYTES FOR VARIANT PART */
- /* - 2 BYTES FOR MATTERHORN EXTRA */
- /*****************************************************************************/
- #define SVBUFSIZ 26
- /*****************************************************************************/
- /* OPEN MESSAGE TYPE DECLARATIONS */
- /*****************************************************************************/
- typedef struct tpophdr{ /* OPEN MESSAGE HEADER */
- CHAR openqual;
- #define REQU 1
- #define RSPOK 2
- #define RSPERR 3
- #define CONFOK 4
- #define CONFERR 5
- CHAR opentype;
- #define LINK 16
- #define STAT 17
- CHAR appltype;
- CHAR opluno; /* INTERFACE USER NUMBER */
- INTEGER opresid; /* INTERFACE USER ID */
- union {
- struct {INTEGER B03;
- INTEGER B04;
- CHAR B05;
- CHAR B06;}B02;
- struct {INTEGER B08;
- INTEGER B09;}B07;
- }B01;}
- #define icreditr B01.B02.B03 /* Initial Credit for Receive */
- #define icredits B01.B02.B04 /* Initial Credit for Send */
- #define opninfo1 B01.B02.B05 /* Negotiable BIND indicator (FMI) */
- #define opnpad1 B01.B02.B06 /* Open (SSCP) Force type */
- #define operr1 B01.B07.B08
- #define ERINIFAIL 0x0001 /* Hardware initialisation failed */
- #define ERLKNOTOPEN 0x0003 /* Link not open */
- #define ERSTATOPEN 0x0005 /* Station already open */
- #define ERNOCB 0x0006 /* Station control blocks depleted */
- #define ERINVINDX 0x0007 /* Invalid link index */
- #define ERMAXSTAT 0x0008 /* No more stations/link allowed */
- #define ERINVXID 0x0008 /* Invalid XID length */
- #define ERDIFADDR 0x0009 /* Address different from RQ-OP-STN */
- #define ERLINKOPN 0x0009 /* Link already open */
- #define ERBADADDR 0x000A /* Invalid DLC address */
- #define ERLCCERR 0x000A /* LCC error; fatal hardware failure*/
- #define ERBADINDX 0x000B /* Invalid link index */
- #define ERBADOPN 0x000C /* Open(LINK) has insufficient data */
- #define ERCONNTO 0x000D /* Link connection timeout */
- #define ERNORES 0x000E /* No resources free */
- #define EROPNPND 0x0011 /* Close(LINK) arrived, Open pending*/
- #define ERDUPREQ 0x0012 /* Duplicate request */
- #define ERNOINC 0x0A11 /* Can't accept incoming call */
- #define operr2 B01.B07.B09
- TPOPHDR;
- #define SNA 0
- #define APPL 1
- #define AMOD 2
- #define DLC 3
- /*****************************************************************************/
- /* CLOSE MESSAGE TYPE DECLARATIONS */
- /*****************************************************************************/
- typedef struct tpclhdr{ /* CLOSE MESSAGE HEADER */
- CHAR closqual; /* Close message qualifier */
- CHAR clstype; /* Close message connection type */
- CHAR clsctl; /* For Close(PLU) only */
- #define CLNORMAL 1
- #define CLBIND 2
- #define CLCFAERR 3
- #define CLPUINAC 4
- #define CLLUINAC 5
- #define CLLNKERR 6
- #define CLBFSHRT 7
- #define CLRCVCHK 8
- #define CLSLUTRM 9
- CHAR clspad1;
- INTEGER clspad2;
- INTEGER clserr1;
- INTEGER clserr2;
- }TPCLHDR;
- /*****************************************************************************/
- /* DLC MESSAGE TYPE DECLARATIONS */
- /*****************************************************************************/
- typedef struct tpddhdr{ /* DLC DATA MESSAGE HEADER */
- INTEGER ddpad1; /* Pad */
- INTEGER ddpad2; /* Pad */
- INTEGER ddpad3; /* Pad */
- THFORMAT ddth01; /* TH Flags */
- CHAR dddaf; /* DAF in the TH */
- CHAR ddoaf; /* OAF in the TH */
- INTEGER ddseqno; /* Sequence Number in the TH */
- }TPDDHDR;
- typedef struct tpdshdr{ /* DLC DATA MESSAGE HEADER */
- CHAR dstype; /* DLC-Status type */
- #define SENDXID 0x1a
- #define RESOURCE 0x04
- #define OUTAGE 0x18
- #define STNCTCTD 0x17
- #define RQOPNSTN 0x16
- CHAR dsqual; /* Status Qualifier */
- /*BOOLEAN*/union {
- /*TRUE*/struct {CHAR B0N;
- CHAR B0O;
- INTEGER B0P;
- INTEGER B0Q;
- CHAR B0R;}B0M;
- /*FALSE*/struct {INTEGER B0T;}B0S;
- }B0L;}
- #define dsuptype B0L.B0M.B0N /* Status Qualifier */
- #define dsmdset B0L.B0M.B0N /* RECFMS Counter Type */
- #define dsupcntr B0L.B0M.B0O /* Req-Opn-Station Set-Mode flag */
- #define dspad B0L.B0M.B0P /* RECFMS Counter Value */
- #define dserror B0L.B0M.B0Q /* Pad */
- #define dsoutsq B0L.B0M.B0R /* Internal value for Counter */
- #define dlccred B0L.B0S.B0T /* Outage Sub-qualifier */
- TPDSHDR; /* DLC-Status Credit Increment */
- /*****************************************************************************/
- /* SNAP-LINK HMOD MESSAGE TYPE DECLARATIONS */
- /*****************************************************************************/
- typedef struct tpdlhdr{ /* HMOD MESSAGE HEADER */
- CHAR dlcnr; /* N(R) Value */
- CHAR dlcns; /* N(S) Value */
- INTEGER dlclkidx; /* Link Index */
- CHAR dlcerst1; /* Error Status 1 */
- CHAR dlcerst2; /* Error Status 2 */
- }TPDLHDR;
- /*****************************************************************************/
- /* MAIN DEFINITION OF MESSAGE HEADER */
- /*****************************************************************************/
- typedef struct bufhdr{
- PTRBFHDR nxtqptr;
- PTRBFELT hdreptr;
- CHAR numelts;
- CHAR msgtype;
- #define OPENMSG 1
- #define CLOSEMSG 2
- #define DLCSTAT 17
- #define DLCDATA 16
- CHAR srcl;
- CHAR srcp;
- #define SLPROD 22
- INTEGER srci;
- CHAR destl;
- CHAR destp;
- INTEGER desti;
- union {
- struct {TPOPHDR B1C;}B1B;
- struct {TPCLHDR B1E;}B1D;
- struct {TPDDHDR B1G;}B1F;
- struct {TPDSHDR B1I;}B1H;
- struct {TPDLHDR B1K;}B1J;
- }B0Y;}
- #define ophdr B0Y.B1B.B1C
- #define clhdr B0Y.B1D.B1E
- #define ddhdr B0Y.B1F.B1G
- #define dshdr B0Y.B1H.B1I
- #define dlhdr B0Y.B1J.B1K
- BUFHDR;
- /*****************************************************************************/
- /* MAIN DEFINITION OF MESSAGE ELEMENT */
- /*****************************************************************************/
- /**STRUCT+********************************************************************/
- /* Structure: BUFELT */
- /* */
- /* Description: Main definition of SNAPS Buffer Element */
- /*****************************************************************************/
- typedef struct bufelt{
- PTRBFELT elteptr; /* Pointer to next element in buffer*/
- INTEGER startd; /* Offset (from 1) of start of data */
- INTEGER endd; /* Offset (from 1) of last data byte*/
- CHAR trpad;
- CHAR dataru[268]; /* The data bytes themselves */
- } BUFELT;
- /**STRUCT-********************************************************************/
- /*****************************************************************************/
- /* IF Win32 environment THEN */
- /* IF intel format THEN */
- /* define flipping macros */
- /* define anti-flipping macros to NOP */
- /*****************************************************************************/
- #ifdef WIN32
- #ifndef NON_INTEL_BYTE_ORDER
- #define PFLIPI(X) (unsigned short)_rotl(((unsigned short)(X))*(unsigned long)0x00010001,8)
- #define PFLIPL(X) MAKEULONG(PFLIPI(HIUSHORT(X)),PFLIPI(LOUSHORT(X)))
- #define PANTIFLIPI(X) (X)
- /*****************************************************************************/
- /* ELSE (non-intel) */
- /* set flipping to nop for now */
- /* set anti-flipping on */
- /*****************************************************************************/
- #else
- #define PFLIPI(X) (X)
- #define PFLIPL(X) (X)
- #define PANTIFLIPI(X) (unsigned short)_rotl((unsigned short)(X),8)
- #endif
- /*****************************************************************************/
- /* ELSE (not Win32, must be Intel environment) */
- /* define flipping macros */
- /*****************************************************************************/
- #else
- #define PFLIPI(X) (unsigned short)_rotl((unsigned short)(X),8)
- #define PFLIPL(X) MAKEULONG(PFLIPI(HIUSHORT(X)),PFLIPI(LOUSHORT(X)))
- #define PANTIFLIPI(X) (X)
- #endif
- /*****************************************************************************/
- /* Buffer pool access routines */
- /*****************************************************************************/
- #ifdef WIN32_SUPPORT
- #ifdef OLD_IHV_PROTOS
- extern PTRBFHDR WINAPI sepdbubl (USHORT);
- extern VOID WINAPI sepdburl (PTRBFHDR);
- extern VOID WINAPI sbpibegt (PTRBFELT *);
- extern VOID WINAPI sbpiberl (PTRBFELT *);
- #else
- extern PTRBFHDR WINAPI SNAGetBuffer (USHORT);
- extern VOID WINAPI SNAReleaseBuffer (PTRBFHDR);
- extern VOID WINAPI SNAGetElement (PTRBFELT *);
- extern VOID WINAPI SNAReleaseElement(PTRBFELT *);
- #endif
- #else
- extern PTRBFHDR far sepdbubl (USHORT);
- extern VOID far sepdburl (PTRBFHDR);
- extern VOID far sbpibegt (PTRBFELT far *);
- extern VOID far sbpiberl (PTRBFELT far *);
- #endif
- #ifdef WIN32_SUPPORT
- extern CHAR WINAPI snpugetc(PTRBFELT, INTEGER);
- extern VOID WINAPI snpuputc(PTRBFELT, INTEGER, CHAR);
- extern INTEGER WINAPI snpugeti(PTRBFELT, INTEGER);
- extern VOID WINAPI snpuputi(PTRBFELT, INTEGER, INTEGER);
- extern VOID WINAPI snpugetl(PTRBFELT, INTEGER, LONGINT *);
- extern VOID WINAPI snpuputl(PTRBFELT, INTEGER, LONGINT);
- #else
- extern CHAR far snpugetc(PTRBFELT, INTEGER);
- extern VOID far snpuputc(PTRBFELT, INTEGER, CHAR);
- extern INTEGER far snpugeti(PTRBFELT, INTEGER);
- extern VOID far snpuputi(PTRBFELT, INTEGER, INTEGER);
- extern VOID far snpugetl(PTRBFELT, INTEGER, LONGINT FAR *);
- extern VOID far snpuputl(PTRBFELT, INTEGER, LONGINT);
- #endif
- /*****************************************************************************/
- /* Include the remainder of SNA Services definitions */
- /*****************************************************************************/
- #include <sna_cnst.h>
- #ifdef __cplusplus
- }
- #endif
- #endif
- /* End of file cs_dlc.h */