AODV中实施watchdog

1.开启混杂模式,接收邻居转发的所有数据包,不进行MAC过滤,全部

sendToWatchdog(const Packet *p)

2.当前节点转发数据包后,缓存数据包

sendToWatchdog(const Packet *p, int mac_dst)
 
//Start Watchdog Code
void
AODV::tap(const Packet *p) {
sendToWatchdog(p);
}

void
AODV::sendToWatchdog(const Packet *p){
if(debug>1) printf("taping\n");
char* data; //ns-2 does not send real data, we use the uid of the packet because is unique.
hdr_ip *iph = hdr_ip::access(p);
//hdr_mac *ipm = hdr_mac::access(p);
hdr_cmn *pk = hdr_cmn::access(p);

hdr_mac802_11 *mh;
mh = HDR_MAC802_11(p);

data = (char *) malloc(sizeof(char)*15);
sprintf(data, "%d", pk->uid());

printf("\n\nIP %d:%d (%d) -> IP %d:%d (%d), Type:%d, Data: %s, Time: %f \n",iph->src().addr_, iph->sport(), ETHER_ADDR(mh->dh_ta), iph->dst().addr_, iph->dport(), ETHER_ADDR(mh->dh_ra), pk->ptype_, data, Scheduler::instance().clock());
watchdog->newPacket(iph->src().addr_, iph->dst().addr_, ETHER_ADDR(mh->dh_ta), ETHER_ADDR(mh->dh_ra), iph->sport(), iph->dport(), pk->ptype_, data, Scheduler::instance().clock());
if(debug>1) printf("End tapping\n");
}

void
AODV::sendToWatchdog(const Packet *p, int mac_dst){
if(debug>1) printf("taping\n");
char* data; //ns-2 does not send real data, we use the uid of the packet because is unique.
hdr_ip *iph = hdr_ip::access(p);
//hdr_mac *ipm = hdr_mac::access(p);
hdr_cmn *pk = hdr_cmn::access(p);

hdr_mac802_11 *mh;
mh = HDR_MAC802_11(p);

data = (char *) malloc(sizeof(char)*15);
sprintf(data, "%d", pk->uid());

printf("\n\nIP %d:%d (%d) -> IP %d:%d (%d), Type:%d, Data: %s, Time: %f \n",iph->src().addr_, iph->sport(), ETHER_ADDR(mh->dh_ta), iph->dst().addr_, iph->dport(), mac_dst, pk->ptype_, data, Scheduler::instance().clock());
watchdog->newPacket(iph->src().addr_, iph->dst().addr_, ETHER_ADDR(mh->dh_ta), mac_dst, iph->sport(), iph->dport(), pk->ptype_, data, Scheduler::instance().clock());
if(debug>1) printf("End tapping\n");
}
//End Watchdog Code



 

转载于:https://www.cnblogs.com/zhangrui/archive/2012/03/07/2384183.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Drools 7.4.1.Final参考手册(六) 用户手册

用户手册 基础 无状态的知识Session Drools规则引擎拥有大量的用例和功能,我们要如何开始?你无须担心,这些复杂性是分层的,你可以用简单的用例来逐步入门。 无状态Session,无须使用推理,就形成了最简单的用…

css --- 弹性盒子

左右两侧按1:1自适应,中间固定宽度500px // CSS /* 首先定义 container ,关注display */ /* webkit 是Chrome、Safari 的浏览器前缀 */ .container{margin: auto;display: -webkit-box;width: 80%;height: 200px; } /* 开始定义左、中、右 */ .left { …

更精炼更专注的RTMPClient客户端EasyRTMPClient,满足直播、转发、分析等各种需求...

现状 EasyRTMPClient,熟悉的朋友就会联想到EasyRTSPClient项目(https://github.com/EasyDSS/EasyRTSPClient),EasyRTSPClient从14年中期开始发展,已经迭代发展历时3年多时间,可以说在RTSPClient领域是非常成…

数据操纵语言 ,DML, 增删改

DML(data manipulation language);数据操纵语言 插入数据:插入数据: 每次只能插入一行数据 INSERT INTO 表名(列名1, 列名2, 列名3....) VALUES (value1, value2, value3....); value与列数一一对应。 #插入一行: INSERT INTO t_student(id,…

bootstrap --- 表格

几个可选类: .table-bordered: 为表格加上边框 .table-striped: 为表格加上斑马效果 .table-hover: 鼠标悬停在表格行上时展现不同得颜色 .table-condensed: 更为紧凑的表格样式 // 导入样式,从bootstrap官网导入CDN // HEAD <link rel"stylesheet" href"…

发现一个小坑的地方,unity的协程,想要停止,必须以字符串启动

今天想要停止一个协成&#xff0c;发现调用 StopCoroutine(ShowDebug()); 竟然不管用&#xff0c;后来看了文档才知道&#xff0c;原来想要停止协成&#xff0c;必须用字符启动协程 StartCoroutine("ShowDebug"); 然后再调用 StopCoroutine("ShowDebug…

mongodb数据库中插入数据

mongodb数据库中插入数据 一&#xff1a;connection 访问集合&#xff1b; 在mongodb数据库中&#xff0c;数据是存储在许多数据集合中&#xff0c;可以使用数据库对象的collection方法访问一个集合。该方法使用如下&#xff1a; db.collection(collectionName, [options], [ca…

bootstrap --- 表单

// HTML >>> 第一种样式 <!DOCTYPE html> <html> <head><link rel"stylesheet" href"https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity"sha384-Gn5384xqQ1aoWXA058RXPxPg6fy4IWvTNh0E263XmF…

linux新建用户,用户组,以及权限的分配(摘自博客园)

linux新建用户&#xff0c;用户组&#xff0c;以及权限的分配 原文url&#xff1a;https://www.cnblogs.com/clicli/p/5943788.html Linux 系统是一个多用户多任务的分时操作系统&#xff0c;任何一个要使用系统资源的用户&#xff0c;都必须首先向系统管理员申请一个账号&a…

BZOJ3555: [Ctsc2014]企鹅QQ

【传送门&#xff1a;BZOJ3555】 简要题意&#xff1a; 给出n个字符串长度为m&#xff0c;给出字符串的字符种数&#xff0c;求出相似的字符串个数 相似字符串的定义为&#xff1a;相同位置上两个字符串有且只有一个字符不相同时&#xff0c;两个字符串相似 题解&#xff1a; 乱…

bootstrap --- 按钮

<head><!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/bootstrap3.3.7/dist/css/bootstrap.min.css" integrity"sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4VaPmSTs…

bootstrap --- 分页

// bootstrap中给无序列表的ul元素添加pagination类即可.<ul class"pagination"><li class"disabled"><a href"#">&laquo;</a></li><li class"active"><a href"#">1</a&g…

图的基本知识

1.简介 图&#xff08;Graph&#xff09;是由顶点的有穷非空集合和顶点之间的边的集合组成&#xff0c;通常表示为&#xff1a;G(V,E)&#xff0c;G表示一个图&#xff0c;V是图G中顶点的集合&#xff0c;E是图G中边的集合。 图是一种复杂的非线性结构&#xff0c;在图结构中&a…

面向对象之封装

封装的两个含义&#xff1a; 1.把对象的状态和行为看成一个统一的整体&#xff0c;将二者存放在一个独立的模块中(类)&#xff1b; 2."信息隐藏", 把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,字段; 封装机制在程序中的体现是&#xff1a;把描述对…

bootstrap --- 面板

基本样式 <div class"panel panel-default"><div class"panel-heading">面板头...</div><div class"panel-body">面板身体...</div><div class"panel-footer">面板脚...</div> </div>…

C#控件访问调用它的父级页面

C#控件访问调用它的父级页面 你建立一个winform程序,出来一个默认窗体Form1&#xff0c;再添加一个UserControl&#xff0c;默认名字为UserControl1;在Form1的窗口里写如下的代码: public partial class Form1 : Form { //寂义一个UserControl1对象 UserCo…

NSMapTable

跟NSDictionary用法差不多&#xff0c;不过区别是NSMapTable可以设置内存选项&#xff0c;例如可以设置key跟value的内存属性&#xff08;weak/strong&#xff09;&#xff0c;从而避免内存泄露。 例如这个 weakToWeakObjectsMapTable 方法可以获得一个key跟value都是weak的字典…

《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---23

以下为阅读《Linux命令行与shell脚本编程大全 第3版》的读书笔记&#xff0c;为了方便记录&#xff0c;特地与书的内容保持同步&#xff0c;特意做成一节一次随笔&#xff0c;特记录如下&#xff1a;转载于:https://www.cnblogs.com/guochaoxxl/p/7888810.html

bootstrap --- 弹出对话框

<button class"btn btn-primary btn-lg" data-toggle"modal" data-target"#myModal">点击触发模态对话框 </button><div class"modal fade" id"myModal" tabindex"-1" role"dialog" ari…

模意义下的FFT算法

//写在前面 单就FFT算法来说的话&#xff0c;下面只给出个人认为比较重要的推导&#xff0c;详细的介绍可参考  FFT算法学习笔记 令v[n]是长度为2N的实序列&#xff0c;V[k]表示该实序列的2N点DFT。定义两个长度为N的实序列g[n]和h[n]为 g[n]v[2n],  h[n]v[2n1],  0<n…