341 lines
15 KiB
C
341 lines
15 KiB
C
/* sna_dlc.h */
|
|
/*
|
|
* (C) Copyright Data Connection Limited 1989-1992.
|
|
* (C) Copyright Microsoft Corporation 1991.
|
|
* All Rights Reserved.
|
|
*/
|
|
|
|
#ifndef SNA_DLCH_INCLUDED
|
|
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
|
|
#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
|
|
|
|
#pragma option pop /*P_O_Pop*/
|
|
#endif
|
|
/* End of file cs_dlc.h */
|
|
|