/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
int
+ Drd64_Marshald_Cmd_Detach_Scn4_INetAnswer(
+ int i_recv_id,
+ Drd64_PacketHeader *p_phead,
+ Drd64_Marshald_ConnectInfo *p_cinfo,
+ Drd64_Marshald_MasterInformation *p_marshald )
+{
+ int i_result;
+ int i_err;
+ int i_socket;
+
+ DRD64_LOG_DEBUG(" [DEBUG]CMD: Detach (INet : Answer) Start");
+
+ i_result = DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
+
+ i_socket = p_cinfo->i_client_socket;
+
+ Drd64_Marshald_Cinfo_FreeConnectInfo( p_cinfo );
+ p_cinfo = NULL;
+
+ p_phead->w_packettype ^= DRD64_PACKETTYPE_FLAG_TRANSPORT;
+ p_phead->i_cid_dest = p_phead->i_cid_client;
+ p_phead->i_cid_client = DRD64_CONNECTID_NONE;
+ //p_phead->i_cid_client = p_phead->i_cid_dest;
+
+ i_err = send( i_socket, (void *)p_phead,
+ DRD64_PacketSize(p_phead), 0x00 );
+ DRD64_DEBUG_PRINT("send",i_err,"FD",i_socket,"errno",errno);
+ if( i_err != DRD64_PacketSize(p_phead) ) { return 0x02; }
+
+ DRD64_LOG_DEBUG(" [DEBUG]CMD: Detach (INet : Answer) Ended");
+
+ return i_result;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+int
Drd64_Marshald_Cmd_Detach_Scn3_LocalAnswer(
int i_recv_id,
Drd64_PacketHeader *p_phead,
{
int i_result;
int i_err;
+ int i_socket;
DRD64_LOG_DEBUG(" [DEBUG]CMD: Detach (Local : Answer) Start");
i_result = DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
+ i_socket = p_cinfo->i_src_socket;
+
Drd64_Marshald_Cinfo_FreeConnectInfo( p_cinfo );
+ p_cinfo = NULL;
p_phead->w_packettype ^= DRD64_PACKETTYPE_OPTION_INDICATE;
+ p_phead->i_cid_dest = p_phead->i_cid_src;
+ p_phead->i_cid_src = DRD64_CONNECTID_NONE;
- i_err = send( p_cinfo->i_client_socket, (void *)p_phead,
+ i_err = send( i_socket, (void *)p_phead,
DRD64_PacketSize(p_phead), 0x00 );
- DRD64_DEBUG_PRINT("send",i_err,"FD",p_cinfo->i_client_socket,"errno",errno);
+ DRD64_DEBUG_PRINT("send",i_err,"FD",i_socket,"errno",errno);
if( i_err != DRD64_PacketSize(p_phead) ) { return 0x02; }
DRD64_LOG_DEBUG(" [DEBUG]CMD: Detach (Local : Answer) Ended");
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
int
+ Drd64_Marshald_Cmd_Detach_Scn2_INetRequest(
+ int i_recv_id,
+ Drd64_PacketHeader *p_phead,
+ Drd64_Marshald_ConnectInfo *p_cinfo,
+ Drd64_Marshald_MasterInformation *p_marshald )
+{
+ int i_result;
+ int i_err;
+
+ DRD64_LOG_DEBUG(" [DEBUG]CMD: Detach (INet : Request) Start");
+
+ i_result = DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
+
+ p_phead->w_packettype |= DRD64_PACKETTYPE_FLAG_TRANSPORT;
+ p_phead->i_cid_client = p_phead->i_cid_dest;
+ p_phead->i_cid_dest = p_cinfo->i_dest_cinfo_id;
+ //p_phead->i_cid_src = p_cinfo->i_cinfo_id;
+
+ i_err = send( p_cinfo->i_dest_socket, (void *)p_phead,
+ DRD64_PacketSize(p_phead), 0x00 );
+ DRD64_DEBUG_PRINT("send",i_err,"FD",p_cinfo->i_dest_socket,"errno",errno);
+ if( i_err != DRD64_PacketSize(p_phead) ) { return i_result; }
+
+ DRD64_LOG_DEBUG(" [DEBUG]CMD: Detach (INet : Request) Ended");
+
+ return i_result;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+int
Drd64_Marshald_Cmd_Detach_Scn1_LocalRequest(
int i_recv_id,
Drd64_PacketHeader *p_phead,
i_result = DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
p_phead->w_packettype |= DRD64_PACKETTYPE_OPTION_INDICATE;
- //p_phead->i_cid_client = p_phead->i_cid_dest;
- //p_phead->i_cid_dest = DRD64_CONNECTID_NONE;
- //p_phead->i_cid_src = p_cinfo->i_cinfo_id;
+ p_phead->i_cid_src = p_phead->i_cid_dest;
+ p_phead->i_cid_dest = p_cinfo->i_dest_cinfo_id;
+ /* = DRD64_CONNECTID_NONE */
i_err = send( p_cinfo->i_dest_socket, (void *)p_phead,
DRD64_PacketSize(p_phead), 0x00 );
DRD64_DEBUG_PRINT("send",i_err,"FD",p_cinfo->i_dest_socket,"errno",errno);
- if( i_err != DRD64_PacketSize(p_phead) ) { return 0x02; }
+ if( i_err != DRD64_PacketSize(p_phead) ) { return i_result; }
DRD64_LOG_DEBUG(" [DEBUG]CMD: Detach (Local : Request) Ended");
i_result = Drd64_Marshald_Cmd_Detach_Scn3_LocalAnswer(
i_recv_id, p_phead, p_cinfo, p_marshald );
}
- /* Scnery 2: (INet)Detach Packet for INet Marshald */
+ /* Scnery 4: (INet)Detach Answer from INet Marshald */
else {
+ i_result = Drd64_Marshald_Cmd_Detach_Scn4_INetAnswer(
+ i_recv_id, p_phead, p_cinfo, p_marshald );
}
}
else {
}
/* Scnery 2: (INet)Detach Packet for INet Marshald */
else {
+ i_result = Drd64_Marshald_Cmd_Detach_Scn2_INetRequest(
+ i_recv_id, p_phead, p_cinfo, p_marshald );
}
}