Wireshark解剖器UINT64位掩码

时间:2014-08-29 12:05:40

标签: c wireshark bitmask wireshark-dissector uint64

我发现header_field中使用的proto_register_field_array(const int parent, hf_register_info *hf, const int num_records);中的位掩码字段是guint32,因此我无法使用64位掩码。无论如何我可以到处走走吗?

具体来说,我有一个60位字段,所以我试图创建一个类型为FT_UINT64和位掩码0xfffffffffffffff的字段,但当然,在编译C代码时我得到:< / p>

warning: implicit conversion from 'long' to 'guint32' (aka 'unsigned int') changes value from 1152921504606846975 to 4294967295 [-Wconstant-conversion]
            NULL, 0xfffffffffffffff,

提前感谢您的回复。

2 个答案:

答案 0 :(得分:0)

如果函数采用32位参数,则无法强制它理解64位参数,抱歉。寻找一些其他功能是否可以做你想要的。

答案 1 :(得分:0)

经过深入搜索,似乎唯一可行的解​​决方案是忘记头字段定义中的位掩码并使用proto_tree_add_bits_item(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const gint no_of_bits, const guint encoding);函数。

非常感谢:)