From eb7dfa41999943e7cf82f1a4f6d8e32785823d5a Mon Sep 17 00:00:00 2001 From: koinec <> Date: Sun, 14 Jun 2009 03:03:09 +0000 Subject: [PATCH] *** empty log message *** --- deamon/Makefile | 6 ++- deamon/drd64_marshald_cinfo.h | 1 - deamon/drd64_marshald_send_connect.c | 31 ++++++++++++-- deamon/drd64_server_packet.c | 78 ++++++++++++++++++++++++++++++++++++ 4 files changed, 110 insertions(+), 6 deletions(-) create mode 100644 deamon/drd64_server_packet.c diff --git a/deamon/Makefile b/deamon/Makefile index 9ffb064..94b776e 100644 --- a/deamon/Makefile +++ b/deamon/Makefile @@ -12,7 +12,8 @@ SERVER_OBJS = drd64_server_common.o \ drd64_server_inetaddr.o \ drd64_server_recvsocket.o \ drd64_server_recvstatus.o \ - drd64_server_socket.o + drd64_server_socket.o \ + drd64_server_packet.o FLAGS_DEBUG = -g @@ -85,6 +86,9 @@ drd64_server_inetaddr.o: drd64_server_inetaddr.c $(MARSHALD_HEADER) drd64_server_socket.o: drd64_server_socket.c $(MARSHALD_HEADER) gcc -c -o drd64_server_socket.o $(FLAGS_DEBUG) drd64_server_socket.c +drd64_server_packet.o: drd64_server_packet.c $(MARSHALD_HEADER) + gcc -c -o drd64_server_packet.o $(FLAGS_DEBUG) drd64_server_packet.c + drd64_server_recvstatus.o: drd64_server_recvstatus.c $(MARSHALD_HEADER) gcc -c -o drd64_server_recvstatus.o $(FLAGS_DEBUG) drd64_server_recvstatus.c diff --git a/deamon/drd64_marshald_cinfo.h b/deamon/drd64_marshald_cinfo.h index a2dd093..812ce97 100644 --- a/deamon/drd64_marshald_cinfo.h +++ b/deamon/drd64_marshald_cinfo.h @@ -38,7 +38,6 @@ Comment: #define DRD64_HEADER_MARSHALD_CINFO #include"drd64_marshald.h" -#include diff --git a/deamon/drd64_marshald_send_connect.c b/deamon/drd64_marshald_send_connect.c index 1252840..59c3c19 100644 --- a/deamon/drd64_marshald_send_connect.c +++ b/deamon/drd64_marshald_send_connect.c @@ -46,6 +46,7 @@ int int i_socket_inet; Drd64_PacketHeader *p_phead; Drd64_PacketData_Connect *p_connect; + Drd64_Marshald_ConnectInfo *p_cinfo; /* Phase 1 : Init & Set Packet Data ----------*/ p_phead = (Drd64_PacketHeader *)gp_sendbuffer; @@ -74,14 +75,36 @@ int p_addr_dest, DRD64_SOCKET_NETWORK_PORT ); /* Phase 3 : Send Packet to INet Marshald -----*/ - i_wlen = send( i_socket_inet, (void *)p_phead, - DRD64_PacketSize(p_phead), 0x00 ); - if( i_wlen != DRD64_PacketSize(p_phead) ) { - return 0x01; + i_err = Drd64_Server_Packet_SendPacket( + i_socket_inet, (void *)p_phead, + sizeof( Drd64_PacketData_Connect ), + sizeof( Drd64_PacketData_Connect ) ); + if( 0 > i_err ) { + return 0x02; } + p_cinfo = Drd64_Marshald_CInfo_AllocConnectInfo(); + if( NULL == p_cinfo ) { + return 0x03; + } + + p_cinfo->i_dest_socket = i_socket_inet; + p_cinfo->str_dest_addr_local[0] = '\0'; + Drd64_Server_INetAddr_CopyInAddr( + &(p_cinfo->t_dest_addr_inet), p_addr_dest ); + p_cinfo->i_dest_cinfo_id = p_connect->i_connect_id; + + p_cinfo->i_src_socket = -1; + p_cinfo->i_src_cinfo_id = -1; + p_cinfo->i_prog_pid = -1; + p_cinfo->i_debugd_pid = -1; + i_err = Drd64_Server_INetAddr_SetInAddr_LocalHost( + &(p_cinfo->t_client_addr_inet) ); + p_cinfo->i_client_pid = getpid(); + return 0x00; } + /* EOF of drd64_.c ----------------------------------- */ diff --git a/deamon/drd64_server_packet.c b/deamon/drd64_server_packet.c new file mode 100644 index 0000000..80d4720 --- /dev/null +++ b/deamon/drd64_server_packet.c @@ -0,0 +1,78 @@ +/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64 + + D r . D e a m o n 6 4 + for INTEL64(R), AMD64(R) + + Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + +DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/ + +/* File Info ----------------------------------------------------------- +File: drd64_.c +Function: +Comment: +----------------------------------------------------------------------*/ + +#include"drd64_server.h" + + +int + Drd64_Server_Packet_SendPacket( + int i_socket, + void *p_packet, + int i_wsize, + int i_rsize ) +{ + int i_wlen; + int i_rlen; + Drd64_PacketHeader *p_phead; + Byte *p_data; + + /* Write Header & Data */ + i_wsize += sizeof(Drd64_PacketHeader); + + i_wlen = send( i_socket, p_packet, i_wsize, 0x00 ); + if( i_wlen != i_wsize ) { return -1; } + + /* Read Result */ + i_rlen = Drd64_Server_Socket_ReadSocket( i_socket, p_packet, + sizeof( Drd64_PacketHeader), 5 ); + if( i_rlen != sizeof( Drd64_PacketHeader ) ) { return -4; } + + p_phead = (Drd64_PacketHeader *)p_packet; + p_data = p_packet + sizeof( Drd64_PacketHeader ); + + if( i_rsize < p_phead->i_datalen ) + { return -2; } + else if( 0 == i_rsize ) + { return 0x00; } + + i_rlen = Drd64_Server_Socket_ReadSocket( i_socket, p_data, i_rsize, 5 ); + if( i_rlen != p_phead->i_datalen ) { return -3; } + + return 0x00; +} + + +/* EOF of drd64_.c ----------------------------------- */ -- 2.11.0