CGO集成wireshark4.2.0动态链接库新错误col_set_cls_time: assertion “not reached“ failed

CGO集成wireshark4.2.0动态链接库新错误col_set_cls_time: assertion "not reached" failed

1.版本环境

  • wireshark4.2.0
  • golang1.21
  • mac m1 和 ubuntu22

2.问题

在cgo调用wireshark进行协议解析时候遇到错误:

** (PID:73155) 16:21:54.232994 [(none) ERROR] epan/column-utils.c:1570 -- col_set_cls_time(): assertion "not reached" failed
 ** (PID:73155) Aborting on fatal log level exception

3.解决过程

epan/column-utils.c文件的col_set_cls_time函数1570行逻辑如下:

switch (timestamp_get_type()) {
...
...
case TS_NOT_SET:
    /* code is missing for this case, but I don't know which [jmayer20051219] */
    ws_assert_not_reached();
    break;
  }

timestamp_get_type()方法来自wireshark/epan/timestamp.h,说明没有设置timestamp,同文件看到设置方法timestamp_set_type(ts_type),在源码中找一下案例:
tshark.c有涉及到:

timestamp_set_type(TS_RELATIVE);
timestamp_set_precision(TS_PREC_AUTO);
timestamp_set_seconds_type(TS_SECONDS_DEFAULT);

在设定这三个值之后进行了wtap_init操作,因此判断为初始化wireshark组件时候要进行的设置,于是在自定义代码初始化位置加上以上逻辑,再将epan/timestamp.h导入,通过在mac m1和ubuntu22平台测试,均正确。

至此,完成了对wireshark4.2.0的cgo接口对接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值