2013-12-12 76 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