try
{
//Our buffer to send
char* pSendBuffer;
//Size of the buffer to send
int iSendSize;
iSendSize=ICMPHeaderLength;
//Do we have an external buffer ?
if (!m_pSendBuffer)
pSendBuffer=(char*)lpHead;
else
{
iSendSize+=m_usBufferSendSize;
pSendBuffer=new char[m_usBufferSendSize];
//Copy the data
memcpy(pSendBuffer,
(char*)lpHead,
ICMPHeaderLength);
memcpy(pSendBuffer+ICMPHeaderLength,
m_pSendBuffer,
m_usBufferSendSize);
}
//Send to modify before send
FinalICMPHeader((LPICMPHeader)pSendBuffer);
//Send it
int iResult;
iResult=CSpoofSocket::Send(aDestinationAddress,
pSendBuffer,
iSendSize);
if (m_pSendBuffer)
delete [] pSendBuffer;
//Done
return iResult>0;
}
ERROR_HANDLER_RETURN("SendICMP",FALSE)