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.
295 lines
12 KiB
C
295 lines
12 KiB
C
/************************************************************************/
|
|
/* SISCO SOFTWARE MODULE HEADER *****************************************/
|
|
/************************************************************************/
|
|
/* (c) Copyright Systems Integration Specialists Company, Inc., */
|
|
/* 1986 - 1997, All Rights Reserved. */
|
|
/* */
|
|
/* MODULE NAME : mms_pcon.h */
|
|
/* PRODUCT(S) : MMSEASE, MMSEASE-LITE */
|
|
/* */
|
|
/* MODULE DESCRIPTION : */
|
|
/* This file has the data structures and function definitions */
|
|
/* required to interface with MMS context management services */
|
|
/* at the primitive level. */
|
|
/* */
|
|
/* Parameters : In general, the first parameter is the channel */
|
|
/* that the request or response is to be sent over. */
|
|
/* For Responses, the second parameter is the Invoke */
|
|
/* ID to be used. The last parameter is used to pass */
|
|
/* operation specific information by pointer. */
|
|
/* */
|
|
/* Return */
|
|
/* Values : Request functions return a pointer to the pending */
|
|
/* request tracking structure, of type MMSREQ_PEND. */
|
|
/* In case of error, the pointer is returned == 0 */
|
|
/* and mms_op_err is written with the err code. */
|
|
/* Response functions return 0 if OK, else an error */
|
|
/* code. */
|
|
/* */
|
|
/* MODIFICATION LOG : */
|
|
/* Date Who Rev Comments */
|
|
/* -------- --- ------ ------------------------------------------- */
|
|
/* 07/13/05 MDE 07 Added defines for reject class and code */
|
|
/* 03/23/05 JRB 06 Include asn1r instead of suicacse because */
|
|
/* APP_REF moved to asn1r. */
|
|
/* 07/10/02 JRB 05 Clarify description of maxreq_calling/called.*/
|
|
/* 12/10/97 MDE 04 Changed max_nest to ST_INT8 */
|
|
/* 11/06/97 MDE 03 Added suicacse.h, use APP_REF typedef */
|
|
/* 08/13/97 RKR 02 Format changes */
|
|
/* 07/29/97 DSF 01 Moved APP_REF to SUIC */
|
|
/* 04/02/97 DTL 7.00 MMSEASE 7.0 release. See MODL70.DOC for */
|
|
/* history. */
|
|
/************************************************************************/
|
|
|
|
#ifndef MMS_PCON_INCLUDED
|
|
#define MMS_PCON_INCLUDED
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "mms_err.h"
|
|
#include "mms_mp.h"
|
|
#include "asn1r.h" /* need APP_REF */
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* CONTEXT MANAGEMENT SERVICES */
|
|
/************************************************************************/
|
|
/* The structures below are used to pass CONTEXT MANAGEMENT information */
|
|
/* to/from the MMS primitives. */
|
|
/************************************************************************/
|
|
|
|
/************************************************************************/
|
|
/* INITIATE */
|
|
/************************************************************************/
|
|
|
|
struct init_rslt
|
|
{
|
|
ST_BOOLEAN accept_context; /* SD_TRUE if not error */
|
|
ST_BOOLEAN err_info_pres; /* error information available */
|
|
ERR_INFO err; /* otherwise look here */
|
|
};
|
|
typedef struct init_rslt INIT_RSLT;
|
|
|
|
|
|
/* This structure is used for non-core MMS-EASE P-Context's. */
|
|
/* It is attached to the primary initiate info structure as an array */
|
|
|
|
struct cs_init_info
|
|
{
|
|
ST_UINT p_context; /* P-Context for this init */
|
|
ST_BOOLEAN local_detail_pres; /* flag if local_detail is present */
|
|
ST_INT32 local_detail; /* local detail */
|
|
ST_INT16 maxreq_calling; /* max outst. "ind" allowed at "calling" app*/
|
|
/* DEBUG: chg name to max_ind_calling? */
|
|
ST_INT16 maxreq_called; /* max outst. "ind" allowed at "called" app*/
|
|
/* DEBUG: chg name to max_ind_called? */
|
|
ST_BOOLEAN max_nest_pres; /* indicates if max_nest is present */
|
|
ST_INT8 max_nest; /* maximum data nesting */
|
|
ST_INT init_detail_len; /* init detail */
|
|
ST_UCHAR *init_detail; /* this is an ASN.1 encoded sequence */
|
|
INIT_RSLT rslt;
|
|
};
|
|
typedef struct cs_init_info CS_INIT_INFO;
|
|
|
|
|
|
/* REQUEST & RESPONSE : */
|
|
|
|
struct init_info
|
|
{ /* Proposed (req) / Negiotiated (resp) */
|
|
ST_BOOLEAN mms_p_context_pres;/* MMS Core context used */
|
|
ST_BOOLEAN max_segsize_pres; /* flag if max_segsize is present */
|
|
ST_INT32 max_segsize; /* maximum segment size */
|
|
ST_INT16 maxreq_calling; /* max outst. "ind" allowed at "calling" app*/
|
|
/* DEBUG: chg name to max_ind_calling? */
|
|
ST_INT16 maxreq_called; /* max outst. "ind" allowed at "called" app*/
|
|
/* DEBUG: chg name to max_ind_called? */
|
|
ST_BOOLEAN max_nest_pres; /* indicates if max_nest is present */
|
|
ST_INT8 max_nest; /* maximum data nesting */
|
|
ST_BOOLEAN mms_detail_pres; /* mms init detail enable */
|
|
ST_INT16 version; /* version */
|
|
ST_UCHAR param_supp[2]; /* parameter support options: bitstring */
|
|
ST_UCHAR serv_supp[11]; /* service support options: bitstring */
|
|
INIT_RSLT rslt; /* success/failure & error info */
|
|
ST_INT num_cs_init; /* number of CS init info's attached */
|
|
ST_INT core_position; /* Position for CORE CONTEXT in list */
|
|
/* (0 = first, num_cs_init = last, etc. */
|
|
/* followed by CS_INIT_INFO cs_init[num_cs_init] */
|
|
SD_END_STRUCT
|
|
};
|
|
typedef struct init_info INIT_INFO;
|
|
|
|
#ifndef MMS_LITE
|
|
MMSREQ_PEND *mp_init (ST_INT chan, ST_CHAR *partner, INIT_INFO *info_ptr);
|
|
ST_RET mp_init_resp (MMSREQ_IND *indptr, INIT_INFO *info);
|
|
#else
|
|
ST_RET mpl_init (INIT_INFO *info);
|
|
ST_RET mpl_cs_init (CS_INIT_INFO *info);
|
|
ST_RET mpl_init_resp (INIT_INFO *info);
|
|
ST_RET mpl_cs_init_resp (CS_INIT_INFO *info);
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/* CONCLUDE */
|
|
/************************************************************************/
|
|
|
|
/* REQUEST : NULL */
|
|
/* RESPONSE : NULL */
|
|
|
|
#ifndef MMS_LITE
|
|
MMSREQ_PEND *mp_conclude (ST_INT chan);
|
|
ST_RET mp_conclude_resp (MMSREQ_IND *ind);
|
|
#else
|
|
ST_RET mpl_conclude (ST_VOID);
|
|
ST_RET mpl_conclude_resp (ST_VOID);
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/* CANCEL */
|
|
/************************************************************************/
|
|
|
|
/* REQUEST : NULL */
|
|
/* RESPONSE : NULL */
|
|
|
|
#ifndef MMS_LITE
|
|
MMSREQ_PEND *mp_cancel (MMSREQ_PEND *req);
|
|
ST_RET mp_cancel_resp (MMSREQ_IND *ind);
|
|
#else
|
|
ST_RET mpl_cancel (ST_VOID);
|
|
ST_RET mpl_cancel_resp (ST_VOID);
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/* REJECT */
|
|
/************************************************************************/
|
|
|
|
|
|
#define MMS_REJ_CLASS_CONFIRMED_REQUEST_PDU 1
|
|
#define MMS_REJ_CODE_CONFIRMED_REQUEST_PDU_OTHER 0
|
|
#define MMS_REJ_CODE_CONFIRMED_REQUEST_PDU_UNRECOGNIZED_SERVICE 1
|
|
#define MMS_REJ_CODE_CONFIRMED_REQUEST_PDU_UNRECOGNIZED_MODIFIER 2
|
|
#define MMS_REJ_CODE_CONFIRMED_REQUEST_PDU_INVALID_INVOKEID 3
|
|
#define MMS_REJ_CODE_CONFIRMED_REQUEST_PDU_INVALID_ARGUMENT 4
|
|
#define MMS_REJ_CODE_CONFIRMED_REQUEST_PDU_INVALID_MODIFIER 5
|
|
#define MMS_REJ_CODE_CONFIRMED_REQUEST_PDU_MAX_SERV_OUTSTANDING_EXCEEDED 6
|
|
#define MMS_REJ_CODE_CONFIRMED_REQUEST_PDU_MAX_RECURSION_EXCEEDED 8
|
|
#define MMS_REJ_CODE_CONFIRMED_REQUEST_PDU_VALUE_OUT_OF_RANGE 9
|
|
|
|
#define MMS_REJ_CLASS_CONFIRMED_RESPONSE_PDU 2
|
|
#define MMS_REJ_CODE_CONFIRMED_RESPONSE_PDU_OTHER 0
|
|
#define MMS_REJ_CODE_CONFIRMED_RESPONSE_PDU_UNRECOGNIZED_SERVICE 1
|
|
#define MMS_REJ_CODE_CONFIRMED_RESPONSE_PDU_INVALID_INVOKEID 2
|
|
#define MMS_REJ_CODE_CONFIRMED_RESPONSE_PDU_INVALID_RESULT 3
|
|
#define MMS_REJ_CODE_CONFIRMED_RESPONSE_PDU_MAX_RECURSION_EXCEEDED 5
|
|
#define MMS_REJ_CODE_CONFIRMED_RESPONSE_PDU_VALUE_OUT_OF_RANGE 6
|
|
|
|
#define MMS_REJ_CLASS_CONFIRMED_ERROR_PDU 3
|
|
#define MMS_REJ_CODE_CONFIRMED_ERROR_PDU_OTHER 0
|
|
#define MMS_REJ_CODE_CONFIRMED_ERROR_PDU_UNRECOGNIZED_SERVICE 1
|
|
#define MMS_REJ_CODE_CONFIRMED_ERROR_PDU_INVALID_INVOKEID 2
|
|
#define MMS_REJ_CODE_CONFIRMED_ERROR_PDU_INVALID_SERVICEERROR 3
|
|
#define MMS_REJ_CODE_CONFIRMED_ERROR_PDU_VALUE_OUT_OF_RANGE 4
|
|
|
|
#define MMS_REJ_CLASS_UNCONFIRMED_PDU 4
|
|
#define MMS_REJ_CODE_UNCONFIRMED_PDU_OTHER 0
|
|
#define MMS_REJ_CODE_UNCONFIRMED_PDU_UNRECOGNIZED_SERVICE 1
|
|
#define MMS_REJ_CODE_UNCONFIRMED_PDU_INVALID_ARGUMENT 2
|
|
#define MMS_REJ_CODE_UNCONFIRMED_PDU_MAX_RECURSION_EXCEEDED 3
|
|
#define MMS_REJ_CODE_UNCONFIRMED_PDU_VALUE_OUT_OF_RANGE 4
|
|
|
|
#define MMS_REJ_CLASS_PDU_ERROR 5
|
|
#define MMS_REJ_CODE_PDU_ERROR_UNKNOWN_PDU_TYPE 0
|
|
#define MMS_REJ_CODE_PDU_ERROR_INVALID_PDU 1
|
|
#define MMS_REJ_CODE_PDU_ERROR_ILLEGAL_ACSE_MAPPING 2
|
|
|
|
#define MMS_REJ_CLASS_CANCEL_REQUEST_PDU 6
|
|
#define MMS_REJ_CODE_CANCEL_REQUEST_PDU_OTHER 0
|
|
#define MMS_REJ_CODE_CANCEL_REQUEST_PDU_INVALID_INVOKEID 1
|
|
|
|
#define MMS_REJ_CLASS_CANCEL_RESPONSE_PDU 7
|
|
#define MMS_REJ_CODE_CANCEL_RESPONSE_PDU_OTHER 0
|
|
#define MMS_REJ_CODE_CANCEL_RESPONSE_PDU_INVALID_INVOKEID 1
|
|
|
|
#define MMS_REJ_CLASS_CANCEL_ERROR_PDU 8
|
|
#define MMS_REJ_CODE_CANCEL_ERROR_PDU_OTHER 0
|
|
#define MMS_REJ_CODE_CANCEL_ERROR_PDU_INVALID_INVOKEID 1
|
|
#define MMS_REJ_CODE_CANCEL_ERROR_PDU_INVALID_SERVICEERROR 2
|
|
#define MMS_REJ_CODE_CANCEL_ERROR_PDU_VALUE_OUT_OF_RANGE 3
|
|
|
|
#define MMS_REJ_CLASS_CONCLUDE_REQUEST_PDU 9
|
|
#define MMS_REJ_CODE_CONCLUDE_REQUEST_PDU_OTHER 0
|
|
#define MMS_REJ_CODE_CONCLUDE_REQUEST_PDU_INVALID_ARGUMENT 1
|
|
|
|
#define MMS_REJ_CLASS_CONCLUDE_RESPONSE_PDU 10
|
|
#define MMS_REJ_CODE_CONCLUDE_RESPONSE_PDU_OTHER 0
|
|
#define MMS_REJ_CODE_CONCLUDE_RESPONSE_PDU_INVALID_RESULT 1
|
|
|
|
#define MMS_REJ_CLASS_CONCLUDE_ERROR_PDU 11
|
|
#define MMS_REJ_CODE_CONCLUDE_ERROR_PDU_OTHER 0
|
|
#define MMS_REJ_CODE_CONCLUDE_ERROR_PDU_INVALID_SERVICEERROR 1
|
|
#define MMS_REJ_CODE_CONCLUDE_ERROR_PDU_VALUE_OUT_OF_RANGE 2
|
|
|
|
|
|
struct reject_resp_info
|
|
{
|
|
ST_BOOLEAN detected_here; /* flag indicating where error occurred */
|
|
ST_BOOLEAN invoke_known; /* flag indicating if invoke ID known */
|
|
ST_UINT32 invoke; /* invoke ID of service rejected */
|
|
ST_INT pdu_type; /* pdu type of service rejected */
|
|
ST_INT16 rej_class; /* reject class */
|
|
ST_INT16 rej_code; /* reject code */
|
|
};
|
|
typedef struct reject_resp_info REJECT_RESP_INFO;
|
|
|
|
#ifndef MMS_LITE
|
|
ST_RET mp_reject_resp (ST_INT chan, REJECT_RESP_INFO *info);
|
|
ST_RET mp_reject_ind (MMSREQ_IND *ind,REJECT_RESP_INFO *info);
|
|
ST_RET mp_reject_conf (MMSREQ_PEND *req,REJECT_RESP_INFO *info);
|
|
#else
|
|
ST_RET mpl_reject_resp (REJECT_RESP_INFO *info);
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/* ABORT REQUEST FUNCTION */
|
|
/************************************************************************/
|
|
|
|
ST_RET mp_abort (ST_INT chan, ST_INT reason);
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* This function is used to convert convert an AR Name into an ASN.1 */
|
|
/* encoded ApplicationReference based on the TPY DIB information */
|
|
/************************************************************************/
|
|
|
|
ST_RET ms_arname_to_asn1 (ST_CHAR *arname, ST_UCHAR *asn1_buf, ST_INT asn1_buf_len,
|
|
ST_UCHAR **asn1_out, ST_INT *asn1_len_out);
|
|
|
|
/* This function is used to convert an ASN.1 encoded */
|
|
/* ApplicationReference to the AR Name */
|
|
ST_RET ms_asn1_to_arname (ST_CHAR *arname, ST_UCHAR *asn1, ST_INT asn1len);
|
|
|
|
/* This function is used to find an AR Name based on the app_ref */
|
|
/* information. */
|
|
ST_RET ms_appref_to_arname (ST_CHAR *arname, APP_REF *appref);
|
|
|
|
/* This function is used to transition between an AR Name and its' */
|
|
/* corresponding app_ref information. */
|
|
ST_RET ms_arname_to_appref (ST_CHAR *arname, APP_REF **appref_out);
|
|
|
|
/* This function is used to convert to an ApplicationReference to ASN.1 */
|
|
ST_RET ms_appref_to_asn1 (APP_REF *appref, ST_UCHAR *dest, ST_INT dest_len,
|
|
ST_UCHAR **asn1_out, ST_INT *asn1_len_out);
|
|
|
|
/* This function is used to convert ASN.1 encoded ApplicationReference */
|
|
/* data to an intermediate form. */
|
|
ST_RET ms_asn1_to_appref (APP_REF *appref, ST_UCHAR *asn1, ST_INT asn1len);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* MMS_PCON_INCLUDED */
|
|
|