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

/************************************************************************/
/* 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 */