首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为Lua Wireshark解析器创建Protofield子阵列

如何为Lua Wireshark解析器创建Protofield子阵列
EN

Stack Overflow用户
提问于 2013-12-12 17:23:54
回答 1查看 2.2K关注 0票数 2

给出以下示例:

代码语言:javascript
复制
local f= mycoolprotocol.fields
f.Length = ProtoField.uint32("MCP.Length","Length",base.DEC)
f.MsgType = ProtoField.uint16("MCP.MsgType","MsgType",base.DEC)

我已经声明了2个Protofield。但是假设我有一个重复的组或一组项目:

消息正文如下所示:

代码语言:javascript
复制
struct person
{
  int16 age;
  string name;
}
person[] p = new person[2];

理想情况下,我希望在Wireshark中为该组创建一个子树

代码语言:javascript
复制
+ Persons
 + Person1
    name
    age
 + Person2
    name
    age

问题是我不知道如何在Lua中构建它。它声明了两个原始域:

代码语言:javascript
复制
f.name = Protofield.string("MCP.name","name","Text")
f.age = ProtoField.uint16("MCP.age","age",base.DEC)

但是我想创建一个组的动态数组,所以我可以这样做:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2013-12-12 22:03:43

事实证明,我可以重用相同的字段来构建树。

所以在伪代码中:

代码语言:javascript
复制
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.name f.age就不会被较新的值覆盖。我猜它只是ProtoField的一个占位符

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20539474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档