You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
7.1 KiB
C
200 lines
7.1 KiB
C
/************************************************************************/
|
|
/* SISCO SOFTWARE MODULE HEADER *****************************************/
|
|
/************************************************************************/
|
|
/* (c) Copyright Systems Integration Specialists Company, Inc., */
|
|
/* 1997, All Rights Reserved */
|
|
/* */
|
|
/* PROPRIETARY AND CONFIDENTIAL */
|
|
/* */
|
|
/* MODULE NAME : cosp.h */
|
|
/* PRODUCT(S) : MOSI Stack (over TP4) */
|
|
/* */
|
|
/* MODULE DESCRIPTION : */
|
|
/* This header file defines variable and functions */
|
|
/* internal to the COSP (decoding and encoding). */
|
|
/* */
|
|
/* */
|
|
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */
|
|
/* */
|
|
/* */
|
|
/* MODIFICATION LOG : */
|
|
/* Date Who Rev Comments */
|
|
/* -------- --- ------ ------------------------------------------- */
|
|
/* 09/12/01 JRB 03 Reverse cosp_enc_cn_ac change (not needed). */
|
|
/* 08/01/01 JRB 02 Del rem_addr from cosp_enc_cn_ac proto. */
|
|
/* 05/27/97 JRB 7.00 MMSEASE 7.0 release. */
|
|
/* 01/13/97 EJV 01 Created */
|
|
/************************************************************************/
|
|
#ifndef COSP_INCLUDED
|
|
#define COSP_INCLUDED
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
extern ST_UCHAR cosp_only_ssel [1+MAX_SSEL_LEN];
|
|
|
|
|
|
/*======================================================*/
|
|
/* */
|
|
/* C O N N E C T I O N S T A T E S */
|
|
/* */
|
|
/*======================================================*/
|
|
|
|
|
|
/* Valid states, the first IDLE state must be 0) */
|
|
#define COSP_CSTATE_IDLE 0 /* idle, transport not connected*/
|
|
#define COSP_CSTATE_WAIT_TCON_CNF 1 /* wait T-CONNECT.cnf */
|
|
#define COSP_CSTATE_IDLE_TCON 100 /* idle, transport connected */
|
|
#define COSP_CSTATE_WAIT_AC 2 /* wait for ACCEPT SPDU */
|
|
#define COSP_CSTATE_WAIT_DN 3 /* wait for DISCONNECT SPDU */
|
|
#define COSP_CSTATE_WAIT_CON_RSP 8 /* wait S-CONNECT.rsp */
|
|
#define COSP_CSTATE_WAIT_REL_RSP 9 /* wait for S-RELEASE.rsp */
|
|
#define COSP_CSTATE_WAIT_TDISCON_IND 16 /* wait T-DISCONNECT.ind */
|
|
#define COSP_CSTATE_DATA_XFER 713 /* Data Transfer state */
|
|
|
|
/*======================================================*/
|
|
/* */
|
|
/* C O S P P R O T O C O L D E F I N E S */
|
|
/* */
|
|
/* D E C O D E D S P D U S T R U C T U R E S */
|
|
/* */
|
|
/*======================================================*/
|
|
|
|
|
|
/* Encoding for supported COSP versions codes */
|
|
#define COSP_VER1 (ST_UCHAR) 1
|
|
#define COSP_VER2 (ST_UCHAR) 2
|
|
|
|
|
|
/* Encoding of SPDU Session Identifier (SI) codes */
|
|
#define COSP_SI_DATA (ST_UCHAR) 1
|
|
#define COSP_SI_GIVE_TOKEN (ST_UCHAR) 1 /* this is correct DT=GIVE-TOKEN */
|
|
#define COSP_SI_FINISH (ST_UCHAR) 9
|
|
#define COSP_SI_DISCON (ST_UCHAR) 10
|
|
#define COSP_SI_REFUSE (ST_UCHAR) 12
|
|
#define COSP_SI_CONNECT (ST_UCHAR) 13
|
|
#define COSP_SI_ACCEPT (ST_UCHAR) 14
|
|
#define COSP_SI_ABORT (ST_UCHAR) 25
|
|
#define COSP_SI_AB_ACCEPT (ST_UCHAR) 26
|
|
|
|
|
|
/* struct used to store decoded params from CONNECT or ACCEPT SPDU */
|
|
typedef struct tagCOSP_CN_AC
|
|
{
|
|
ST_UCHAR prot_option;
|
|
ST_UINT16 initiator_tsdu_size;
|
|
ST_UINT16 responder_tsdu_size;
|
|
ST_UCHAR ver_num;
|
|
ST_UCHAR ses_urequir [2]; /* byte0 (bits 9-16), byte1 (bits 1-8)*/
|
|
ST_UCHAR loc_ssel [1+MAX_SSEL_LEN];
|
|
ST_UCHAR rem_ssel [1+MAX_SSEL_LEN];
|
|
ST_UINT udata_len; /* SS-user data length */
|
|
ST_UCHAR *udata_ptr; /* SS-user data pointer */
|
|
}COSP_CN_AC;
|
|
|
|
|
|
/* Encoding for Reason Code PI in a REFUSE SPDU generated by SS-user */
|
|
#define COSP_RF_REASON_U_NOT_SPECIFIED (ST_UCHAR) 0
|
|
#define COSP_RF_REASON_U_CONGESTION (ST_UCHAR) 1
|
|
#define COSP_RF_REASON_U_REJECT (ST_UCHAR) 2
|
|
/* Encoding for Reason Code PI in a REFUSE SPDU generated by SS-provider */
|
|
#define COSP_RF_REASON_S_INV_SSEL (ST_UCHAR) 128+1
|
|
#define COSP_RF_REASON_S_NOT_ATTACHED (ST_UCHAR) 128+2
|
|
#define COSP_RF_REASON_S_CONGESTION (ST_UCHAR) 128+3
|
|
#define COSP_RF_REASON_S_INV_VERSION (ST_UCHAR) 128+4
|
|
#define COSP_RF_REASON_S_NOT_SPECIFIED (ST_UCHAR) 128+5
|
|
#define COSP_RF_REASON_S_RESTRICTIONS (ST_UCHAR) 128+6
|
|
|
|
|
|
/* struct used to store decoded params from REFUSE SPDU */
|
|
typedef struct tagCOSP_RF
|
|
{
|
|
ST_BOOLEAN disconnect; /* if SD_TRUE then disconnect transport */
|
|
ST_UCHAR ver_num;
|
|
ST_UCHAR reason; /* reason code for refuse connection */
|
|
ST_UCHAR ses_urequir [2]; /* byte0 (bits 9-16), byte1 (bits 1-8) */
|
|
ST_UINT udata_len; /* SS-user data length */
|
|
ST_UCHAR *udata_ptr; /* SS-user data pointer */
|
|
}COSP_RF;
|
|
|
|
|
|
#define COSP_P_AB_SPDU_LEN 9 /* P-ABORT is fixed in size */
|
|
|
|
/* Encoding for Transport Disconnect PI in an ABORT (and FINISH) SPDU */
|
|
#define COSP_TCONN_KEEP (ST_UCHAR) 0x00
|
|
#define COSP_TCONN_RELEASE (ST_UCHAR) 0x01
|
|
/* | with one reason code below */
|
|
#define COSP_AB_REASON_USER_ABORT (ST_UCHAR) 0x02
|
|
#define COSP_AB_REASON_PROT_ERROR (ST_UCHAR) 0x04
|
|
#define COSP_AB_REASON_NO_REASON (ST_UCHAR) 0x08
|
|
#define COSP_AB_REASON_IMPLEMENTATION (ST_UCHAR) 0x10
|
|
|
|
|
|
/* struct used to store decoded params from ABORT SPDU */
|
|
typedef struct tagCOSP_AB
|
|
{
|
|
ST_BOOLEAN disconnect; /* if SD_TRUE then disconnect transport */
|
|
ST_UCHAR reason; /* reason code for abort connection */
|
|
ST_UINT reflect_par_len; /* Reflect param length */
|
|
ST_UCHAR reflect_par [9]; /* Reflect param */
|
|
ST_UINT udata_len; /* SS-user data length */
|
|
ST_UCHAR *udata_ptr; /* SS-user data pointer */
|
|
}COSP_AB;
|
|
|
|
|
|
/* struct used to store decoded params from FINISH SPDU */
|
|
typedef struct tagCOSP_FN_DN
|
|
{
|
|
ST_BOOLEAN disconnect; /* SD_TRUE to discon transport (FN)*/
|
|
ST_UINT udata_len; /* SS-user data length */
|
|
ST_UCHAR *udata_ptr; /* SS-user data pointer */
|
|
}COSP_FN_DN;
|
|
|
|
/* struct used to store decoded params from DATA SPDU */
|
|
typedef struct tagCOSP_DT
|
|
{
|
|
ST_UINT udata_len; /* SS-user data length */
|
|
ST_UCHAR *udata_ptr; /* SS-user data pointer */
|
|
}COSP_DT;
|
|
|
|
|
|
|
|
/*======================================================*/
|
|
/* */
|
|
/* E N C O D E / D E C O D E F U N C T I O N S */
|
|
/* */
|
|
/*======================================================*/
|
|
|
|
/* cosp_enc.c */
|
|
ST_UINT cosp_envelope_len (ACSE_CONN *con, ST_UINT rem_ssel_len, ST_UCHAR spdu_type);
|
|
|
|
ST_RET cosp_enc_cn_ac (ACSE_CONN *con, PRES_ADDR *rem_addr,
|
|
char **spdu_ptr, ST_UINT *spdu_len, ST_UCHAR spdu_type);
|
|
ST_RET cosp_enc_rf (ACSE_CONN *con, char **spdu_ptr, ST_UINT *spdu_len, ST_UCHAR reason);
|
|
ST_RET cosp_enc_fn_dn (ACSE_CONN *con, char **spdu_ptr, ST_UINT *spdu_len, ST_UCHAR spdu_type);
|
|
ST_RET cosp_enc_u_ab (ACSE_CONN *con, char **spdu_ptr, ST_UINT *spdu_len);
|
|
ST_RET cosp_enc_p_ab (char *spdu_ptr, ST_INT err_code);
|
|
ST_RET cosp_enc_dt (ACSE_CONN *con, char **spdu_ptr, ST_UINT *spdu_len);
|
|
|
|
/* cosp_dec.c */
|
|
ST_RET cosp_dec_cn_ac (COSP_CN_AC *dec_par, char *spdu_buf, ST_UINT spdu_len, ST_UCHAR spdu_type);
|
|
ST_RET cosp_dec_rf (COSP_RF *dec_par, char *spdu_buf, ST_UINT spdu_len);
|
|
ST_RET cosp_dec_fn_dn (COSP_FN_DN *dec_par, char *spdu_buf, ST_UINT spdu_len, ST_UCHAR spdu_type);
|
|
ST_RET cosp_dec_ab (COSP_AB *dec_par, char *spdu_buf, ST_UINT spdu_len);
|
|
ST_RET cosp_dec_dt (COSP_DT *dec_par, char *spdu_buf, ST_UINT spdu_len);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* end of 'already included' */
|
|
|
|
|
|
|