OGM包为BATMAN.adv协议确定拓扑结构最重要的控制数据包,但其所能承载的信息有限,BATMAN.adv使用TVLV包传递更丰富的信息。TVLV为类型(Type)、版本(Version)、长度(Length)和数值(Value)的首字母缩写,其帧格式如下图
图1 TVLV包帧格式
TVLV包作为一个兼容性极强的数据包,不仅可以直接传递多种数据,还能附加于OGM包后实现周期性广播。通过注册回调函数,协议可实现响应TVLV包和周期性地广播TVLV包。节点之间的网关声明,分布式路由表交换和网络编码等均通过TVLV包实现。下表为BATMAN.adv已使用的TVLV类型编号。
表1 BATMAN.adv中TVLV类型定义
batadv_tvlv_handler_register函数用于注册新增TVLV类型所对应的回调函数。通过batadv_tvlv_unicast_send向单播发送TVLV包回应。更多请查看tvlv.h文件