原文地址: http://wowseason.spaces.live.com/blog/cns!8A62350BF8613BBF!124.entry

参见aodv.cc

  1.在aodv.h中声明

PortClassifier *dmux_;

2.if (ch->ptype() != PT_AODV && ch->direction() == hdr_cmn::UP &&

       ((u_int32_t)ih->daddr() == IP_BROADCAST)

              || ((u_int32_t)ih->daddr() == here_.addr_)) {

       dmux_->recv(p,0);  //传递给分类器

       return;

3. 分类器处理数据包

void Classifier::recv(Packet* p, Handler*h)

{

       NsObject* node = find(p);//查找节点的是否存在

       if (node == NULL) {

              /*

               * XXX this should be "dropped" somehow.  Right now,

               * these events aren't traced.

               */

              Packet::free(p);

              return;

       }

       node->recv(p,h);//让节点接受

4.节点接受后

. void NsObject::recv(Packet *p, const char*)

{

       Packet::free(p);

}

posted on 2010-04-21 09:20  renwei  阅读(83)  评论(0)    收藏  举报