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
 |