📄 ssap.h
字号:
/* ssap.h - include file for session users (SS-USER) *//* * $Header: /f/iso/h/RCS/ssap.h,v 5.0 88/07/21 14:39:34 mrose Rel $ * * * $Log$ *//* * NOTICE * * Acquisition, use, and distribution of this module and related * materials are subject to the restrictions of a license agreement. * Consult the Preface in the User's Manual for the full terms of * this agreement. * */#ifndef _SSAP_#define _SSAP_#ifndef _MANIFEST_#include "manifest.h"#endif#ifndef _GENERAL_#include "general.h"#endif#ifndef _ISOADDRS_#include "isoaddrs.h"#endif/* */struct SSAPactid { /* Activity Identifier */#define SID_DATA_SIZE 6 u_char sd_len; char sd_data[SID_DATA_SIZE];};struct SSAPref { /* SSAP reference */ /* USER reference */#define SREF_USER_SIZE 64 u_char sr_ulen; char sr_udata[SREF_USER_SIZE]; /* COMMON reference */#define SREF_COMM_SIZE 64 u_char sr_clen; char sr_cdata[SREF_COMM_SIZE]; /* ADDITIONAL reference */#define SREF_ADDT_SIZE 4 u_char sr_alen; char sr_adata[SREF_ADDT_SIZE]; /* for S-ACTIVITY-RESUME */ u_char sr_vlen; char sr_vdata[SREF_USER_SIZE];#define sr_calling sr_udata#define sr_calling_len sr_ulen#define sr_called sr_vdata#define sr_called_len sr_vlen};/* */struct SSAPstart { /* S-CONNECT.INDICATION */ int ss_sd; /* SESSION descriptor */ struct SSAPref ss_connect; /* session connection identifier */ struct SSAPaddr ss_calling; /* address of peer calling */ struct SSAPaddr ss_called; /* address of peer called */ int ss_requirements; /* session requirements */ int ss_settings; /* initial settings of tokens */ long ss_isn; /* initial serial number */ int ss_ssdusize; /* largest atomic SSDU */ int ss_version; /* session service version number */ struct QOStype ss_qos; /* quality of service */ /* initial DATA from peer */#define SS_SIZE 512 int ss_cc; /* length */ char *ss_data; /* data */};#define SSFREE(ss) \{ \ if ((ss) -> ss_data) \ free ((ss) -> ss_data), (ss) -> ss_data = NULL; \} struct SSAPconnect { /* S-CONNECT.CONFIRMATION */ int sc_sd; /* SESSION descriptor */ struct SSAPref sc_connect; /* session connection identifier */ struct SSAPaddr sc_responding;/* address of peer responding */ int sc_result; /* result */#define SC_ACCEPT (-1)#define SC_BASE 0x80 /* reject by SSAP-provider */#define SC_SSAPID (SC_BASE + 1) /* SSAP identifier unknown */#define SC_SSUSER (SC_BASE + 2) /* SS-user not attached to SSAP */#define SC_CONGEST (SC_BASE + 3) /* Congestion at SSAP */#define SC_VERSION (SC_BASE + 4) /* Proposed protocol versions not supported */ /* begin UNOFFICIAL */#define SC_ADDRESS (SC_BASE + 5) /* Address unknown */#define SC_REFUSED (SC_BASE + 6) /* Connect request refused on this network connection */#define SC_TRANSPORT (SC_BASE + 7) /* Transport disconnect */#define SC_ABORT (SC_BASE + 8) /* Provider-initiated abort */#define SC_PROTOCOL (SC_BASE + 9) /* Protocol error */#define SC_PARAMETER (SC_BASE + 10) /* Invalid parameter */#define SC_OPERATION (SC_BASE + 11) /* Invalid operation */#define SC_TIMER (SC_BASE + 12) /* Timer expired */#define SC_WAITING (SC_BASE + 13) /* Indications waiting */ /* end UNOFFICIAL */ /* reject by SSAP-user */#define SC_NOTSPECIFIED 0 /* Reason not specified */#define SC_CONGESTION 1 /* Temporary congestion */#define SC_REJECTED 2 /* Rejected */#ifdef notdef#define SC_FATAL(r) ((r) < SC_BASE || (r) < SC_PARAMETER)#define SC_OFFICIAL(r) ((r) < SC_BASE || (r) < SC_ADDRESS)#else#define SC_FATAL(r) ((r) < SC_PARAMETER)#define SC_OFFICIAL(r) ((r) < SC_ADDRESS)#endif int sc_requirements; /* session requirements */ int sc_settings; /* initial assignment of tokens */ int sc_please; /* tokens requested by SS-user (S-TOKEN-PLEASE.INDICATION) */ long sc_isn; /* initial serial number */ int sc_ssdusize; /* largest atomic SSDU */ int sc_version; /* session service version number */ struct QOStype sc_qos; /* quality of service */ /* initial DATA from peer */#ifdef HPUX#undef SC_SIZE#endif#define SC_SIZE 512 int sc_cc; /* length */ char *sc_data; /* data */ char *sc_realdata; /* real head of data */};#define SCFREE(sc) \{ \ if ((sc) -> sc_realdata) \ free ((sc) -> sc_realdata), \ (sc) -> sc_realdata = (sc) -> sc_data = NULL; \ else \ if ((sc) -> sc_data) \ free ((sc) -> sc_data), (sc) -> sc_data = NULL; \} /* SESSION requirements */#define SR_HALFDUPLEX 0x0001 /* half-duplex */#define SR_DUPLEX 0x0002 /* full-duplex */#define SR_EXPEDITED 0x0004 /* expedited data transfer */#define SR_MINORSYNC 0x0008 /* minor synchronize */#define SR_MAJORSYNC 0x0010 /* major synchronize */#define SR_RESYNC 0x0020 /* resynchronize */#define SR_ACTIVITY 0x0040 /* activity management */#define SR_NEGOTIATED 0x0080 /* negotiated release */#define SR_CAPABILITY 0x0100 /* capability data transfer */#define SR_EXCEPTIONS 0x0200 /* exceptions reporting */#define SR_TYPEDATA 0x0400 /* typed data transfer */#define SR_SYMMETRIC 0x0800 /* symmetric synchronize */#define SR_RLS_EXISTS SR_NEGOTIATED#define SR_MAJ_EXISTS (SR_MAJORSYNC | SR_ACTIVITY)#define SR_ACT_EXISTS SR_ACTIVITY#define SR_MIN_EXISTS SR_MINORSYNC#define SR_DAT_EXISTS SR_HALFDUPLEX#define SR_TOKENS (SR_RLS_EXISTS | SR_MAJ_EXISTS | SR_ACT_EXISTS \ | SR_MIN_EXISTS | SR_DAT_EXISTS)#define SR_BASUBSET (SR_HALFDUPLEX | SR_TYPEDATA | SR_CAPABILITY \ | SR_MINORSYNC | SR_EXCEPTIONS | SR_ACTIVITY)#define SR_BCSUBSET (SR_HALFDUPLEX | SR_DUPLEX)#define SR_BSSUBSET (SR_NEGOTIATED | SR_HALFDUPLEX | SR_DUPLEX \ | SR_TYPEDATA | SR_MINORSYNC | SR_MAJORSYNC \ | SR_RESYNC)#define SR_MYREQUIRE (SR_BASUBSET | SR_BCSUBSET | SR_BSSUBSET \ | SR_EXPEDITED)#define SR_DEFAULT (SR_HALFDUPLEX | SR_MINORSYNC | SR_ACTIVITY \ | SR_CAPABILITY | SR_EXCEPTIONS) /* SESSION tokens */#define ST_INIT_VALUE 0x00 /* initiator's side */#define ST_RESP_VALUE 0x01 /* responder's side */#define ST_CALL_VALUE 0x02 /* called SS-user's choice */#define ST_RSVD_VALUE 0x03 /* reserved */#define ST_MASK 0x03#define ST_RLS_SHIFT 6 /* release token */#define ST_MAJ_SHIFT 4 /* major/activity token */#define ST_ACT_SHIFT ST_MAJ_SHIFT#define ST_MIN_SHIFT 2 /* synchronize-minor token */#define ST_DAT_SHIFT 0 /* data token */#define dotokens() \{ \ dotoken (SR_RLS_EXISTS, ST_RLS_SHIFT, ST_RLS_TOKEN, "release"); \ dotoken (SR_MAJ_EXISTS, ST_MAJ_SHIFT, ST_MAJ_TOKEN, "majorsync"); \ dotoken (SR_MIN_EXISTS, ST_MIN_SHIFT, ST_MIN_TOKEN, "minorsync"); \ dotoken (SR_DAT_EXISTS, ST_DAT_SHIFT, ST_DAT_TOKEN, "data"); \}struct SSAPdata { /* S-READ.INDICATION */ int sx_type; /* type of indication */#define SX_NORMAL 0x00 /* S-DATA.INDICATION */#define SX_EXPEDITED 0x01 /* S-EXPEDITED-DATA.INDICATION */#define SX_TYPED 0x02 /* S-TYPED-DATA.INDICATION */#define SX_CAPDIND 0x03 /* S-CAPABILITY-DATA.INDICATION */#define SX_CAPDCNF 0x04 /* S-CAPABILITY-DATA.CONFIRMATION */#define SX_EXSIZE 14 /* EXPEDITED DATA (XSSDU) only */#define SX_CDSIZE 512 /* CAPABILITY DATA only */#define SX_CDASIZE 512 /* CAPABILITY DATA ACK only */ int sx_cc; /* total length */ struct qbuf sx_qbuf; /* chained data */};#define SXFREE(sx) QBFREE (&((sx) -> sx_qbuf))struct SSAPtoken { /* S-{TOKEN-*,GIVE-CONTROL}.INDICATION */ int st_type; /* type of indication */#define ST_GIVE 0x00 /* S-TOKEN-GIVE.INDICATION */#define ST_PLEASE 0x01 /* S-TOKEN-PLEASE.INDICATION */#define ST_CONTROL 0x02 /* S-GIVE-CONTROL.INDICATION */ u_char st_tokens; /* tokens offered/wanted */#define ST_RLS_TOKEN (0x01 << ST_RLS_SHIFT)#define ST_MAJ_TOKEN (0x01 << ST_MAJ_SHIFT)#define ST_ACT_TOKEN (0x01 << ST_ACT_SHIFT)#define ST_MIN_TOKEN (0x01 << ST_MIN_SHIFT)#define ST_DAT_TOKEN (0x01 << ST_DAT_SHIFT) u_char st_owned; /* tokens owned by user */#define ST_SIZE 512 /* PLEASE TOKEN only */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -