zoukankan      html  css  js  c++  java
  • 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 <gpsr/gpsr_packet.h>


    在 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.有些附件我想添加上来但是不知道怎么搞正在考虑中,希望有人能提供点建议


    外链地址:http://blog.sina.com.cn/s/blog_414c2a9a01013tau.html

  • 相关阅读:
    【Leetcode_easy】961. N-Repeated Element in Size 2N Array
    【Leetcode_easy】953. Verifying an Alien Dictionary
    【Leetcode_easy】949. Largest Time for Given Digits
    【Leetcode_easy】944. Delete Columns to Make Sorted
    【Leetcode_easy】942. DI String Match
    【Leetcode_easy】941. Valid Mountain Array
    【Leetcode_easy】938. Range Sum of BST
    【Leetcode_easy】937. Reorder Log Files
    【Leetcode_easy】933. Number of Recent Calls
    【Leetcode_easy】929. Unique Email Addresses
  • 原文地址:https://www.cnblogs.com/james1207/p/3313282.html
Copyright © 2011-2022 走看看