📄 tcp__ext.c
字号:
#include "pub\pub_incl.h"
#include "pub\pub_defi.h"
#include "pub\modulers.h"
#include "pub\pub__msg.h"
#include "pub\modulers.h"
#include "NODE\node_msg.h"
#include "SYSM\SYS_DEFI.H"
#include "SYSM\SYS_DBMS.H"
#include "SYSM\SYS_DATA.H"
#include "SYSM\SYS__EXT.H"
#include "RTOS\VXWORKS\TCPIP\net_proc.h"
extern UC NetMsgHeadFlag[];
extern VOID ClearOneServerFsm( US port_num );
extern BOOL TcpSendMsuToDstManager(int sFd, UI len, VOID*buffer );
extern BOOL IsThereValidSocket( US port_num );
VOID ClientClose( US port_num )
{
ClearOneServerFsm( port_num );
}
VOID TcpNetManSendMsgToDPC( US len, VOID * data )
{
UI src_node;
UI dst_node;
UI port_num, msg_len;
STRUCT MSG_STRUCT * msg, * nmsg;
STRUCT NET_UNIT_DATA_STRUCT * net_unit;
NODE_PH_MSU_STRUCT node_msu;
msg = (STRUCT MSG_STRUCT *)data;
net_unit = (STRUCT NET_UNIT_DATA_STRUCT *)(msg->data);
dst_node = net_unit->dst_node;
src_node = SysModData->node;
msg_len = msg->len - NET_MSG_LOCATE_LEN;
if ((src_node == dst_node) || (dst_node == 0xFFFF))
{
port_num = src_node;
SendLetterToMail(msg->sender, msg->receiver, msg->msg_type,
port_num, msg_len, net_unit->unit);
}
else
{
port_num = dst_node;
nmsg = (STRUCT MSG_STRUCT*)(node_msu.sif);
nmsg->sender = msg->sender;
nmsg->receiver = msg->receiver;
nmsg->msg_type = msg->msg_type;
nmsg->port_num = port_num;
nmsg->len = GetValidValue(msg_len, MAX_DATA_LEN);
node_msu.src_node = src_node;
node_msu.dst_node = dst_node;
node_msu.cic = CIC_NETMAN_CMD;
node_msu.sio = SIO_NETMAN;
node_msu.len = (nmsg->len + MSG_HEAD_LEN);
memcpy( nmsg->data, net_unit->unit, nmsg->len );
SendLetterToMail(PID_NET_MAN, PID_BMTP, 0xFF, 0xFF,
(nmsg->len + MSG_HEAD_LEN + NODE_PH_MSU_HEAD_LEN), &node_msu);
}
}
BOOL TcpSendMsuToLocalManager(int tcpport_num, int sFd, UI len, VOID * buffer )
{
STRUCT MSG_STRUCT * msg;
UC msg_buf[600];
struct NET_UNIT_STRUCT * net_msg;
UI src_node;
UI dst_node;
UI port_num, msg_len;
msg = (STRUCT MSG_STRUCT *)buffer;
memcpy( msg_buf, NetMsgHeadFlag, Flag_Len);
net_msg = (struct NET_UNIT_STRUCT*)(msg_buf + Flag_Len);
msg_len = GetValidValue(msg->len, MAX_UNIT_LEN);
if ( msg->sender == PID_BMTP)
{
memcpy( net_msg, msg->data, msg_len );
return ( send( sFd, msg_buf, (msg_len + Flag_Len), 0 ) != ERROR );
}
src_node = SysModData->node;
dst_node = msg->port_num;
port_num = src_node;
if( port_num == msg->port_num || msg->port_num == 0XFFFF )
{
net_msg->sender = msg->sender;
net_msg->receiver = msg->receiver;
net_msg->unit_type = msg->msg_type;
net_msg->port_num = msg->port_num;
net_msg->len = msg_len + NET_MSG_LOCATE_LEN;
net_msg->src_node = src_node;
net_msg->dst_node = dst_node;
memcpy( net_msg->unit, msg->data, msg_len );
return (send( sFd, msg_buf, net_msg->len + NET_MSG_HEAD_LEN + Flag_Len, 0 ) != ERROR );
}
return FALSE;
}
BOOL TcpIsThePacketToLocalNetManager(UI len, VOID * buffer)
{
STRUCT MSG_STRUCT *msg;
UI src_node;
msg = (STRUCT MSG_STRUCT *)buffer;
src_node = GetSysNodeNum();
return ( (src_node == msg->port_num) || (msg->port_num == 0xFFFF) );
}
BOOL TcpIsThePacketSenderIsDlcc(UI len, VOID* buffer)
{
STRUCT MSG_STRUCT *msg;
msg = (STRUCT MSG_STRUCT *)buffer;
return (PID_DLCC_SYSMAN == msg->sender);
}
BOOL TcpSendMsuToRemoteManager(UI len, VOID * buffer )
{
STRUCT MSG_STRUCT *msg;
NODE_PH_MSU_STRUCT node_msu;
UI src_node;
UI dst_node;
UI msg_len;
msg = (struct MSG_STRUCT *)buffer;
dst_node = msg->port_num;
src_node = GetSysNodeNum();
msg_len = GetValidValue(len, MAX_FRAME_LEN);
if ((src_node != msg->port_num) && (msg->port_num != 0xFFFF))
{
node_msu.src_node = src_node;
node_msu.dst_node = dst_node;
node_msu.cic = CIC_NETMAN_RES;
node_msu.sio = SIO_NETMAN;
node_msu.len = msg_len;
memcpy(node_msu.sif, buffer, msg_len);
SendLetterToMail(PID_NET_MAN, PID_BMTP, 0XFF, msg->port_num,
msg_len + NODE_PH_MSU_HEAD_LEN, &node_msu);
return TRUE;
}
else
{
return FALSE;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -