公司的业务在标准的PDCP协议前面加了44个字节的自定义数据,现在想做个wireshark的插件用于数据包解析。
要求是自定义的44个字节不解析,只解析44个字节后的标准的PDCP协议。
但是遇到一个问题:插件跳过了前面的44个字节,然后调用find_dissector函数找wireshark已经实现的PDCP协议解析器,但是解析后在页面上什么都没有显示。
代码如下:
//包解析
int packet_parse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
{
int item_offset = 44;
gint16 pdu_len = tvb_reported_length(tvb);
proto_item * pdcp_item = proto_tree_add_item(tree, proto_dtmpdcp, tvb, 0, -1, ENC_NA);
proto_item_append_text(pdcp_item, ",PDU len : %-05u", pdu_len);
proto_tree * subtree = proto_item_add_subtree(pdcp_item, ett_dtmpdcp);
offset += item_offset;
dissector_handle_t handle = find_dissector("pdcp-lte");
if(handle)
{
tvbuff_t* next_tvb = tvb_new_subset(tvb, offset, -1, pdu_len - item_offset);
if(next_tvb)
{
call_dissector(handle, next_tvb, pinfo, subtree);
//tvb_free(next_tvb);
}
}
return 0;
}
在wireshark上呈现如下:
请问有知道这是什么原因么?谢谢