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

📄 moether.cpp

📁 MONA是为数不多的C++语言编写的一个很小的操作系统
💻 CPP
字号:
/*!    \file   MoEther.cpp    \brief  僀乕僒僱僢僩張棟僋儔僗    Copyright (c) 2004 Yamami    All rights reserved.    License=MIT/X License    \author  Yamami    \version $Revision: 1.3 $    \date   create:2004/08/12 update:$Date: 2004/10/31 14:29:43 $*//*! \class MoEther *  \brief 僀乕僒僱僢僩張棟僋儔僗 */#include "MonesGlobal.h"#include "MoEther.h"/*!    \brief initialize         MoEther 僐儞僗僩儔僋僞    \author Yamami    \date   create:2004/08/12 update:*/MoEther::MoEther(){    //printf("MoEther Constructor\n");}/*!    \brief initialize         MoEther etherInit    \author Yamami    \param  AbstractMonic *pminsNic [in] 僪儔僀僶僋儔僗傊偺億僀儞僞(杮棃偼丄拪徾僋儔僗)    \date   create:2004/08/12 update:*/void MoEther::etherInit(AbstractMonic *pminsNic) {    //printf("MoEther init\n");        //僀乕僒僱僢僩僼儗乕儉曐帩儕僗僩 惗惉    /* keyinfo list */    Ether_FrameList_ = new HList<ETHER_FRAME*>();    //撪晹曐帩偺NIC僪儔僀僶傊奿擺    insAbstractNic = pminsNic;    //ARP僋儔僗傪僀儞僗僞儞僗壔  Yamami?? 偙偙偱ARP偲IP僋儔僗偼僀儞僗僞儞僗壔偡傋偒偐丠    //2004/09/04 ARP僋儔僗偼丄mones.cpp(儊僀儞)偱僀儞僗僞儞僗壔偟丄僌儘乕僶儖億僀儞僞偱曐帩偡傞丅    //g_MoArp = new MoArp();    //g_MoArp->initArp(insAbstractNic);    return;}/*!    \brief initialize         MoEther 僨僗僋僩儔僋僞    \author Yamami    \date   create:2004/08/12 update:*/MoEther::~MoEther() {    delete Ether_FrameList_;}/*!    \brief setEtherFrame         僀乕僒僱僢僩僼儗乕儉僙僢僩    \param  byte* frameBuf [in] 僀乕僒僱僢僩僼儗乕儉僶僢僼傽傊偺億僀儞僞    \param  byte *mac [in] 僀乕僒僱僢僩僼儗乕儉僒僀僘    \return int 寢壥             \author Yamami    \date   create:2004/08/12 update:*/int MoEther::setEtherFrame(byte *frameBuf, int size){        // allocate ETHER_FRAME    ETHER_FRAME* frame = (ETHER_FRAME*)malloc(sizeof(ETHER_FRAME));    // 僼儗乕儉偺僐僺乕    memcpy(frame , frameBuf , size);    //偙偙偱丄僷働僢僩儐乕僥傿儕僥傿僋儔僗傪巊偭偰丄僄儞僨傿傾儞曄姺    //僼儗乕儉僞僀僾    frame->type = MoPacUtl::packet_get_2byte(frameBuf , 12);        //儕僗僩偵捛壛    Ether_FrameList_->add(frame);    return 0;}/*!    \brief getEtherFrame         僀乕僒僱僢僩僼儗乕儉庢摼     \param  byte* frameBuf [in] 僀乕僒僱僢僩僼儗乕儉僶僢僼傽傊偺億僀儞僞    \return int 寢壥             \author Yamami    \date   create:2004/08/12 update:*/int MoEther::getEtherFrame(ETHER_FRAME *frameBuf)//int MoEther::getEtherFrame(){        ETHER_FRAME* tempEther = Ether_FrameList_->removeAt(Ether_FrameList_->size() - 1);    if (tempEther == NULL) {        printf("tmp Null!!\n");        return 0;    }    /* copy to keyinfo */    memcpy(frameBuf, tempEther, sizeof(ETHER_FRAME));        free(tempEther);        return 1;}/*!    \brief receiveEther         僀乕僒僱僢僩僼儗乕儉庴怣張棟     \return int 寢壥             \author Yamami    \date   create:2004/08/22 update:*/int MoEther::receiveEther(){    int reti;        // allocate ETHER_FRAME    ETHER_FRAME* frame = (ETHER_FRAME*)malloc(sizeof(ETHER_FRAME));        reti = getEtherFrame(frame);    //Yamami僨僶僢僌    //int i;    //for(i=0;i<60;i++){    //    printf("%d:%x ",i,frame->data[i]);    //}    //printf("\n");    // 僼儗乕儉傪奺僾儘僩僐儖偵搉偡    switch(frame->type)    {        case ETHER_PROTO_IP:            return g_MoIp->receiveIp((IP_HEADER*)frame->data);            break;        case ETHER_PROTO_ARP:            return g_MoArp->receiveArp((ARP_HEADER*)frame->data);            break;                }        return 0;}/*!    \brief sendEther         僀乕僒僱僢僩僼儗乕儉憲怣張棟     \param  byte *pkt [in] 憲怣僷働僢僩傊偺億僀儞僞    \param  dword dest_ip [in] 憲怣愭IP傾僪儗僗    \param  dword size [in] 憲怣僒僀僘    \return int 寢壥             \author Yamami    \date   create:2004/08/28 update:*/void MoEther::sendEther(byte *pkt , dword dest_ip , dword size){    //Yamami?? 枹幚憰 憲怣偼丄傾僾儕懁偐傜僐乕儖偝傟傞偼偢 憲庴怣偱僋儔僗偼暘偗傞傋偒偐丠    //byte   *mac;    /* ARP 僥乕僽儖専嶕 */    //mac=arp_lookup(dest_ip);        //憲怣    //frame_output( pkt, mac, size, ETHER_PROTO_IP );}

⌨️ 快捷键说明

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