184 lines
4.8 KiB
C
184 lines
4.8 KiB
C
/*********************************************************************
|
|
* Copyright (c) Intel Corporation 2011 - 2020
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
**********************************************************************/
|
|
#ifndef _MINCORE
|
|
|
|
#ifndef __LME_CONNECTION_H__
|
|
#define __LME_CONNECTION_H__
|
|
|
|
#ifdef WIN32
|
|
#include "HECIWin.h"
|
|
#else
|
|
#include "HECILinux.h"
|
|
#endif
|
|
|
|
#include "LMS_if.h"
|
|
|
|
enum INIT_STATES {
|
|
INIT_STATE_DISCONNECTED = 0,
|
|
INIT_STATE_CONNECTING,
|
|
INIT_STATE_CONNECTED
|
|
};
|
|
|
|
struct LMEConnection;
|
|
|
|
typedef void (*MEICallback)(struct LMEConnection* module, void *param, void *buffer, unsigned int len);
|
|
|
|
struct LMEConnection
|
|
{
|
|
unsigned char reqID;
|
|
unsigned char *txBuffer;
|
|
MEICallback cb;
|
|
void* cbParam;
|
|
enum INIT_STATES initState;
|
|
unsigned char protocolVer;
|
|
struct MEImodule mei;
|
|
unsigned char exit;
|
|
};
|
|
|
|
struct LMEDisconnectMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
APF_DISCONNECT_REASON_CODE ReasonCode;
|
|
};
|
|
|
|
struct LMEServiceRequestMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
char* ServiceName;
|
|
};
|
|
|
|
typedef enum APF_REQUEST_ENUM {
|
|
TCP_FORWARD_REQUEST,
|
|
TCP_FORWARD_CANCEL_REQUEST,
|
|
UDP_SEND_TO
|
|
} APF_REQUEST_TYPE;
|
|
|
|
struct LMEGlobalRequestMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
APF_REQUEST_TYPE RequestType;
|
|
};
|
|
|
|
struct LMEProtocolVersionMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
unsigned int MajorVersion;
|
|
unsigned int MinorVersion;
|
|
APF_TRIGGER_REASON TriggerReason;
|
|
};
|
|
|
|
struct LMEUserAuthRequestMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
char* Username;
|
|
char* ServiceName;
|
|
char* MethodName;
|
|
char* MethodData;
|
|
};
|
|
|
|
struct LMETcpForwardRequestMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
APF_REQUEST_TYPE RequestType;
|
|
char* Address;
|
|
unsigned int Port;
|
|
};
|
|
|
|
struct LMETcpForwardCancelRequestMessage {
|
|
|
|
APF_MESSAGE_TYPE MessageType;
|
|
APF_REQUEST_TYPE RequestType;
|
|
char* Address;
|
|
unsigned int Port;
|
|
};
|
|
|
|
struct LMEUdpSendToMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
APF_REQUEST_TYPE RequestType;
|
|
char* Address;
|
|
unsigned int Port;
|
|
unsigned int DataLength;
|
|
unsigned char *Data;
|
|
};
|
|
|
|
typedef enum APF_CHANNEL_ENUM {
|
|
APF_CHANNEL_FORWARDED,
|
|
APF_CHANNEL_DIRECT
|
|
} APF_CHANNEL_TYPE;
|
|
|
|
struct LMEChannelOpenRequestMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
APF_CHANNEL_TYPE ChannelType;
|
|
unsigned int SenderChannel;
|
|
unsigned int InitialWindow;
|
|
char* Address;
|
|
unsigned int Port;
|
|
};
|
|
|
|
struct LMEChannelOpenReplySuccessMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
unsigned int RecipientChannel;
|
|
unsigned int SenderChannel;
|
|
unsigned int InitialWindow;
|
|
};
|
|
|
|
struct LMEChannelOpenReplyFailureMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
unsigned int RecipientChannel;
|
|
OPEN_FAILURE_REASON ReasonCode;
|
|
};
|
|
|
|
struct LMEChannelCloseMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
unsigned int RecipientChannel;
|
|
};
|
|
|
|
struct LMEChannelDataMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
unsigned int RecipientChannel;
|
|
unsigned int DataLength;
|
|
unsigned char *Data;
|
|
};
|
|
|
|
struct LMEChannelWindowAdjustMessage
|
|
{
|
|
APF_MESSAGE_TYPE MessageType;
|
|
unsigned int RecipientChannel;
|
|
unsigned int BytesToAdd;
|
|
};
|
|
|
|
bool LME_Init(struct LMEConnection* module, MEICallback cb, void *param);
|
|
void LME_Deinit(struct LMEConnection* module);
|
|
bool LME_IsInitialized(struct LMEConnection* module);
|
|
bool LME_Disconnect(struct LMEConnection* module, APF_DISCONNECT_REASON_CODE reasonCode);
|
|
bool LME_ServiceAccept(struct LMEConnection* module, char* serviceName);
|
|
bool LME_ProtocolVersion(struct LMEConnection* module, unsigned int majorversion, unsigned int minorversion, unsigned int triggerreason);
|
|
bool LME_TcpForwardReplySuccess(struct LMEConnection* module, unsigned int port);
|
|
bool LME_SendShortMessage(struct LMEConnection* module, unsigned char buf);
|
|
bool LME_ChannelOpenForwardedRequest(struct LMEConnection* module, unsigned int sender, char* connectedIP, unsigned int connectedPort, char* originatorIP, unsigned int originatorPort);
|
|
bool LME_ChannelOpenReplySuccess(struct LMEConnection* module, unsigned int recipient, unsigned int sender);
|
|
bool LME_ChannelOpenReplyFailure(struct LMEConnection* module, unsigned int recipient, unsigned int reason);
|
|
bool LME_ChannelClose(struct LMEConnection* module, unsigned int recipient, unsigned int sender);
|
|
int LME_ChannelData(struct LMEConnection* module, unsigned int recipient, unsigned int len, unsigned char *buffer);
|
|
bool LME_ChannelWindowAdjust(struct LMEConnection* module, unsigned int recipient, unsigned int len);
|
|
void LME_Deinit(struct LMEConnection* module);
|
|
void LME_Exit(struct LMEConnection* module);
|
|
unsigned int LME_GetMeiBufferSize(struct LMEConnection* module);
|
|
|
|
#define LME_UserAuthSuccess(module) LME_SendShortMessage(module, APF_USERAUTH_SUCCESS)
|
|
#define LME_TcpForwardReplyFailure(module) LME_SendShortMessage(module, APF_REQUEST_FAILURE)
|
|
#define LME_TcpForwardCancelReplySuccess(module) LME_SendShortMessage(module, APF_REQUEST_SUCCESS)
|
|
#define LME_TcpForwardCancelReplyFailure(module) LME_SendShortMessage(module, APF_REQUEST_FAILURE)
|
|
|
|
#endif
|
|
|
|
#endif
|