⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 moicmp.cpp

📁 MONA是为数不多的C++语言编写的一个很小的操作系统
💻 CPP
字号:
/*!    \file   MoIcmp.cpp    \brief  ICMP僾儘僩僐儖幚憰僋儔僗    Copyright (c) 2004 Yamami    All rights reserved.    License=MIT/X License    \author  Yamami    \version $Revision: 1.1 $    \date   create:2004/09/20 update:$Date: 2004/09/20 15:29:03 $*//*! \class MoIcmp *  \brief ICMP僾儘僩僐儖幚憰僋儔僗 */#include "MoIcmp.h"#include "MonesConfig.h"#include "MonesGlobal.h"/*!    \brief initialize         MoIcmp 僐儞僗僩儔僋僞    \author Yamami    \date   create:2004/09/20 update:*/MoIcmp::MoIcmp(){}/*!    \brief initialize         MoIcmp initIp    \author Yamami    \param  AbstractMonic *pminsNic [in] NIC僋儔僗傊偺億僀儞僞    \date   create:2004/09/20 update:*/void MoIcmp::initIp(AbstractMonic *pminsNic ) {    //NIC僋儔僗傪曐帩    insAbstractNic = pminsNic;    return;}/*!    \brief initialize         MoIcmp 僨僗僋僩儔僋僞    \author Yamami    \date   create:2004/08/20 update:*/MoIcmp::~MoIcmp() {}/*!    \brief receiveIcmp         ICMP僾儘僩僐儖庴怣 張棟    \param  IP_HEADER *ipHead [in] IP僿僢僟傊偺億僀儞僞    \return int 寢壥             \author Yamami    \date   create:2004/09/20 update:2004/09/20*/int MoIcmp::receiveIcmp(IP_HEADER *ipHead){    int icmp_size;    ICMP_HEADER *icmp;    icmp=(ICMP_HEADER*)ipHead->data;    icmp_size=MoPacUtl::swapShort(ipHead->len)-sizeof(IP_HEADER);    /* 僠僃僢僋僒儉偺妋擣丅 */    if(MoPacUtl::calcCheckSum((dword*)icmp,icmp_size)){        return 0;    }    switch(icmp->type)    {        case ICMP_TYPE_ECHOREQ:            transIcmp(ipHead->srcip,ICMP_TYPE_ECHOREP,0,icmp,icmp_size);            break;        case ICMP_TYPE_ECHOREP:            //return saveRecv(ipHead,icmp_size+sizeof(IP_HEADER));            break;    }    return 0;}/*!    \brief transIcmp         ICMP憲怣 張棟    \param  word dstip [in] 憲怣愭IP傾僪儗僗    \param  byte type [in] ICMP僞僀僾    \param  ICMP_HEADER *icmpHead [in] IP僿僢僟傊偺億僀儞僞    \param  int size [in] 僷働僢僩僒僀僘    \return int 寢壥             \author Yamami    \date   create:2004/09/20 update:2004/09/20*/void MoIcmp::transIcmp(dword dstip, byte type, byte code, ICMP_HEADER *icmpHead, int size){    TRANS_BUF_INFO tbi;    //ICMP僿僢僟乕偺愝掕    icmpHead->type=type;    icmpHead->code=code;    icmpHead->chksum=0;    icmpHead->chksum=MoPacUtl::calcCheckSum((dword*)icmpHead,size);    //憲怣僶僢僼傽僥乕僽儖偺愝掕    tbi.data[2]=NULL;    tbi.size[2]=0;    tbi.data[1]=(char*)icmpHead;    tbi.size[1]=size;    tbi.ipType=IPPROTO_ICMP;    g_MoIp->transIp(&tbi,dstip,0,0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -