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.

253 lines
8.0 KiB
C

1 year ago
/************************************************************************/
/* SISCO SOFTWARE MODULE HEADER *****************************************/
/************************************************************************/
/* (c) Copyright Systems Integration Specialists Company, Inc., */
/* 1999-2002, All Rights Reserved. */
/* */
/* PROPRIETARY AND CONFIDENTIAL */
/* */
/* MODULE NAME : gse_mgmt.h */
/* PRODUCT(S) : */
/* */
/* MODULE DESCRIPTION : */
/* */
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */
/* */
/* MODIFICATION LOG : */
/* Date Who Rev Comments */
/* -------- --- ------ ------------------------------------------- */
/* 11/03/06 CRM 01 Created */
/************************************************************************/
#ifndef GSE_MGMT_INCLUDED
#define GSE_MGMT_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif
#include "acse2usr.h"
#include "asn1r.h"
#include "ethertyp.h"
#define MAX_GSE_MGMT_ENCODE_BUF 1540
#define MAX_VSTRING_BUF 65
#define NUM_ELEMENTS 500
#define GET_GO_REF_REQ_TAG 1
#define GET_GOOSE_ELE_NUM_REQ_TAG 2
#define GET_GS_REF_REQ_TAG 3
#define GET_GSSE_DATA_OFF_REQ_TAG 4
#define GET_GO_REF_RSP_TAG 1
#define GET_GOOSE_ELE_NUM_RSP_TAG 2
#define GET_GS_REF_RSP_TAG 3
#define GET_GSSE_DATA_OFF_RSP_TAG 4
#define RSP_OTHER 0
#define RSP_NOT_FOUND 1
#define GLB_ERROR 2
#define GLB_ERR_OTHER 0
#define GLB_ERR_UNKNOWN_CTRL_BLK 1
#define GLB_ERR_RSP_TOO_LARGE 2
#define GLB_ERR_CTRL_BLK_CONFIG_ERR 3
#define GSE_MSG_TYPE_GO_REF_REQ 1
#define GSE_MSG_TYPE_GOOSE_ELE_REQ 2
#define GSE_MSG_TYPE_GS_REF_REQ 3
#define GSE_MSG_TYPE_GSSE_DATA_OFF_REQ 4
#define GSE_MSG_TYPE_GLOBAL_ERROR_RSP 10
#define GSE_MSG_TYPE_GO_REF_RSP 11
#define GSE_MSG_TYPE_GOOSE_ELE_RSP 12
#define GSE_MSG_TYPE_GS_REF_RSP 13
#define GSE_MSG_TYPE_GSSE_DATA_OFF_RSP 14
/************************************************************************/
/* BEGIN GSE MGMT DEFINITIONS */
/************************************************************************/
typedef struct
{
ST_UINT32 stateID;
ST_CHAR ident[MAX_VSTRING_BUF+1];
ST_INT numIntegers;
ST_UINT32 *offset;
} GSE_REF_REQ;
typedef struct
{
ST_UINT32 stateID;
ST_CHAR ident[MAX_VSTRING_BUF+1];
ST_INT numVStrings;
ST_CHAR **references;
} GSE_OFFSET_REQ;
/* Global error response sturcture */
typedef struct
{
ST_UINT32 stateID;
ST_CHAR ident[MAX_VSTRING_BUF+1];
ST_UINT32 confRev;
ST_UINT32 glbError;
} GSE_GLB_ERR_RSP;
/* Offset response sturctures */
typedef struct
{
ST_INT rsp_type;
ST_UINT32 offset;
ST_UINT32 error;
} OFFSET_REQ_RESULTS;
typedef struct
{
ST_UINT32 stateID;
ST_CHAR ident[MAX_VSTRING_BUF+1];
ST_UINT32 confRev;
ST_CHAR datSet[MAX_VSTRING_BUF+1];
ST_INT numResults;
OFFSET_REQ_RESULTS *result;
} GSE_OFFSET_RSP;
/* Reference response sturctures */
typedef struct
{
ST_INT rsp_type;
ST_CHAR reference[MAX_VSTRING_BUF+1];
ST_UINT32 error;
} REF_REQ_RESULTS;
typedef struct
{
ST_UINT32 stateID;
ST_CHAR ident[MAX_VSTRING_BUF+1];
ST_UINT32 confRev;
ST_CHAR datSet[MAX_VSTRING_BUF+1];
ST_INT numResults;
REF_REQ_RESULTS *result;
} GSE_REF_RSP;
/************************************************************************/
/* STRUCTURE DEFINITIONS */
/************************************************************************/
typedef struct
{
ST_UINT32 stateID;
ST_INT msgType;
union GSE_MSG
{
GSE_REF_REQ refReq;
GSE_OFFSET_REQ offReq;
GSE_OFFSET_RSP offRsp;
GSE_REF_RSP refRsp;
GSE_GLB_ERR_RSP glbErrRsp;
} msg;
} GSE_MGMT_MSG;
ST_UCHAR *getGoRefReqEncode (GSE_REF_REQ *ctrl,
ST_UCHAR *asn1DataBuf, /* buffer to encode in */
ST_INT asn1DataBufLen, /* len of buffer */
ST_INT *asn1DataLenOut, /* ptr to len encoded */
ETYPE_INFO *etype_info, /* ptr to Ethertype info */
ST_UINT8 *dstMac, /* destination MAC address */
ST_UINT8 *srcMac); /* source MAC address */
ST_UCHAR *getGOOSEEleNumReqEncode (GSE_OFFSET_REQ *ctrl,
ST_UCHAR *asn1DataBuf, /* buffer to encode in */
ST_INT asn1DataBufLen, /* len of buffer */
ST_INT *asn1DataLenOut, /* ptr to len encoded */
ETYPE_INFO *etype_info, /* ptr to Ethertype info */
ST_UINT8 *dstMac, /* destination MAC address */
ST_UINT8 *srcMac); /* source MAC address */
ST_UCHAR *getGsRefReqEncode (GSE_REF_REQ *ctrl,
ST_UCHAR *asn1DataBuf, /* buffer to encode in */
ST_INT asn1DataBufLen, /* len of buffer */
ST_INT *asn1DataLenOut, /* ptr to len encoded */
ETYPE_INFO *etype_info, /* ptr to Ethertype info */
ST_UINT8 *dstMac, /* destination MAC address */
ST_UINT8 *srcMac); /* source MAC address */
ST_UCHAR *getGSSEDataOffsetReqEncode (GSE_OFFSET_REQ *ctrl,
ST_UCHAR *asn1DataBuf, /* buffer to encode in */
ST_INT asn1DataBufLen, /* len of buffer */
ST_INT *asn1DataLenOut, /* ptr to len encoded */
ETYPE_INFO *etype_info, /* ptr to Ethertype info */
ST_UINT8 *dstMac, /* destination MAC address */
ST_UINT8 *srcMac); /* source MAC address */
ST_UCHAR *gse_mgmt_NotSupported (ST_VOID);
ST_UCHAR *getGlbErrorRspEncode (GSE_GLB_ERR_RSP *ctrl,
ST_UCHAR *asn1DataBuf, /* buffer to encode in */
ST_INT asn1DataBufLen, /* len of buffer */
ST_INT *asn1DataLenOut, /* ptr to len encoded */
ETYPE_INFO *etype_info, /* ptr to Ethertype info */
ST_UINT8 *dstMac, /* destination MAC address */
ST_UINT8 *srcMac); /* source MAC address */
ST_UCHAR *getGoRefRspEncode (GSE_REF_RSP *ctrl,
ST_UCHAR *asn1DataBuf, /* buffer to encode in */
ST_INT asn1DataBufLen, /* len of buffer */
ST_INT *asn1DataLenOut, /* ptr to len encoded */
ETYPE_INFO *etype_info, /* ptr to Ethertype info */
ST_UINT8 *dstMac, /* destination MAC address */
ST_UINT8 *srcMac); /* source MAC address */
ST_UCHAR *getGOOSEEleNumRspEncode (GSE_OFFSET_RSP *ctrl,
ST_UCHAR *asn1DataBuf, /* buffer to encode in */
ST_INT asn1DataBufLen, /* len of buffer */
ST_INT *asn1DataLenOut, /* ptr to len encoded */
ETYPE_INFO *etype_info, /* ptr to Ethertype info */
ST_UINT8 *dstMac, /* destination MAC address */
ST_UINT8 *srcMac); /* source MAC address */
ST_UCHAR *getGsRefRspEncode (GSE_REF_RSP *ctrl,
ST_UCHAR *asn1DataBuf, /* buffer to encode in */
ST_INT asn1DataBufLen, /* len of buffer */
ST_INT *asn1DataLenOut, /* ptr to len encoded */
ETYPE_INFO *etype_info, /* ptr to Ethertype info */
ST_UINT8 *dstMac, /* destination MAC address */
ST_UINT8 *srcMac); /* source MAC address */
ST_UCHAR *getGSSEDataOffsetRspEncode (GSE_OFFSET_RSP *ctrl,
ST_UCHAR *asn1DataBuf, /* buffer to encode in */
ST_INT asn1DataBufLen, /* len of buffer */
ST_INT *asn1DataLenOut, /* ptr to len encoded */
ETYPE_INFO *etype_info, /* ptr to Ethertype info */
ST_UINT8 *dstMac, /* destination MAC address */
ST_UINT8 *srcMac); /* source MAC address */
/************************************************************************/
/* Functions for receiving GSE_MGMT messages. */
/* Decode GSE_MGMT message and fill in GSE_MGMT_MSG struct. */
/************************************************************************/
GSE_MGMT_MSG *gse_mgmt_msg_decode (
SN_UNITDATA *sn_req, /* message to decode */
ETYPE_INFO *etypeInfo); /* where to store decoded Ethertype info*/
/* Must be called to free structure returned from gse_mgmt_msg_decode. */
ST_VOID gse_mgmt_msg_free (GSE_MGMT_MSG *gseMgmtMsg);
/************************************************************************/
/* END GSE MGMT DEFINITIONS */
/************************************************************************/
#ifdef __cplusplus
}
#endif
#endif /* GSE_MGMT_INCLUDED */