GPSR协议移植

  修改的文件有packet.h、cmu-trace.cc、priqueue.cc、ns-packet.tcl、Makefile

  1、在 $HOME/ns-allinone-2.29/ns-2.29下新建gpsr文件夹,并将GPSR-KeLiu中的

  gpsr_packet.h, gpsr_neighbor.h, gpsr_neighbor.cc, gpsr.h, gpsr.cc, gpsr.tcl,

  wireless-gpsr.tcl, gpsr_sinklist.h, gpsr-sinklist.cc, grid_deploy10x10.tcl, cbr100.tcl加入刚新建的gpsr文件夹中。

  2、进入$HOME/ns-allinone-2.29/ns-2.29/common, 修改packet.h

  在enum packet_t{

  增加 PT_GPSR

  }

  class p_info {

  增加 name_[PT_GPSR]= “gpsr”

  }

  3、进入$HOME/ns-allinone-2.29/ns-2.29/trace,修改 cmu-trace.cc

  (readme遗漏)增加#include

  在 void CMUTrace::format(Packet* p, const char *why)

  {

  增加 case PT_GPSR;

  break;

  }

  3、进入 $HOME/ns-allinone-2.29/ns-2.29/queue,修改priqueue.cc

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

  {

  增加 case PT_GPSR:

  }

  4、进入$HOME/ns-allinone-2.29/ns-2.29/tcl/lib, 修改ns-packet.tcl

  foreach prot{

  增加GPSR

  }

  5、进入 $HOME/ns-allinone-2.29/ns-2.29/ ,修改Makefile

  在OBJ_STL = 的最后按照格式加入( gpsr前为TAB键而不是空格)

  gpsr/gpsr_neighbor.o\

  gpsr/gpsr_sinklist.o\

  gpsr/gpsr.o

  如果需要加入调试信息,则在CCOPT = -Wall 加上 -g, 如下:

  CCOPT = -g -Wall

  6、重新编译,执行如下命令

  cd $HOME/ns-allinone-2.29/ns-2.29/common

  touch packet.cc

  cd ..

  make clean

  make

  7、在使用脚本wireless_gpsr.tcl进行场景仿真时,需要对 ns-2.30所在的路径进行修改

  将wireless_gpsr.tcl 中的将ns2home 修改成 $HOME/ns-allinone-2.30/ns-2.30/

  如:

  source ../gpsr.tcl 要改成如下

  source /home/f/ns-allinone-2.29/ns-2.29/gpsr/gpsr.tcl

  文中还有以下几处,都需要给出正确的绝对路径

  Set opt(cp) "/home/f/ns-allinone-2.29/ns-2.29/gpsr/cbr100.tcl"

  set opt(sc) "/home/f/ns-allinone-2.29/ns-2.29/gpsr/grid-deploy10x10.tcl"

  Source /home/f/ns-allinone-2.29/ns-2.29/tcl/mobility/timer.tcl

  Source /home/f/ns-allinone-2.29/ns-2.29/tcl/lib/ns-bsnode.tcl

  Source /home/f/ns-allinone-2.29/ns-2.29/tcl/mobility/com.tcl

  =========割========================================

  1.上面2处标红的 在2.30中是这么改的,但是我用的2.35不是,具体怎么改可以参照我在笔记二中移植mflood中的修改,也就是枚举没了,而且保证NTYPE是最后一个就行了。

  2.改动过协议的neighbor.h文件的头文件,也就仅仅是一个函数名字,但是导致了所有调用此函数的文件都编译错误,我从gpsr.cc找到gpsr.cc然后找到了neighbor.cc最后才发现在是在头文件的定义中错了。本来也是个小事,但是对我这种对编程不是很精通的人来说就麻烦了,搞了我一个早上终于编译成功。

  3.上面标蓝的地方,是原笔记的话,我按照了没改的编译通过了,也就是说相对路径是可以的,不一定要绝对路径,但是有的时候相对路径更加麻烦还容易出错,比如../../../../../XX/X/XXX/XXXXX/ 这么复杂还不如就PWD一下复制个全路径就好了。

  4.有些附件我想添加上来但是不知道怎么搞正在考虑中,希望有人能提供点建议

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值