📄 ssap.h
字号:
int st_cc; /* length */ char *st_data; /* data */};#define STFREE(st) \{ \ if ((st) -> st_data) \ free ((st) -> st_data), (st) -> st_data = NULL; \}struct SSAPsync { /* S-*-SYNC.{INDICATION,CONFIRMATION} */ int sn_type; /* type of indication/confirmation */#define SN_MAJORIND 0x00 /* S-MAJOR-SYNC.INDICATION */#define SN_MAJORCNF 0x01 /* S-MAJOR-SYNC.CONFIRMATION */#define SN_MINORIND 0x02 /* S-MINOR-SYNC.INDICATION */#define SN_MINORCNF 0x03 /* S-MINOR-SYNC.CONFIRMATION */#define SN_RESETIND 0x04 /* S-RESYNCHRONIZE.INDICATION */#define SN_RESETCNF 0x05 /* S-RESYNCHRONIZE.CONFIRMATION */ int sn_options; /* options (!!) */ /* for S-MINOR-SYNC.INDICATION */#define SYNC_CONFIRM 1 /* wants confirmation */#define SYNC_NOCONFIRM 0 /* .. nope */ /* for S-RESYNCHRONIZE.INDICATION */#define SYNC_RESTART 0 /* restart */#define SYNC_ABANDON 1 /* abandon */#define SYNC_SET 2 /* set */ long sn_ssn; /* serial number */#define SERIAL_NONE (-1L) /* No SSN */#define SERIAL_MIN 000000L /* the min SSN */#define SERIAL_MAX 999998L /* the max SSN */ int sn_settings; /* new token settings (RESYNC only) */ /* sync data from peer */#define SN_SIZE 512 int sn_cc; /* length */ char *sn_data; /* data */};#define SNFREE(sn) \{ \ if ((sn) -> sn_data) \ free ((sn) -> sn_data), (sn) -> sn_data = NULL; \}struct SSAPactivity { /* S-ACTIVITY-*.{INDICATION,CONFIRMATION} */ int sv_type; /* type of indication/confirmation */#define SV_START 0x00 /* S-ACTIVITY-START.INDICATION */#define SV_RESUME 0x01 /* S-ACTIVITY-RESUME.INDICATION */#define SV_INTRIND 0x02 /* S-ACTIVITY-INTERRUPT.INDICATION */#define SV_INTRCNF 0x03 /* S-ACTIVITY-INTERRUPT.CONFIRMATION */#define SV_DISCIND 0x04 /* S-ACTIVITY-DISCARD.INDICATION */#define SV_DISCCNF 0x05 /* S-ACTIVITY-DISCARD.CONFIRMATION */#define SV_ENDIND 0x06 /* S-ACTIVITY-END.INDICATION */#define SV_ENDCNF 0x07 /* S-ACTIVITY-END.CONFIRMATION */ struct SSAPactid sv_id; /* START/RESUME activity identifier */ struct SSAPactid sv_oid; /* RESUME old activity identifier */ struct SSAPref sv_connect;/* old connection identifier */ long sv_ssn; /* RESUME/END Serial number */ int sv_reason; /* INTERRUPT/DISCARD */ /* same values as sp_reason */ /* activity DATA from peer */#define SV_SIZE 512 int sv_cc; /* length */ char *sv_data; /* data */};#define SVFREE(sv) \{ \ if ((sv) -> sv_data) \ free ((sv) -> sv_data), (sv) -> sv_data = NULL; \}struct SSAPreport { /* S-{U,P}-EXCEPTION-REPORT.INDICATION */ int sp_peer; /* T = S-U-EXCEPTION-REPORT.INDICATION: sp_reason/sp_data both meaningful NIL = S-P-EXCEPTION-REPORT.INDICATION: sp_reason == SP_NOREASON, or sp_reason == SP_PROTOCOL */ int sp_reason;#define SP_NOREASON 0 /* No specific reason stated */#define SP_JEOPARDY 1 /* User receiving ability jeopardized */#define SP_RSVD1 2 /* reserved */#define SP_SEQUENCE 3 /* User sequence error */#define SP_RSVD2 4 /* reserved */#define SP_LOCAL 5 /* Local SS-user error */#define SP_PROCEDURAL 6 /* Unrecoverable procedural error */#define SP_DEMAND 128 /* Demand data token */#define SP_PROTOCOL (-1) /* SS-provider protocol error */ /* report DATA from peer */#define SP_SIZE 512 int sp_cc; /* length */ char *sp_data; /* data */};#define SPFREE(sp) \{ \ if ((sp) -> sp_data) \ free ((sp) -> sp_data), (sp) -> sp_data = NULL; \}struct SSAPfinish { /* S-RELEASE.INDICATION */ /* release DATA from peer */#define SF_SIZE 512 int sf_cc; /* length */ char *sf_data; /* data */};#define SFFREE(sf) \{ \ if ((sf) -> sf_data) \ free ((sf) -> sf_data), (sf) -> sf_data = NULL; \}struct SSAPrelease { /* S-RELEASE.CONFIRMATION */ int sr_affirmative; /* T = connection released NIL = request refused */ /* release DATA from peer */#define SR_SIZE 512 int sr_cc; /* length */ char *sr_data; /* data */};#define SRFREE(sr) \{ \ if ((sr) -> sr_data) \ free ((sr) -> sr_data), (sr) -> sr_data = NULL; \}struct SSAPabort { /* S-{U,P}-ABORT.INDICATION */ int sa_peer; /* T = S-U-ABORT.INDICATION: sa_info/sa_cc is meaningful NIL = S-P-ABORT.INDICATION: sa_reason is meaningful, sa_data/sa_cc contains diagnostics */ int sa_reason; /* same codes as sc_result */ /* abort DATA from peer */#define SA_SIZE 512 /* N.B.: the ISO DIS says 9, but we use 512 instead so ASE-level aborts will work reasonably */ int sa_cc; /* length */ char *sa_info; /* data (from the peer) */ char *sa_realinfo; /* real head of data */ char sa_data[512]; /* data (for messages from provider) */};#define SAFREE(sa) \{ \ if ((sa) -> sa_realinfo) \ free ((sa) -> sa_realinfo), (sa) -> sa_realinfo = NULL; \}struct SSAPindication { int si_type; /* the union element present */#define SI_DATA 0x00#define SI_TOKEN 0x01#define SI_SYNC 0x02#define SI_ACTIVITY 0x03#define SI_REPORT 0x04#define SI_FINISH 0x05#define SI_ABORT 0x06#ifdef HULA#define SI_UNITDATA 0xFF /* unit data indication */#define SI_UDERROR 0xF0 /* unit data error indication */#endif union { struct SSAPdata si_un_data; struct SSAPtoken si_un_token; struct SSAPsync si_un_sync; struct SSAPactivity si_un_activity; struct SSAPreport si_un_report; struct SSAPfinish si_un_finish; struct SSAPabort si_un_abort; } si_un;#define si_data si_un.si_un_data#define si_token si_un.si_un_token#define si_sync si_un.si_un_sync#define si_activity si_un.si_un_activity#define si_report si_un.si_un_report#define si_finish si_un.si_un_finish#define si_abort si_un.si_un_abort};/* */extern char *ssapversion;int SExec (); /* SERVER only */int SInit (); /* S-CONNECT.INDICATION */int SConnResponse (); /* S-CONNECT.RESPONSE */int SConnRequest (); /* S-CONNECT.REQUEST (backwards-compatible) */#define SConnRequest(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) \ SAsynConnRequest (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,0)int SAsynConnRequest (); /* S-(ASYN-)CONNECT.REQUEST */int SAsynRetryRequest (); /* S-ASYN-RETRY.REQUEST (pseudo) */int SDataRequest (); /* S-DATA.REQUEST */int SWriteRequest (); /* S-WRITE.REQUEST (pseudo) */int SExpdRequest (); /* S-EXPEDITED-DATA.REQUEST */int STypedRequest (); /* S-TYPED-DATA.REQUEST */int SCapdRequest (); /* S-CAPABILITY-DATA.REQUEST */int SCapdResponse (); /* S-CAPABILITY-DATA.RESPONSE */int SReadRequest (); /* S-READ.REQUEST (pseudo) */int SGTokenRequest (); /* S-TOKEN-GIVE.REQUEST */int SPTokenRequest (); /* S-TOKEN-PLEASE.REQUEST */int SGControlRequest (); /* S-CONTROL-GIVE.REQUEST */int SMajSyncRequest (); /* S-MAJOR-SYNC.REQUEST */int SMajSyncResponse (); /* S-MAJOR-SYNC.RESPONSE */int SMinSyncRequest (); /* S-MINOR-SYNC.REQUEST */int SMinSyncResponse (); /* S-MINOR-SYNC.RESPONSE */int SReSyncRequest (); /* S-RESYNCHRONIZE.REQUEST */int SReSyncResponse (); /* S-RESYNCHRONIZE.RESPONSE */int SActStartRequest (); /* S-ACTIVITY-START.REQUEST */int SActResumeRequest (); /* S-ACTIVITY-RESUME.REQUEST */int SActIntrRequest (); /* S-ACTIVITY-INTERRUPT.REQUEST */int SActIntrResponse (); /* S-ACTIVITY-INTERRUPT.RESPONSE */int SActDiscRequest (); /* S-ACTIVITY-DISCARD.REQUEST */int SActDiscResponse (); /* S-ACTIVITY-DISCARD.RESPONSE */int SActEndRequest (); /* S-ACTIVITY-END.REQUEST */int SActEndResponse (); /* S-ACTIVITY-END.RESPONSE */int SUAbortRequest (); /* S-U-ABORT.REQUEST */int SUReportRequest (); /* S-U-EXCEPTION-REPORT.REQUEST */int SRelRequest (); /* S-RELEASE.REQUEST */int SRelResponse (); /* S-RELEASE.RESPONSE */#ifdef HULAint SUnitDataBind(); /* bind local to a remote address */int SUnitDataUnbind(); /* unbind local from a remote address */int SUnitDataSetupRead(); /* set up read data for server */int SUnitDataWrite(); /* UNITDATA.request (with handle) */int SUnitDataRead(); /* UNITDATA.indication (with handle) */int SUnitDataRequest(); /* UNITDATA.request (without handle) */int SUnitDataSelectMask(); /* set the select mask for async */#endifint SSetIndications (); /* define vectors for INDICATION events */int SSelectMask (); /* map session descriptors for select() */char *SErrString (); /* return SSAP error code in string form */#define SLocalHostName getlocalhostchar *SLocalHostName (); /* return name of local host (sigh) */#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -