6所需要进行的更改
6.1 数据包类型声明
如果我们还记得,我们必须使用一个常量来表示我们新的数据包类型,PT_PROTONAME。我们将在文件通用/数据包中定义它。让我们找到 packet_t 枚举,其中列出了所有的数据包类型。我们将把 PT_PROTONAME 添加到这个列表中,正如我们在下一段代码(第 6 行)中显示的那样。
6.2 跟踪服务的支持
正如我们所知,模拟的目的是获取描述执行过程中发生的跟踪文件。要想熟悉痕迹,请阅读第 23 章[2]。跟踪对象用于在每次数据包被接收、发送或删除时写入数据包的需要信息。为了记录有关数据包类型的信息,我们在 CMUTrace 类中实现了 format_protoname()函数。CMUTrace 对象为无线模拟提供了 Trace 支持,并在第 16 章[2]中进行了描述。让我们编辑跟踪/cmu-trace.h 文件。我们必须在下一个示例的第 6 行中添加新函数。
6.3 TCl 文库
现在我们需要对 Tcl 文件做一些更改。实际上,我们将添加我们的数据包类型,为绑定的属性提供默认值,并提供所需的基础结构来创建运行我们的质子名路由协议的无线节点。在 tcl/lib/ns-packet.tcl 中,您必须找到下一个代码,并将质子名添加到列表中(正如我们在第 2行中所做的那样)。
6.4 具有优先级的队列
您很有可能会在模拟中使用优先级队列。此队列类型将路由数据包视为高优先级的数据包,并在队列开始时插入它们。但是我们需要告诉 PriQueue 类质子包是路由包,因此被视为高优先级。我们必须修改 queue/priqueue.cc 文件中的 recv()函数。下一条代码中的第 13 行是我们需要做的唯一修改。
6.5 制作文件
现在每一个东西都被实现了,我们只需要编译它!为此,我们将通过在 OBJCC 变量中添加对象文件来编辑Makefile 文件,如下代码所示(第 4 行)。