Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59087
  • 博文数量: 33
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 450
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-27 08:54
文章分类
文章存档

2009年(3)

2008年(30)

我的朋友
最近访客

分类: LINUX

2008-11-04 15:57:47

怎么调用无线节点的路由协议(如AODV)中的command()里面的函数

例如,我的路由协议myrtagent的command()里面有 seta方法如下面红色字体所示。则在tcl脚本中可以用一下方式调用这个方法;

[$node_(0) agent 255] seta 10

[$node_(0) agent 255]表示获得node_(0)的255端口的代理(协议)

然后再调用这个代理的seta函数。

Flood::command(int argc, const char*const* argv) {

    Tcl& tcl = Tcl::instance();

    if(argc == 2) {     

       if(strncasecmp(argv[1], "id", 2) == 0) {

           cout<<"The ip addr is "<           tcl.resultf("mflood:%d", index_);

           return TCL_OK;

       }

       else if (strcmp(argv[1], "geta") == 0){

            cout<<"haha geta :"<            return TCL_OK;

       }

       else if (strcmp(argv[1], "uptarget") == 0) {

           if (uptarget_ != 0)

              tcl.result(uptarget_->name());

           return (TCL_OK);

       }

    } else if(argc == 3) {

       if(strcmp(argv[1], "index_") == 0) {

           index_ = atoi(argv[2]);

           return TCL_OK;

       } else if(strcmp(argv[1], "log-target") == 0 || strcmp(argv[1], "tracetarget") == 0) {

           logtarget = (Trace*) TclObject::lookup(argv[2]);

           if(logtarget == 0) return TCL_ERROR;

           return TCL_OK;

       }

       else if (strcmp(argv[1], "seta") == 0){

           a=atoi(argv[2]);            

           return TCL_OK;

       }

       else if (strcmp(argv[1], "uptarget") == 0) {

           if (*argv[2] == '0') {

              target_ = 0;

              return (TCL_OK);

           }

           uptarget_ = (NsObject*)TclObject::lookup(argv[2]);

           if (uptarget_ == 0) {

              tcl.resultf("no such object %s", argv[2]);

              return (TCL_ERROR);

           }

           return (TCL_OK);

       }

    else if (strcasecmp (argv[1], "port-dmux") == 0) {

                 TclObject *obj;

                  port_dmux_ = (NsObject *) obj;

                 return TCL_OK;

        } 

    }

    return Agent::command(argc, argv);

}

阅读(490) | 评论(0) | 转发(0) |
0

上一篇:NS2中Mac802_11定时器介绍

下一篇:NS技巧13

给主人留下些什么吧!~~