static gboolean dissect_mqpcf_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { if (tvb_length(tvb) >= 36) { struct mqinfo* mqinfo = pinfo->private_data; if (strncmp((const char*)mqinfo->format, MQ_FMT_ADMIN, 8) == 0 || strncmp((const char*)mqinfo->format, MQ_FMT_EVENT, 8) == 0 || strncmp((const char*)mqinfo->format, MQ_FMT_PCF, 8) == 0) { /* Dissect the packet */ dissect_mqpcf(tvb, pinfo, tree); return TRUE; } } return FALSE; }
static gboolean dissect_mqpcf_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { if (data && tvb_reported_length(tvb) >= 36) { mq_parm_t *p_mq_parm = (mq_parm_t *)data; if (strncmp((const char*)p_mq_parm->mq_format, MQ_MQFMT_ADMIN, 8) == 0 || strncmp((const char*)p_mq_parm->mq_format, MQ_MQFMT_EVENT, 8) == 0 || strncmp((const char*)p_mq_parm->mq_format, MQ_MQFMT_PCF, 8) == 0) { /* Dissect the packet */ dissect_mqpcf(tvb, pinfo, tree, p_mq_parm); return TRUE; } if (strncmp((const char *)p_mq_parm->mq_format, "LPOO", 4) == 0) { gboolean bLittleEndian; bLittleEndian = ((p_mq_parm->mq_cur_ccsid.encod & MQ_MQENC_INTEGER_MASK) == MQ_MQENC_INTEGER_REVERSED) ? ENC_LITTLE_ENDIAN:ENC_BIG_ENDIAN; dissect_mqpcf_parm(tvb, pinfo, tree, 0, (guint32)-1, bLittleEndian, FALSE); return TRUE; } } return FALSE; }