2013-12-12 211 views
1

考虑下面的例子:如何创建Protofield子阵列的Lua Wireshark的剥离

local f= mycoolprotocol.fields 
f.Length = ProtoField.uint32("MCP.Length","Length",base.DEC) 
f.MsgType = ProtoField.uint16("MCP.MsgType","MsgType",base.DEC) 

我宣布2个Protofields。但是想象一下,我有一个重复的组或项目的数组:

和消息体看起来像这样:

struct person 
{ 
    int16 age; 
    string name; 
} 
person[] p = new person[2]; 

理想情况下,我想创造Wireshark的一个子树为该组

+ Persons 
+ Person1 
    name 
    age 
+ Person2 
    name 
    age 

问题是我不知道如何在Lua中构造这个。这声明2个protofields:

f.name = Protofield.string("MCP.name","name","Text") 
f.age = ProtoField.uint16("MCP.age","age",base.DEC) 

但我想创建组的动态数组,而不是,所以我可以做:

subtree:add_le(f[0].name, buffer(x,y)) 

那么,有没有一个Protofield.ProtoFieldArray? 这可能吗?欢迎任何其他想法。

谢谢。

此外,作为参考: http://ask.wireshark.org/questions/28038/how-to-create-a-protofield-sub-array-in-lua

回答

1

原来我可以重复使用相同的字段来构建树。

因此,在伪代码:

begin loop 
    subtree= mainsubtree:add(a,buffer()) 
    subtree:add(f.name, buffer(x,y)) 
    subtree:add(f.age, buffer(x+name.length,y)) 
end 

所以f.namef.age没有得到一个新的值覆盖。我想这只是一个占位符,为ProtoField