📄 moether.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 + -