11.4.1.Listener
每一个与特定过滤器或特定tap(test access port,测试接入端口 ) 匹配的数据包都会调用一次监听器(Listener)。它能够读取协议树、数据包的Tvb缓冲区以及分路数据,但它不能够向协议树中添加数据;
11.4.1.1.Listener.new([tap],[filter],[allfields])
创建一个新的Listener tap对象
-
参数
-
tap(可选)
该tap的名字。详见 Listener.list() 中关于如何打印有效的监听器名称;
-
filter(可选)
一个应用于tap的显示过滤器。每个匹配的数据包都将调用 tap.packet 函数。它的默认值是 nil,它匹配每一个数据包(例如,“m2tp”);
-
allfields(可选)
是否生成所有的field,默认是 false;
PS:这很影响性能;
-
-
返回值
- 一个新创建的 Listener 监听器对象;
-
可能出现的错误
- tap registration error
11.4.1.2.Listener.list()
得到一个包含所有已注册的 Listener tap 名称的Lua数组表;
ps:这个操作开销非常大,应仅在错误排查时使用;
11.4.1.3.示例
--print a list of tap listener to stdout
for _,tap_name in pairs(Listener.list()) do
print(tap_name)
end
-
返回值
- 一个包含所有已注册的 tap 名称的Lua数组表;
11.4.1.4.listener.remove()
移除一个tap Listener;
11.4.1.5.listener:__tostring()
为tap Listener 生成调试信息字符串;
11.4.1.6.listener.packet
模式:仅用于赋值(Mode: Assign only)
一个当有数据包与 Listener 监听器过滤器匹配时就会被调用的方法;
当再之后被Wireshark调用时,packet方法将会被赋予以下参数:
- 一个 Pinfo 对象
- 一个 Tvb 对象
- 一个 tapinfo 表
function tap.packet(pinfo,tvb,tapinfo) ... end
ps: tapinfo 是一个基于 Listener的类型的表,不存在则为空;
11.4.1.7.listener.draw
模式:仅用于赋值(Mode: Assign only)
一个每隔几秒钟就会被调用一次的方法,用来重新绘制GUI对象;
在Tshark中,该函数仅在每次捕获文件(capture file)结束时调用;
当再之后被Wireshark调用时,draw 方法将不会被赋予任何参数;
function tap.draw() ... end
11.4.1.8.listener.reset
模式:仅用于赋值(Mode: Assign only)
一个仅在捕获运行(capture run)结束时调用的放法;
当再之后被Wireshark调用时,reset 方法将不会被赋予任何参数;
function tap.reset() ... end