【NS2】NS2修改MAC协议(转载)
|
// the same header space with hdr_mac. struct hdr_mac802_11 { }; |
这是NS2中对802.11mac头部的实现,按照NS2文档如果要定义一个新的协议头必须定义static int offset_以及inline static {some mac sturct}* access(const Packet* p)函数,以使NS2能在class Packet中定位到你的头部,这种方法不是很理想,有时候我们只是对已有的头部做一些修改,并不需要重新定义一个头部,按文档的做法会增加不必要的内存 开销,这里我们看上面的注释,翻译过来就是“头部并没有定义自己的头部访问函数,因为它和hdr_mac(定义在mac.h中)使用同样的空间”,这就给 我们提供了另一中添加自定义报头的方法,我们可以在上面的机构中加入我们的数据段,不需要考虑数据对齐的问题,因为上面的头部结构定义在NS2中只是用在 传输头部信息,而真实的数据长度在hdr_cmn.size_中,但是有一点要注意确保 sizeof(hdr_mac802_11)==sizeof(hdr_mac)。那怎么访问自定义头部呢?我们看到packet.h中,找 到#define HDR_MAC802_11(p) ((hdr_mac802_11 *)hdr_mac::access(p)),使用该宏就能定位到自己的头部了。
|
dh->dh_fc.fc_protocol_version = MAC_ProtocolVersion; ch->txtime() = mac_->txtime(ch->size(), ch->mod_scheme_); if ((u_int32_t)ETHER_ADDR(dh->dh_ra) != MAC_BROADCAST) { |
看到ch->size() += mac_->phymib_.getHdrLen11(),getHdrLen11定义如下
|
|
将TclClass("Mac/Mac802_11Ext")改为TclClass("Mac/MyMac802_11"),以在tcl中将Mac/MyMac802_11和自定义的mac协议绑定
2.打开mywireless-phy.cc,将#include "wireless-phyExt.h",#include "mac-802_11Ext.h"改为#include "mywireless-phy.h",#include "mymac-802_11.h"
|
|
将TclClass("Phy/WirelessPhyExt")改为TclClass("Phy/MyWirelessPhy"),已以在tcl中将Phy/MyWirelessPhy与自定义的物理层协议绑定
|
for(n = ifhead_.lh_first; n; n = n->nextchnl()) { highestAntennaZ_ = highestZ; if (dynamic_cast<MYMAC::WirelessPhyExt*>(tifp)) { |
这是用来计算天线高度的,上面的有MYMAC名空间的代码都是我添加的
最后重新编译自定义的mac协议就添加完成了。
源地址:http://blog.myspace.cn/e/407621022.htm
【NS2】NS2修改MAC协议(转载)的更多相关文章
- 【NS2】常用资源(转载)
(一). NS常用基本网站 1. 寻求问题答案最好的地方. http://mailman.isi.edu/pipermail/ns-users/ 2. 柯老师的网站,包含很多非常实用资源:安装, ...
- dSploitzANTI渗透教程之修改MAC地址与Wifi监听器
dSploitzANTI渗透教程之修改MAC地址与Wifi监听器 dSploitzANTI基本配置 渗透测试是一种安全性较大的工作.所以,在实施渗透测试之前进行一些简单设置.如修改MAC地址.了解网络 ...
- Linux/CentOS下修改MAC地址
Linux/CentOS下修改MAC地址 摘自:https://blog.csdn.net/qq_33233768/article/details/64906265 2017年03月22日 11:06 ...
- ZZ : Ubuntu:永久修改MAC地址
方法一: 1)编辑“/etc/init.d/rc.local”文件(sudo gedit /etc/init.d/rc.local) 2)在此配置文件的最后面加上如(Ubuntu:修改网卡的MAC地址 ...
- iOS开发之如何修改Mac截屏保存路径
如何修改Mac截屏保存路径 MAC OS X系统默认的截图路径是桌面文件夹,默认的截图格式是 PNG 图片格式,如何自定义设置呢? 截图保存路径 打开终端(Terminal)并输入如下命令: de ...
- 修改Mac]Bringing interface etch0:Device
OS版本:Red Hat Enterprise Linux AS4/5 网上有很多关于linux下修改MAC地址的方法,大多依葫芦画瓢,似乎都没验证过,达不到修改的目的. 经过我的详细测试,最终成功解 ...
- 嵌入式 Linux下修改MAC地址
Linux下修改MAC地址 方法一: 1.关闭网卡设备ifconfig eth0 down2.修改MAC地址ifconfig eth0 hw ether MAC地址3.重启网卡ifconfig eth ...
- macOS 自动修改mac地址脚本
介于 某公众号提供了通过修改mac地址来链接BUPT_mobile 的推送,上网上查了一下咋写脚本,实现一键修改mac地址的功能 网上有自动修改mac地址的程序,但是很坑爹的要收费,所以不如自力更生写 ...
- linux下修改MAC地址方法
一.修改MAC地址方法linux环境下:需要用 #ifconfig eth0 down 先把网卡禁用 再用ifconfig eth0 hw ether 1234567890ab 这样就可以改成功了要想 ...
随机推荐
- UVa-401 Palindromes回文词
虽然是水题,但是容易错.参照了紫书的代码可以写的很简洁.主要还是注意常量数组的使用,能让代码变得简单许多 #include <iostream> #include <cstdio&g ...
- Java数据结构和算法(八)--红黑树与2-3树
红黑树规则: 1.每个节点要么是红色,要么是黑色 2.根节点都是黑色节点 3.每个叶节点是黑色节点 3.每个红色节点的两个子节点都是黑色节点,反之,不做要求,换句话说就是不能有连续两个红色节点 4.从 ...
- [转]深入理解定位父级offsetParent及偏移大小
偏移量(offset dimension)是javascript中的一个重要的概念.涉及到偏移量的主要是offsetLeft.offsetTop.offsetHeight.offsetWidth这四个 ...
- 我的第一个可用的Windows驱动完成了
看到了一些希望,就值得我继续执着下去. 虽然是很简单的一个小驱动,但是它包含了我学编程两年来的憧憬与努力... 在2011年5月份,我就想学驱动,但是多次的失败,让我很不耐烦,所以暂时搁置了.... ...
- python 处理缺失值
- js对象属性方法大总结
数组(Array):系列元素的有序集合: 详细演示请看:[js入门系列演示·数组 ] http://www.cnblogs.com/thcjp/archive/2006/08/04/467761.ht ...
- Data Visualisation Cheet Sheet
Univariate plotting with pandas import pandas as pd reviews = pd.read_csv() reviews.head() //bar rev ...
- SQL —— 存储过程
一.什么是存储过程 预先存储好的SQL程序. 保存在SQL Server中(跟视图的存储方式一样) 通过名称和参数执行. 二.存储过程的优点 执行速度更快 允许模块化程序设计 提高系统安全性 减少网络 ...
- Android——内存管理基础
内存收集概念 内存垃圾收集器(garbage collector) 概念:自定内存管理. 功能:分配内存.保证所有被引用的对象还在内存中.可以释放在运行的代码中不再引用的对象的内存. 垃圾收集器避免了 ...
- MySQL学习-- UNION与UNION ALL
UNION用于把来自许多SELECT语句的结果组合到一个结果集合中,也叫联合查询. ? 1 2 3 4 5 SELECT ... UNION [ALL | DISTINCT] SELECT ... [ ...