From f746c09862952bf4982d58364f346f8410fb0cc1 Mon Sep 17 00:00:00 2001 From: Michael Mann Date: Sun, 8 Sep 2013 16:23:33 +0000 Subject: Convert profinet dissector to use filterable expert info. NOTE: Some of the expert group values may need to be checked, PI_UNDECODED doesn't always seem like the right choice. I thought PI_PROTOCOL should be used more. This concludes the conversion expert_add_info_format for all dissectors (where the function isn't commented or #defined out). Onto the "internal" (epan/lua) uses of the call. svn path=/trunk/; revision=51841 --- plugins/profinet/packet-dcerpc-pn-io.c | 275 +++++++++++++++++--------------- plugins/profinet/packet-dcom-cba-acco.c | 60 ++++--- plugins/profinet/packet-dcom-cba.c | 15 +- 3 files changed, 197 insertions(+), 153 deletions(-) (limited to 'plugins/profinet') diff --git a/plugins/profinet/packet-dcerpc-pn-io.c b/plugins/profinet/packet-dcerpc-pn-io.c index 3bb4166d01..51719dc745 100644 --- a/plugins/profinet/packet-dcerpc-pn-io.c +++ b/plugins/profinet/packet-dcerpc-pn-io.c @@ -667,6 +667,16 @@ static gint ett_pn_io_profidrive_parameter_value = -1; static gint ett_pn_io_GroupProperties = -1; +static expert_field ei_pn_io_block_version = EI_INIT; +static expert_field ei_pn_io_block_length = EI_INIT; +static expert_field ei_pn_io_error_code1 = EI_INIT; +static expert_field ei_pn_io_localalarmref = EI_INIT; +static expert_field ei_pn_io_mrp_instances = EI_INIT; +static expert_field ei_pn_io_error_code2 = EI_INIT; +static expert_field ei_pn_io_ar_info_not_found = EI_INIT; +static expert_field ei_pn_io_iocr_type = EI_INIT; +static expert_field ei_pn_io_frame_id = EI_INIT; + static e_uuid_t uuid_pn_io_device = { 0xDEA00001, 0x6C97, 0x11D1, { 0x82, 0x71, 0x00, 0xA0, 0x24, 0x42, 0xDF, 0x7D } }; static guint16 ver_pn_io_device = 1; @@ -2886,8 +2896,7 @@ dissect_PNIO_status(tvbuff_t *tvb, int offset, /* don't know this u8ErrorCode1 for PNIO, use defaults */ dissect_dcerpc_uint8(tvb, offset+(3^bytemask), pinfo, sub_tree, drep, hf_pn_io_error_code2, &u8ErrorCode2); - expert_add_info_format(pinfo, sub_item, PI_UNDECODED, PI_WARN, - "Unknown ErrorCode1 0x%x (for ErrorDecode==PNIO)", u8ErrorCode1); + expert_add_info_format_text(pinfo, sub_item, &ei_pn_io_error_code1, "Unknown ErrorCode1 0x%x (for ErrorDecode==PNIO)", u8ErrorCode1); break; } break; @@ -2895,8 +2904,7 @@ dissect_PNIO_status(tvbuff_t *tvb, int offset, dissect_dcerpc_uint8(tvb, offset+(2^bytemask), pinfo, sub_tree, drep, hf_pn_io_error_code1, &u8ErrorCode1); if (u8ErrorDecode!=0) { - expert_add_info_format(pinfo, sub_item, PI_UNDECODED, PI_WARN, - "Unknown ErrorDecode 0x%x", u8ErrorDecode); + expert_add_info_format_text(pinfo, sub_item, &ei_pn_io_error_code1, "Unknown ErrorDecode 0x%x", u8ErrorDecode); } error_code1_vals = pn_io_error_code1; @@ -2904,8 +2912,7 @@ dissect_PNIO_status(tvbuff_t *tvb, int offset, dissect_dcerpc_uint8(tvb, offset+(3^bytemask), pinfo, sub_tree, drep, hf_pn_io_error_code2, &u8ErrorCode2); if (u8ErrorDecode != 0) { - expert_add_info_format(pinfo, sub_item, PI_UNDECODED, PI_WARN, - "Unknown ErrorDecode 0x%x", u8ErrorDecode); + expert_add_info_format_text(pinfo, sub_item, &ei_pn_io_error_code2, "Unknown ErrorDecode 0x%x", u8ErrorDecode); } } @@ -3166,7 +3173,7 @@ dissect_AlarmNotification_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3221,7 +3228,7 @@ dissect_IandM0_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3292,7 +3299,7 @@ dissect_IandM1_block(tvbuff_t *tvb, int offset, char *pTagLocation; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3324,7 +3331,7 @@ dissect_IandM2_block(tvbuff_t *tvb, int offset, char *pDate; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3349,7 +3356,7 @@ dissect_IandM3_block(tvbuff_t *tvb, int offset, char *pDescriptor; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3373,7 +3380,7 @@ dissect_IandM4_block(tvbuff_t *tvb, int offset, { if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3404,7 +3411,7 @@ dissect_IandM0FilterData_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3484,7 +3491,7 @@ dissect_IdentificationData_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || (u8BlockVersionLow != 0 && u8BlockVersionLow != 1)) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3560,7 +3567,7 @@ dissect_SubstituteValue_block(tvbuff_t *tvb, int offset, guint16 u16SubstitutionMode; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3592,7 +3599,7 @@ dissect_RecordInputDataObjectElement_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3632,7 +3639,7 @@ dissect_RecordOutputDataObjectElement_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3670,7 +3677,7 @@ dissect_Alarm_ack_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3698,7 +3705,7 @@ dissect_Maintenance_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3775,7 +3782,7 @@ dissect_IODWriteReqHeader_block(tvbuff_t *tvb, int offset, e_uuid_t null_uuid; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3784,7 +3791,7 @@ dissect_IODWriteReqHeader_block(tvbuff_t *tvb, int offset, *ar = pnio_ar_find_by_aruuid(pinfo, &aruuid); if (*ar == NULL) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_NOTE, "IODWriteReq: AR information not found!"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "IODWriteReq: AR information not found!"); } offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep, @@ -3818,7 +3825,7 @@ dissect_IODReadReqHeader_block(tvbuff_t *tvb, int offset, e_uuid_t null_uuid; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3827,7 +3834,7 @@ dissect_IODReadReqHeader_block(tvbuff_t *tvb, int offset, *ar = pnio_ar_find_by_aruuid(pinfo, &aruuid); if (*ar == NULL) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_NOTE, "IODReadReq: AR information not found!"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "IODReadReq: AR information not found!"); } offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep, @@ -3865,7 +3872,7 @@ dissect_IODWriteResHeader_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3874,7 +3881,7 @@ dissect_IODWriteResHeader_block(tvbuff_t *tvb, int offset, *ar = pnio_ar_find_by_aruuid(pinfo, &aruuid); if (*ar == NULL) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_NOTE, "IODWriteRes: AR information not found!"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "IODWriteRes: AR information not found!"); } offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep, @@ -3917,7 +3924,7 @@ dissect_IODReadResHeader_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3926,7 +3933,7 @@ dissect_IODReadResHeader_block(tvbuff_t *tvb, int offset, *ar = pnio_ar_find_by_aruuid(pinfo, &aruuid); if (*ar == NULL) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_NOTE, "IODReadRes: AR information not found!"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "IODReadRes: AR information not found!"); } offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep, @@ -3966,7 +3973,7 @@ dissect_ControlConnect_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -3979,7 +3986,7 @@ dissect_ControlConnect_block(tvbuff_t *tvb, int offset, *ar = pnio_ar_find_by_aruuid(pinfo, &ar_uuid); if (*ar == NULL) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_NOTE, "ControlConnect: AR information not found!"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "ControlConnect: AR information not found!"); } offset = dissect_dcerpc_uint16(tvb, offset, pinfo, tree, drep, @@ -4059,14 +4066,13 @@ dissect_ControlBlockPrmBegin(tvbuff_t *tvb, int offset, proto_tree *sub_tree; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } if (u32RecDataLen != 28-2) /* must be 28 see specification (version already dissected) */ { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, - "Block length of %u is invalid!", u32RecDataLen); + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_length, "Block length of %u is invalid!", u32RecDataLen); return offset; } offset = dissect_pn_padding(tvb, offset, pinfo, tree, 2); @@ -4076,7 +4082,7 @@ dissect_ControlBlockPrmBegin(tvbuff_t *tvb, int offset, *ar = pnio_ar_find_by_aruuid(pinfo, &ar_uuid); if (*ar == NULL) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_NOTE, "ControlBlockPrmBegin: AR information not found! (partial capture?)"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "ControlBlockPrmBegin: AR information not found! (partial capture?)"); } /* SessionKey */ offset = dissect_dcerpc_uint16(tvb, offset, pinfo, tree, drep, hf_pn_io_sessionkey, &u16SessionKey); @@ -4123,7 +4129,7 @@ dissect_SubmoduleListBlock(tvbuff_t *tvb, int offset, guint16 u16SubSlotNumber; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4150,7 +4156,7 @@ dissect_PDevData_block(tvbuff_t *tvb, int offset, { if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4171,7 +4177,7 @@ dissect_AdjustPreambleLength_block(tvbuff_t *tvb, int offset, guint16 u16PreambleLength; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4202,7 +4208,7 @@ dissect_PDPortData_Adjust_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4242,7 +4248,7 @@ dissect_PDPortData_Check_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4295,7 +4301,7 @@ dissect_PDPortDataReal_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4405,7 +4411,7 @@ dissect_PDInterfaceMrpDataAdjust_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow > 1) { /* added low version == 1 */ - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4448,10 +4454,9 @@ dissect_PDInterfaceMrpDataAdjust_block(tvbuff_t *tvb, int offset, offset = dissect_dcerpc_uint8(tvb, offset, pinfo, tree, drep, hf_pn_io_mrp_instances, &u8NumberOfMrpInstances); if (u8NumberOfMrpInstances > 0xf) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, - "Number of MrpInstances greater 0x0f is (0x%x)", u8NumberOfMrpInstances); - return offset; -} + expert_add_info_format_text(pinfo, item, &ei_pn_io_mrp_instances, "Number of MrpInstances greater 0x0f is (0x%x)", u8NumberOfMrpInstances); + return offset; + } while(u8NumberOfMrpInstances > 0) { offset = dissect_a_block(tvb, offset, pinfo, tree, drep); @@ -4476,7 +4481,7 @@ dissect_PDInterfaceMrpDataReal_block(tvbuff_t *tvb, int offset, /* added blockversion 1 */ if (u8BlockVersionHigh != 1 || u8BlockVersionLow > 2) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4529,8 +4534,7 @@ dissect_PDInterfaceMrpDataReal_block(tvbuff_t *tvb, int offset, offset = dissect_dcerpc_uint8(tvb, offset, pinfo, tree, drep, hf_pn_io_mrp_instances, &u8NumberOfMrpInstances); if (u8NumberOfMrpInstances > 0xf) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, - "Number of MrpInstances greater 0x0f is (0x%x)", u8NumberOfMrpInstances); + expert_add_info_format_text(pinfo, item, &ei_pn_io_mrp_instances, "Number of MrpInstances greater 0x0f is (0x%x)", u8NumberOfMrpInstances); return offset; } while(u8NumberOfMrpInstances > 0) @@ -4553,7 +4557,7 @@ dissect_PDInterfaceMrpDataCheck_block(tvbuff_t *tvb, int offset, /* BlockVersionLow == 1 added */ if (u8BlockVersionHigh != 1 || u8BlockVersionLow > 1) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4586,8 +4590,7 @@ dissect_PDInterfaceMrpDataCheck_block(tvbuff_t *tvb, int offset, offset = dissect_dcerpc_uint8(tvb, offset, pinfo, tree, drep, hf_pn_io_mrp_instances, &u8NumberOfMrpInstances); if (u8NumberOfMrpInstances > 0xf) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, - "Number of MrpInstances greater 0x0f is (0x%x)", u8NumberOfMrpInstances); + expert_add_info_format_text(pinfo, item, &ei_pn_io_mrp_instances, "Number of MrpInstances greater 0x0f is (0x%x)", u8NumberOfMrpInstances); return offset; } while(u8NumberOfMrpInstances > 0) @@ -4610,7 +4613,7 @@ dissect_PDPortMrpData_block(tvbuff_t *tvb, int offset, /* added BlockVersionLow == 1 */ if (u8BlockVersionHigh != 1 || u8BlockVersionLow > 1) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4645,7 +4648,7 @@ dissect_MrpManagerParams_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4710,7 +4713,7 @@ dissect_MrpRTModeManagerData_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4739,7 +4742,7 @@ dissect_MrpRingStateData_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4760,7 +4763,7 @@ dissect_MrpRTStateData_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4783,7 +4786,7 @@ dissect_MrpClientParams_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4809,7 +4812,7 @@ dissect_MrpRTModeClientData_block(tvbuff_t *tvb, int offset, offset = dissect_pn_align4(tvb, offset, pinfo, tree); if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4831,7 +4834,7 @@ dissect_CheckSyncDifference_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4864,7 +4867,7 @@ dissect_CheckMAUTypeDifference_block(tvbuff_t *tvb, int offset, guint16 u16MAUTypeMode; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4891,7 +4894,7 @@ dissect_AdjustDomainBoundary_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || (u8BlockVersionLow != 0 && u8BlockVersionLow != 1)) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4932,7 +4935,7 @@ dissect_AdjustDomainBoundary_block(tvbuff_t *tvb, int offset, break; default: - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4951,7 +4954,7 @@ dissect_AdjustMulticastBoundary_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -4982,7 +4985,7 @@ dissect_AdjustMAUType_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5013,7 +5016,7 @@ dissect_CheckMAUType_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5038,7 +5041,7 @@ dissect_CheckLineDelay_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5069,7 +5072,7 @@ dissect_CheckPeers_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5117,7 +5120,7 @@ dissect_AdjustPortState_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5148,7 +5151,7 @@ dissect_CheckPortState_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5177,7 +5180,7 @@ dissect_PDPortFODataReal_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5214,7 +5217,7 @@ dissect_FiberOpticManufacturerSpecific_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5246,7 +5249,7 @@ dissect_PDPortFODataAdjust_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5279,7 +5282,7 @@ dissect_PDPortFODataCheck_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5319,7 +5322,7 @@ dissect_MrpInstanceDataAdjust_block(tvbuff_t *tvb, int offset, int endoffset = offset + u16BodyLength; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5368,7 +5371,7 @@ dissect_MrpInstanceDataReal_block(tvbuff_t *tvb, int offset, int endoffset = offset + u16BodyLength; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5413,7 +5416,7 @@ dissect_MrpInstanceDataCheck_block(tvbuff_t *tvb, int offset, e_uuid_t uuid; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5450,7 +5453,7 @@ dissect_PDInterfaceAdjust_block(tvbuff_t *tvb, int offset, guint32 u32SMultipleInterfaceMode; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5474,7 +5477,7 @@ dissect_PDPortStatistic_block(tvbuff_t *tvb, int offset, guint32 u32StatValue; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5512,7 +5515,7 @@ dissect_PDInterfaceDataReal_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5578,7 +5581,7 @@ dissect_PDSyncData_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5683,7 +5686,7 @@ dissect_PDSyncData_block(tvbuff_t *tvb, int offset, u32PLLWindow, u32SyncSendFactor, u16SendClockFactor); break; default: - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); } @@ -5704,7 +5707,7 @@ dissect_PDIRData_block(tvbuff_t *tvb, int offset, /* versions decoded are High: 1 and LOW 0..2 */ if (u8BlockVersionHigh != 1 || (u8BlockVersionLow > 2 ) ) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5757,7 +5760,7 @@ dissect_PDIRGlobalData_block(tvbuff_t *tvb, int offset, /* added blockversion 2 */ if (u8BlockVersionHigh != 1 || (u8BlockVersionLow > 2)) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5826,7 +5829,7 @@ dissect_PDIRFrameData_block(tvbuff_t *tvb, int offset, /* added low version 1 */ if (u8BlockVersionHigh != 1 || u8BlockVersionLow > 1) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -5961,7 +5964,7 @@ dissect_PDIRBeginEndData_block(tvbuff_t *tvb, int offset, guint32 u32PortIndex; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6107,7 +6110,7 @@ dissect_DiagnosisData_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || (u8BlockVersionLow != 0 && u8BlockVersionLow != 1)) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6256,7 +6259,7 @@ dissect_ARData_block(tvbuff_t *tvb, int offset, /* added BlockversionLow == 1 */ if (u8BlockVersionHigh != 1 || u8BlockVersionLow > 1) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6527,7 +6530,7 @@ dissect_APIData_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6552,7 +6555,7 @@ dissect_SRLData_block(tvbuff_t *tvb, int offset, guint16 RedundancyInfo; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6577,7 +6580,7 @@ dissect_LogData_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6619,7 +6622,7 @@ dissect_FSHello_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6657,7 +6660,7 @@ dissect_FSParameter_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6690,7 +6693,7 @@ dissect_PDInterfaceFSUDataAdjust_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6719,7 +6722,7 @@ dissect_ARFSUDataAdjust_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6779,7 +6782,7 @@ dissect_ARBlockReq_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6860,7 +6863,7 @@ dissect_ARBlockRes_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -6884,7 +6887,7 @@ dissect_ARBlockRes_block(tvbuff_t *tvb, int offset, par = pnio_ar_find_by_aruuid(pinfo, &uuid); if (par == NULL) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_NOTE, "ARBlockRes: AR information not found!"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "ARBlockRes: AR information not found!"); } else { memcpy( (void *) (&par->devicemac), mac, sizeof(par->controllermac)); } @@ -6932,7 +6935,7 @@ dissect_IOCRBlockReq_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7046,8 +7049,7 @@ dissect_IOCRBlockReq_block(tvbuff_t *tvb, int offset, switch (u16IOCRType) { case(1): /* Input CR */ if (ar->inputframeid != 0 && ar->inputframeid != u16FrameID) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "IOCRBlockReq: input frameID changed from %u to %u!", - ar->inputframeid, u16FrameID); + expert_add_info_format_text(pinfo, item, &ei_pn_io_frame_id, "IOCRBlockReq: input frameID changed from %u to %u!", ar->inputframeid, u16FrameID); } ar->inputframeid = u16FrameID; break; @@ -7055,17 +7057,16 @@ dissect_IOCRBlockReq_block(tvbuff_t *tvb, int offset, #if 0 /* will usually contain invalid marker 0xffff here */ if (ar->outputframeid != 0 && ar->outputframeid != u16FrameID) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "IOCRBlockReq: output frameID changed from %u to %u!", - ar->outputframeid, u16FrameID); + expert_add_info_format_text(pinfo, item, &ei_pn_io_frame_id, "IOCRBlockReq: output frameID changed from %u to %u!", ar->outputframeid, u16FrameID); } ar->outputframeid = u16FrameID; #endif break; default: - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "IOCRBlockReq: IOCRType %u undecoded!", u16IOCRType); + expert_add_info_format_text(pinfo, item, &ei_pn_io_iocr_type, "IOCRBlockReq: IOCRType %u undecoded!", u16IOCRType); } } else { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "IOCRBlockReq: no corresponding AR found!"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "IOCRBlockReq: no corresponding AR found!"); } return offset; @@ -7092,7 +7093,7 @@ dissect_AlarmCRBlockReq_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7131,12 +7132,11 @@ dissect_AlarmCRBlockReq_block(tvbuff_t *tvb, int offset, if (ar != NULL) { if (ar->controlleralarmref != 0xffff && ar->controlleralarmref != u16LocalAlarmReference) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "AlarmCRBlockReq: local alarm ref changed from %u to %u!", - ar->controlleralarmref, u16LocalAlarmReference); + expert_add_info_format_text(pinfo, item, &ei_pn_io_localalarmref, "AlarmCRBlockReq: local alarm ref changed from %u to %u!", ar->controlleralarmref, u16LocalAlarmReference); } ar->controlleralarmref = u16LocalAlarmReference; } else { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "AlarmCRBlockReq: no corresponding AR found!"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "AlarmCRBlockReq: no corresponding AR found!"); } return offset; @@ -7155,7 +7155,7 @@ dissect_AlarmCRBlockRes_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7173,12 +7173,11 @@ dissect_AlarmCRBlockRes_block(tvbuff_t *tvb, int offset, if (ar != NULL) { if (ar->devicealarmref != 0xffff && ar->devicealarmref != u16LocalAlarmReference) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "AlarmCRBlockRes: local alarm ref changed from %u to %u!", - ar->devicealarmref, u16LocalAlarmReference); + expert_add_info_format_text(pinfo, item, &ei_pn_io_localalarmref, "AlarmCRBlockRes: local alarm ref changed from %u to %u!", ar->devicealarmref, u16LocalAlarmReference); } ar->devicealarmref = u16LocalAlarmReference; } else { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "AlarmCRBlockRes: no corresponding AR found!"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "AlarmCRBlockRes: no corresponding AR found!"); } return offset; @@ -7192,7 +7191,7 @@ dissect_ARServerBlock(tvbuff_t *tvb, int offset, guint16 u16NameLength, u16padding; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7226,7 +7225,7 @@ dissect_IOCRBlockRes_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7246,23 +7245,21 @@ dissect_IOCRBlockRes_block(tvbuff_t *tvb, int offset, switch (u16IOCRType) { case(1): /* Input CR */ if (ar->inputframeid != 0 && ar->inputframeid != u16FrameID) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "IOCRBlockRes: input frameID changed from %u to %u!", - ar->inputframeid, u16FrameID); + expert_add_info_format_text(pinfo, item, &ei_pn_io_frame_id, "IOCRBlockRes: input frameID changed from %u to %u!", ar->inputframeid, u16FrameID); } ar->inputframeid = u16FrameID; break; case(2): /* Output CR */ if (ar->outputframeid != 0 && ar->outputframeid != u16FrameID) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "IOCRBlockRes: output frameID changed from %u to %u!", - ar->outputframeid, u16FrameID); + expert_add_info_format_text(pinfo, item, &ei_pn_io_frame_id, "IOCRBlockRes: output frameID changed from %u to %u!", ar->outputframeid, u16FrameID); } ar->outputframeid = u16FrameID; break; default: - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "IOCRBlockRes: IOCRType %u undecoded!", u16IOCRType); + expert_add_info_format_text(pinfo, item, &ei_pn_io_iocr_type, "IOCRBlockRes: IOCRType %u undecoded!", u16IOCRType); } } else { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "IOCRBlockRes: no corresponding AR found!"); + expert_add_info_format_text(pinfo, item, &ei_pn_io_ar_info_not_found, "IOCRBlockRes: no corresponding AR found!"); } return offset; @@ -7283,7 +7280,7 @@ dissect_MCRBlockReq_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7327,7 +7324,7 @@ dissect_SubFrameBlock_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7382,7 +7379,7 @@ dissect_PDSubFrameBlock_block(tvbuff_t *tvb, int offset, proto_tree *sub_tree; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7448,7 +7445,7 @@ dissect_IRInfoBlock_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7486,7 +7483,7 @@ dissect_SRInfoBlock_block(tvbuff_t *tvb, int offset, guint32 u32sr_properties; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7509,7 +7506,7 @@ dissect_PDIRSubframeData_block(tvbuff_t *tvb, int offset, guint16 u16NumberOfSubframeBlocks; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7533,7 +7530,7 @@ dissect_ARVendorBlockReq_block(tvbuff_t *tvb, int offset, guint32 guDataBytes; if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7646,7 +7643,7 @@ dissect_ExpectedSubmoduleBlockReq_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7766,7 +7763,7 @@ dissect_ModuleDiffBlock_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7887,7 +7884,7 @@ dissect_IsochronousModeData_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7938,7 +7935,7 @@ dissect_MultipleBlockHeader_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -7998,7 +7995,7 @@ dissect_RecordDataReadQuery_block(tvbuff_t *tvb, int offset, if (u8BlockVersionHigh != 1 || u8BlockVersionLow != 0) { - expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, + expert_add_info_format_text(pinfo, item, &ei_pn_io_block_version, "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } @@ -12070,9 +12067,25 @@ proto_register_pn_io (void) &ett_pn_io_GroupProperties }; + static ei_register_info ei[] = { + { &ei_pn_io_block_version, { "pn_io.block_version.not_implemented", PI_UNDECODED, PI_WARN, "Block version not implemented yet!", EXPFILL }}, + { &ei_pn_io_error_code1, { "pn_io.error_code1.expert", PI_UNDECODED, PI_WARN, "Unknown ErrorCode1", EXPFILL }}, + { &ei_pn_io_error_code2, { "pn_io.error_code2.expert", PI_UNDECODED, PI_WARN, "Unknown ErrorDecode", EXPFILL }}, + { &ei_pn_io_ar_info_not_found, { "pn_io.ar_info_not_found", PI_UNDECODED, PI_NOTE, "IODWriteReq: AR information not found!", EXPFILL }}, + { &ei_pn_io_block_length, { "pn_io.block_length.invalid", PI_UNDECODED, PI_WARN, "Block length invalid!", EXPFILL }}, + { &ei_pn_io_mrp_instances, { "pn_io.mrp_Number_MrpInstances.invalid", PI_UNDECODED, PI_WARN, "Number of MrpInstances invalid", EXPFILL }}, + { &ei_pn_io_frame_id, { "pn_io.frame_id.changed", PI_UNDECODED, PI_WARN, "FrameID changed", EXPFILL }}, + { &ei_pn_io_iocr_type, { "pn_io.iocr_type.unknown", PI_UNDECODED, PI_WARN, "IOCRType undecoded!", EXPFILL }}, + { &ei_pn_io_localalarmref, { "pn_io.localalarmref.changed", PI_UNDECODED, PI_WARN, "AlarmCRBlockReq: local alarm ref changed", EXPFILL }}, + }; + + expert_module_t* expert_pn_io; + proto_pn_io = proto_register_protocol ("PROFINET IO", "PNIO", "pn_io"); proto_register_field_array (proto_pn_io, hf, array_length (hf)); proto_register_subtree_array (ett, array_length (ett)); + expert_pn_io = expert_register_protocol(proto_pn_io); + expert_register_field_array(expert_pn_io, ei, array_length(ei)); /* subdissector code */ new_register_dissector("pn_io", dissect_PNIO_heur, proto_pn_io); diff --git a/plugins/profinet/packet-dcom-cba-acco.c b/plugins/profinet/packet-dcom-cba-acco.c index 0cb2451a5c..8ca481d722 100644 --- a/plugins/profinet/packet-dcom-cba-acco.c +++ b/plugins/profinet/packet-dcom-cba-acco.c @@ -144,6 +144,15 @@ gint ett_cba_acco_serversrt_cr_flags = -1; gint ett_cba_frame_info = -1; gint ett_cba_conn_info = -1; +static expert_field ei_cba_acco_pdev_find = EI_INIT; +static expert_field ei_cba_acco_prov_crid = EI_INIT; +static expert_field ei_cba_acco_conn_consumer = EI_INIT; +static expert_field ei_cba_acco_ldev_unknown = EI_INIT; +static expert_field ei_cba_acco_no_request_info = EI_INIT; +static expert_field ei_cba_acco_ipid_unknown = EI_INIT; +static expert_field ei_cba_acco_qc = EI_INIT; +static expert_field ei_cba_acco_pdev_find_unknown_interface = EI_INIT; + static int proto_ICBAAccoMgt = -1; static gint ett_ICBAAccoMgt = -1; static e_uuid_t uuid_ICBAAccoMgt = { 0xcba00041, 0x6c97, 0x11d1, { 0x82, 0x71, 0x00, 0xa0, 0x24, 0x42, 0xdf, 0x7d } }; @@ -415,11 +424,11 @@ cba_pdev_find(packet_info *pinfo, const guint8 *ip, e_uuid_t *ipid) if (interf != NULL) { pdev = (cba_pdev_t *)interf->parent->private_data; if (pdev == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, "pdev_find: no pdev for IP:%s IPID:%s", + expert_add_info_format_text(pinfo, NULL, &ei_cba_acco_pdev_find, "pdev_find: no pdev for IP:%s IPID:%s", ip_to_str(ip), guids_resolve_uuid_to_str(ipid)); } } else { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, "pdev_find: unknown interface of IP:%s IPID:%s", + expert_add_info_format_text(pinfo, NULL, &ei_cba_acco_pdev_find_unknown_interface, "pdev_find: unknown interface of IP:%s IPID:%s", ip_to_str(ip), guids_resolve_uuid_to_str(ipid)); pdev = NULL; } @@ -543,11 +552,11 @@ cba_ldev_find(packet_info *pinfo, const void *ip, e_uuid_t *ipid) { ldev = (cba_ldev_t *)interf->parent->private_data; } if (ldev == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, "Unknown LDev of %s", + expert_add_info_format_text(pinfo, NULL, &ei_cba_acco_ldev_unknown, "Unknown LDev of %s", ip_to_str((const guint8 *)ip)); } } else { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, "Unknown IPID of %s", + expert_add_info_format_text(pinfo, NULL, &ei_cba_acco_ipid_unknown, "Unknown IPID of %s", ip_to_str((const guint8 *)ip)); ldev = NULL; } @@ -814,8 +823,7 @@ cba_frame_find_by_provcrid(packet_info *pinfo, cba_ldev_t *prov_ldev, guint32 pr } } - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, - "Unknown provider frame ProvCRID"); + expert_add_info(pinfo, NULL, &ei_cba_acco_prov_crid); return NULL; } @@ -1262,7 +1270,7 @@ dissect_ICBAAccoServer_Connect_rqst(tvbuff_t *tvb, int offset, offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, drep, 0, &cons_interf); if (cons_interf == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, + expert_add_info_format_text(pinfo, NULL, &ei_cba_acco_conn_consumer, "Server_Connect: consumer interface invalid"); } @@ -1418,7 +1426,7 @@ dissect_ICBAAccoServer2_Connect2_rqst(tvbuff_t *tvb, int offset, if (u32Pointer) { offset = dissect_dcom_MInterfacePointer(tvb, offset, pinfo, tree, drep, 0, &cons_interf); if (cons_interf == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, + expert_add_info_format_text(pinfo, NULL, &ei_cba_acco_conn_consumer, "Server2_Connect2: consumer interface invalid"); } } else { @@ -1572,8 +1580,7 @@ dissect_ICBAAccoServer_Connect_resp(tvbuff_t *tvb, int offset, offset = dissect_dcom_that(tvb, offset, pinfo, tree, drep); if (call == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, - "No request info, response data ignored"); + expert_add_info(pinfo, NULL, &ei_cba_acco_no_request_info); } item = proto_tree_add_boolean (tree, hf_cba_acco_dcom_call, tvb, offset, 0, FALSE); @@ -1726,8 +1733,7 @@ dissect_ICBAAccoServer_Disconnect_resp(tvbuff_t *tvb, int offset, offset = dissect_dcom_that(tvb, offset, pinfo, tree, drep); if (call == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, - "No request info, response data ignored"); + expert_add_info(pinfo, NULL, &ei_cba_acco_no_request_info); } item = proto_tree_add_boolean (tree, hf_cba_acco_dcom_call, tvb, offset, 0, FALSE); @@ -2134,7 +2140,7 @@ dissect_ICBAAccoServerSRT_ConnectCR_rqst(tvbuff_t *tvb, int offset, offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, drep, 0, &cons_interf); if (cons_interf == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, + expert_add_info_format_text(pinfo, NULL, &ei_cba_acco_conn_consumer, "ServerSRT_ConnectCR: consumer interface invalid"); } @@ -2249,8 +2255,7 @@ dissect_ICBAAccoServerSRT_ConnectCR_resp(tvbuff_t *tvb, int offset, offset = dissect_dcom_that(tvb, offset, pinfo, tree, drep); if (call == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, - "No request info, response data ignored"); + expert_add_info(pinfo, NULL, &ei_cba_acco_no_request_info); } item = proto_tree_add_boolean (tree, hf_cba_acco_srt_call, tvb, offset, 0, FALSE); @@ -2642,8 +2647,7 @@ dissect_ICBAAccoServerSRT_Connect_resp(tvbuff_t *tvb, int offset, offset = dissect_dcom_that(tvb, offset, pinfo, tree, drep); if (call == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, - "No request info, response data ignored"); + expert_add_info(pinfo, NULL, &ei_cba_acco_no_request_info); } item = proto_tree_add_boolean (tree, hf_cba_acco_srt_call, tvb, offset, 0, FALSE); @@ -3067,7 +3071,7 @@ dissect_CBA_Connection_Data(tvbuff_t *tvb, if ( u8QC != 0x80 && /* GoodNonCascOk */ u8QC != 0x1C && /* BadOutOfService (usually permanent, so don't report for every frame) */ qc_reported == 0) { - expert_add_info_format(pinfo, item, PI_RESPONSE_CODE, PI_CHAT, "%s QC: %s", + expert_add_info_format_text(pinfo, item, &ei_cba_acco_qc, "%s QC: %s", u8Version == CBA_MRSH_VERSION_DCOM ? "DCOM" : "SRT", val_to_str(u8QC, cba_acco_qc_vals, "Unknown (0x%02x)")); qc_reported = 0; @@ -3348,8 +3352,7 @@ dissect_ICBAAccoServer2_GetConnectionData_resp(tvbuff_t *tvb, int offset, offset = dissect_dcom_that(tvb, offset, pinfo, tree, drep); if (cons_ldev == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_NOTE, - "No request info, response data ignored"); + expert_add_info(pinfo, NULL, &ei_cba_acco_no_request_info); } item = proto_tree_add_boolean (tree, hf_cba_acco_dcom_call, tvb, offset, 0, FALSE); @@ -5011,6 +5014,19 @@ proto_register_dcom_cba_acco (void) }, }; + static ei_register_info ei[] = { + { &ei_cba_acco_pdev_find, { "cba.acco.pdev_find.fail", PI_UNDECODED, PI_NOTE, "pdev_find: no pdev for IP", EXPFILL }}, + { &ei_cba_acco_pdev_find_unknown_interface, { "cba.acco.pdev_find.unknown_interface", PI_UNDECODED, PI_NOTE, "pdev_find: unknown interface", EXPFILL }}, + { &ei_cba_acco_ldev_unknown, { "cba.acco.ldev.unknown", PI_UNDECODED, PI_NOTE, "Unknown LDev", EXPFILL }}, + { &ei_cba_acco_ipid_unknown, { "cba.acco.ipid.unknown", PI_UNDECODED, PI_NOTE, "Unknown IPID", EXPFILL }}, + { &ei_cba_acco_prov_crid, { "cba.acco.prov_crid.unknown", PI_UNDECODED, PI_NOTE, "Unknown provider frame ProvCRID", EXPFILL }}, + { &ei_cba_acco_conn_consumer, { "cba.acco.conn_consumer.invalid", PI_UNDECODED, PI_NOTE, "Consumer interface invalid", EXPFILL }}, + { &ei_cba_acco_no_request_info, { "cba.acco.no_request_info", PI_UNDECODED, PI_NOTE, "No request info, response data ignored", EXPFILL }}, + { &ei_cba_acco_qc, { "cba.acco.qc.expert", PI_RESPONSE_CODE, PI_CHAT, "expert QC", EXPFILL }}, + }; + + expert_module_t* expert_cba_acco; + ett5[0] = &ett_ICBAAccoMgt; ett5[1] = &ett_cba_addconnectionin; ett5[2] = &ett_cba_addconnectionout; @@ -5022,6 +5038,10 @@ proto_register_dcom_cba_acco (void) proto_register_field_array(proto_ICBAAccoMgt, hf_cba_connectcr_array, array_length(hf_cba_connectcr_array)); proto_register_subtree_array (ett5, array_length (ett5)); + /* XXX - just pick a protocol to register the expert info in */ + expert_cba_acco = expert_register_protocol(proto_ICBAAccoMgt); + expert_register_field_array(expert_cba_acco, ei, array_length(ei)); + proto_ICBAAccoMgt2 = proto_register_protocol ("ICBAAccoMgt2", "ICBAAccoMgt2", "cba_acco_mgt2"); ett3[0] = &ett_ICBAAccoCallback; diff --git a/plugins/profinet/packet-dcom-cba.c b/plugins/profinet/packet-dcom-cba.c index b44caed1fe..4d271acbbc 100644 --- a/plugins/profinet/packet-dcom-cba.c +++ b/plugins/profinet/packet-dcom-cba.c @@ -79,6 +79,8 @@ static int hf_cba_pbaddress_address = -1; static int hf_cba_save_ldev_name = -1; static int hf_cba_save_result = -1; +static expert_field ei_cba_acco_interface_pointer_unresolved = EI_INIT; + static e_uuid_t uuid_coclass_CBAPhysicalDevice = { 0xcba00000, 0x6c97, 0x11d1, { 0x82, 0x71, 0x00, 0xa0, 0x24, 0x42, 0xdf, 0x7d } }; @@ -786,8 +788,7 @@ dissect_ICBALogicalDevice_get_ACCO_resp(tvbuff_t *tvb, int offset, offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, drep, 0, &acco_interf); if (acco_interf == NULL) { - expert_add_info_format(pinfo, NULL, PI_UNDECODED, PI_WARN, - "LDev_get_ACCO: can't resolve ACCO interface pointer"); + expert_add_info(pinfo, NULL, &ei_cba_acco_interface_pointer_unresolved); } ldev = cba_ldev_find(pinfo, pinfo->net_src.data, &info->call_data->object_uuid); @@ -1582,11 +1583,21 @@ proto_register_dcom_cba (void) &ett_PBAddress }; + static ei_register_info ei[] = { + { &ei_cba_acco_interface_pointer_unresolved, { "cba.acco.interface_pointer_unresolved", PI_UNDECODED, PI_WARN, "LDev_get_ACCO: can't resolve ACCO interface pointer", EXPFILL }}, + }; + + expert_module_t* expert_cba_acco; + proto_register_subtree_array (ett_cba, array_length (ett_cba)); proto_ICBAPhysicalDevice = proto_register_protocol ("ICBAPhysicalDevice", "ICBAPDev", "cba_pdev"); proto_register_field_array(proto_ICBAPhysicalDevice, hf_cba_pdev_array, array_length(hf_cba_pdev_array)); + /* XXX - just pick a protocol to register the expert info in */ + expert_cba_acco = expert_register_protocol(proto_ICBAPhysicalDevice); + expert_register_field_array(expert_cba_acco, ei, array_length(ei)); + proto_ICBAPhysicalDevice2 = proto_register_protocol ("ICBAPhysicalDevice2", "ICBAPDev2", "cba_pdev2"); proto_ICBABrowse = proto_register_protocol ("ICBABrowse", "ICBABrowse", "cba_browse"); -- cgit v1.2.3