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.
318 lines
14 KiB
C
318 lines
14 KiB
C
/************************************************************************/
|
|
/* SISCO SOFTWARE MODULE HEADER *****************************************/
|
|
/************************************************************************/
|
|
/* (c) Copyright Systems Integration Specialists Company, Inc., */
|
|
/* 1993 - 2001, All Rights Reserved. */
|
|
/* */
|
|
/* PROPRIETARY AND CONFIDENTIAL */
|
|
/* */
|
|
/* MODULE NAME : mmsintr2.h */
|
|
/* PRODUCT(S) : MMSEASE, MMSEASE-LITE */
|
|
/* */
|
|
/* MODULE DESCRIPTION : */
|
|
/* Functions and variables below this point are typically not */
|
|
/* used by the application, and need not be exposed. */
|
|
/* */
|
|
/* MODIFICATION LOG : */
|
|
/* Date Who Rev Comments */
|
|
/* -------- --- ------ ------------------------------------------- */
|
|
/* 03/04/02 JRB 11 Use SD_CONST on ALL (RUNTIME_TYPE *) vars. */
|
|
/* 12/20/01 JRB 10 Convert to use ASN1R. */
|
|
/* 04/19/00 JRB 09 Fix SD_CONST for decode funct ptr arrays. */
|
|
/* 09/13/99 MDE 08 Added SD_CONST modifiers */
|
|
/* 03/23/99 MDE 07 Changes to decode buffer allocation scheme */
|
|
/* 03/19/98 JRB 06 Move ASN.1 error codes to "asn1defs.h". */
|
|
/* 03/12/98 MDE 05 '_ms_m_get_rt_info' use change */
|
|
/* 02/10/98 MDE 04 Removed unused 'm_cl_max_event_attributes' */
|
|
/* 07/16/97 MDE 03 Added m_param, m_service_resp for MMS_LITE */
|
|
/* 07/03/97 MDE 02 Removed CALLOC_OS */
|
|
/* 06/09/97 MDE 01 Added decode buffer size control variables */
|
|
/* 04/02/97 DTL 7.00 MMSEASE 7.0 release. See MODL70.DOC for */
|
|
/* history. */
|
|
/************************************************************************/
|
|
|
|
#ifndef MMSINTR2_INCLUDED
|
|
#define MMSINTR2_INCLUDED
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* Defines for Modifier and Companion Standard support. */
|
|
/* MMSEASE defaults to supporting both, MMSEASE-LITE defaults to */
|
|
/* supporting neither. */
|
|
/************************************************************************/
|
|
|
|
#ifndef MMS_LITE
|
|
#define MOD_SUPPORT /* MMSEASE - support modifiers */
|
|
#define CS_SUPPORT /* MMSEASE - support companion standards */
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* Operation Specific Decode Buffer Management */
|
|
|
|
extern ST_VOID *(*m_calloc_os_fun)(ST_UINT num, ST_UINT size);
|
|
extern ST_VOID *(*m_realloc_os_fun)(ST_VOID *old, ST_UINT new_size);
|
|
extern ST_VOID (*m_free_os_fun)(ST_VOID *buf);
|
|
|
|
ST_VOID *_m_get_dec_buf (ASN1_DEC_CTXT *aCtx, ST_UINT size);
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* Defines for the fourteen types of MMS PDUs */
|
|
/************************************************************************/
|
|
|
|
#define MMSREQ 0 /* MMS request PDU for normal confirmed services */
|
|
#define MMSRESP 1 /* MMS response PDU for normal confirmed services*/
|
|
#define MMSERROR 2 /* MMS error PDU for normal confirmed services */
|
|
#define MMSUNREQ 3 /* MMS response PDU for unconfirmed services */
|
|
#define MMSREJECT 4 /* MMS reject PDU */
|
|
#define MMSCANREQ 5 /* MMS request PDU for Cancel service */
|
|
#define MMSCANRESP 6 /* MMS response PDU for Cancel service */
|
|
#define MMSCANERR 7 /* MMS error PDU for Cancel service */
|
|
#define MMSINITREQ 8 /* MMS request PDU for Initiate service */
|
|
#define MMSINITRESP 9 /* MMS response PDU for Initiate service */
|
|
#define MMSINITERR 10 /* MMS error PDU for Initiate service */
|
|
#define MMSCNCLREQ 11 /* MMS request PDU for Conclude service */
|
|
#define MMSCNCLRESP 12 /* MMS response PDU for Conclude service */
|
|
#define MMSCNCLERR 13 /* MMS error PDU for Conclude service */
|
|
#define UNKNOWNTYPE 14 /* not known - used in reject info structure */
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* Define base reserved invoke IDs for the Initiate and Conclude */
|
|
/* services. Allows for up to 4096 associations with reserved */
|
|
/* invoke IDs. */
|
|
/************************************************************************/
|
|
|
|
#define INIT_INVOKE_ID 0x8000 /* base invoke ID for Initiate requests */
|
|
#define CONCL_INVOKE_ID 0x9000 /* base invoke ID for Conclude requests */
|
|
|
|
/************************************************************************/
|
|
/* Define the reserved invoke ID for unconfirmed requests. */
|
|
/************************************************************************/
|
|
|
|
#define UNREQ_INVOKE 0xFFFF /* reserved invoke ID for unconf req's */
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* The following function pointer arrays are used for the request and */
|
|
/* response decode functions. The operation opcode is used as the index */
|
|
/* into the table. */
|
|
/************************************************************************/
|
|
|
|
#define MAX_REQ_DFUN 85 /* highest request decode array entry */
|
|
#define MAX_RSP_DFUN 85 /* highest response decode array entry */
|
|
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* This structure is used to return the results of a MMS PDU decode. */
|
|
/* The user passes a pointer to a struct of this type to decode_mms, */
|
|
/* and when the decode is complete, the struct info will be filled in. */
|
|
/* */
|
|
/* dec_level : */
|
|
/* 0 - Nothing valid */
|
|
/* 1 - type valid */
|
|
/* 2 - type, invoke ID valid */
|
|
/* 3 - type, invoke ID, op valid */
|
|
/************************************************************************/
|
|
|
|
struct mmsdec_info
|
|
{
|
|
ST_RET err_code; /* decode error code (NO_DECODE_ERR) */
|
|
ST_INT dec_level; /* indicates valid members */
|
|
ST_INT type; /* MMS pdu type (req,resp,err,rej) */
|
|
ST_INT op; /* operation opcode */
|
|
ST_UINT32 id; /* invoke ID */
|
|
struct list_of_mods mods; /* tracking of modifiers */
|
|
struct csi cs; /* Companion Standard Info */
|
|
ST_BOOLEAN data_pres; /* flag to indicate data buffer present */
|
|
ST_VOID *data_ptr; /* pointer to data if present */
|
|
};
|
|
typedef struct mmsdec_info MMSDEC_INFO;
|
|
|
|
extern ST_VOID (* SD_CONST mms_req_decode_fun [MAX_REQ_DFUN+1]) (ASN1_DEC_CTXT *aCtx);
|
|
extern ST_VOID (* SD_CONST mms_rsp_decode_fun [MAX_RSP_DFUN+1]) (ASN1_DEC_CTXT *aCtx);
|
|
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* _ms_mms_decode is used at MMS decode level, not generally used by */
|
|
/* application directly. */
|
|
/************************************************************************/
|
|
|
|
ST_RET _ms_mms_decode (ST_UCHAR *ptr, ST_INT len, MMSDEC_INFO *rslt);
|
|
|
|
extern MMSDEC_INFO *_mmsdec_rslt;
|
|
extern ST_UINT _mmsdec_ctxt; /* default to core context */
|
|
extern ST_INT _mmsdec_msglen; /* MMS decode message length */
|
|
extern ST_UCHAR *_mmsdec_msgptr; /* MMS decode message ptr */
|
|
extern ST_BOOLEAN _mms_dec_info_pres;
|
|
extern ST_VOID *_mms_dec_info; /* operation specific info */
|
|
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* These variables are used help control decode operation specific data */
|
|
/* structure allocation. For MMS-LITE (M_USR_DEC_BUF), these variables */
|
|
/* are used to tell the decode system how many objects the allocated */
|
|
/* buffer (_mms_dec_info). For MMS-EASE, these are normally not used; */
|
|
/* if they are set non-zero, they will be used in calculating the size */
|
|
/* of the dec info buffer to be allocated. */
|
|
|
|
/* Client Decode Limits. */
|
|
extern ST_INT m_cl_read_spec_in_result;
|
|
extern ST_INT m_cl_max_read_var_spec;
|
|
extern ST_INT m_cl_max_read_acc_rslt;
|
|
extern ST_INT m_cl_max_info_var_spec;
|
|
extern ST_INT m_cl_max_info_acc_rslt;
|
|
extern ST_INT m_cl_max_getvla_vars;
|
|
extern ST_INT m_cl_max_write_rslts;
|
|
extern ST_INT m_cl_max_namel_names;
|
|
extern ST_INT m_cl_max_getcl_cap;
|
|
extern ST_INT m_cl_max_getpi_doms;
|
|
extern ST_INT m_cl_max_getdom_cap;
|
|
extern ST_INT m_cl_max_getdom_pi;
|
|
extern ST_INT m_cl_max_initupl_cap;
|
|
extern ST_INT m_cl_max_alarm_summary;
|
|
extern ST_INT m_cl_max_journal_entries;
|
|
extern ST_INT m_cl_max_entry_content;
|
|
extern ST_INT m_cl_max_semaphore_entries;
|
|
extern ST_INT m_cl_max_named_tokens;
|
|
extern ST_INT m_cl_max_file_directory;
|
|
extern ST_INT m_cl_max_event_enrollment;
|
|
extern ST_INT m_cl_max_enrollment_summary;
|
|
|
|
/* Server Decode Limits. */
|
|
extern ST_INT m_sv_max_loadd_cap;
|
|
extern ST_INT m_sv_max_read_var_spec;
|
|
extern ST_INT m_sv_max_write_var_spec;
|
|
extern ST_INT m_sv_max_write_data;
|
|
extern ST_INT m_sv_max_rqdlnl_cap;
|
|
extern ST_INT m_sv_max_initdnld_cap;
|
|
extern ST_INT m_sv_max_vstr;
|
|
extern ST_INT m_sv_max_file_names;
|
|
extern ST_INT m_sv_max_obj_name;
|
|
extern ST_INT m_sv_max_prompt_count;
|
|
extern ST_INT m_sv_max_num_vars;
|
|
extern ST_INT m_sv_max_data_count;
|
|
extern ST_INT m_sv_max_entry_content;
|
|
extern ST_INT m_sv_max_data_vars;
|
|
extern ST_INT m_sv_max_jread_vars;
|
|
|
|
/************************************************************************/
|
|
/* These bitstrings are located in mmsop_en.c and indicate which */
|
|
/* services and CBB's are supported by this application. */
|
|
#ifdef MMS_LITE
|
|
extern SD_CONST ST_UCHAR m_param[2]; /* parameter support */
|
|
/* services supported as responder */
|
|
extern SD_CONST ST_UCHAR m_service_resp[11];
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* This variable can be set to force use of the DIS MMS floating point */
|
|
/* type protocol (used in any over the wire and internal ASN.1 type */
|
|
/* definitions). */
|
|
|
|
extern ST_BOOLEAN m_use_dis_float; /* = SD_FALSE; */
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* ALTERNATE ACCESS */
|
|
|
|
/* This structure is used to control the creation of RTAA types */
|
|
/* and contains state information for the various functions to use */
|
|
/* during the process. */
|
|
|
|
struct aa_apply_ctrl
|
|
{
|
|
/* Alternate Access spec */
|
|
ST_INT num_aa; /* # elements in AA table */
|
|
struct alt_acc_el *aa_head; /* Head of AA table */
|
|
struct alt_acc_el *aa_end; /* Last element in AA table */
|
|
struct alt_acc_el *curr_aa; /* Current location in table */
|
|
|
|
/* 'All'runtime aa */
|
|
ST_INT num_all_rtaa;
|
|
struct rt_aa_ctrl *all_rtaa_head;
|
|
struct rt_aa_ctrl *all_rtaa_end;
|
|
|
|
/* New (output) runtime aa */
|
|
ST_INT num_rtaa;
|
|
struct rt_aa_ctrl *rtaa_head;
|
|
struct rt_aa_ctrl *curr_rtaa;
|
|
|
|
/* Nest Level */
|
|
ST_INT nest;
|
|
};
|
|
typedef struct aa_apply_ctrl AA_APPLY_CTRL;
|
|
|
|
/************************************************************************/
|
|
/* Floating point type ASN.1 definition values */
|
|
|
|
#define SNGL_WHOLE 32
|
|
#define SNGL_FRACT 23
|
|
#define SNGL_EXP 8
|
|
|
|
#define DOUBL_WHOLE 64
|
|
#define DOUBL_FRACT 52
|
|
#define DOUBL_EXP 11
|
|
|
|
/* Used to determine number of bytes required to hold a number of bits */
|
|
#define CALC_BIT_LEN(x) (((x)+7)/8)
|
|
|
|
/************************************************************************/
|
|
ST_RET _ms_m_get_rt_info (SD_CONST RUNTIME_TYPE *rt,
|
|
ST_INT *algn_out,
|
|
ST_INT *ellen_out);
|
|
|
|
/************************************************************************/
|
|
/* Function pointers for Variable manipulation functions. */
|
|
/* User exposed functions (i.e. ms_add_named_var, etc.) call these */
|
|
/* function pointers which should point to "linked list" functions */
|
|
/* by default (see "_ms_ll_*" functions below). If the "ms_bs_init" */
|
|
/* function is called, these will point to "binary search" functions */
|
|
/* (see "_ms_bs_*" functions below). */
|
|
/************************************************************************/
|
|
#ifndef MMS_LITE
|
|
|
|
extern NAMED_VAR *(*_ms_fp_add_named_var) (DOMAIN_OBJS *dom, ST_CHAR *name,
|
|
OBJECT_NAME *type, VAR_ACC_ADDR *addr, ST_INT chan);
|
|
extern NAMED_VAR *(*_ms_fp_add_var) (DOMAIN_OBJS *dom, ST_CHAR *name,
|
|
NAMED_TYPE *type_ptr, VAR_ACC_ADDR *addr, ST_INT chan);
|
|
extern NAMED_VAR *(*_ms_fp_find_named_var)
|
|
(DOMAIN_OBJS *dom, ST_CHAR *name);
|
|
extern ST_RET (*_ms_fp_del_named_var) (DOMAIN_OBJS *dom, ST_CHAR *name);
|
|
extern ST_VOID (*_ms_fp_del_all_named_vars) (DOMAIN_OBJS *dom);
|
|
extern ST_VOID (*_ms_fp_del_deletable_named_vars) (DOMAIN_OBJS *, DELVAR_RESP_INFO *);
|
|
extern NAMED_VAR_LIST *(*_ms_fp_add_nvlist) (DOMAIN_OBJS *dom,
|
|
ST_CHAR *name, ST_INT num_vars, VARIABLE_LIST *var_list);
|
|
extern NAMED_VAR_LIST *(*_ms_fp_find_nvlist) (DOMAIN_OBJS *dom, ST_CHAR *name);
|
|
extern ST_RET (*_ms_fp_del_nvlist) (DOMAIN_OBJS *dom, ST_CHAR *name);
|
|
extern ST_VOID (*_ms_fp_del_all_nvlists) (DOMAIN_OBJS *dom);
|
|
extern ST_VOID (*_ms_fp_del_deletable_nvlists) (DOMAIN_OBJS *, DELVLIST_RESP_INFO *);
|
|
|
|
extern NAMED_DOM_CTRL *(*_ms_fp_add_named_domain) (INITDOWN_REQ_INFO *dom_info,
|
|
ST_UCHAR pro);
|
|
extern NAMED_DOM_CTRL *(*_ms_fp_find_named_dom)(ST_CHAR dname[MAX_IDENT_LEN+1]);
|
|
extern ST_RET (*_ms_fp_del_named_dom) (ST_CHAR *dname);
|
|
extern ST_VOID (*_ms_fp_del_all_named_doms)(NAMED_DOM_CTRL *head_of_dom_list);
|
|
|
|
extern ST_VOID (*_ms_fp_write_object_names) (ST_VOID *dom_or_vmd,
|
|
NAMELIST_REQ_INFO *reqinfo, NAMELIST_RESP_INFO *respinfo,
|
|
ST_INT max_names);
|
|
#endif
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* MMSINTR2_INCLUDED */
|