929 lines
26 KiB
C
929 lines
26 KiB
C
/*
|
|
* @version: $Revision: 1.2 $
|
|
* @date: $Date: 2018/12/20 06:00:55 $
|
|
* @author: $Author: lizhongming $
|
|
* @state: $State: Exp $
|
|
*
|
|
* @latest: $Id: mvlop_en.c,v 1.2 2018/12/20 06:00:55 lizhongming Exp $
|
|
*
|
|
*/
|
|
/************************************************************************/
|
|
/* SISCO SOFTWARE MODULE HEADER *****************************************/
|
|
/************************************************************************/
|
|
/* (c) Copyright Systems Integration Specialists Company, Inc., */
|
|
/* 1994 - 1996, All Rights Reserved */
|
|
/* */
|
|
/* MODULE NAME : mvlop_en.c */
|
|
/* PRODUCT(S) : MMSEASE-LITE */
|
|
/* */
|
|
/* MODULE DESCRIPTION : */
|
|
/* */
|
|
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */
|
|
/* mvl_cancel_ind_rcvd */
|
|
/* mvl_concl_ind_rcvd */
|
|
/* mvl_concl_conf_rcvd */
|
|
/* mvl_ind_rcvd */
|
|
/* mvl_conf_rcvd */
|
|
/* */
|
|
/* MODIFICATION LOG : */
|
|
/* Date Who Rev Comments */
|
|
/* -------- --- ------ ------------------------------------------ */
|
|
/* 11/12/07 MDE 17 Added _mvl_getpath, changed _mvl_tmpnam */
|
|
/* 08/12/05 JRB 16 Add #error if unsupported service enabled. */
|
|
/* 10/20/03 JRB 15 Fix print formats. */
|
|
/* 02/04/03 MDE 14 Added _mvl_tmpnam */
|
|
/* 07/09/02 MDE 13 Add maxpend_ind support */
|
|
/* 05/21/01 MDE 12 Now check return from indication ctrl alloc */
|
|
/* 03/15/01 JRB 11 Added call to _mvl_process_ustatus_ind. */
|
|
/* 10/25/00 JRB 10 Added #ifdef ICCP_LITE. */
|
|
/* 09/25/00 JRB 09 Added server support for Domain & PI services*/
|
|
/* 09/25/00 JRB 08 Total rewrite without function pointers. */
|
|
/************************************************************************/
|
|
|
|
#include "glbtypes.h"
|
|
#include "sysincs.h"
|
|
|
|
#include "mmsdefs.h"
|
|
#include "mvl_defs.h"
|
|
#include "mmsop_en.h"
|
|
|
|
#include "mvl_log.h"
|
|
|
|
#if defined(ICCP_LITE)
|
|
#include "mi.h"
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/* For debug version, use a static pointer to avoid duplication of */
|
|
/* __FILE__ strings. */
|
|
/************************************************************************/
|
|
|
|
#ifdef DEBUG_SISCO
|
|
SD_CONST static ST_CHAR *SD_CONST thisFileName = __FILE__;
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/* mvl_cancel_ind_rcvd */
|
|
/* A MMS Cancel Indication has been received. Process it. */
|
|
/************************************************************************/
|
|
ST_VOID mvl_cancel_ind_rcvd (MVL_COMM_EVENT *event)
|
|
{
|
|
#if (MMS_CANCEL_EN & RESP_EN)
|
|
_mvl_process_cancel_ind (event);
|
|
#else
|
|
_mvl_send_reject (event);
|
|
#endif
|
|
}
|
|
|
|
/************************************************************************/
|
|
/* mvl_concl_ind_rcvd */
|
|
/* A MMS Conclude Indication has been received. Process it. */
|
|
/************************************************************************/
|
|
ST_VOID mvl_concl_ind_rcvd (MVL_COMM_EVENT *event)
|
|
{
|
|
#if (MMS_CONCLUDE_EN & RESP_EN)
|
|
_mvl_process_concl_ind (event);
|
|
#else
|
|
_mvl_send_reject (event);
|
|
#endif
|
|
}
|
|
|
|
/************************************************************************/
|
|
/* mvl_concl_conf_rcvd */
|
|
/* A MMS Conclude Confirm has been received. Process it. */
|
|
/************************************************************************/
|
|
ST_VOID mvl_concl_conf_rcvd (MVL_REQ_PEND *req_pend)
|
|
{
|
|
#if (MMS_CONCLUDE_EN & REQ_EN)
|
|
_mvl_process_concl_conf (req_pend);
|
|
#else
|
|
_mvl_conf_reject (req_pend);
|
|
#endif
|
|
}
|
|
|
|
/************************************************************************/
|
|
/* mvl_ind_rcvd */
|
|
/* A MMS request has been received. This is where the real action */
|
|
/* takes place, and the response is generated */
|
|
/* NOTE: if a service is NOT enabled, the "switch" falls through to the */
|
|
/* default case which sends a reject. */
|
|
/************************************************************************/
|
|
|
|
ST_VOID mvl_ind_rcvd (MVL_COMM_EVENT *event)
|
|
{
|
|
MVL_IND_PEND *indCtrl;
|
|
|
|
/* Information Reports & Unsol Status are special cases. Process first.*/
|
|
/* 1. "event" used instead of "indCtrl". */
|
|
/* 2. Keep different statistics. */
|
|
if (event->u.mms.dec_rslt.op == MMSOP_INFO_RPT)
|
|
{
|
|
#if (MMS_INFO_EN & RESP_EN)
|
|
#if defined(ICCP_LITE)
|
|
_mic_process_info_ind (event);
|
|
#else
|
|
_mvl_process_info_ind (event);
|
|
#endif
|
|
#else
|
|
_mvl_send_reject (event);
|
|
#endif
|
|
++mvl_mms_statistics.clientInfoRpt;
|
|
return; /* do not continue */
|
|
}
|
|
else if (event->u.mms.dec_rslt.op == MMSOP_USTATUS)
|
|
{
|
|
#if (MMS_USTATUS_EN & RESP_EN)
|
|
_mvl_process_ustatus_ind (event);
|
|
#else
|
|
_mvl_send_reject (event);
|
|
#endif
|
|
++mvl_mms_statistics.clientUstatus;
|
|
return; /* do not continue */
|
|
}
|
|
|
|
++mvl_mms_statistics.serverInd;
|
|
indCtrl = (MVL_IND_PEND *) M_CALLOC (MSMEM_IND_CTRL, 1, sizeof (MVL_IND_PEND));
|
|
if (indCtrl == NULL)
|
|
{
|
|
MVL_LOG_NERR0 ("Could not allocate indication control, rejecting");
|
|
_mvl_send_reject (event);
|
|
return;
|
|
}
|
|
|
|
indCtrl->op = event->u.mms.dec_rslt.op;
|
|
indCtrl->event = event;
|
|
list_add_first(&(event->net_info->pend_ind),indCtrl);
|
|
++event->net_info->numpend_ind;
|
|
|
|
switch (event->u.mms.dec_rslt.op)
|
|
{
|
|
#if (MMS_READ_EN & RESP_EN)
|
|
case MMSOP_READ :
|
|
#if defined(ICCP_LITE)
|
|
_mis_process_read_ind (indCtrl);
|
|
#else
|
|
_mvl_process_read_ind (indCtrl);
|
|
#endif
|
|
break;
|
|
#endif
|
|
#if (MMS_WRITE_EN & RESP_EN)
|
|
case MMSOP_WRITE :
|
|
#if defined(ICCP_LITE)
|
|
_mis_process_write_ind (indCtrl);
|
|
#else
|
|
_mvl_process_write_ind (indCtrl);
|
|
#endif
|
|
break;
|
|
#endif
|
|
|
|
/* case MMSOP_INFO_RPT : handled before switch. */
|
|
|
|
#if (MMS_IDENT_EN & RESP_EN)
|
|
case MMSOP_IDENTIFY :
|
|
_mvl_process_ident_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_STATUS_EN & RESP_EN)
|
|
case MMSOP_STATUS :
|
|
_mvl_process_status_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_GETNAMES_EN & RESP_EN)
|
|
case MMSOP_GET_NAMLIST:
|
|
#if defined(ICCP_LITE)
|
|
_mis_process_getnam_ind (indCtrl);
|
|
#else
|
|
_mvl_process_getnam_ind (indCtrl);
|
|
#endif
|
|
break;
|
|
#endif
|
|
#if (MMS_GETVAR_EN & RESP_EN)
|
|
case MMSOP_GET_VAR:
|
|
#if defined(ICCP_LITE)
|
|
_mis_process_getvaa_ind (indCtrl);
|
|
#else
|
|
_mvl_process_getvaa_ind (indCtrl);
|
|
#endif
|
|
break;
|
|
#endif
|
|
#if (MMS_GETVLIST_EN & RESP_EN)
|
|
case MMSOP_GET_VLIST:
|
|
#if defined(ICCP_LITE)
|
|
_mis_process_getvla_ind (indCtrl);
|
|
#else
|
|
_mvl_process_getvla_ind (indCtrl);
|
|
#endif
|
|
break;
|
|
#endif
|
|
#if (MMS_FDIR_EN & RESP_EN)
|
|
case MMSOP_FILE_DIR:
|
|
_mvl_process_fdir_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_FOPEN_EN & RESP_EN)
|
|
case MMSOP_FILE_OPEN:
|
|
_mvl_process_fopen_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_FREAD_EN & RESP_EN)
|
|
case MMSOP_FILE_READ:
|
|
_mvl_process_fread_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_FCLOSE_EN & RESP_EN)
|
|
case MMSOP_FILE_CLOSE:
|
|
_mvl_process_fclose_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_FDELETE_EN & RESP_EN)
|
|
case MMSOP_FILE_DELETE:
|
|
_mvl_process_fdelete_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_OBTAINFILE_EN & RESP_EN)
|
|
case MMSOP_OBTAIN_FILE:
|
|
_mvl_process_obtfile_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_FRENAME_EN & RESP_EN)
|
|
case MMSOP_FILE_RENAME:
|
|
_mvl_process_frename_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_DEFVLIST_EN & RESP_EN)
|
|
case MMSOP_DEF_VLIST:
|
|
#if defined(ICCP_LITE)
|
|
_mis_process_defvl_ind (indCtrl);
|
|
#else
|
|
_mvl_process_defvlist_ind (indCtrl);
|
|
#endif
|
|
break;
|
|
#endif
|
|
#if (MMS_DELVLIST_EN & RESP_EN)
|
|
case MMSOP_DEL_VLIST:
|
|
#if defined(ICCP_LITE)
|
|
_mis_process_delvlist_ind (indCtrl);
|
|
#else
|
|
_mvl_process_delvlist_ind (indCtrl);
|
|
#endif
|
|
break;
|
|
#endif
|
|
#if (MMS_JINIT_EN & RESP_EN)
|
|
case MMSOP_INIT_JOURNAL:
|
|
_mvl_process_jinit_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_JREAD_EN & RESP_EN)
|
|
case MMSOP_READ_JOURNAL:
|
|
_mvl_process_jread_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_JSTAT_EN & RESP_EN)
|
|
case MMSOP_STAT_JOURNAL:
|
|
_mvl_process_jstat_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_INIT_DWN_EN & RESP_EN)
|
|
case MMSOP_INIT_DOWNLOAD: /* initiate download sequence */
|
|
_mvl_process_initdown_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_DWN_LOAD_EN & RESP_EN)
|
|
case MMSOP_DOWN_LOAD: /* download segment */
|
|
_mvl_process_download_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_TERM_DWN_EN & RESP_EN)
|
|
case MMSOP_TERM_DOWNLOAD: /* terminate download sequence */
|
|
_mvl_process_termdown_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_INIT_UPL_EN & RESP_EN)
|
|
case MMSOP_INIT_UPLOAD: /* initiate upload sequence */
|
|
_mvl_process_initupl_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_UP_LOAD_EN & RESP_EN)
|
|
case MMSOP_UP_LOAD: /* upload segment */
|
|
_mvl_process_upload_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_TERM_UPL_EN & RESP_EN)
|
|
case MMSOP_TERM_UPLOAD: /* terminate upload sequence */
|
|
_mvl_process_termupl_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_DEL_DOM_EN & RESP_EN)
|
|
case MMSOP_DELETE_DOMAIN: /* delete domain */
|
|
_mvl_process_deldom_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_GET_DOM_EN & RESP_EN)
|
|
case MMSOP_GET_DOM_ATTR: /* get domain attribute */
|
|
_mvl_process_getdom_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_CRE_PI_EN & RESP_EN)
|
|
case MMSOP_CREATE_PI: /* create program invocation */
|
|
_mvl_process_crepi_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_DEL_PI_EN & RESP_EN)
|
|
case MMSOP_DELETE_PI: /* delete program invocation */
|
|
_mvl_process_delpi_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_START_EN & RESP_EN)
|
|
case MMSOP_START: /* start */
|
|
_mvl_process_start_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_STOP_EN & RESP_EN)
|
|
case MMSOP_STOP: /* stop */
|
|
_mvl_process_stop_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_RESUME_EN & RESP_EN)
|
|
case MMSOP_RESUME: /* resume */
|
|
_mvl_process_resume_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_RESET_EN & RESP_EN)
|
|
case MMSOP_RESET: /* reset */
|
|
_mvl_process_reset_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_KILL_EN & RESP_EN)
|
|
case MMSOP_KILL: /* kill */
|
|
_mvl_process_kill_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_GET_PI_EN & RESP_EN)
|
|
case MMSOP_GET_PI_ATTR: /* get program invocation attribute */
|
|
_mvl_process_getpi_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
#if (MMS_GETCL_EN & RESP_EN)
|
|
case MMSOP_GET_CAP_LIST: /* get capability list */
|
|
_mvl_process_getcl_ind (indCtrl);
|
|
break;
|
|
#endif
|
|
default :
|
|
_mvl_ind_reject (indCtrl);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/************************************************************************/
|
|
/* mvl_conf_rcvd */
|
|
/* A MMS response has been received. This is where the real action */
|
|
/* takes place, and the response data is interpreted */
|
|
/* NOTE: if a service is NOT enabled, the "switch" falls through to the */
|
|
/* default case which sends a reject. */
|
|
/************************************************************************/
|
|
|
|
ST_VOID mvl_conf_rcvd (MVL_COMM_EVENT *event)
|
|
{
|
|
MVL_REQ_PEND *req_pend;
|
|
ST_UINT32 id;
|
|
ST_INT op;
|
|
|
|
++mvl_mms_statistics.clientReqOk;
|
|
|
|
id = event->u.mms.dec_rslt.id;
|
|
op = event->u.mms.dec_rslt.op;
|
|
|
|
event->net_info->numpend_req--;
|
|
|
|
/* First find the associated request control structure */
|
|
req_pend = _mvl_find_req_ctrl (event->net_info, op, id);
|
|
|
|
if (!req_pend)
|
|
{
|
|
MVL_LOG_NERR1 ("%s Confirmation : mvl_find_req_ctrl failed",
|
|
mms_op_string [event->u.mms.dec_rslt.op]);
|
|
_mvl_free_comm_event (event); /* All done with this event */
|
|
return;
|
|
}
|
|
|
|
/* Save "event" in req_pend. Free from mvl_free_req_ctrl. */
|
|
/* This allows user code to use any data in event without copying it. */
|
|
req_pend->event = event;
|
|
|
|
switch (event->u.mms.dec_rslt.op)
|
|
{
|
|
#if (MMS_READ_EN & REQ_EN)
|
|
case MMSOP_READ :
|
|
#if defined(ICCP_LITE)
|
|
_mic_process_read_conf (req_pend);
|
|
#else
|
|
_mvl_process_read_conf (req_pend);
|
|
#endif
|
|
break;
|
|
#endif
|
|
#if (MMS_WRITE_EN & REQ_EN)
|
|
case MMSOP_WRITE :
|
|
_mvl_process_write_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_IDENT_EN & REQ_EN)
|
|
case MMSOP_IDENTIFY :
|
|
_mvl_process_ident_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_FOPEN_EN & REQ_EN)
|
|
case MMSOP_FILE_OPEN :
|
|
_mvl_process_fopen_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_FREAD_EN & REQ_EN)
|
|
case MMSOP_FILE_READ :
|
|
_mvl_process_fread_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_FCLOSE_EN & REQ_EN)
|
|
case MMSOP_FILE_CLOSE :
|
|
_mvl_process_fclose_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_FDIR_EN & REQ_EN)
|
|
case MMSOP_FILE_DIR :
|
|
_mvl_process_fdir_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_FDELETE_EN & REQ_EN)
|
|
case MMSOP_FILE_DELETE :
|
|
_mvl_process_fdelete_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_FRENAME_EN & REQ_EN)
|
|
case MMSOP_FILE_RENAME :
|
|
_mvl_process_frename_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_OBTAINFILE_EN & REQ_EN)
|
|
case MMSOP_OBTAIN_FILE :
|
|
_mvl_process_obtfile_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_JINIT_EN & REQ_EN)
|
|
case MMSOP_INIT_JOURNAL :
|
|
_mvl_process_jinit_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_JREAD_EN & REQ_EN)
|
|
case MMSOP_READ_JOURNAL :
|
|
_mvl_process_jread_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_JWRITE_EN & REQ_EN)
|
|
case MMSOP_WRITE_JOURNAL :
|
|
_mvl_process_jwrite_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_JSTAT_EN & REQ_EN)
|
|
case MMSOP_STAT_JOURNAL :
|
|
_mvl_process_jstat_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_DEFVLIST_EN & REQ_EN)
|
|
case MMSOP_DEF_VLIST :
|
|
_mvl_process_defvlist_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_GETVLIST_EN & REQ_EN)
|
|
case MMSOP_GET_VLIST :
|
|
_mvl_process_getvlist_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_DELVLIST_EN & REQ_EN)
|
|
case MMSOP_DEL_VLIST :
|
|
_mvl_process_delvlist_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_GETVAR_EN & REQ_EN)
|
|
case MMSOP_GET_VAR :
|
|
_mvl_process_getvar_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_GETNAMES_EN & REQ_EN)
|
|
case MMSOP_GET_NAMLIST :
|
|
_mvl_process_getnam_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_STATUS_EN & REQ_EN)
|
|
case MMSOP_STATUS :
|
|
_mvl_process_status_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_INIT_DWN_EN & REQ_EN)
|
|
case MMSOP_INIT_DOWNLOAD: /* initiate download sequence */
|
|
_mvl_process_initdown_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_DWN_LOAD_EN & REQ_EN)
|
|
case MMSOP_DOWN_LOAD: /* download segment */
|
|
_mvl_process_download_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_TERM_DWN_EN & REQ_EN)
|
|
case MMSOP_TERM_DOWNLOAD: /* terminate download sequence */
|
|
_mvl_process_termdown_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_INIT_UPL_EN & REQ_EN)
|
|
case MMSOP_INIT_UPLOAD: /* initiate upload sequence */
|
|
_mvl_process_initupl_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_UP_LOAD_EN & REQ_EN)
|
|
case MMSOP_UP_LOAD: /* upload segment */
|
|
_mvl_process_upload_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_TERM_UPL_EN & REQ_EN)
|
|
case MMSOP_TERM_UPLOAD: /* terminate upload sequence */
|
|
_mvl_process_termupl_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_DEL_DOM_EN & REQ_EN)
|
|
case MMSOP_DELETE_DOMAIN: /* delete domain */
|
|
_mvl_process_deldom_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_GET_DOM_EN & REQ_EN)
|
|
case MMSOP_GET_DOM_ATTR: /* get domain attributes */
|
|
_mvl_process_getdom_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_CRE_PI_EN & REQ_EN)
|
|
case MMSOP_CREATE_PI: /* create program invocation */
|
|
_mvl_process_crepi_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_DEL_PI_EN & REQ_EN)
|
|
case MMSOP_DELETE_PI: /* delete program invocation */
|
|
_mvl_process_delpi_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_START_EN & REQ_EN)
|
|
case MMSOP_START: /* start */
|
|
_mvl_process_start_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_STOP_EN & REQ_EN)
|
|
case MMSOP_STOP: /* stop */
|
|
_mvl_process_stop_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_RESUME_EN & REQ_EN)
|
|
case MMSOP_RESUME: /* resume */
|
|
_mvl_process_resume_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_RESET_EN & REQ_EN)
|
|
case MMSOP_RESET: /* reset */
|
|
_mvl_process_reset_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_KILL_EN & REQ_EN)
|
|
case MMSOP_KILL: /* kill */
|
|
_mvl_process_kill_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_GET_PI_EN & REQ_EN)
|
|
case MMSOP_GET_PI_ATTR: /* get program invocation attribute */
|
|
_mvl_process_getpi_conf (req_pend);
|
|
break;
|
|
#endif
|
|
#if (MMS_GETCL_EN & REQ_EN)
|
|
case MMSOP_GET_CAP_LIST: /* get capability list */
|
|
_mvl_process_getcl_conf (req_pend);
|
|
break;
|
|
#endif
|
|
default :
|
|
/* This should never happen. It means we sent a "Request" but we */
|
|
/* don't support the "Confirm" for it. */
|
|
MVL_LOG_ERR1 ("Error: Confirm received for unsupported service '%s'",
|
|
mms_op_string [event->u.mms.dec_rslt.op]);
|
|
_mvl_conf_reject (req_pend);
|
|
break;
|
|
}
|
|
|
|
_mvl_set_req_done (req_pend, req_pend->result);
|
|
}
|
|
|
|
|
|
/************************************************************************/
|
|
/************************************************************************/
|
|
/* _mvl_tmpnam */
|
|
/************************************************************************/
|
|
/* For applications that do file activity, we need this function */
|
|
|
|
#if (MMS_FOPEN_EN & REQ_EN) || (MMS_FOPEN_EN & RESP_EN)
|
|
|
|
|
|
#define MAX_TEMP_FILE_NUM 0xFFFF
|
|
#define MAX_TEMP_FILE_TRIES 0xFFFF
|
|
|
|
ST_CHAR *mvl_tmpfile_path;
|
|
|
|
//ST_RET _mvl_tmpnam (ST_CHAR *dest, ST_CHAR *tmpfile_path)
|
|
// {
|
|
//static ST_INT nextId = 0;
|
|
//ST_INT i;
|
|
//FILE *fp;
|
|
//ST_CHAR *p;
|
|
//ST_INT pathLen;
|
|
//
|
|
// if (dest == NULL)
|
|
// return (SD_FAILURE);
|
|
//
|
|
///* If the user did not pass in a path, use the global path */
|
|
// if (tmpfile_path == NULL)
|
|
// tmpfile_path = mvl_tmpfile_path;
|
|
//
|
|
///* Default is to use the current working directory */
|
|
// dest[0] = 0;
|
|
// p = dest;
|
|
//
|
|
///* See if user has path they want to use */
|
|
// if (tmpfile_path != NULL)
|
|
// {
|
|
// pathLen = strlen (tmpfile_path);
|
|
// if (pathLen > MVL_MAX_TMPFILE_PATH)
|
|
// {
|
|
// MVL_LOG_NERR0 ("Error: temp file path too long, using working dir");
|
|
// }
|
|
// else
|
|
// {
|
|
// strcpy (dest, tmpfile_path);
|
|
// p = dest + pathLen;
|
|
// }
|
|
// }
|
|
//
|
|
// for (i = 0; i < MAX_TEMP_FILE_TRIES; ++i)
|
|
// {
|
|
// apr_snprintf (p,sizeof(p), "TMP%04x.TMP", nextId);
|
|
// if (++nextId >= MAX_TEMP_FILE_NUM)
|
|
// nextId = 0;
|
|
//
|
|
// fp = fopen (dest,"r"); /* See if already present */
|
|
// if (!fp) /* nope. */
|
|
// return (SD_SUCCESS);
|
|
// else /* file is present, try again */
|
|
// fclose (fp);
|
|
// }
|
|
// return (SD_FAILURE);
|
|
// }
|
|
|
|
/************************************************************************/
|
|
/* _mvl_getpath */
|
|
/************************************************************************/
|
|
|
|
ST_VOID _mvl_getpath (ST_CHAR *file_spec, ST_CHAR *dest)
|
|
{
|
|
ST_INT i;
|
|
|
|
strcpy (dest, file_spec);
|
|
i = strlen (dest);
|
|
while (i > 0)
|
|
{
|
|
if ((dest[i-1] == '/') ||
|
|
(dest[i-1] == '\\') ||
|
|
(dest[i-1] == ':'))
|
|
{
|
|
dest[i] = 0;
|
|
break;
|
|
}
|
|
--i;
|
|
}
|
|
if (i == 0)
|
|
dest[0] = 0;
|
|
}
|
|
|
|
#endif /* #if (MMS_FOPEN_EN & REQ_EN) || (MMS_FOPEN_EN & RESP_EN) */
|
|
|
|
/************************************************************************/
|
|
/* These checks make sure that user doesn't try to enable a MMS */
|
|
/* service that is not supported. */
|
|
/************************************************************************/
|
|
#if (MMS_CANCEL_EN & REQ_EN)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
|
|
#if (MMS_RENAME_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_MV_DWN_EN != REQ_RESP_DIS) /* VM Upload */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_INIT_DWN_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DWN_LOAD_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_TERM_DWN_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_MV_UPL_EN != REQ_RESP_DIS) /* VM Download */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_INIT_UPL_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_UP_LOAD_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_TERM_UPL_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_RDDWN_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_RDUPL_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_LOAD_DOM_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_STR_DOM_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DEL_DOM_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
|
|
#if (MMS_CRE_PI_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DEL_PI_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_START_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_STOP_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_RESUME_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_RESET_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_KILL_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_GET_PI_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
|
|
#if (MMS_MV_READ_EN != REQ_RESP_DIS) /* VM Read variable(s) */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_MV_RDVARS_EN != REQ_RESP_DIS) /* General VM Rd var's */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_MV_WRITE_EN != REQ_RESP_DIS) /* VM Write variable(s) */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_MV_WRVARS_EN != REQ_RESP_DIS) /* General VM WR var's */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DEFVAR_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DEFSCAT_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_GETSCAT_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DELVAR_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_MV_DEFTYPE_EN != REQ_RESP_DIS) /* VM DefineType */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DEFTYPE_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_GETTYPE_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DELTYPE_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
|
|
#if (MMS_TAKECTRL_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_RELCTRL_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DEFINE_SEM_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DELETE_SEM_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_REP_SEMSTAT_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_REP_SEMPOOL_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_REP_SEMENTRY_EN!= REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
|
|
#if (MMS_JWRITE_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_JCREATE_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_JDELETE_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
|
|
#if (MMS_DEFEC_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DELEC_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_GETECA_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_REPECS_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_ALTECM_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_TRIGE_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DEFEA_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DELEA_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_GETEAA_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_REPEAS_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DEFEE_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_DELEE_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_GETEEA_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_REPEES_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_ALTEE_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_EVNOT_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_ACKEVNOT_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_GETAS_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_GETAES_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
|
|
#if (MMS_INPUT_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_OUTPUT_EN != REQ_RESP_DIS)
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
|
|
#if (MMS_MV_FOPEN_EN != REQ_RESP_DIS) /* VM FileOpen */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_MV_FREAD_EN != REQ_RESP_DIS) /* VM FileRead */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_MV_FCLOSE_EN != REQ_RESP_DIS) /* VM FileClose */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|
|
#if (MMS_MV_FCOPY_EN != REQ_RESP_DIS) /* VM FileCopy */
|
|
#error Unsupported service must not be enabled.
|
|
#endif
|