forked from osmocom/wireshark
convert to proto_tree_add_subtree[_format]
Change-Id: I5f573dffabb8685a8e5a334ff2bfb24d9838daa6 Reviewed-on: https://code.wireshark.org/review/2601 Tested-by: Michael Mann <mmann78@netscape.net> Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
parent
83da877fff
commit
29ecd114bf
|
@ -232,7 +232,7 @@ dissect_canopen(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
|
|||
tvb_bytes_to_ep_str_punct(tvb, offset, can_data_len, ' '));
|
||||
|
||||
if (tree) {
|
||||
proto_item *ti, *cob_ti, *type_ti;
|
||||
proto_item *ti, *cob_ti;
|
||||
proto_tree *canopen_tree;
|
||||
proto_tree *canopen_cob_tree;
|
||||
proto_tree *canopen_type_tree;
|
||||
|
@ -254,11 +254,9 @@ dissect_canopen(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
|
|||
|
||||
/* add CANopen frame type */
|
||||
|
||||
type_ti = proto_tree_add_text(canopen_tree, tvb, 0,
|
||||
canopen_type_tree = proto_tree_add_subtree_format(canopen_tree, tvb, 0,
|
||||
(msg_type_id != MT_SYNC) ? -1 : 0,
|
||||
"Type: %s", function_code_str);
|
||||
canopen_type_tree = proto_item_add_subtree(type_ti, ett_canopen);
|
||||
|
||||
ett_canopen, NULL, "Type: %s", function_code_str);
|
||||
switch(msg_type_id)
|
||||
{
|
||||
case MT_NMT_CTRL:
|
||||
|
|
|
@ -416,7 +416,6 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
/* Set up structures we will need to add the protocol subtree and manage it */
|
||||
proto_item *ti;
|
||||
proto_tree *cast_tree = NULL;
|
||||
proto_item *ti_sub;
|
||||
proto_tree *cast_sub_tree;
|
||||
proto_tree *cast_sub_tree_sav;
|
||||
proto_tree *cast_sub_tree_sav_sav;
|
||||
|
@ -467,8 +466,7 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
count = offset+28;
|
||||
/* total of 120 bytes */
|
||||
for ( i = 0; i < MAX_CUSTOM_PICTURES; i++ ) {
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 20, "customPictureFormat[%d]", i);
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree_format(cast_tree, tvb, offset, 20, ett_cast_tree, NULL, "customPictureFormat[%d]", i);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_pictureWidth, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count+= 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_pictureHeight, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
@ -480,8 +478,7 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
proto_tree_add_item(cast_sub_tree, hf_cast_clockDivisor, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count+= 4;
|
||||
}
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 8, "confResources");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 8, ett_cast_tree, NULL, "confResources");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_activeStreamsOnRegistration, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count+= 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_maxBW, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
@ -491,14 +488,12 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
cast_sub_tree_sav = cast_sub_tree;
|
||||
/* total of 160 bytes */
|
||||
for ( i = 0; i < MAX_SERVICE_TYPE; i++ ) {
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 20, "serviceResource[%d]", i);
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree_format(cast_sub_tree_sav, tvb, offset, 20, ett_cast_tree, NULL, "serviceResource[%d]", i);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_layoutCount, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count+= 4;
|
||||
cast_sub_tree_sav_sav = cast_sub_tree_sav;
|
||||
for ( t = 0; t < MAX_LAYOUT_WITH_SAME_SERVICE; t++ ) {
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 20, "layouts[%d]", t);
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree_format(cast_sub_tree_sav, tvb, offset, 20, ett_cast_tree, NULL, "layouts[%d]", t);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_layout, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count+= 4;
|
||||
}
|
||||
|
@ -514,8 +509,7 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
}
|
||||
/* total of 176 bytes */
|
||||
for ( i = 0; i < StationMaxVideoCapabilities; i++ ) {
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 20, "vidCaps[%d]", i);
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree_format(cast_tree, tvb, offset, 20, ett_cast_tree, NULL, "vidCaps[%d]", i);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_payloadCapability, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count+= 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_transmitOrReceive, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
@ -524,8 +518,7 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
count+= 4;
|
||||
cast_sub_tree_sav = cast_sub_tree;
|
||||
for ( t = 0; t < MAX_LEVEL_PREFERENCE; t++ ) {
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 20, "levelPreference[%d]", t);
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree_format(cast_sub_tree_sav, tvb, offset, 20, ett_cast_tree, NULL, "levelPreference[%d]", t);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_transmitPreference, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count+= 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_format, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
@ -541,20 +534,17 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
}
|
||||
|
||||
/* H.261 */
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8, "h261VideoCapability");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_sub_tree_sav, tvb, offset, 8, ett_cast_tree, NULL, "h261VideoCapability");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_stillImageTransmission, tvb, count+4, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* H.263 */
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8, "h263VideoCapability");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_sub_tree_sav, tvb, offset, 8, ett_cast_tree, NULL, "h263VideoCapability");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_annexNandWFutureUse, tvb, count+4, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* Vieo */
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_sub_tree_sav, tvb, offset, 8, ett_cast_tree, NULL, "vieoVideoCapability");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count+= 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
@ -562,8 +552,7 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
}
|
||||
/* total 80 bytes */
|
||||
for ( i = 0; i < StationMaxDataCapabilities; i++ ) {
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 20, "dataCaps[%d]", i);
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree_format(cast_tree, tvb, offset, 20, ett_cast_tree, NULL, "dataCaps[%d]", i);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_payloadCapability, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count+= 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_transmitOrReceive, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
@ -589,22 +578,19 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
proto_tree_add_item(cast_tree, hf_cast_isConferenceCreator, tvb, offset+40, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* add audio part of union */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 12, "audioParameters");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 12, ett_cast_tree, NULL, "audioParameters");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_millisecondPacketSize, tvb, offset+44, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_echoCancelType, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_g723BitRate, tvb, offset+52, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* add video part of union */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 30, "videoParameters");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 30, ett_cast_tree, NULL, "videoParameters");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_bitRate, tvb, offset+44, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_pictureFormatCount, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
|
||||
cast_sub_tree_sav = cast_sub_tree;
|
||||
count = offset+52;
|
||||
for ( i = 0; i < MAX_PICTURE_FORMAT; i++ ) {
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, "pictureFormat[%d]", i);
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree_format(cast_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, ett_cast_tree, NULL, "pictureFormat[%d]", i);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_format, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count += 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_MPI, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
@ -615,27 +601,23 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
count += 4;
|
||||
|
||||
/* add H261 part of union */
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8, "h261VideoCapability");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_sub_tree_sav, tvb, offset, 8, ett_cast_tree, NULL, "h261VideoCapability");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_stillImageTransmission, tvb, count+4, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* add H263 part of union */
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8, "h263VideoCapability");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_sub_tree_sav, tvb, offset, 8, ett_cast_tree, NULL, "h263VideoCapability");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_annexNandWFutureUse, tvb, count+4, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* add Vieo part of union */
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_sub_tree_sav, tvb, offset, 8, ett_cast_tree, NULL, "vieoVideoCapability");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count += 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* add data part of union */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 8, "dataParameters");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 8, ett_cast_tree, NULL, "dataParameters");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_protocolDependentData, tvb, offset+44, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_maxBitRate, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
|
||||
break;
|
||||
|
@ -666,15 +648,14 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
proto_tree_add_item(cast_tree, hf_cast_DSCPValue, tvb, offset+44, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* add video part of union */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 30, "videoParameters");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 30, ett_cast_tree, NULL, "videoParameters");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_bitRate, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_pictureFormatCount, tvb, offset+52, 4, ENC_LITTLE_ENDIAN);
|
||||
cast_sub_tree_sav = cast_sub_tree;
|
||||
count = offset+56;
|
||||
for ( i = 0; i < MAX_PICTURE_FORMAT; i++ ) {
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, "pictureFormat[%d]", i);
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree_format(cast_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT,
|
||||
ett_cast_tree, NULL, "pictureFormat[%d]", i);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_format, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count += 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_MPI, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
@ -686,31 +667,27 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
|
||||
val = count;
|
||||
/* add H261 part of union */
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8, "h261VideoCapability");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_sub_tree_sav, tvb, offset, 8, ett_cast_tree, NULL, "h261VideoCapability");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_temporalSpatialTradeOffCapability, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count += 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_stillImageTransmission, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* add H263 part of union */
|
||||
count = val;
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8, "h263VideoCapability");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_sub_tree_sav, tvb, offset, 8, ett_cast_tree, NULL, "h263VideoCapability");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_h263_capability_bitfield, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count += 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_annexNandWFutureUse, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* add Vieo part of union */
|
||||
count = val;
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_sub_tree_sav, tvb, offset, 8, ett_cast_tree, NULL, "vieoVideoCapability");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_modelNumber, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
count += 4;
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_bandwidth, tvb, count, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* add data part of union */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 8, "dataParameters");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 8, ett_cast_tree, NULL, "dataParameters");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_protocolDependentData, tvb, offset+48, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_maxBitRate, tvb, offset+52, 4, ENC_LITTLE_ENDIAN);
|
||||
break;
|
||||
|
@ -734,47 +711,40 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
/* not sure of format */
|
||||
|
||||
/* show videoFastUpdateGOB */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 8, "videoFastUpdateGOB");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 8, ett_cast_tree, NULL, "videoFastUpdateGOB");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_firstGOB, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_numberOfGOBs, tvb, offset+32, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* show videoFastUpdateMB */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 8, "videoFastUpdateGOB");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 8, ett_cast_tree, NULL, "videoFastUpdateGOB");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_firstGOB, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_firstMB, tvb, offset+32, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_numberOfMBs, tvb, offset+36, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* show lostPicture */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 8, "lostPicture");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 8, ett_cast_tree, NULL, "lostPicture");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_pictureNumber, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_longTermPictureIndex, tvb, offset+32, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* show lostPartialPicture */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 8, "lostPartialPicture");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 8, ett_cast_tree, NULL, "lostPartialPicture");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_pictureNumber, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_longTermPictureIndex, tvb, offset+32, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_firstMB, tvb, offset+36, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_numberOfMBs, tvb, offset+40, 4, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* show recoveryReferencePicture */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 8, "recoveryReferencePicture");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 8, ett_cast_tree, NULL, "recoveryReferencePicture");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_recoveryReferencePictureCount, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
|
||||
cast_sub_tree_sav = cast_sub_tree;
|
||||
for ( i = 0; i < MAX_REFERENCE_PICTURE; i++ ) {
|
||||
ti_sub = proto_tree_add_text(cast_sub_tree_sav, tvb, offset, 8, "recoveryReferencePicture[%d]", i);
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree_format(cast_sub_tree_sav, tvb, offset, 8, ett_cast_tree, NULL, "recoveryReferencePicture[%d]", i);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_pictureNumber, tvb, offset+32+(i*8), 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_longTermPictureIndex, tvb, offset+36+(i*8), 4, ENC_LITTLE_ENDIAN);
|
||||
}
|
||||
|
||||
/* show temporalSpatialTradeOff */
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 4, "temporalSpatialTradeOff");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 4, ett_cast_tree, NULL, "temporalSpatialTradeOff");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_temporalSpatialTradeOff, tvb, offset+28, 4, ENC_LITTLE_ENDIAN);
|
||||
break;
|
||||
|
||||
|
@ -847,8 +817,7 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
i += 4;
|
||||
proto_tree_add_item(cast_tree, hf_cast_callSecurityStatus, tvb, i, 4, ENC_LITTLE_ENDIAN);
|
||||
i += 4;
|
||||
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 8, "partyPIRestrictionBits");
|
||||
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
|
||||
cast_sub_tree = proto_tree_add_subtree(cast_tree, tvb, offset, 8, ett_cast_tree, NULL, "partyPIRestrictionBits");
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_CallingPartyName, tvb, i, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_CallingPartyNumber, tvb, i, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_CalledPartyName, tvb, i, 4, ENC_LITTLE_ENDIAN);
|
||||
|
|
|
@ -346,8 +346,8 @@ dissect_ccsds(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
ccsds_tree = proto_item_add_subtree(ccsds_packet, ett_ccsds);
|
||||
|
||||
/* build the ccsds primary header tree */
|
||||
primary_header = proto_tree_add_text(ccsds_tree, tvb, offset, CCSDS_PRIMARY_HEADER_LENGTH, "Primary CCSDS Header");
|
||||
primary_header_tree = proto_item_add_subtree(primary_header, ett_ccsds_primary_header);
|
||||
primary_header_tree = proto_tree_add_subtree(ccsds_tree, tvb, offset, CCSDS_PRIMARY_HEADER_LENGTH,
|
||||
ett_ccsds_primary_header, &primary_header, "Primary CCSDS Header");
|
||||
|
||||
proto_tree_add_uint(primary_header_tree, hf_ccsds_version, tvb, offset, 2, first_word);
|
||||
proto_tree_add_uint(primary_header_tree, hf_ccsds_type, tvb, offset, 2, first_word);
|
||||
|
@ -371,8 +371,8 @@ dissect_ccsds(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
/* build the ccsds secondary header tree */
|
||||
if ( first_word & HDR_SECHDR )
|
||||
{
|
||||
secondary_header = proto_tree_add_text(ccsds_tree, tvb, offset, CCSDS_SECONDARY_HEADER_LENGTH, "Secondary CCSDS Header");
|
||||
secondary_header_tree = proto_item_add_subtree(secondary_header, ett_ccsds_secondary_header);
|
||||
secondary_header_tree = proto_tree_add_subtree(ccsds_tree, tvb, offset, CCSDS_SECONDARY_HEADER_LENGTH,
|
||||
ett_ccsds_secondary_header, &secondary_header, "Secondary CCSDS Header");
|
||||
|
||||
/* command ccsds secondary header flags */
|
||||
coarse_time = tvb_get_ntohl(tvb, offset);
|
||||
|
|
|
@ -320,10 +320,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
length = tvb_get_ntohs(tvb, offset + TLV_LENGTH);
|
||||
if (length < 4) {
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset, 4,
|
||||
"TLV with invalid length %u (< 4)",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb, offset, 4,
|
||||
ett_cdp_tlv, NULL, "TLV with invalid length %u (< 4)",
|
||||
length);
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
}
|
||||
|
@ -341,10 +340,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
tvb_format_stringzpad(tvb, offset + 4, length - 4));
|
||||
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
|
||||
length, "Device ID: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb, offset,
|
||||
length, ett_cdp_tlv, NULL, "Device ID: %s",
|
||||
tvb_format_stringzpad(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_deviceid, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -370,10 +368,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
length - 4));
|
||||
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
|
||||
real_length, "Port ID: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb, offset,
|
||||
real_length, ett_cdp_tlv, NULL, "Port ID: %s",
|
||||
tvb_format_text(tvb, offset + 4, real_length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_portid, tvb, offset + 4, real_length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -384,9 +381,8 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_ADDRESS:
|
||||
/* Addresses */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
|
||||
length, "Addresses");
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb, offset,
|
||||
length, ett_cdp_tlv, NULL, "Addresses");
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
}
|
||||
|
@ -414,9 +410,8 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_CAPABILITIES:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
|
||||
length, "Capabilities");
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb, offset,
|
||||
length, ett_cdp_tlv, NULL, "Capabilities");
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
}
|
||||
|
@ -428,9 +423,8 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_IOS_VERSION:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
|
||||
length, "Software Version");
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb, offset,
|
||||
length, ett_cdp_tlv, NULL, "Software Version");
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
add_multi_line_string_to_tree(tlv_tree, tvb, offset + 4,
|
||||
|
@ -442,10 +436,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_PLATFORM:
|
||||
/* ??? platform */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Platform: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Platform: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -457,10 +450,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
if (length == 8) {
|
||||
/* if length is 8 then this is default gw not prefix */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
|
||||
length, "ODR Default gateway: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb, offset,
|
||||
length, ett_cdp_tlv, NULL, "ODR Default gateway: %s",
|
||||
tvb_ip_to_str(tvb, offset+4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset+4, 4,
|
||||
|
@ -470,14 +462,13 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
offset += 8;
|
||||
} else {
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
|
||||
length, "IP Prefixes: %d",length/5);
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb, offset,
|
||||
length, ett_cdp_tlv, NULL, "IP Prefixes: %d",length/5);
|
||||
|
||||
/* the actual number of prefixes is (length-4)/5
|
||||
but if the variable is not a "float" but "integer"
|
||||
then length/5=(length-4)/5 :) */
|
||||
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
}
|
||||
|
@ -498,10 +489,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_PROTOCOL_HELLO:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset,length, "Protocol Hello: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset,length, ett_cdp_tlv, NULL, "Protocol Hello: %s",
|
||||
val_to_str(tvb_get_ntohs(tvb, offset+7), type_hello_vals, "Unknown (0x%04x)"));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset+4, 3,
|
||||
|
@ -562,10 +552,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_VTP_MGMT_DOMAIN:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "VTP Management Domain: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "VTP Management Domain: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -577,10 +566,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_NATIVE_VLAN:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Native VLAN: %u",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Native VLAN: %u",
|
||||
tvb_get_ntohs(tvb, offset + 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -592,11 +580,10 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_DUPLEX:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Duplex: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Duplex: %s",
|
||||
tvb_get_guint8(tvb, offset + 4) ?
|
||||
"Full" : "Half" );
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -610,7 +597,7 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_VOIP_VLAN_REPLY:
|
||||
if (tree) {
|
||||
if (length >= 7) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset, length,
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb, offset, length, ett_cdp_tlv, NULL,
|
||||
"VoIP VLAN Reply: %u", tvb_get_ntohs(tvb, offset + 5));
|
||||
} else {
|
||||
/*
|
||||
|
@ -620,10 +607,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
* we dissect the 7-byte ones, we report a malformed
|
||||
* frame.
|
||||
*/
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "VoIP VLAN Reply");
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "VoIP VLAN Reply");
|
||||
}
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -640,8 +626,8 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_VOIP_VLAN_QUERY:
|
||||
if (tree) {
|
||||
if (length >= 7) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "VoIP VLAN Query: %u", tvb_get_ntohs(tvb, offset + 5));
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb, offset, length,
|
||||
ett_cdp_tlv, NULL, "VoIP VLAN Query: %u", tvb_get_ntohs(tvb, offset + 5));
|
||||
} else {
|
||||
/*
|
||||
* XXX - what are these? I've seen them in some captures;
|
||||
|
@ -650,10 +636,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
* we dissect the 7-byte ones, we report a malformed
|
||||
* frame.
|
||||
*/
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "VoIP VLAN Query");
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "VoIP VLAN Query");
|
||||
}
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -669,10 +654,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_POWER:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Power Consumption: %u mW",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Power Consumption: %u mW",
|
||||
tvb_get_ntohs(tvb, offset + 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -684,10 +668,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_MTU:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "MTU: %u",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "MTU: %u",
|
||||
tvb_get_ntohl(tvb,offset + 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -699,10 +682,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_TRUST_BITMAP:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Trust Bitmap: 0x%02X",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Trust Bitmap: 0x%02X",
|
||||
tvb_get_guint8(tvb, offset + 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -714,10 +696,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_UNTRUSTED_COS:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Untrusted port CoS: 0x%02X",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Untrusted port CoS: 0x%02X",
|
||||
tvb_get_guint8(tvb, offset + 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -729,10 +710,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_SYSTEM_NAME:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "System Name: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "System Name: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -744,9 +724,8 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_SYSTEM_OID:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "System Object Identifier");
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "System Object Identifier");
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -758,9 +737,8 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_MANAGEMENT_ADDR:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Management Addresses");
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Management Addresses");
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
}
|
||||
|
@ -788,10 +766,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_LOCATION:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Location: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Location: %s",
|
||||
tvb_format_text(tvb, offset + 5, length - 5));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -806,9 +783,8 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_POWER_REQUESTED:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Power Request: ");
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Power Request: ");
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -848,9 +824,8 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_POWER_AVAILABLE:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Power Available: ");
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Power Available: ");
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -882,9 +857,8 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_NRGYZ:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "EnergyWise");
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "EnergyWise");
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_text(tlv_tree, tvb, offset + 4,
|
||||
|
@ -932,9 +906,8 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case TYPE_SPARE_POE:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset, length,
|
||||
"Spare Pair PoE");
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb, offset, length,
|
||||
ett_cdp_tlv, NULL, "Spare Pair PoE");
|
||||
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
|
@ -948,10 +921,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_BSSID:
|
||||
/* BSSID */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "BSSID: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "BSSID: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -962,10 +934,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_SERIAL:
|
||||
/* Serial number */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Serial: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Serial: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -977,16 +948,14 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
/* SSID */
|
||||
if (tree) {
|
||||
if (length == 4) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "SSID: [Empty]");
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
tlv_tree = proto_tree_add_subtree(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "SSID: [Empty]");
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
} else {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "SSID: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "SSID: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -998,10 +967,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_RADIO1_CH:
|
||||
/* Radio1 channel */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Radio 1 channel: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Radio 1 channel: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -1012,10 +980,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_SNMP_PORT:
|
||||
/* SNMP listening UDP port */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "SNMP port: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "SNMP port: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -1026,10 +993,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_MGMT_PORT:
|
||||
/* Web interface TCP port */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Web mgmt port: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Web mgmt port: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -1040,10 +1006,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_SOURCE_MAC:
|
||||
/* Sender MAC address for the AP, bouth wired and wireless */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Source MAC: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Source MAC: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -1054,10 +1019,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_RADIO2_CH:
|
||||
/* Radio2 channel */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Radio 2 channel: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Radio 2 channel: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -1068,10 +1032,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_RADIO1_OMODE:
|
||||
/* Radio1 Operating mode */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Radio 1 operating mode: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Radio 1 operating mode: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -1082,10 +1045,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_RADIO2_OMODE:
|
||||
/* Radio2 Operating mode */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Radio 2 operating mode: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Radio 2 operating mode: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -1096,10 +1058,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_RADIO1_RMODE:
|
||||
/* Radio1 Radio mode */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Radio 1 radio mode: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Radio 1 radio mode: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -1110,10 +1071,9 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case TYPE_HP_RADIO2_RMODE:
|
||||
/* Radio2 Radio mode */
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb,
|
||||
offset, length, "Radio 2 radio mode: %s",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb,
|
||||
offset, length, ett_cdp_tlv, NULL, "Radio 2 radio mode: %s",
|
||||
tvb_format_text(tvb, offset + 4, length - 4));
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_platform, tvb, offset + 4, length - 4, ENC_ASCII|ENC_NA);
|
||||
|
@ -1123,11 +1083,10 @@ dissect_cdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
default:
|
||||
if (tree) {
|
||||
tlvi = proto_tree_add_text(cdp_tree, tvb, offset,
|
||||
length, "Type: %s, length: %u",
|
||||
tlv_tree = proto_tree_add_subtree_format(cdp_tree, tvb, offset,
|
||||
length, ett_cdp_tlv, NULL, "Type: %s, length: %u",
|
||||
val_to_str(type, type_vals, "Unknown (0x%04x)"),
|
||||
length);
|
||||
tlv_tree = proto_item_add_subtree(tlvi, ett_cdp_tlv);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvtype, tvb, offset + TLV_TYPE, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tlv_tree, hf_cdp_tlvlength, tvb, offset + TLV_LENGTH, 2, ENC_BIG_ENDIAN);
|
||||
if (length > 4) {
|
||||
|
@ -1167,8 +1126,7 @@ dissect_address_tlv(tvbuff_t *tvb, int offset, int length, proto_tree *tree)
|
|||
|
||||
if (length < 1)
|
||||
return -1;
|
||||
ti = proto_tree_add_text(tree, tvb, offset, length, "Truncated address");
|
||||
address_tree = proto_item_add_subtree(ti, ett_cdp_address);
|
||||
address_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_cdp_address, &ti, "Truncated address");
|
||||
protocol_type = tvb_get_guint8(tvb, offset);
|
||||
proto_tree_add_text(address_tree, tvb, offset, 1, "Protocol type: %s",
|
||||
val_to_str(protocol_type, proto_type_vals, "Unknown (0x%02x)"));
|
||||
|
@ -1299,25 +1257,24 @@ dissect_nrgyz_tlv(tvbuff_t *tvb, int offset, guint16 length, guint16 num,
|
|||
case TYPE_NRGYZ_ROLE:
|
||||
case TYPE_NRGYZ_DOMAIN:
|
||||
case TYPE_NRGYZ_NAME:
|
||||
it = proto_tree_add_text(tree, tvb, offset,
|
||||
tlvl, "EnergyWise %s: %s", ttext,
|
||||
etree = proto_tree_add_subtree_format(tree, tvb, offset,
|
||||
tlvl, ett_cdp_nrgyz_tlv, NULL, "EnergyWise %s: %s", ttext,
|
||||
tvb_format_stringzpad(tvb, offset + 8, tlvl - 8)
|
||||
);
|
||||
break;
|
||||
case TYPE_NRGYZ_REPLYTO:
|
||||
ip_addr = tvb_get_ipv4(tvb, offset + 12);
|
||||
it = proto_tree_add_text(tree, tvb, offset,
|
||||
tlvl, "EnergyWise %s: %s port %u",
|
||||
etree = proto_tree_add_subtree_format(tree, tvb, offset,
|
||||
tlvl, ett_cdp_nrgyz_tlv, NULL, "EnergyWise %s: %s port %u",
|
||||
ttext,
|
||||
ip_to_str((guint8 *)&ip_addr),
|
||||
tvb_get_ntohs(tvb, offset + 10)
|
||||
);
|
||||
break;
|
||||
default:
|
||||
it = proto_tree_add_text(tree, tvb, offset,
|
||||
tlvl, "EnergyWise %s TLV", ttext);
|
||||
etree = proto_tree_add_subtree_format(tree, tvb, offset,
|
||||
tlvl, ett_cdp_nrgyz_tlv, NULL, "EnergyWise %s TLV", ttext);
|
||||
}
|
||||
etree = proto_item_add_subtree(it, ett_cdp_nrgyz_tlv);
|
||||
proto_tree_add_text(etree, tvb, offset, 4,
|
||||
"TLV Type: %x (%s)", tlvt, ttext);
|
||||
proto_tree_add_text(etree, tvb, offset + 4, 4,
|
||||
|
|
|
@ -336,8 +336,8 @@ dissect_gsm_cell_broadcast(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
}
|
||||
if (tree != NULL)
|
||||
{
|
||||
proto_item *item = proto_tree_add_text(cbs_page_tree, tvb, offset, -1, "Cell Broadcast Page Contents");
|
||||
proto_tree *cbs_page_subtree = proto_item_add_subtree(item, ett_gsm_cbs_page_content);
|
||||
proto_tree *cbs_page_subtree = proto_tree_add_subtree(cbs_page_tree, tvb, offset, -1,
|
||||
ett_gsm_cbs_page_content, NULL, "Cell Broadcast Page Contents");
|
||||
len = tvb_length(cbs_page_tvb);
|
||||
proto_tree_add_string(cbs_page_subtree, hf_gsm_cbs_page_content, cbs_page_tvb, 0,
|
||||
text_len, tvb_get_string_enc(wmem_packet_scope(), cbs_page_tvb, 0, text_len, ENC_ASCII));
|
||||
|
@ -390,8 +390,8 @@ void dissect_umts_cell_broadcast_message(tvbuff_t *tvb, packet_info *pinfo, prot
|
|||
guint8 sms_encoding;
|
||||
guint32 offset = 0;
|
||||
guint32 len;
|
||||
proto_item *cbs_item = NULL, *cbs_item2 = NULL;
|
||||
proto_tree *cbs_tree = NULL, *cbs_subtree = NULL;
|
||||
proto_item *cbs_item;
|
||||
proto_tree *cbs_tree, *cbs_subtree;
|
||||
guint msg_len;
|
||||
tvbuff_t * cbs_msg_tvb = NULL;
|
||||
|
||||
|
@ -408,8 +408,8 @@ void dissect_umts_cell_broadcast_message(tvbuff_t *tvb, packet_info *pinfo, prot
|
|||
cbs_msg_tvb = dissect_cbs_data(sms_encoding, tvb, cbs_tree, pinfo, offset );
|
||||
|
||||
msg_len = tvb_length(cbs_msg_tvb);
|
||||
cbs_item2 = proto_tree_add_text(cbs_tree, tvb, offset, -1, "Cell Broadcast Message Contents (length: %d)", msg_len);
|
||||
cbs_subtree = proto_item_add_subtree(cbs_item2, ett_cbs_msg);
|
||||
cbs_subtree = proto_tree_add_subtree_format(cbs_tree, tvb, offset, -1,
|
||||
ett_cbs_msg, NULL, "Cell Broadcast Message Contents (length: %d)", msg_len);
|
||||
proto_tree_add_text(cbs_subtree, cbs_msg_tvb , 0, tvb_length(cbs_msg_tvb), "%s", tvb_get_string_enc(wmem_packet_scope(), cbs_msg_tvb, 0, msg_len, ENC_ASCII));
|
||||
}
|
||||
|
||||
|
|
|
@ -476,13 +476,12 @@ static guint32 dissect_cfdp_filestore_req_tlv(tvbuff_t *tvb, proto_tree *tree, g
|
|||
tlv_len = tvb_get_guint8(tvb, offset);
|
||||
offset += 1;
|
||||
if(tlv_len > 0){
|
||||
proto_item *cfdp_filestore_req;
|
||||
proto_tree *cfdp_filestore_req_tree;
|
||||
guint8 aux_byte;
|
||||
|
||||
/* Create a TLV subtree */
|
||||
cfdp_filestore_req = proto_tree_add_text(tree, tvb, offset-2, tlv_len+2, "Filestore Request TLV");
|
||||
cfdp_filestore_req_tree = proto_item_add_subtree(cfdp_filestore_req, ett_cfdp_filestore_req);
|
||||
cfdp_filestore_req_tree = proto_tree_add_subtree(tree, tvb, offset-2, tlv_len+2,
|
||||
ett_cfdp_filestore_req, NULL, "Filestore Request TLV");
|
||||
|
||||
proto_tree_add_uint(cfdp_filestore_req_tree, hf_cfdp_tlv_len, tvb, offset-1, 1, tlv_len);
|
||||
|
||||
|
@ -518,13 +517,12 @@ static guint32 dissect_cfdp_filestore_resp_tlv(tvbuff_t *tvb, proto_tree *tree,
|
|||
tlv_len = tvb_get_guint8(tvb, offset);
|
||||
offset += 1;
|
||||
if(tlv_len > 0){
|
||||
proto_item *cfdp_filestore_resp;
|
||||
proto_tree *cfdp_filestore_resp_tree;
|
||||
guint8 aux_byte;
|
||||
|
||||
/* Create a subtree */
|
||||
cfdp_filestore_resp = proto_tree_add_text(tree, tvb, offset-2, tlv_len+2, "Filestore Response TLV");
|
||||
cfdp_filestore_resp_tree = proto_item_add_subtree(cfdp_filestore_resp, ett_cfdp_filestore_resp);
|
||||
cfdp_filestore_resp_tree = proto_tree_add_subtree(tree, tvb, offset-2, tlv_len+2,
|
||||
ett_cfdp_filestore_resp, NULL, "Filestore Response TLV");
|
||||
|
||||
proto_tree_add_uint(cfdp_filestore_resp_tree, hf_cfdp_tlv_len, tvb, offset-1, 1, tlv_len);
|
||||
|
||||
|
@ -595,12 +593,11 @@ static guint32 dissect_cfdp_fault_location_tlv(tvbuff_t *tvb, proto_tree *tree,
|
|||
tlv_len = tvb_get_guint8(tvb, offset);
|
||||
offset += 1;
|
||||
if(tlv_len > 0){
|
||||
proto_item *cfdp_fault_location;
|
||||
proto_tree *cfdp_fault_location_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
cfdp_fault_location = proto_tree_add_text(tree, tvb, offset-2, tlv_len+2, "Fault location TLV");
|
||||
cfdp_fault_location_tree = proto_item_add_subtree(cfdp_fault_location, ett_cfdp_fault_location);
|
||||
cfdp_fault_location_tree = proto_tree_add_subtree(tree, tvb, offset-2, tlv_len+2,
|
||||
ett_cfdp_fault_location, NULL, "Fault location TLV");
|
||||
|
||||
proto_tree_add_uint(cfdp_fault_location_tree, hf_cfdp_tlv_len, tvb, offset-1, 1, tlv_len);
|
||||
|
||||
|
@ -615,7 +612,6 @@ static guint32 dissect_cfdp_fault_location_tlv(tvbuff_t *tvb, proto_tree *tree,
|
|||
static guint32 dissect_cfdp_msg_to_user_tlv(tvbuff_t *tvb, proto_tree *tree, guint32 ext_offset){
|
||||
|
||||
guint8 aux_byte, tlv_type, tlv_len;
|
||||
proto_item *cfdp_msg_to_user;
|
||||
proto_tree *cfdp_msg_to_user_tree;
|
||||
|
||||
guint32 offset = ext_offset;
|
||||
|
@ -628,8 +624,8 @@ static guint32 dissect_cfdp_msg_to_user_tlv(tvbuff_t *tvb, proto_tree *tree, gui
|
|||
offset += 1;
|
||||
|
||||
/* Create a subtree */
|
||||
cfdp_msg_to_user = proto_tree_add_text(tree, tvb, offset-2, tlv_len+2, "Message To User TLV");
|
||||
cfdp_msg_to_user_tree = proto_item_add_subtree(cfdp_msg_to_user, ett_cfdp_filestore_resp);
|
||||
cfdp_msg_to_user_tree = proto_tree_add_subtree(tree, tvb, offset-2, tlv_len+2,
|
||||
ett_cfdp_filestore_resp, NULL, "Message To User TLV");
|
||||
|
||||
proto_tree_add_uint(cfdp_msg_to_user_tree, hf_cfdp_tlv_len, tvb, offset-1, 1, tlv_len);
|
||||
|
||||
|
@ -863,7 +859,6 @@ static guint32 dissect_cfdp_msg_to_user_tlv(tvbuff_t *tvb, proto_tree *tree, gui
|
|||
static guint32 dissect_cfdp_fault_handler_overr_tlv(tvbuff_t *tvb, proto_tree *tree, guint32 ext_offset){
|
||||
|
||||
guint8 aux_byte, tlv_len;
|
||||
proto_item *cfdp_fault_hdl_overr;
|
||||
proto_tree *cfdp_fault_hdl_overr_tree;
|
||||
|
||||
guint32 offset = ext_offset;
|
||||
|
@ -873,8 +868,8 @@ static guint32 dissect_cfdp_fault_handler_overr_tlv(tvbuff_t *tvb, proto_tree *t
|
|||
offset += 1;
|
||||
|
||||
/* Create a subtree */
|
||||
cfdp_fault_hdl_overr = proto_tree_add_text(tree, tvb, offset-2, tlv_len+2, "Fault Handler Override TLV");
|
||||
cfdp_fault_hdl_overr_tree = proto_item_add_subtree(cfdp_fault_hdl_overr, ett_cfdp_fault_hdl_overr);
|
||||
cfdp_fault_hdl_overr_tree = proto_tree_add_subtree(tree, tvb, offset-2, tlv_len+2,
|
||||
ett_cfdp_fault_hdl_overr, NULL, "Fault Handler Override TLV");
|
||||
|
||||
proto_tree_add_uint(cfdp_fault_hdl_overr_tree, hf_cfdp_tlv_len, tvb, offset-1, 1, tlv_len);
|
||||
|
||||
|
@ -890,7 +885,6 @@ static guint32 dissect_cfdp_fault_handler_overr_tlv(tvbuff_t *tvb, proto_tree *t
|
|||
static guint32 dissect_cfdp_flow_label_tlv(tvbuff_t *tvb, proto_tree *tree, guint32 ext_offset){
|
||||
|
||||
guint8 tlv_len;
|
||||
proto_item *cfdp_flow_label;
|
||||
proto_tree *cfdp_flow_label_tree;
|
||||
|
||||
guint32 offset = ext_offset;
|
||||
|
@ -900,8 +894,8 @@ static guint32 dissect_cfdp_flow_label_tlv(tvbuff_t *tvb, proto_tree *tree, guin
|
|||
offset += 1;
|
||||
|
||||
/* Create a subtree */
|
||||
cfdp_flow_label = proto_tree_add_text(tree, tvb, offset-2, tlv_len+2, "Flow Label TLV");
|
||||
cfdp_flow_label_tree = proto_item_add_subtree(cfdp_flow_label, ett_cfdp_flow_label);
|
||||
cfdp_flow_label_tree = proto_tree_add_subtree(tree, tvb, offset-2, tlv_len+2,
|
||||
ett_cfdp_flow_label, NULL, "Flow Label TLV");
|
||||
|
||||
/* It is undefined, so no specific encoding */
|
||||
proto_tree_add_text(cfdp_flow_label_tree, tvb, offset, tlv_len, "Flow label");
|
||||
|
@ -913,7 +907,6 @@ static guint32 dissect_cfdp_flow_label_tlv(tvbuff_t *tvb, proto_tree *tree, guin
|
|||
static guint32 dissect_cfdp_eof_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 ext_offset, guint ext_packet_len){
|
||||
|
||||
guint8 aux_byte, tlv_type, tlv_len;
|
||||
proto_item *cfdp_fault_location;
|
||||
proto_tree *cfdp_fault_location_tree;
|
||||
|
||||
guint32 offset = ext_offset;
|
||||
|
@ -938,8 +931,8 @@ static guint32 dissect_cfdp_eof_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tre
|
|||
if(tlv_type == FAULT_LOCATION){
|
||||
tlv_len = tvb_get_guint8(tvb, offset);
|
||||
offset += 1;
|
||||
cfdp_fault_location = proto_tree_add_text(tree, tvb, offset-2, tlv_len+2, "Fault location TLV");
|
||||
cfdp_fault_location_tree = proto_item_add_subtree(cfdp_fault_location, ett_cfdp_fault_location);
|
||||
cfdp_fault_location_tree = proto_tree_add_subtree(tree, tvb, offset-2, tlv_len+2,
|
||||
ett_cfdp_fault_location, NULL, "Fault location TLV");
|
||||
|
||||
proto_tree_add_text(cfdp_fault_location_tree, tvb, offset, tlv_len, "Entity");
|
||||
offset += tlv_len;
|
||||
|
@ -1147,8 +1140,8 @@ dissect_cfdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
cfdp_packet = proto_tree_add_item(tree, proto_cfdp, tvb, 0, length, ENC_NA);
|
||||
cfdp_tree = proto_item_add_subtree(cfdp_packet, ett_cfdp);
|
||||
|
||||
cfdp_header = proto_tree_add_text(cfdp_tree, tvb, offset, cfdp_packet_header_length, "CFDP Header");
|
||||
cfdp_header_tree = proto_item_add_subtree(cfdp_header, ett_cfdp_header);
|
||||
cfdp_header_tree = proto_tree_add_subtree(cfdp_tree, tvb, offset, cfdp_packet_header_length,
|
||||
ett_cfdp_header, &cfdp_header, "CFDP Header");
|
||||
|
||||
first_byte = tvb_get_guint8(tvb, offset);
|
||||
|
||||
|
@ -1194,8 +1187,8 @@ dissect_cfdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
proto_tree *cfdp_file_directive_header_tree;
|
||||
guint8 directive_code;
|
||||
|
||||
cfdp_file_directive_header = proto_tree_add_text(cfdp_tree, tvb, offset, cfdp_packet_data_length, "CFDP File Directive");
|
||||
cfdp_file_directive_header_tree = proto_item_add_subtree(cfdp_file_directive_header, ett_cfdp_file_directive_header);
|
||||
cfdp_file_directive_header_tree = proto_tree_add_subtree(cfdp_tree, tvb, offset, cfdp_packet_data_length,
|
||||
ett_cfdp_file_directive_header, &cfdp_file_directive_header, "CFDP File Directive");
|
||||
|
||||
directive_code = tvb_get_guint8(tvb, offset);
|
||||
proto_tree_add_uint(cfdp_file_directive_header_tree, hf_cfdp_file_directive_type, tvb, offset, 1, directive_code);
|
||||
|
@ -1240,13 +1233,12 @@ dissect_cfdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
proto_item_set_end(cfdp_file_directive_header, tvb, offset);
|
||||
|
||||
}else{
|
||||
proto_item *cfdp_file_data_header;
|
||||
proto_tree *cfdp_file_data_header_tree;
|
||||
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "File Data PDU");
|
||||
|
||||
cfdp_file_data_header = proto_tree_add_text(cfdp_tree, tvb, offset, cfdp_packet_data_length, "CFDP File Data");
|
||||
cfdp_file_data_header_tree = proto_item_add_subtree(cfdp_file_data_header, ett_cfdp_file_data_header);
|
||||
cfdp_file_data_header_tree = proto_tree_add_subtree(cfdp_tree, tvb, offset, cfdp_packet_data_length,
|
||||
ett_cfdp_file_data_header, NULL, "CFDP File Data");
|
||||
|
||||
proto_tree_add_item(cfdp_file_data_header_tree, hf_cfdp_file_data_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
|
||||
|
@ -1260,8 +1252,7 @@ dissect_cfdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
proto_item *cfdp_crc;
|
||||
proto_tree *cfdp_crc_tree;
|
||||
|
||||
cfdp_crc = proto_tree_add_text(cfdp_tree, tvb, offset, 2, "CRC");
|
||||
cfdp_crc_tree = proto_item_add_subtree(cfdp_crc, ett_cfdp_crc);
|
||||
cfdp_crc_tree = proto_tree_add_subtree(cfdp_tree, tvb, offset, 2, ett_cfdp_crc, &cfdp_crc, "CRC");
|
||||
|
||||
proto_tree_add_item(cfdp_crc_tree, hf_cfdp_crc, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset += 2;
|
||||
|
|
|
@ -1329,7 +1329,6 @@ static void dissect_cfm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
{
|
||||
guint16 cfm_tlv_length;
|
||||
gint tlv_header_modifier;
|
||||
proto_item *fi;
|
||||
proto_tree *cfm_tlv_tree;
|
||||
cfm_tlv_type = tvb_get_guint8(tvb, cfm_tlv_offset);
|
||||
|
||||
|
@ -1341,10 +1340,9 @@ static void dissect_cfm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
cfm_tlv_length = tvb_get_ntohs(tvb, cfm_tlv_offset+1);
|
||||
}
|
||||
|
||||
fi = proto_tree_add_text(cfm_all_tlvs_tree, tvb, cfm_tlv_offset, cfm_tlv_length+tlv_header_modifier,
|
||||
"TLV: %s (t=%d,l=%d)", val_to_str(cfm_tlv_type, tlvtypefieldvalues, "Unknown (0x%02x)"),
|
||||
cfm_tlv_tree = proto_tree_add_subtree_format(cfm_all_tlvs_tree, tvb, cfm_tlv_offset, cfm_tlv_length+tlv_header_modifier,
|
||||
ett_cfm_tlv, NULL, "TLV: %s (t=%d,l=%d)", val_to_str(cfm_tlv_type, tlvtypefieldvalues, "Unknown (0x%02x)"),
|
||||
cfm_tlv_type, cfm_tlv_length);
|
||||
cfm_tlv_tree = proto_item_add_subtree(fi, ett_cfm_tlv);
|
||||
|
||||
proto_tree_add_item(cfm_tlv_tree, hf_cfm_tlv_type, tvb, cfm_tlv_offset, 1, ENC_BIG_ENDIAN);
|
||||
cfm_tlv_offset += 1;
|
||||
|
|
|
@ -452,12 +452,10 @@ static gint hf_index[MAXPARAMSCOUNT];
|
|||
static void dissect_cimd_parameter(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset)
|
||||
{
|
||||
/* Set up structures needed to add the param subtree and manage it */
|
||||
proto_item *param_item;
|
||||
proto_tree *param_tree;
|
||||
|
||||
param_item = proto_tree_add_text(tree, tvb, startOffset + 1, endOffset - (startOffset + 1),
|
||||
"%s", cimd_vals_PC[pindex].strptr);
|
||||
param_tree = proto_item_add_subtree(param_item, (*vals_hdr_PC[pindex].ett_p));
|
||||
param_tree = proto_tree_add_subtree(tree, tvb, startOffset + 1, endOffset - (startOffset + 1),
|
||||
(*vals_hdr_PC[pindex].ett_p), NULL, cimd_vals_PC[pindex].strptr);
|
||||
|
||||
proto_tree_add_item(param_tree, hf_cimd_pcode_indicator, tvb,
|
||||
startOffset + 1, CIMD_PC_LENGTH, ENC_ASCII|ENC_NA);
|
||||
|
@ -468,7 +466,6 @@ static void dissect_cimd_parameter(tvbuff_t *tvb, proto_tree *tree, gint pindex,
|
|||
static void dissect_cimd_ud(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset)
|
||||
{
|
||||
/* Set up structures needed to add the param subtree and manage it */
|
||||
proto_item *param_item;
|
||||
proto_tree *param_tree;
|
||||
|
||||
gchar *payloadText, *tmpBuffer, *tmpBuffer1;
|
||||
|
@ -489,11 +486,10 @@ static void dissect_cimd_ud(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint s
|
|||
"_o\"", "_n~", "_n\"","_a`"
|
||||
};
|
||||
|
||||
param_item = proto_tree_add_text(tree, tvb,
|
||||
param_tree = proto_tree_add_subtree(tree, tvb,
|
||||
startOffset + 1, endOffset - (startOffset + 1),
|
||||
"%s", cimd_vals_PC[pindex].strptr
|
||||
(*vals_hdr_PC[pindex].ett_p), NULL, cimd_vals_PC[pindex].strptr
|
||||
);
|
||||
param_tree = proto_item_add_subtree(param_item, (*vals_hdr_PC[pindex].ett_p));
|
||||
proto_tree_add_item(param_tree, hf_cimd_pcode_indicator, tvb,
|
||||
startOffset + 1, CIMD_PC_LENGTH, ENC_ASCII|ENC_NA);
|
||||
|
||||
|
@ -744,13 +740,11 @@ static void dissect_cimd_dcs(tvbuff_t *tvb, proto_tree *tree, gint pindex, gint
|
|||
static void dissect_cimd_error_code( tvbuff_t *tvb, proto_tree *tree, gint pindex, gint startOffset, gint endOffset )
|
||||
{
|
||||
/* Same routine can be used to dissect CIMD Error,Status and Status Error Codes */
|
||||
proto_item *param_item;
|
||||
proto_tree *param_tree;
|
||||
guint32 err_code;
|
||||
|
||||
param_item = proto_tree_add_text(tree, tvb, startOffset + 1, endOffset - (startOffset + 1),
|
||||
"%s", cimd_vals_PC[pindex].strptr);
|
||||
param_tree = proto_item_add_subtree(param_item, (*vals_hdr_PC[pindex].ett_p));
|
||||
param_tree = proto_tree_add_subtree(tree, tvb, startOffset + 1, endOffset - (startOffset + 1),
|
||||
(*vals_hdr_PC[pindex].ett_p), NULL, cimd_vals_PC[pindex].strptr);
|
||||
|
||||
proto_tree_add_item(param_tree, hf_cimd_pcode_indicator, tvb, startOffset + 1, CIMD_PC_LENGTH, ENC_ASCII|ENC_NA);
|
||||
|
||||
|
|
|
@ -2672,7 +2672,6 @@ static int dissect_time_sync_port_state_info(packet_info *pinfo, proto_tree *tre
|
|||
int offset, int total_len)
|
||||
{
|
||||
guint16 i, num_ports;
|
||||
proto_item* ti;
|
||||
proto_tree* port_tree;
|
||||
|
||||
if (total_len < 2)
|
||||
|
@ -2692,8 +2691,7 @@ static int dissect_time_sync_port_state_info(packet_info *pinfo, proto_tree *tre
|
|||
|
||||
for (i = 0; i < num_ports; i++)
|
||||
{
|
||||
ti = proto_tree_add_text(tree, tvb, offset+2+i*4, 4, "Port #%d", i+1);
|
||||
port_tree = proto_item_add_subtree(ti, ett_time_sync_port_state_info);
|
||||
port_tree = proto_tree_add_subtree_format(tree, tvb, offset+2+i*4, 4, ett_time_sync_port_state_info, NULL, "Port #%d", i+1);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_state_info_port_num, tvb, offset+2+i*4, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_state_info_port_state, tvb, offset+4+i*4, 2, ENC_LITTLE_ENDIAN);
|
||||
}
|
||||
|
@ -2705,7 +2703,6 @@ static int dissect_time_sync_port_enable_cfg(packet_info *pinfo, proto_tree *tre
|
|||
int offset, int total_len)
|
||||
{
|
||||
guint16 i, num_ports;
|
||||
proto_item* ti;
|
||||
proto_tree* port_tree;
|
||||
|
||||
if (total_len < 2)
|
||||
|
@ -2725,8 +2722,7 @@ static int dissect_time_sync_port_enable_cfg(packet_info *pinfo, proto_tree *tre
|
|||
|
||||
for (i = 0; i < num_ports; i++)
|
||||
{
|
||||
ti = proto_tree_add_text(tree, tvb, offset+2+i*4, 4, "Port #%d", i+1);
|
||||
port_tree = proto_item_add_subtree(ti, ett_time_sync_port_enable_cfg);
|
||||
port_tree = proto_tree_add_subtree_format(tree, tvb, offset+2+i*4, 4, ett_time_sync_port_enable_cfg, NULL, "Port #%d", i+1);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_enable_cfg_port_num, tvb, offset+2+i*4, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_enable_cfg_port_enable, tvb, offset+4+i*4, 2, ENC_LITTLE_ENDIAN);
|
||||
}
|
||||
|
@ -2738,7 +2734,6 @@ static int dissect_time_sync_port_log_announce(packet_info *pinfo, proto_tree *t
|
|||
int offset, int total_len)
|
||||
{
|
||||
guint16 i, num_ports;
|
||||
proto_item* ti;
|
||||
proto_tree* port_tree;
|
||||
|
||||
if (total_len < 2)
|
||||
|
@ -2758,8 +2753,7 @@ static int dissect_time_sync_port_log_announce(packet_info *pinfo, proto_tree *t
|
|||
|
||||
for (i = 0; i < num_ports; i++)
|
||||
{
|
||||
ti = proto_tree_add_text(tree, tvb, offset+2+i*4, 4, "Port #%d", i+1);
|
||||
port_tree = proto_item_add_subtree(ti, ett_time_sync_port_log_announce);
|
||||
port_tree = proto_tree_add_subtree_format(tree, tvb, offset+2+i*4, 4, ett_time_sync_port_log_announce, NULL, "Port #%d", i+1);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_log_announce_port_num, tvb, offset+2+i*4, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_log_announce_interval, tvb, offset+4+i*4, 2, ENC_LITTLE_ENDIAN);
|
||||
}
|
||||
|
@ -2771,7 +2765,6 @@ static int dissect_time_sync_port_log_sync(packet_info *pinfo, proto_tree *tree,
|
|||
int offset, int total_len)
|
||||
{
|
||||
guint16 i, num_ports;
|
||||
proto_item* ti;
|
||||
proto_tree* port_tree;
|
||||
|
||||
if (total_len < 2)
|
||||
|
@ -2791,8 +2784,7 @@ static int dissect_time_sync_port_log_sync(packet_info *pinfo, proto_tree *tree,
|
|||
|
||||
for (i = 0; i < num_ports; i++)
|
||||
{
|
||||
ti = proto_tree_add_text(tree, tvb, offset+2+i*4, 4, "Port #%d", i+1);
|
||||
port_tree = proto_item_add_subtree(ti, ett_time_sync_port_log_sync);
|
||||
port_tree = proto_tree_add_subtree_format(tree, tvb, offset+2+i*4, 4, ett_time_sync_port_log_sync, NULL, "Port #%d", i+1);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_log_sync_port_num, tvb, offset+2+i*4, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_log_sync_port_log_sync_interval, tvb, offset+4+i*4, 2, ENC_LITTLE_ENDIAN);
|
||||
}
|
||||
|
@ -2931,7 +2923,6 @@ static int dissect_time_sync_port_profile_id_info(packet_info *pinfo, proto_tree
|
|||
int offset, int total_len)
|
||||
{
|
||||
guint16 i, num_ports;
|
||||
proto_item* ti;
|
||||
proto_tree* port_tree;
|
||||
|
||||
if (total_len < 2)
|
||||
|
@ -2951,8 +2942,7 @@ static int dissect_time_sync_port_profile_id_info(packet_info *pinfo, proto_tree
|
|||
|
||||
for (i = 0; i < num_ports; i++)
|
||||
{
|
||||
ti = proto_tree_add_text(tree, tvb, offset+2+i*10, 10, "Port #%d", i+1);
|
||||
port_tree = proto_item_add_subtree(ti, ett_time_sync_port_profile_id_info);
|
||||
port_tree = proto_tree_add_subtree_format(tree, tvb, offset+2+i*10, 10, ett_time_sync_port_profile_id_info, NULL, "Port #%d", i+1);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_profile_id_info_port_num, tvb, offset+2+i*10, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_profile_id_info_profile_id, tvb, offset+4+i*10, 8, ENC_NA);
|
||||
}
|
||||
|
@ -2964,7 +2954,6 @@ static int dissect_time_sync_port_phys_addr_info(packet_info *pinfo, proto_tree
|
|||
int offset, int total_len)
|
||||
{
|
||||
guint16 i, num_ports;
|
||||
proto_item* ti;
|
||||
proto_tree* port_tree;
|
||||
|
||||
if (total_len < 2)
|
||||
|
@ -2984,8 +2973,7 @@ static int dissect_time_sync_port_phys_addr_info(packet_info *pinfo, proto_tree
|
|||
|
||||
for (i = 0; i < num_ports; i++)
|
||||
{
|
||||
ti = proto_tree_add_text(tree, tvb, offset+2+i*36, 36, "Port #%d", i+1);
|
||||
port_tree = proto_item_add_subtree(ti, ett_time_sync_port_phys_addr_info);
|
||||
port_tree = proto_tree_add_subtree_format(tree, tvb, offset+2+i*36, 36, ett_time_sync_port_phys_addr_info, NULL, "Port #%d", i+1);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_phys_addr_info_port_num, tvb, offset+2+i*36, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_phys_addr_info_phys_proto, tvb, offset+4+i*36, 16, ENC_NA);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_phys_addr_info_addr_size, tvb, offset+20+i*36, 2, ENC_LITTLE_ENDIAN);
|
||||
|
@ -2999,7 +2987,6 @@ static int dissect_time_sync_port_proto_addr_info(packet_info *pinfo, proto_tree
|
|||
int offset, int total_len)
|
||||
{
|
||||
guint16 i, num_ports;
|
||||
proto_item* ti;
|
||||
proto_tree* port_tree;
|
||||
|
||||
if (total_len < 2)
|
||||
|
@ -3019,8 +3006,7 @@ static int dissect_time_sync_port_proto_addr_info(packet_info *pinfo, proto_tree
|
|||
|
||||
for (i = 0; i < num_ports; i++)
|
||||
{
|
||||
ti = proto_tree_add_text(tree, tvb, offset+2+i*22, 22, "Port #%d", i+1);
|
||||
port_tree = proto_item_add_subtree(ti, ett_time_sync_port_proto_addr_info);
|
||||
port_tree = proto_tree_add_subtree_format(tree, tvb, offset+2+i*22, 22, ett_time_sync_port_proto_addr_info, NULL, "Port #%d", i+1);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_proto_addr_info_port_num, tvb, offset+2+i*22, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_proto_addr_info_network_proto, tvb, offset+4+i*22, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(port_tree, hf_time_sync_port_proto_addr_info_addr_size, tvb, offset+6+i*22, 2, ENC_LITTLE_ENDIAN);
|
||||
|
@ -3396,7 +3382,7 @@ void dissect_epath( tvbuff_t *tvb, packet_info *pinfo, proto_item *epath_item, i
|
|||
proto_tree *path_tree, *port_tree, *net_tree;
|
||||
proto_tree *cia_tree, *ds_tree, *ds_data_tree, *path_seg_tree, *safety_tree;
|
||||
proto_item *it, *cia_item, *cia_ret_item, *port_item, *ds_item, *ds_data_item;
|
||||
proto_item *net_item, *hidden_item, *path_seg_item, *safety_item;
|
||||
proto_item *net_item, *hidden_item, *path_seg_item;
|
||||
|
||||
attribute_info_t* att_info;
|
||||
|
||||
|
@ -3694,8 +3680,7 @@ void dissect_epath( tvbuff_t *tvb, packet_info *pinfo, proto_item *epath_item, i
|
|||
/* Segment data */
|
||||
if( seg_size != 0 )
|
||||
{
|
||||
ds_data_item = proto_tree_add_text( ds_tree, tvb, offset + pathpos+2, 0, "Data" );
|
||||
ds_data_tree = proto_item_add_subtree( ds_data_item, ett_data_seg_data );
|
||||
ds_data_tree = proto_tree_add_subtree( ds_tree, tvb, offset + pathpos+2, 0, ett_data_seg_data, &ds_data_item, "Data" );
|
||||
|
||||
for( i=0; i < seg_size/2; i ++ )
|
||||
proto_tree_add_item(ds_data_tree, hf_cip_data_seg_item, tvb, offset + pathpos+2+(i*2), 2, ENC_LITTLE_ENDIAN );
|
||||
|
@ -3820,8 +3805,8 @@ void dissect_epath( tvbuff_t *tvb, packet_info *pinfo, proto_item *epath_item, i
|
|||
temp_data = tvb_get_guint8( tvb, offset + pathpos + 2 );
|
||||
if (temp_data < 3)
|
||||
{
|
||||
safety_item = proto_tree_add_text(net_tree, tvb, offset + pathpos+3, seg_size-1, "%s", val_to_str_const(temp_data, cip_safety_segment_format_type_vals, "Reserved"));
|
||||
safety_tree = proto_item_add_subtree( safety_item, ett_network_seg_safety );
|
||||
safety_tree = proto_tree_add_subtree(net_tree, tvb, offset + pathpos+3, seg_size-1,
|
||||
ett_network_seg_safety, NULL, val_to_str_const(temp_data, cip_safety_segment_format_type_vals, "Reserved"));
|
||||
switch (temp_data)
|
||||
{
|
||||
case 0:
|
||||
|
@ -4088,7 +4073,6 @@ dissect_cip_attribute(packet_info *pinfo, proto_tree *tree, proto_item *item, tv
|
|||
static void
|
||||
dissect_cip_generic_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_length, packet_info *pinfo, proto_item *ti )
|
||||
{
|
||||
proto_item *pi;
|
||||
proto_tree *cmd_data_tree;
|
||||
int req_path_size;
|
||||
unsigned char add_stat_size;
|
||||
|
@ -4102,8 +4086,8 @@ dissect_cip_generic_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int
|
|||
/* If there is any command specific data create a sub-tree for it */
|
||||
if( ( item_length-4-add_stat_size ) != 0 )
|
||||
{
|
||||
pi = proto_tree_add_text( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size,
|
||||
ett_cmd_data, NULL, "Command Specific Data" );
|
||||
|
||||
/* Add data */
|
||||
proto_tree_add_item(cmd_data_tree, hf_cip_data, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, ENC_NA);
|
||||
|
@ -4125,8 +4109,8 @@ dissect_cip_generic_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int
|
|||
/* If there is any command specific data creat a sub-tree for it */
|
||||
if( (item_length-req_path_size-2) != 0 )
|
||||
{
|
||||
pi = proto_tree_add_text( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2,
|
||||
ett_cmd_data, NULL, "Command Specific Data" );
|
||||
|
||||
proto_tree_add_item(cmd_data_tree, hf_cip_data, tvb, offset+2+req_path_size, item_length-req_path_size-2, ENC_NA);
|
||||
}
|
||||
|
@ -4192,8 +4176,7 @@ dissect_cip_get_attribute_list_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
|||
proto_tree_add_item(tree, hf_cip_sc_get_attr_list_attr_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* Add Attribute List */
|
||||
att_list = proto_tree_add_text(tree, tvb, offset+2, att_count*2, "Attribute List" );
|
||||
att_tree = proto_item_add_subtree( att_list, ett_cip_get_attribute_list);
|
||||
att_tree = proto_tree_add_subtree(tree, tvb, offset+2, att_count*2, ett_cip_get_attribute_list, &att_list, "Attribute List" );
|
||||
|
||||
for( i=0; i < att_count; i++ )
|
||||
{
|
||||
|
@ -4234,8 +4217,7 @@ dissect_cip_set_attribute_list_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
|||
proto_tree_add_item(tree, hf_cip_sc_set_attr_list_attr_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* Add Attribute List */
|
||||
att_list = proto_tree_add_text(tree, tvb, offset+2, att_count*4, "Attribute List" );
|
||||
att_list_tree = proto_item_add_subtree( att_list, ett_cip_set_attribute_list);
|
||||
att_list_tree = proto_tree_add_subtree(tree, tvb, offset+2, att_count*4, ett_cip_set_attribute_list, &att_list, "Attribute List" );
|
||||
offset += 2;
|
||||
start_offset = offset;
|
||||
|
||||
|
@ -4335,8 +4317,8 @@ dissect_cip_multiple_service_packet_req(tvbuff_t *tvb, packet_info *pinfo, proto
|
|||
serv_length = tvb_get_letohs( tvb, offset+2+((i+1)*2) ) - serv_offset;
|
||||
}
|
||||
|
||||
mult_serv_item = proto_tree_add_text(tree, tvb, offset+serv_offset, serv_length, "Service Packet #%d", i+1 );
|
||||
mult_serv_tree = proto_item_add_subtree(mult_serv_item, ett_cip_mult_service_packet );
|
||||
mult_serv_tree = proto_tree_add_subtree_format(tree, tvb, offset+serv_offset, serv_length,
|
||||
ett_cip_mult_service_packet, &mult_serv_item, "Service Packet #%d", i+1 );
|
||||
proto_tree_add_item(mult_serv_tree, hf_cip_sc_mult_serv_pack_offset, tvb, offset+2+(i*2) , 2, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* Make sure the offset is valid */
|
||||
|
@ -4384,10 +4366,9 @@ dissect_cip_generic_service_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
|
|||
add_cip_service_to_info_column(pinfo, service, cip_sc_vals);
|
||||
|
||||
/* Create service tree */
|
||||
cmd_data_item = proto_tree_add_text(tree, tvb, 0, tvb_length(tvb), "%s",
|
||||
cmd_data_tree = proto_tree_add_subtree(tree, tvb, 0, -1, ett_cmd_data, &cmd_data_item,
|
||||
val_to_str(service, cip_sc_vals , "Unknown Service (0x%02x)"));
|
||||
proto_item_append_text(cmd_data_item, " (Request)");
|
||||
cmd_data_tree = proto_item_add_subtree( cmd_data_item, ett_cmd_data );
|
||||
|
||||
req_path_size = tvb_get_guint8( tvb, offset+1);
|
||||
offset += ((req_path_size*2)+2);
|
||||
|
@ -4491,8 +4472,7 @@ dissect_cip_get_attribute_list_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
|||
proto_tree_add_item(tree, hf_cip_sc_get_attr_list_attr_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* Add Attribute List */
|
||||
att_list = proto_tree_add_text(tree, tvb, offset+2, att_count*4, "Attribute List" );
|
||||
att_list_tree = proto_item_add_subtree( att_list, ett_cip_get_attribute_list);
|
||||
att_list_tree = proto_tree_add_subtree(tree, tvb, offset+2, att_count*4, ett_cip_get_attribute_list, &att_list, "Attribute List" );
|
||||
offset += 2;
|
||||
start_offset = offset;
|
||||
|
||||
|
@ -4558,8 +4538,7 @@ dissect_cip_set_attribute_list_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
|||
proto_tree_add_item(tree, hf_cip_sc_set_attr_list_attr_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* Add Attribute List */
|
||||
att_list = proto_tree_add_text(tree, tvb, offset+2, att_count*4, "Attribute List" );
|
||||
att_list_tree = proto_item_add_subtree( att_list, ett_cip_get_attribute_list);
|
||||
att_list_tree = proto_tree_add_subtree(tree, tvb, offset+2, att_count*4, ett_cip_get_attribute_list, &att_list, "Attribute List" );
|
||||
offset += 2;
|
||||
start_offset = offset;
|
||||
|
||||
|
@ -4608,7 +4587,6 @@ dissect_cip_get_attribute_single_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tr
|
|||
static void
|
||||
dissect_cip_multiple_service_packet_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item * item, int offset)
|
||||
{
|
||||
proto_item *mult_serv_item;
|
||||
proto_tree *mult_serv_tree;
|
||||
int i, num_services, serv_offset;
|
||||
cip_req_info_t *cip_req_info, *mr_single_req_info;
|
||||
|
@ -4666,8 +4644,8 @@ dissect_cip_multiple_service_packet_rsp(tvbuff_t *tvb, packet_info *pinfo, proto
|
|||
serv_length = tvb_get_letohs( tvb, offset+2+((i+1)*2) ) - serv_offset;
|
||||
}
|
||||
|
||||
mult_serv_item = proto_tree_add_text( tree, tvb, offset+serv_offset, serv_length, "Service Reply #%d", i+1 );
|
||||
mult_serv_tree = proto_item_add_subtree( mult_serv_item, ett_cip_mult_service_packet );
|
||||
mult_serv_tree = proto_tree_add_subtree_format( tree, tvb, offset+serv_offset, serv_length,
|
||||
ett_cip_mult_service_packet, NULL, "Service Reply #%d", i+1 );
|
||||
proto_tree_add_item(mult_serv_tree, hf_cip_sc_mult_serv_pack_offset, tvb, offset+2+(i*2) , 2, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/*
|
||||
|
@ -4732,10 +4710,9 @@ dissect_cip_generic_service_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
|
|||
/* If there is any command specific data create a sub-tree for it */
|
||||
if( (item_length-4-add_stat_size ) != 0 )
|
||||
{
|
||||
cmd_data_item = proto_tree_add_text(tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "%s",
|
||||
val_to_str(service, cip_sc_vals , "Unknown Service (0x%02x)"));
|
||||
cmd_data_tree = proto_tree_add_subtree(tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size,
|
||||
ett_cmd_data, &cmd_data_item, val_to_str(service, cip_sc_vals , "Unknown Service (0x%02x)"));
|
||||
proto_item_append_text(cmd_data_item, " (Response)");
|
||||
cmd_data_tree = proto_item_add_subtree( cmd_data_item, ett_cmd_data );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -4978,7 +4955,6 @@ dissect_cip_cm_fwd_open_rsp_success(cip_req_info_t *preq_info, proto_tree *tree,
|
|||
unsigned char app_rep_size;
|
||||
guint32 O2TConnID, T2OConnID, DeviceSerialNumber;
|
||||
guint16 ConnSerialNumber, VendorID;
|
||||
proto_item *ti;
|
||||
proto_tree *pid_tree, *safety_tree;
|
||||
|
||||
/* Display originator to target connection ID */
|
||||
|
@ -5024,11 +5000,9 @@ dissect_cip_cm_fwd_open_rsp_success(cip_req_info_t *preq_info, proto_tree *tree,
|
|||
}
|
||||
else if (preq_info->connInfo->safety.format == CIP_SAFETY_BASE_FORMAT)
|
||||
{
|
||||
ti = proto_tree_add_text( tree, tvb, offset+28, 10, "Safety Application Reply Data");
|
||||
safety_tree = proto_item_add_subtree( ti, ett_cip_cm_safety );
|
||||
safety_tree = proto_tree_add_subtree( tree, tvb, offset+28, 10, ett_cip_cm_safety, NULL, "Safety Application Reply Data");
|
||||
proto_tree_add_item( safety_tree, hf_cip_cm_consumer_number, tvb, offset+26, 2, ENC_LITTLE_ENDIAN);
|
||||
ti = proto_tree_add_text( safety_tree, tvb, offset+28, 8, "PID/CID");
|
||||
pid_tree = proto_item_add_subtree( ti, ett_cip_cm_pid );
|
||||
pid_tree = proto_tree_add_subtree( safety_tree, tvb, offset+28, 8, ett_cip_cm_pid, NULL, "PID/CID");
|
||||
proto_tree_add_item( pid_tree, hf_cip_cm_targ_vendor_id, tvb, offset+28, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item( pid_tree, hf_cip_cm_targ_dev_serial_num, tvb, offset+30, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item( pid_tree, hf_cip_cm_targ_conn_serial_num, tvb, offset+34, 2, ENC_LITTLE_ENDIAN);
|
||||
|
@ -5038,11 +5012,9 @@ dissect_cip_cm_fwd_open_rsp_success(cip_req_info_t *preq_info, proto_tree *tree,
|
|||
}
|
||||
else if (preq_info->connInfo->safety.format == CIP_SAFETY_EXTENDED_FORMAT)
|
||||
{
|
||||
ti = proto_tree_add_text( tree, tvb, offset+28, 14, "Safety Application Reply Data");
|
||||
safety_tree = proto_item_add_subtree( ti, ett_cip_cm_safety );
|
||||
safety_tree = proto_tree_add_subtree( tree, tvb, offset+28, 14, ett_cip_cm_safety, NULL, "Safety Application Reply Data");
|
||||
proto_tree_add_item( safety_tree, hf_cip_cm_consumer_number, tvb, offset+26, 2, ENC_LITTLE_ENDIAN);
|
||||
ti = proto_tree_add_text( safety_tree, tvb, offset+28, 12, "PID/CID");
|
||||
pid_tree = proto_item_add_subtree( ti, ett_cip_cm_pid );
|
||||
pid_tree = proto_tree_add_subtree( safety_tree, tvb, offset+28, 12, ett_cip_cm_pid, NULL, "PID/CID");
|
||||
proto_tree_add_item( pid_tree, hf_cip_cm_targ_vendor_id, tvb, offset+28, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item( pid_tree, hf_cip_cm_targ_dev_serial_num, tvb, offset+30, 4, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item( pid_tree, hf_cip_cm_targ_conn_serial_num, tvb, offset+34, 2, ENC_LITTLE_ENDIAN);
|
||||
|
@ -5077,7 +5049,7 @@ dissect_cip_cm_fwd_open_rsp_success(cip_req_info_t *preq_info, proto_tree *tree,
|
|||
static void
|
||||
dissect_cip_cm_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_length, packet_info *pinfo )
|
||||
{
|
||||
proto_item *pi, *rrsc_item, *status_item, *add_status_item, *temp_item;
|
||||
proto_item *pi, *rrsc_item, *status_item, *temp_item;
|
||||
proto_tree *rrsc_tree, *cmd_data_tree, *status_tree, *add_status_tree, *temp_tree;
|
||||
int req_path_size, conn_path_size, temp_data;
|
||||
unsigned char service, gen_status, add_stat_size;
|
||||
|
@ -5143,8 +5115,7 @@ dissect_cip_cm_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_
|
|||
col_set_str(pinfo->cinfo, COL_PROTOCOL, "CIP CM");
|
||||
|
||||
/* Add Service code & Request/Response tree */
|
||||
rrsc_item = proto_tree_add_text( item_tree, tvb, offset, 1, "Service: " );
|
||||
rrsc_tree = proto_item_add_subtree( rrsc_item, ett_cm_rrsc );
|
||||
rrsc_tree = proto_tree_add_subtree( item_tree, tvb, offset, 1, ett_cm_rrsc, &rrsc_item, "Service: " );
|
||||
|
||||
/* Add Request/Response */
|
||||
proto_tree_add_item( rrsc_tree, hf_cip_reqrsp, tvb, offset, 1, ENC_LITTLE_ENDIAN );
|
||||
|
@ -5168,8 +5139,7 @@ dissect_cip_cm_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_
|
|||
if (gen_status == CI_GRC_FAILURE)
|
||||
{
|
||||
/* Dissect object specific error codes */
|
||||
status_item = proto_tree_add_text(item_tree, tvb, offset+2, 1, "Status: " );
|
||||
status_tree = proto_item_add_subtree( status_item, ett_status_item );
|
||||
status_tree = proto_tree_add_subtree(item_tree, tvb, offset+2, 1, ett_status_item, &status_item, "Status: " );
|
||||
|
||||
/* Add general status */
|
||||
proto_tree_add_item(status_tree, hf_cip_cm_genstat, tvb, offset+2, 1, ENC_LITTLE_ENDIAN );
|
||||
|
@ -5237,8 +5207,7 @@ dissect_cip_cm_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_
|
|||
/* Add additional status */
|
||||
if (add_stat_size > 1)
|
||||
{
|
||||
add_status_item = proto_tree_add_text( status_tree, tvb, offset+4, add_stat_size, "Additional Status" );
|
||||
add_status_tree = proto_item_add_subtree( add_status_item, ett_cm_add_status_item );
|
||||
add_status_tree = proto_tree_add_subtree( status_tree, tvb, offset+4, add_stat_size, ett_cm_add_status_item, NULL, "Additional Status" );
|
||||
|
||||
for( i=0; i < add_stat_size-2; i += 2 )
|
||||
proto_tree_add_item(add_status_tree, hf_cip_cm_add_status, tvb, offset+4+i, 2, ENC_LITTLE_ENDIAN );
|
||||
|
@ -5250,8 +5219,8 @@ dissect_cip_cm_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_
|
|||
/* If there is any command specific data create a sub-tree for it */
|
||||
if( ( item_length-4-add_stat_size ) != 0 )
|
||||
{
|
||||
pi = proto_tree_add_text( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_cm_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size,
|
||||
ett_cm_cmd_data, NULL, "Command Specific Data" );
|
||||
|
||||
if( gen_status == CI_GRC_SUCCESS || gen_status == CI_GRC_SERVICE_ERROR )
|
||||
{
|
||||
|
@ -5371,8 +5340,8 @@ dissect_cip_cm_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_
|
|||
if( (item_length-req_path_size-2) != 0 )
|
||||
{
|
||||
|
||||
pi = proto_tree_add_text( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_cm_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2,
|
||||
ett_cm_cmd_data, NULL, "Command Specific Data" );
|
||||
|
||||
/* Check what service code that received */
|
||||
switch (service)
|
||||
|
@ -5423,8 +5392,7 @@ dissect_cip_cm_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_
|
|||
proto_tree_add_item(cmd_data_tree, hf_cip_cm_msg_req_size, tvb, offset+2+req_path_size+2, 2, ENC_LITTLE_ENDIAN);
|
||||
|
||||
/* Message Request */
|
||||
temp_item = proto_tree_add_text( cmd_data_tree, tvb, offset+2+req_path_size+4, msg_req_siz, "Message Request" );
|
||||
temp_tree = proto_item_add_subtree(temp_item, ett_cm_mes_req );
|
||||
temp_tree = proto_tree_add_subtree( cmd_data_tree, tvb, offset+2+req_path_size+4, msg_req_siz, ett_cm_mes_req, NULL, "Message Request" );
|
||||
|
||||
/*
|
||||
** We call our selves again to disect embedded packet
|
||||
|
@ -5518,7 +5486,7 @@ dissect_cip_class_cm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
|
|||
static void
|
||||
dissect_cip_mb_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_length, packet_info *pinfo )
|
||||
{
|
||||
proto_item *pi, *rrsc_item;
|
||||
proto_item *rrsc_item;
|
||||
proto_tree *rrsc_tree, *cmd_data_tree;
|
||||
tvbuff_t *next_tvb;
|
||||
int req_path_size;
|
||||
|
@ -5529,8 +5497,7 @@ dissect_cip_mb_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_
|
|||
|
||||
/* Add Service code & Request/Response tree */
|
||||
service = tvb_get_guint8( tvb, offset );
|
||||
rrsc_item = proto_tree_add_text( item_tree, tvb, offset, 1, "Service: " );
|
||||
rrsc_tree = proto_item_add_subtree( rrsc_item, ett_mb_rrsc );
|
||||
rrsc_tree = proto_tree_add_subtree( item_tree, tvb, offset, 1, ett_mb_rrsc, &rrsc_item, "Service: " );
|
||||
|
||||
/* Add Request/Response */
|
||||
proto_tree_add_item( rrsc_tree, hf_cip_reqrsp, tvb, offset, 1, ENC_LITTLE_ENDIAN );
|
||||
|
@ -5553,8 +5520,8 @@ dissect_cip_mb_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_
|
|||
/* If there is any command specific data create a sub-tree for it */
|
||||
if( ( item_length-4-add_stat_size ) != 0 )
|
||||
{
|
||||
pi = proto_tree_add_text( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_mb_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size,
|
||||
ett_mb_cmd_data, NULL, "Command Specific Data" );
|
||||
|
||||
if( gen_status == CI_GRC_SUCCESS || gen_status == CI_GRC_SERVICE_ERROR )
|
||||
{
|
||||
|
@ -5629,8 +5596,8 @@ dissect_cip_mb_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_
|
|||
/* If there is any command specific data creat a sub-tree for it */
|
||||
if( (item_length-req_path_size-2) != 0 )
|
||||
{
|
||||
pi = proto_tree_add_text( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_mb_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2,
|
||||
ett_mb_cmd_data, NULL, "Command Specific Data" );
|
||||
|
||||
/* Check what service code that received */
|
||||
switch (service)
|
||||
|
@ -5729,7 +5696,7 @@ dissect_cip_class_mb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
|
|||
static int
|
||||
dissect_cip_cco_all_attribute_common( proto_tree *cmd_tree, tvbuff_t *tvb, int offset, int item_length, packet_info *pinfo)
|
||||
{
|
||||
proto_item *pi, *tdii, *ncpi, *iomapi, *confgi;
|
||||
proto_item *pi, *confgi;
|
||||
proto_tree *tdi_tree, *iomap_tree;
|
||||
proto_tree *ncp_tree, *confg_tree;
|
||||
int conn_path_size, variable_data_size = 0, config_data_size;
|
||||
|
@ -5750,8 +5717,7 @@ dissect_cip_cco_all_attribute_common( proto_tree *cmd_tree, tvbuff_t *tvb, int o
|
|||
proto_tree_add_item(confg_tree, hf_cip_cco_to_rtf, tvb, offset, 2, ENC_LITTLE_ENDIAN );
|
||||
|
||||
/* Target device id */
|
||||
tdii = proto_tree_add_text( cmd_tree, tvb, offset+2, 10, "Target Device ID");
|
||||
tdi_tree = proto_item_add_subtree(tdii, ett_cco_tdi);
|
||||
tdi_tree = proto_tree_add_subtree( cmd_tree, tvb, offset+2, 10, ett_cco_tdi, NULL, "Target Device ID");
|
||||
|
||||
dissect_deviceid(tvb, offset+2, tdi_tree,
|
||||
hf_cip_cco_tdi_vendor, hf_cip_cco_tdi_devtype, hf_cip_cco_tdi_prodcode,
|
||||
|
@ -5761,8 +5727,7 @@ dissect_cip_cco_all_attribute_common( proto_tree *cmd_tree, tvbuff_t *tvb, int o
|
|||
proto_tree_add_item(cmd_tree, hf_cip_cco_cs_data_index, tvb, offset+10, 4, ENC_LITTLE_ENDIAN );
|
||||
|
||||
/* Net Connection Parameters */
|
||||
ncpi = proto_tree_add_text( cmd_tree, tvb, offset+14, 14, "Net Connection Parameters");
|
||||
ncp_tree = proto_item_add_subtree(ncpi, ett_cco_ncp);
|
||||
ncp_tree = proto_tree_add_subtree( cmd_tree, tvb, offset+14, 14, ett_cco_ncp, NULL, "Net Connection Parameters");
|
||||
|
||||
/* Timeout multiplier */
|
||||
proto_tree_add_item(ncp_tree, hf_cip_cco_timeout_multiplier, tvb, offset+14, 1, ENC_LITTLE_ENDIAN );
|
||||
|
@ -5825,8 +5790,7 @@ dissect_cip_cco_all_attribute_common( proto_tree *cmd_tree, tvbuff_t *tvb, int o
|
|||
/* I/O Mapping */
|
||||
iomap_size = tvb_get_letohs( tvb, offset+variable_data_size+2);
|
||||
|
||||
iomapi = proto_tree_add_text( cmd_tree, tvb, offset+variable_data_size, iomap_size+2, "I/O Mapping");
|
||||
iomap_tree = proto_item_add_subtree(iomapi, ett_cco_iomap);
|
||||
iomap_tree = proto_tree_add_subtree( cmd_tree, tvb, offset+variable_data_size, iomap_size+2, ett_cco_iomap, NULL, "I/O Mapping");
|
||||
|
||||
proto_tree_add_item(iomap_tree, hf_cip_cco_iomap_format_number, tvb, offset+variable_data_size, 2, ENC_LITTLE_ENDIAN );
|
||||
proto_tree_add_uint_format_value(iomap_tree, hf_cip_cco_iomap_size, tvb, offset+variable_data_size+2, 2, iomap_size, "%d (bytes)", iomap_size);
|
||||
|
@ -5838,8 +5802,7 @@ dissect_cip_cco_all_attribute_common( proto_tree *cmd_tree, tvbuff_t *tvb, int o
|
|||
variable_data_size += (iomap_size+4);
|
||||
|
||||
/* Proxy device id */
|
||||
tdii = proto_tree_add_text( cmd_tree, tvb, offset+variable_data_size, 10, "Proxy Device ID");
|
||||
tdi_tree = proto_item_add_subtree(tdii, ett_cco_pdi);
|
||||
tdi_tree = proto_tree_add_subtree( cmd_tree, tvb, offset+variable_data_size, 10, ett_cco_pdi, NULL, "Proxy Device ID");
|
||||
|
||||
dissect_deviceid(tvb, offset+variable_data_size, tdi_tree,
|
||||
hf_cip_cco_pdi_vendor, hf_cip_cco_pdi_devtype, hf_cip_cco_pdi_prodcode,
|
||||
|
@ -5871,8 +5834,7 @@ dissect_cip_cco_all_attribute_common( proto_tree *cmd_tree, tvbuff_t *tvb, int o
|
|||
if (offset+variable_data_size < item_length)
|
||||
{
|
||||
/* Large Net Connection Parameter */
|
||||
ncpi = proto_tree_add_text( cmd_tree, tvb, offset+variable_data_size, 18, "Large Net Connection Parameters");
|
||||
ncp_tree = proto_item_add_subtree(ncpi, ett_cco_ncp);
|
||||
ncp_tree = proto_tree_add_subtree( cmd_tree, tvb, offset+variable_data_size, 18, ett_cco_ncp, NULL, "Large Net Connection Parameters");
|
||||
|
||||
proto_tree_add_item(ncp_tree, hf_cip_cco_timeout_multiplier, tvb, offset+variable_data_size, 1, ENC_LITTLE_ENDIAN );
|
||||
dissect_transport_type_trigger(tvb, offset+variable_data_size+1, ncp_tree, hf_cip_cco_transport_type_trigger,
|
||||
|
@ -5902,7 +5864,7 @@ return variable_data_size;
|
|||
static void
|
||||
dissect_cip_cco_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_length, packet_info *pinfo )
|
||||
{
|
||||
proto_item *pi, *rrsc_item, *con_sti;
|
||||
proto_item *rrsc_item;
|
||||
proto_tree *rrsc_tree, *cmd_data_tree, *con_st_tree;
|
||||
int req_path_size;
|
||||
int temp_data;
|
||||
|
@ -5914,8 +5876,7 @@ dissect_cip_cco_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item
|
|||
|
||||
/* Add Service code & Request/Response tree */
|
||||
service = tvb_get_guint8( tvb, offset );
|
||||
rrsc_item = proto_tree_add_text( item_tree, tvb, offset, 1, "Service: " );
|
||||
rrsc_tree = proto_item_add_subtree( rrsc_item, ett_cco_rrsc );
|
||||
rrsc_tree = proto_tree_add_subtree( item_tree, tvb, offset, 1, ett_cco_rrsc, &rrsc_item, "Service: " );
|
||||
|
||||
/* Add Request/Response */
|
||||
proto_tree_add_item( rrsc_tree, hf_cip_reqrsp, tvb, offset, 1, ENC_LITTLE_ENDIAN );
|
||||
|
@ -5954,8 +5915,8 @@ dissect_cip_cco_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item
|
|||
/* If there is any command specific data create a sub-tree for it */
|
||||
if( ( item_length-4-add_stat_size ) != 0 )
|
||||
{
|
||||
pi = proto_tree_add_text( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_cco_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size,
|
||||
ett_cco_cmd_data, NULL, "Command Specific Data" );
|
||||
|
||||
if( gen_status == CI_GRC_SUCCESS || gen_status == CI_GRC_SERVICE_ERROR )
|
||||
{
|
||||
|
@ -5978,8 +5939,7 @@ dissect_cip_cco_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item
|
|||
/* Get Attribute All (instance) request */
|
||||
|
||||
/* Connection status */
|
||||
con_sti = proto_tree_add_text( cmd_data_tree, tvb, offset+4+add_stat_size, 4, "Connection Status");
|
||||
con_st_tree = proto_item_add_subtree(con_sti, ett_cco_con_status);
|
||||
con_st_tree = proto_tree_add_subtree( cmd_data_tree, tvb, offset+4+add_stat_size, 4, ett_cco_con_status, NULL, "Connection Status");
|
||||
|
||||
proto_tree_add_item(con_st_tree, hf_cip_genstat, tvb, offset+4+add_stat_size, 1, ENC_LITTLE_ENDIAN );
|
||||
proto_tree_add_item(con_st_tree, hf_cip_pad8, tvb, offset+4+add_stat_size+1, 1, ENC_LITTLE_ENDIAN);
|
||||
|
@ -6020,8 +5980,8 @@ dissect_cip_cco_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item
|
|||
if( (item_length-req_path_size-2) != 0 )
|
||||
{
|
||||
|
||||
pi = proto_tree_add_text( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_cco_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2,
|
||||
ett_cco_cmd_data, NULL, "Command Specific Data" );
|
||||
|
||||
/* Check what service code that received */
|
||||
|
||||
|
@ -6151,7 +6111,7 @@ dissect_cip_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, packet_info
|
|||
{
|
||||
proto_item *ti;
|
||||
proto_tree *cip_tree;
|
||||
proto_item *pi, *rrsc_item, *status_item, *add_status_item;
|
||||
proto_item *pi, *rrsc_item, *status_item;
|
||||
proto_tree *rrsc_tree, *status_tree, *add_status_tree;
|
||||
int req_path_size;
|
||||
unsigned char i, gen_status, add_stat_size;
|
||||
|
@ -6186,8 +6146,7 @@ dissect_cip_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, packet_info
|
|||
if( service & CIP_SC_RESPONSE_MASK )
|
||||
{
|
||||
/* Response message */
|
||||
status_item = proto_tree_add_text( cip_tree, tvb, offset+2, 1, "Status: " );
|
||||
status_tree = proto_item_add_subtree( status_item, ett_status_item );
|
||||
status_tree = proto_tree_add_subtree( cip_tree, tvb, offset+2, 1, ett_status_item, &status_item, "Status: " );
|
||||
|
||||
/* Add general status */
|
||||
gen_status = tvb_get_guint8( tvb, offset+2 );
|
||||
|
@ -6208,8 +6167,7 @@ dissect_cip_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, packet_info
|
|||
if( add_stat_size )
|
||||
{
|
||||
/* Add additional status */
|
||||
add_status_item = proto_tree_add_text( status_tree, tvb, offset+4, add_stat_size*2, "Additional Status" );
|
||||
add_status_tree = proto_item_add_subtree( add_status_item, ett_add_status_item );
|
||||
add_status_tree = proto_tree_add_subtree( status_tree, tvb, offset+4, add_stat_size*2, ett_add_status_item, NULL, "Additional Status" );
|
||||
|
||||
for( i=0; i < add_stat_size; i ++ )
|
||||
proto_tree_add_item(add_status_tree, hf_cip_add_stat, tvb, offset+4+(i*2), 2, ENC_LITTLE_ENDIAN );
|
||||
|
|
|
@ -718,15 +718,14 @@ dissect_status_data_set(guint32 status_data_set, proto_tree* tree, tvbuff_t* tvb
|
|||
static guint32
|
||||
dissect_cntr_cyclic(guint32 con_format _U_, tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size, guint32 instance _U_)
|
||||
{
|
||||
proto_item *header_item, *temp_proto_item;
|
||||
proto_item *temp_proto_item;
|
||||
proto_tree *header_tree, *temp_proto_tree;
|
||||
guint32 temp_data;
|
||||
gboolean lreal_pos;
|
||||
guint32 bytes_used = 0;
|
||||
|
||||
/* Create the tree for the entire instance data header */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Cyclic Data Block");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_cyclic_data_block);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_cyclic_data_block, NULL, "Cyclic Data Block");
|
||||
|
||||
/* Add the control mode header field to the tree */
|
||||
proto_tree_add_item(header_tree, hf_cip_motor_cntrl, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
|
@ -808,14 +807,13 @@ dissect_cntr_cyclic(guint32 con_format _U_, tvbuff_t* tvb, proto_tree* tree, gui
|
|||
static guint32
|
||||
dissect_devce_cyclic(guint32 con_format _U_, tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size, guint32 instance _U_)
|
||||
{
|
||||
proto_item *header_item, *temp_proto_item;
|
||||
proto_item *temp_proto_item;
|
||||
proto_tree *header_tree, *temp_proto_tree;
|
||||
guint32 temp_data;
|
||||
guint32 bytes_used = 0;
|
||||
|
||||
/* Create the tree for the entire instance data header */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Cyclic Data Block");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_cyclic_data_block);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_cyclic_data_block, NULL, "Cyclic Data Block");
|
||||
|
||||
/* Add the control mode header field to the tree */
|
||||
proto_tree_add_item(header_tree, hf_cip_motor_cntrl, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
|
@ -883,12 +881,10 @@ dissect_devce_cyclic(guint32 con_format _U_, tvbuff_t* tvb, proto_tree* tree, gu
|
|||
static guint32
|
||||
dissect_cyclic_wt(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item;
|
||||
proto_tree *header_tree;
|
||||
|
||||
/* Create the tree for the entire cyclic write data block */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Cyclic Write Data Block");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_cyclic_rd_wt);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_cyclic_rd_wt, NULL, "Cyclic Write Data Block");
|
||||
|
||||
/* Display the cyclic write block id value */
|
||||
proto_tree_add_item(header_tree, hf_cip_cyclic_write_blk, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
|
@ -916,12 +912,10 @@ dissect_cyclic_wt(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
|||
static guint32
|
||||
dissect_cyclic_rd(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item;
|
||||
proto_tree *header_tree;
|
||||
|
||||
/* Create the tree for the entire cyclic write data block */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Cyclic Read Data Block");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_cyclic_rd_wt);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_cyclic_rd_wt, NULL, "Cyclic Read Data Block");
|
||||
|
||||
/* Display the cyclic write block id value */
|
||||
proto_tree_add_item(header_tree, hf_cip_cyclic_write_blk, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
|
@ -955,15 +949,14 @@ dissect_cyclic_rd(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
|||
static guint32
|
||||
dissect_cntr_event(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item, *temp_proto_item;
|
||||
proto_item *temp_proto_item;
|
||||
proto_tree *header_tree, *temp_proto_tree;
|
||||
guint32 temp_data;
|
||||
guint32 acks, cur_ack;
|
||||
guint32 bytes_used = 0;
|
||||
|
||||
/* Create the tree for the entire cyclic write data block */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Event Data Block");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_event);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_event, NULL, "Event Data Block");
|
||||
|
||||
/* Read the event checking control header field from the packet into memory */
|
||||
temp_data = tvb_get_letohl(tvb, offset);
|
||||
|
@ -1026,15 +1019,14 @@ dissect_cntr_event(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size
|
|||
static guint32
|
||||
dissect_devce_event(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item, *temp_proto_item;
|
||||
proto_item *temp_proto_item;
|
||||
proto_tree *header_tree, *temp_proto_tree;
|
||||
guint64 temp_data;
|
||||
guint64 nots, cur_not;
|
||||
guint32 bytes_used = 0;
|
||||
|
||||
/* Create the tree for the entire cyclic write data block */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Event Data Block");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_event);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_event, NULL, "Event Data Block");
|
||||
|
||||
/* Read the event checking control header field from the packet into memory */
|
||||
temp_data = tvb_get_letohl(tvb, offset);
|
||||
|
@ -1108,15 +1100,14 @@ dissect_devce_event(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 siz
|
|||
static void
|
||||
dissect_get_axis_attr_list_request (tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item, *attr_item;
|
||||
proto_item *attr_item;
|
||||
proto_tree *header_tree, *attr_tree;
|
||||
guint16 attribute, attribute_cnt;
|
||||
guint32 local_offset;
|
||||
guint8 increment_size, dimension;
|
||||
|
||||
/* Create the tree for the get axis attribute list request */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Get Axis Attribute List Request");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_get_axis_attribute);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_get_axis_attribute, NULL, "Get Axis Attribute List Request");
|
||||
|
||||
/* Read the number of attributes that are contained within the request */
|
||||
attribute_cnt = tvb_get_letohs(tvb, offset);
|
||||
|
@ -1167,7 +1158,7 @@ dissect_get_axis_attr_list_request (tvbuff_t* tvb, proto_tree* tree, guint32 off
|
|||
static void
|
||||
dissect_set_axis_attr_list_request (tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item, *attr_item;
|
||||
proto_item *attr_item;
|
||||
proto_tree *header_tree, *attr_tree;
|
||||
guint16 attribute, attribute_cnt, data_elements;
|
||||
guint32 local_offset;
|
||||
|
@ -1175,8 +1166,7 @@ dissect_set_axis_attr_list_request (tvbuff_t* tvb, proto_tree* tree, guint32 off
|
|||
guint8 dimension, attribute_start, increment_size;
|
||||
|
||||
/* Create the tree for the set axis attribute list request */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Set Axis Attribute List Request");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_set_axis_attribute);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_set_axis_attribute, NULL, "Set Axis Attribute List Request");
|
||||
|
||||
/* Read the number of attributes that are contained within the request */
|
||||
attribute_cnt = tvb_get_letohs(tvb, offset);
|
||||
|
@ -1247,12 +1237,10 @@ dissect_set_axis_attr_list_request (tvbuff_t* tvb, proto_tree* tree, guint32 off
|
|||
static void
|
||||
dissect_group_sync_request (tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item;
|
||||
proto_tree *header_tree;
|
||||
|
||||
/* Create the tree for the group sync request */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Group Sync Request");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_group_sync);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_group_sync, NULL, "Group Sync Request");
|
||||
|
||||
/* Read the grandmaster id from the payload */
|
||||
proto_tree_add_item(header_tree, hf_cip_ptp_grandmaster, tvb, offset, 8, ENC_LITTLE_ENDIAN);
|
||||
|
@ -1270,13 +1258,11 @@ dissect_group_sync_request (tvbuff_t* tvb, proto_tree* tree, guint32 offset, gui
|
|||
static guint32
|
||||
dissect_cntr_service(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item;
|
||||
proto_tree *header_tree;
|
||||
guint8 service;
|
||||
|
||||
/* Create the tree for the entire service data block */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Service Data Block");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_service);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_service, NULL, "Service Data Block");
|
||||
|
||||
/* Display the transaction id value */
|
||||
proto_tree_add_item(header_tree, hf_cip_svc_transction, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
|
@ -1315,14 +1301,13 @@ dissect_cntr_service(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 si
|
|||
static void
|
||||
dissect_set_axis_attr_list_response (tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item, *attr_item;
|
||||
proto_item *attr_item;
|
||||
proto_tree *header_tree, *attr_tree;
|
||||
guint16 attribute, attribute_cnt;
|
||||
guint32 local_offset;
|
||||
|
||||
/* Create the tree for the set axis attribute list response */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Set Axis Attribute List Response");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_get_axis_attribute);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_get_axis_attribute, NULL, "Set Axis Attribute List Response");
|
||||
|
||||
/* Read the number of attributes that are contained within the response */
|
||||
attribute_cnt = tvb_get_letohs(tvb, offset);
|
||||
|
@ -1356,7 +1341,7 @@ dissect_set_axis_attr_list_response (tvbuff_t* tvb, proto_tree* tree, guint32 of
|
|||
static void
|
||||
dissect_get_axis_attr_list_response (tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item, *attr_item;
|
||||
proto_item *attr_item;
|
||||
proto_tree *header_tree, *attr_tree;
|
||||
guint16 attribute, attribute_cnt, data_elements;
|
||||
guint32 attribute_size;
|
||||
|
@ -1364,8 +1349,7 @@ dissect_get_axis_attr_list_response (tvbuff_t* tvb, proto_tree* tree, guint32 of
|
|||
guint32 local_offset;
|
||||
|
||||
/* Create the tree for the get axis attribute list response */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Get Axis Attribute List Response");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_get_axis_attribute);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_get_axis_attribute, NULL, "Get Axis Attribute List Response");
|
||||
|
||||
/* Read the number of attributes that are contained within the request */
|
||||
attribute_cnt = tvb_get_letohs(tvb, offset);
|
||||
|
@ -1461,12 +1445,10 @@ dissect_group_sync_response (tvbuff_t* tvb, proto_tree* tree, guint32 offset, gu
|
|||
static guint32
|
||||
dissect_devce_service(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 size)
|
||||
{
|
||||
proto_item *header_item;
|
||||
proto_tree *header_tree;
|
||||
|
||||
/* Create the tree for the entire service data block */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, size, "Service Data Block");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_service);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, size, ett_service, NULL, "Service Data Block");
|
||||
|
||||
/* Display the transaction id value */
|
||||
proto_tree_add_item(header_tree, hf_cip_svc_transction, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
|
@ -1513,14 +1495,13 @@ dissect_var_inst_header(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint8*
|
|||
guint32* cyc_blk_size, guint32* evnt_size, guint32* servc_size)
|
||||
{
|
||||
guint8 temp_data;
|
||||
proto_item *header_item;
|
||||
proto_tree *header_tree;
|
||||
|
||||
/* Create the tree for the entire instance data header */
|
||||
*inst_number = tvb_get_guint8(tvb, offset);
|
||||
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, 8, "Instance Data Header - Instance: %d", *inst_number);
|
||||
header_tree = proto_item_add_subtree(header_item, ett_inst_data_header);
|
||||
header_tree = proto_tree_add_subtree_format(tree, tvb, offset, 8, ett_inst_data_header, NULL,
|
||||
"Instance Data Header - Instance: %d", *inst_number);
|
||||
|
||||
/* Read the instance number field from the instance data header */
|
||||
proto_tree_add_item(header_tree, hf_var_devce_instance, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
|
@ -1571,7 +1552,7 @@ dissect_var_cont_conn_header(tvbuff_t* tvb, proto_tree* tree, guint32* inst_coun
|
|||
{
|
||||
guint32 header_size;
|
||||
guint32 temp_data;
|
||||
proto_item *header_item, *temp_proto_item;
|
||||
proto_item *temp_proto_item;
|
||||
proto_tree *header_tree, *temp_proto_tree;
|
||||
|
||||
/* Calculate the header size, start with the basic header size */
|
||||
|
@ -1591,8 +1572,7 @@ dissect_var_cont_conn_header(tvbuff_t* tvb, proto_tree* tree, guint32* inst_coun
|
|||
}
|
||||
|
||||
/* Create the tree for the entire connection header */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, header_size, "Connection Header");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_cont_dev_header);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, header_size, ett_cont_dev_header, NULL, "Connection Header");
|
||||
|
||||
/* Add the connection header fields that are common to all types of messages */
|
||||
proto_tree_add_item(header_tree, hf_cip_format, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
|
@ -1661,7 +1641,7 @@ dissect_var_devce_conn_header(tvbuff_t* tvb, proto_tree* tree, guint32* inst_cou
|
|||
{
|
||||
guint32 header_size;
|
||||
guint32 temp_data;
|
||||
proto_item *header_item, *temp_proto_item;
|
||||
proto_item *temp_proto_item;
|
||||
proto_tree *header_tree, *temp_proto_tree;
|
||||
|
||||
/* Calculate the header size, start with the basic header size */
|
||||
|
@ -1686,8 +1666,7 @@ dissect_var_devce_conn_header(tvbuff_t* tvb, proto_tree* tree, guint32* inst_cou
|
|||
}
|
||||
|
||||
/* Create the tree for the entire connection header */
|
||||
header_item = proto_tree_add_text(tree, tvb, offset, header_size, "Connection Header");
|
||||
header_tree = proto_item_add_subtree(header_item, ett_cont_dev_header);
|
||||
header_tree = proto_tree_add_subtree(tree, tvb, offset, header_size, ett_cont_dev_header, NULL, "Connection Header");
|
||||
|
||||
/* Add the connection header fields that are common to all types of messages */
|
||||
proto_tree_add_item(header_tree, hf_cip_format, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
|
|
|
@ -438,12 +438,10 @@ dissect_unid(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, proto_item *pi,
|
|||
int hf_ssn_date, int hf_ssn_time, int hf_macid, gint ett, gint ett_ssn)
|
||||
{
|
||||
proto_tree *tree, *ssn_tree;
|
||||
proto_item *ssn_item;
|
||||
|
||||
tree = proto_item_add_subtree(pi, ett);
|
||||
|
||||
ssn_item = proto_tree_add_text(tree, tvb, offset, 6, "%s", ssn_name);
|
||||
ssn_tree = proto_item_add_subtree(ssn_item, ett_ssn);
|
||||
ssn_tree = proto_tree_add_subtree(tree, tvb, offset, 6, ett_ssn, NULL, ssn_name);
|
||||
dissect_cipsafety_ssn(ssn_tree, tvb, pinfo, offset, hf_ssn_timestamp, hf_ssn_date, hf_ssn_time);
|
||||
|
||||
proto_tree_add_item(tree, hf_macid, tvb, offset+6, 4, ENC_LITTLE_ENDIAN);
|
||||
|
@ -490,8 +488,7 @@ dissect_cip_s_supervisor_data( proto_tree *item_tree,
|
|||
|
||||
/* Add Service code & Request/Response tree */
|
||||
service = tvb_get_guint8( tvb, offset );
|
||||
rrsc_item = proto_tree_add_text( item_tree, tvb, offset, 1, "Service: " );
|
||||
rrsc_tree = proto_item_add_subtree( rrsc_item, ett_ssupervisor_rrsc );
|
||||
rrsc_tree = proto_tree_add_subtree( item_tree, tvb, offset, 1, ett_ssupervisor_rrsc, &rrsc_item, "Service: " );
|
||||
|
||||
/* Add Request/Response */
|
||||
proto_tree_add_item( rrsc_tree, hf_cip_reqrsp, tvb, offset, 1, ENC_LITTLE_ENDIAN );
|
||||
|
@ -528,9 +525,8 @@ dissect_cip_s_supervisor_data( proto_tree *item_tree,
|
|||
/* If there is any command specific data create a sub-tree for it */
|
||||
if( ( item_length-4-add_stat_size ) != 0 )
|
||||
{
|
||||
pi = proto_tree_add_text( item_tree,
|
||||
tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_ssupervisor_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+4+add_stat_size,
|
||||
item_length-4-add_stat_size, ett_ssupervisor_cmd_data, NULL, "Command Specific Data" );
|
||||
|
||||
if( gen_status == CI_GRC_SUCCESS || gen_status == CI_GRC_SERVICE_ERROR )
|
||||
{
|
||||
|
@ -579,9 +575,8 @@ dissect_cip_s_supervisor_data( proto_tree *item_tree,
|
|||
/* If there is any command specific data create a sub-tree for it */
|
||||
if( (item_length-req_path_size-2) != 0 )
|
||||
{
|
||||
pi = proto_tree_add_text( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2,
|
||||
"Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_ssupervisor_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2,
|
||||
ett_ssupervisor_cmd_data, NULL, "Command Specific Data" );
|
||||
|
||||
/* Check what service code that received */
|
||||
switch (service)
|
||||
|
@ -764,8 +759,7 @@ static int dissect_s_supervisor_exception_detail_alarm(packet_info *pinfo, proto
|
|||
proto_tree *item_tree;
|
||||
int total_size = 0, size;
|
||||
|
||||
pi = proto_tree_add_text(tree, tvb, offset, 1, "Common Exception Detail");
|
||||
item_tree = proto_item_add_subtree(pi, ett_exception_detail_alarm_common);
|
||||
item_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_exception_detail_alarm_common, &pi, "Common Exception Detail");
|
||||
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
|
||||
hf_cip_ssupervisor_exception_detail_alarm_ced_size,
|
||||
hf_cip_ssupervisor_exception_detail_alarm_ced_detail);
|
||||
|
@ -776,8 +770,7 @@ static int dissect_s_supervisor_exception_detail_alarm(packet_info *pinfo, proto
|
|||
}
|
||||
total_size += size;
|
||||
|
||||
pi = proto_tree_add_text(tree, tvb, offset, 1, "Device Exception Detail");
|
||||
item_tree = proto_item_add_subtree(pi, ett_exception_detail_alarm_device);
|
||||
item_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_exception_detail_alarm_device, &pi, "Device Exception Detail");
|
||||
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
|
||||
hf_cip_ssupervisor_exception_detail_alarm_ded_size,
|
||||
hf_cip_ssupervisor_exception_detail_alarm_ded_detail);
|
||||
|
@ -788,8 +781,7 @@ static int dissect_s_supervisor_exception_detail_alarm(packet_info *pinfo, proto
|
|||
}
|
||||
total_size += size;
|
||||
|
||||
pi = proto_tree_add_text(tree, tvb, offset, 1, "Manufacturer Exception Detail");
|
||||
item_tree = proto_item_add_subtree(pi, ett_exception_detail_alarm_manufacturer);
|
||||
item_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_exception_detail_alarm_manufacturer, &pi, "Manufacturer Exception Detail");
|
||||
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
|
||||
hf_cip_ssupervisor_exception_detail_alarm_med_size,
|
||||
hf_cip_ssupervisor_exception_detail_alarm_med_detail);
|
||||
|
@ -810,8 +802,7 @@ static int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, pro
|
|||
proto_tree *item_tree;
|
||||
int total_size = 0, size;
|
||||
|
||||
pi = proto_tree_add_text(tree, tvb, offset, 1, "Common Exception Detail");
|
||||
item_tree = proto_item_add_subtree(pi, ett_exception_detail_warning_common);
|
||||
item_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_exception_detail_warning_common, &pi, "Common Exception Detail");
|
||||
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
|
||||
hf_cip_ssupervisor_exception_detail_warning_ced_size,
|
||||
hf_cip_ssupervisor_exception_detail_warning_ced_detail);
|
||||
|
@ -822,8 +813,7 @@ static int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, pro
|
|||
}
|
||||
total_size += size;
|
||||
|
||||
pi = proto_tree_add_text(tree, tvb, offset, 1, "Device Exception Detail");
|
||||
item_tree = proto_item_add_subtree(pi, ett_exception_detail_warning_device);
|
||||
item_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_exception_detail_warning_device, &pi, "Device Exception Detail");
|
||||
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
|
||||
hf_cip_ssupervisor_exception_detail_warning_ded_size,
|
||||
hf_cip_ssupervisor_exception_detail_warning_ded_detail);
|
||||
|
@ -834,8 +824,7 @@ static int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, pro
|
|||
}
|
||||
total_size += size;
|
||||
|
||||
pi = proto_tree_add_text(tree, tvb, offset, 1, "Manufacturer Exception Detail");
|
||||
item_tree = proto_item_add_subtree(pi, ett_exception_detail_warning_manufacturer);
|
||||
item_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_exception_detail_warning_manufacturer, &pi, "Manufacturer Exception Detail");
|
||||
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
|
||||
hf_cip_ssupervisor_exception_detail_warning_med_size,
|
||||
hf_cip_ssupervisor_exception_detail_warning_med_detail);
|
||||
|
@ -1152,8 +1141,7 @@ dissect_cip_s_validator_data( proto_tree *item_tree,
|
|||
|
||||
/* Add Service code & Request/Response tree */
|
||||
service = tvb_get_guint8( tvb, offset );
|
||||
rrsc_item = proto_tree_add_text( item_tree, tvb, offset, 1, "Service: " );
|
||||
rrsc_tree = proto_item_add_subtree( rrsc_item, ett_svalidator_rrsc );
|
||||
rrsc_tree = proto_tree_add_subtree( item_tree, tvb, offset, 1, ett_svalidator_rrsc, &rrsc_item, "Service: " );
|
||||
|
||||
/* Add Request/Response */
|
||||
proto_tree_add_item( rrsc_tree, hf_cip_reqrsp, tvb, offset, 1, ENC_LITTLE_ENDIAN );
|
||||
|
@ -1192,9 +1180,8 @@ dissect_cip_s_validator_data( proto_tree *item_tree,
|
|||
/* If there is any command specific data create a sub-tree for it */
|
||||
if( ( item_length-4-add_stat_size ) != 0 )
|
||||
{
|
||||
pi = proto_tree_add_text( item_tree,
|
||||
tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_ssupervisor_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size,
|
||||
ett_ssupervisor_cmd_data, &pi, "Command Specific Data" );
|
||||
|
||||
if( gen_status == CI_GRC_SUCCESS || gen_status == CI_GRC_SERVICE_ERROR )
|
||||
{
|
||||
|
@ -1278,9 +1265,8 @@ dissect_cip_s_validator_data( proto_tree *item_tree,
|
|||
/* If there is any command specific data create a sub-tree for it */
|
||||
if( (item_length-req_path_size-2) != 0 )
|
||||
{
|
||||
pi = proto_tree_add_text( item_tree,
|
||||
tvb, offset+2+req_path_size, item_length-req_path_size-2, "Command Specific Data" );
|
||||
cmd_data_tree = proto_item_add_subtree( pi, ett_ssupervisor_cmd_data );
|
||||
cmd_data_tree = proto_tree_add_subtree( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2,
|
||||
ett_ssupervisor_cmd_data, NULL, "Command Specific Data" );
|
||||
proto_tree_add_item(cmd_data_tree, hf_cip_data,
|
||||
tvb, offset+2+req_path_size, item_length-req_path_size-2, ENC_NA);
|
||||
}
|
||||
|
|
|
@ -373,11 +373,10 @@ dissect_classicstun(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *d
|
|||
att_type = tvb_get_ntohs(tvb, offset); /* Type field in attribute header */
|
||||
att_length = tvb_get_ntohs(tvb, offset+2); /* Length field in attribute header */
|
||||
|
||||
ta = proto_tree_add_text(att_type_tree, tvb, offset,
|
||||
ATTR_HDR_LEN+att_length,
|
||||
att_tree = proto_tree_add_subtree_format(att_type_tree, tvb, offset,
|
||||
ATTR_HDR_LEN+att_length, ett_classicstun_att, NULL,
|
||||
"Attribute: %s",
|
||||
val_to_str(att_type, attributes, "Unknown (0x%04x)"));
|
||||
att_tree = proto_item_add_subtree(ta, ett_classicstun_att);
|
||||
|
||||
proto_tree_add_uint(att_tree, classicstun_att_type, tvb,
|
||||
offset, 2, att_type);
|
||||
|
|
|
@ -50,7 +50,6 @@ static void
|
|||
dissect_clip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
proto_tree *fh_tree;
|
||||
proto_item *ti;
|
||||
|
||||
pinfo->current_proto = "CLIP";
|
||||
|
||||
|
@ -85,8 +84,7 @@ dissect_clip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
for both of those cases, to avoid the headache of having to
|
||||
generate capture-filter code to handle both of those cases. */
|
||||
if(tree) {
|
||||
ti = proto_tree_add_text(tree, tvb, 0, 0, "Classical IP frame" );
|
||||
fh_tree = proto_item_add_subtree(ti, ett_clip);
|
||||
fh_tree = proto_tree_add_subtree(tree, tvb, 0, 0, ett_clip, NULL, "Classical IP frame" );
|
||||
proto_tree_add_text(fh_tree, tvb, 0, 0, "No link information available");
|
||||
}
|
||||
call_dissector(ip_handle, tvb, pinfo, tree);
|
||||
|
|
|
@ -135,11 +135,9 @@ dissect_sender_array(proto_tree *clique_rm_tree, int hf_header, gint ett_header,
|
|||
static void
|
||||
dissect_data_packet(proto_tree *clique_rm_tree, tvbuff_t *tvb, int offset)
|
||||
{
|
||||
proto_item *ti;
|
||||
proto_tree *tree;
|
||||
|
||||
ti = proto_tree_add_text(clique_rm_tree, tvb, offset, -1, "Data");
|
||||
tree = proto_item_add_subtree(ti, ett_clique_rm_data);
|
||||
tree = proto_tree_add_subtree(clique_rm_tree, tvb, offset, -1, ett_clique_rm_data, NULL, "Data");
|
||||
|
||||
proto_tree_add_item(tree, hf_clique_rm_data_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset += 1;
|
||||
|
@ -152,14 +150,13 @@ dissect_data_packet(proto_tree *clique_rm_tree, tvbuff_t *tvb, int offset)
|
|||
offset += 4;
|
||||
|
||||
|
||||
proto_tree_add_item(tree, hf_clique_rm_data_data, tvb, offset,
|
||||
tvb_length_remaining(tvb, offset), ENC_NA);
|
||||
proto_tree_add_item(tree, hf_clique_rm_data_data, tvb, offset, -1, ENC_NA);
|
||||
}
|
||||
|
||||
static int
|
||||
dissect_depends(proto_tree *clique_rm_tree, tvbuff_t *tvb, int offset)
|
||||
{
|
||||
proto_item *ti, *depend_item;
|
||||
proto_item *ti;
|
||||
proto_tree *tree, *depend_tree;
|
||||
guint ii, count;
|
||||
int len;
|
||||
|
@ -175,8 +172,8 @@ dissect_depends(proto_tree *clique_rm_tree, tvbuff_t *tvb, int offset)
|
|||
tree = proto_item_add_subtree(ti, ett_clique_rm_depends);
|
||||
for (ii = 0; ii < count; ii++)
|
||||
{
|
||||
depend_item = proto_tree_add_text(tree, tvb, offset, 8, "Depend item %d", ii+1);
|
||||
depend_tree = proto_item_add_subtree(depend_item, ett_clique_rm_depends_item);
|
||||
depend_tree = proto_tree_add_subtree_format(tree, tvb, offset, 8,
|
||||
ett_clique_rm_depends_item, NULL, "Depend item %d", ii+1);
|
||||
|
||||
proto_tree_add_item(depend_tree, hf_clique_rm_depend_sender,
|
||||
tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
|
|
|
@ -580,9 +580,8 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
next_length = tvb_length_remaining(tvb, offset);
|
||||
if (next_length != 0) {
|
||||
/* We have payload; dissect it. */
|
||||
ti = proto_tree_add_text(clnp_tree, tvb, offset, next_length,
|
||||
"Discarded PDU");
|
||||
discpdu_tree = proto_item_add_subtree(ti, ett_clnp_disc_pdu);
|
||||
discpdu_tree = proto_tree_add_subtree(clnp_tree, tvb, offset, next_length,
|
||||
ett_clnp_disc_pdu, NULL, "Discarded PDU");
|
||||
|
||||
/* Save the current value of the "we're inside an error packet"
|
||||
flag, and set that flag; subdissectors may treat packets
|
||||
|
|
|
@ -284,12 +284,10 @@ collectd_proto_tree_add_assembled_metric (tvbuff_t *tvb,
|
|||
proto_tree *subtree;
|
||||
nstime_t nstime;
|
||||
|
||||
root_item = proto_tree_add_text (root, tvb, offset + 6, length - 6,
|
||||
"Assembled metric");
|
||||
subtree = proto_tree_add_subtree(root, tvb, offset + 6, length - 6,
|
||||
ett_collectd_dispatch, &root_item, "Assembled metric");
|
||||
PROTO_ITEM_SET_GENERATED (root_item);
|
||||
|
||||
subtree = proto_item_add_subtree (root_item, ett_collectd_dispatch);
|
||||
|
||||
proto_tree_add_string (subtree, hf_collectd_data_host, tvb,
|
||||
vdispatch->host_off, vdispatch->host_len,
|
||||
STR_NONNULL (vdispatch->host));
|
||||
|
@ -334,12 +332,10 @@ collectd_proto_tree_add_assembled_notification (tvbuff_t *tvb,
|
|||
proto_tree *subtree;
|
||||
nstime_t nstime;
|
||||
|
||||
root_item = proto_tree_add_text (root, tvb, offset + 6, length - 6,
|
||||
"Assembled notification");
|
||||
subtree = proto_tree_add_subtree(root, tvb, offset + 6, length - 6,
|
||||
ett_collectd_dispatch, &root_item, "Assembled notification");
|
||||
PROTO_ITEM_SET_GENERATED (root_item);
|
||||
|
||||
subtree = proto_item_add_subtree (root_item, ett_collectd_dispatch);
|
||||
|
||||
proto_tree_add_string (subtree, hf_collectd_data_host, tvb,
|
||||
ndispatch->host_off, ndispatch->host_len,
|
||||
STR_NONNULL (ndispatch->host));
|
||||
|
@ -397,15 +393,14 @@ dissect_collectd_string (tvbuff_t *tvb, packet_info *pinfo, gint type_hf,
|
|||
|
||||
*ret_string = tvb_get_string_enc(wmem_packet_scope(), tvb, *ret_offset, *ret_length, ENC_ASCII);
|
||||
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, length,
|
||||
"collectd %s segment: \"%s\"",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, length,
|
||||
ett_collectd_string, &pi, "collectd %s segment: \"%s\"",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"),
|
||||
*ret_string);
|
||||
|
||||
if (ret_item != NULL)
|
||||
*ret_item = pi;
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_string);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2, length);
|
||||
proto_tree_add_item (pt, type_hf, tvb, *ret_offset, *ret_length, ENC_ASCII|ENC_NA);
|
||||
|
@ -437,11 +432,10 @@ dissect_collectd_integer (tvbuff_t *tvb, packet_info *pinfo, gint type_hf,
|
|||
|
||||
if (size < 12)
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, -1,
|
||||
"collectd %s segment: <BAD>",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, -1,
|
||||
ett_collectd_integer, NULL, "collectd %s segment: <BAD>",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_integer);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2,
|
||||
type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2,
|
||||
|
@ -455,11 +449,10 @@ dissect_collectd_integer (tvbuff_t *tvb, packet_info *pinfo, gint type_hf,
|
|||
|
||||
if (length != 12)
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, -1,
|
||||
"collectd %s segment: <BAD>",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, -1,
|
||||
ett_collectd_integer, &pi, "collectd %s segment: <BAD>",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_integer);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2,
|
||||
type);
|
||||
pi = proto_tree_add_uint (pt, hf_collectd_length, tvb,
|
||||
|
@ -487,8 +480,8 @@ dissect_collectd_integer (tvbuff_t *tvb, packet_info *pinfo, gint type_hf,
|
|||
|
||||
nstime = collectd_time_to_nstime (*ret_value);
|
||||
strtime = abs_time_to_str (wmem_packet_scope(), &nstime, ABSOLUTE_TIME_LOCAL, /* show_zone = */ TRUE);
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, length,
|
||||
"collectd %s segment: %s",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, length,
|
||||
ett_collectd_integer, &pi, "collectd %s segment: %s",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"),
|
||||
STR_NONNULL (strtime));
|
||||
}
|
||||
|
@ -499,15 +492,15 @@ dissect_collectd_integer (tvbuff_t *tvb, packet_info *pinfo, gint type_hf,
|
|||
|
||||
nstime = collectd_time_to_nstime (*ret_value);
|
||||
strtime = rel_time_to_str (wmem_packet_scope(), &nstime);
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, length,
|
||||
"collectd %s segment: %s",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, length,
|
||||
ett_collectd_integer, &pi, "collectd %s segment: %s",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"),
|
||||
strtime);
|
||||
}
|
||||
else
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, length,
|
||||
"collectd %s segment: %"G_GINT64_MODIFIER"u",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, length,
|
||||
ett_collectd_integer, &pi, "collectd %s segment: %"G_GINT64_MODIFIER"u",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"),
|
||||
*ret_value);
|
||||
}
|
||||
|
@ -515,7 +508,6 @@ dissect_collectd_integer (tvbuff_t *tvb, packet_info *pinfo, gint type_hf,
|
|||
if (ret_item != NULL)
|
||||
*ret_item = pi;
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_integer);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2,
|
||||
length);
|
||||
|
@ -539,16 +531,13 @@ static void
|
|||
dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
|
||||
proto_tree *collectd_tree)
|
||||
{
|
||||
proto_item *pi;
|
||||
proto_tree *values_tree, *value_tree;
|
||||
gint i;
|
||||
|
||||
pi = proto_tree_add_text (collectd_tree, tvb, msg_off + 6, val_cnt * 9,
|
||||
"%d value%s", val_cnt,
|
||||
values_tree = proto_tree_add_subtree_format(collectd_tree, tvb, msg_off + 6, val_cnt * 9,
|
||||
ett_collectd_value, NULL, "%d value%s", val_cnt,
|
||||
plurality (val_cnt, "", "s"));
|
||||
|
||||
values_tree = proto_item_add_subtree (pi, ett_collectd_value);
|
||||
|
||||
for (i = 0; i < val_cnt; i++)
|
||||
{
|
||||
gint value_offset;
|
||||
|
@ -570,12 +559,10 @@ dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
|
|||
guint64 val64;
|
||||
|
||||
val64 = tvb_get_ntoh64 (tvb, value_offset);
|
||||
pi = proto_tree_add_text (values_tree, tvb, msg_off + 6,
|
||||
val_cnt * 9,
|
||||
value_tree = proto_tree_add_subtree_format(values_tree, tvb, msg_off + 6,
|
||||
val_cnt * 9, ett_collectd_valinfo, NULL,
|
||||
"Counter: %"G_GINT64_MODIFIER"u", val64);
|
||||
|
||||
value_tree = proto_item_add_subtree (pi,
|
||||
ett_collectd_valinfo);
|
||||
proto_tree_add_item (value_tree, hf_collectd_val_type,
|
||||
tvb, value_type_offset, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (value_tree,
|
||||
|
@ -589,12 +576,10 @@ dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
|
|||
gdouble val;
|
||||
|
||||
val = tvb_get_letohieee_double (tvb, value_offset);
|
||||
pi = proto_tree_add_text (values_tree, tvb, msg_off + 6,
|
||||
val_cnt * 9,
|
||||
value_tree = proto_tree_add_subtree_format(values_tree, tvb, msg_off + 6,
|
||||
val_cnt * 9, ett_collectd_valinfo, NULL,
|
||||
"Gauge: %g", val);
|
||||
|
||||
value_tree = proto_item_add_subtree (pi,
|
||||
ett_collectd_valinfo);
|
||||
proto_tree_add_item (value_tree, hf_collectd_val_type,
|
||||
tvb, value_type_offset, 1, ENC_BIG_ENDIAN);
|
||||
/* Set the `little endian' flag to TRUE here, because
|
||||
|
@ -609,12 +594,10 @@ dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
|
|||
gint64 val64;
|
||||
|
||||
val64 = tvb_get_ntoh64 (tvb, value_offset);
|
||||
pi = proto_tree_add_text (values_tree, tvb, msg_off + 6,
|
||||
val_cnt * 9,
|
||||
value_tree = proto_tree_add_subtree_format(values_tree, tvb, msg_off + 6,
|
||||
val_cnt * 9, ett_collectd_valinfo, NULL,
|
||||
"Derive: %"G_GINT64_MODIFIER"i", val64);
|
||||
|
||||
value_tree = proto_item_add_subtree (pi,
|
||||
ett_collectd_valinfo);
|
||||
proto_tree_add_item (value_tree, hf_collectd_val_type,
|
||||
tvb, value_type_offset, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (value_tree,
|
||||
|
@ -628,12 +611,10 @@ dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
|
|||
guint64 val64;
|
||||
|
||||
val64 = tvb_get_ntoh64 (tvb, value_offset);
|
||||
pi = proto_tree_add_text (values_tree, tvb, msg_off + 6,
|
||||
val_cnt * 9,
|
||||
value_tree = proto_tree_add_subtree_format(values_tree, tvb, msg_off + 6,
|
||||
val_cnt * 9, ett_collectd_valinfo, NULL,
|
||||
"Absolute: %"G_GINT64_MODIFIER"u", val64);
|
||||
|
||||
value_tree = proto_item_add_subtree (pi,
|
||||
ett_collectd_valinfo);
|
||||
proto_tree_add_item (value_tree, hf_collectd_val_type,
|
||||
tvb, value_type_offset, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (value_tree,
|
||||
|
@ -647,13 +628,11 @@ dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
|
|||
guint64 val64;
|
||||
|
||||
val64 = tvb_get_ntoh64 (tvb, value_offset);
|
||||
pi = proto_tree_add_text (values_tree, tvb, msg_off + 6,
|
||||
val_cnt * 9,
|
||||
value_tree = proto_tree_add_subtree_format(values_tree, tvb, msg_off + 6,
|
||||
val_cnt * 9, ett_collectd_valinfo, NULL,
|
||||
"Unknown: %"G_GINT64_MODIFIER"x",
|
||||
val64);
|
||||
|
||||
value_tree = proto_item_add_subtree (pi,
|
||||
ett_collectd_valinfo);
|
||||
proto_tree_add_item (value_tree, hf_collectd_val_type,
|
||||
tvb, value_type_offset, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (value_tree, hf_collectd_val_unknown,
|
||||
|
@ -689,11 +668,10 @@ dissect_collectd_part_values (tvbuff_t *tvb, packet_info *pinfo, gint offset,
|
|||
|
||||
if (size < 15)
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, -1,
|
||||
"collectd %s segment: <BAD>",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, -1,
|
||||
ett_collectd_part_value, NULL, "collectd %s segment: <BAD>",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_part_value);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2,
|
||||
length);
|
||||
|
@ -705,11 +683,10 @@ dissect_collectd_part_values (tvbuff_t *tvb, packet_info *pinfo, gint offset,
|
|||
|
||||
if ((length < 15) || ((length % 9) != 6))
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, -1,
|
||||
"collectd %s segment: <BAD>",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, -1,
|
||||
ett_collectd_part_value, &pi, "collectd %s segment: <BAD>",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_part_value);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
pi = proto_tree_add_uint (pt, hf_collectd_length, tvb,
|
||||
offset + 2, 2, length);
|
||||
|
@ -724,7 +701,8 @@ dissect_collectd_part_values (tvbuff_t *tvb, packet_info *pinfo, gint offset,
|
|||
|
||||
if (values_count != corrected_values_count)
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, length,
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, length,
|
||||
ett_collectd_part_value, NULL,
|
||||
"collectd %s segment: %d (%d) value%s <BAD>",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"),
|
||||
values_count, corrected_values_count,
|
||||
|
@ -732,14 +710,14 @@ dissect_collectd_part_values (tvbuff_t *tvb, packet_info *pinfo, gint offset,
|
|||
}
|
||||
else
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, length,
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, length,
|
||||
ett_collectd_part_value, NULL,
|
||||
"collectd %s segment: %d value%s",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"),
|
||||
values_count,
|
||||
plurality(values_count, "", "s"));
|
||||
}
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_part_value);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2, length);
|
||||
|
||||
|
@ -780,11 +758,10 @@ dissect_collectd_signature (tvbuff_t *tvb, packet_info *pinfo,
|
|||
|
||||
if (size < 36) /* remaining packet size too small for signature */
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, -1,
|
||||
"collectd %s segment: <BAD>",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, -1,
|
||||
ett_collectd_signature, NULL, "collectd %s segment: <BAD>",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_signature);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2,
|
||||
length);
|
||||
|
@ -796,11 +773,10 @@ dissect_collectd_signature (tvbuff_t *tvb, packet_info *pinfo,
|
|||
|
||||
if (length < 36)
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, -1,
|
||||
"collectd %s segment: <BAD>",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, -1,
|
||||
ett_collectd_signature, NULL, "collectd %s segment: <BAD>",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_signature);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
pi = proto_tree_add_uint (pt, hf_collectd_length, tvb,
|
||||
offset + 2, 2, length);
|
||||
|
@ -810,11 +786,10 @@ dissect_collectd_signature (tvbuff_t *tvb, packet_info *pinfo,
|
|||
return (-1);
|
||||
}
|
||||
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, length,
|
||||
"collectd %s segment: HMAC-SHA-256",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, length,
|
||||
ett_collectd_signature, NULL, "collectd %s segment: HMAC-SHA-256",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_signature);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2,
|
||||
length);
|
||||
|
@ -848,11 +823,10 @@ dissect_collectd_encrypted (tvbuff_t *tvb, packet_info *pinfo,
|
|||
|
||||
if (size < 42) /* remaining packet size too small for signature */
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, -1,
|
||||
"collectd %s segment: <BAD>",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, -1,
|
||||
ett_collectd_encryption, NULL, "collectd %s segment: <BAD>",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_encryption);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2,
|
||||
length);
|
||||
|
@ -864,11 +838,10 @@ dissect_collectd_encrypted (tvbuff_t *tvb, packet_info *pinfo,
|
|||
|
||||
if (length < 42)
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, -1,
|
||||
"collectd %s segment: <BAD>",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, -1,
|
||||
ett_collectd_encryption, NULL, "collectd %s segment: <BAD>",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_encryption);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
pi = proto_tree_add_uint (pt, hf_collectd_length, tvb,
|
||||
offset + 2, 2, length);
|
||||
|
@ -881,11 +854,10 @@ dissect_collectd_encrypted (tvbuff_t *tvb, packet_info *pinfo,
|
|||
username_length = tvb_get_ntohs (tvb, offset + 4);
|
||||
if (username_length > (length - 42))
|
||||
{
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, -1,
|
||||
"collectd %s segment: <BAD>",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, -1,
|
||||
ett_collectd_encryption, NULL, "collectd %s segment: <BAD>",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_encryption);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb,
|
||||
offset + 2, 2, length);
|
||||
|
@ -897,11 +869,10 @@ dissect_collectd_encrypted (tvbuff_t *tvb, packet_info *pinfo,
|
|||
return (-1);
|
||||
}
|
||||
|
||||
pi = proto_tree_add_text (tree_root, tvb, offset, length,
|
||||
"collectd %s segment: AES-256",
|
||||
pt = proto_tree_add_subtree_format(tree_root, tvb, offset, length,
|
||||
ett_collectd_encryption, NULL, "collectd %s segment: AES-256",
|
||||
val_to_str_const (type, part_names, "UNKNOWN"));
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_encryption);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2, length);
|
||||
proto_tree_add_uint (pt, hf_collectd_data_username_len, tvb, offset + 4, 2, username_length);
|
||||
|
@ -1084,13 +1055,12 @@ dissect_collectd (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
* provided in the packet.. */
|
||||
if ((part_length < 4) || (part_length > size))
|
||||
{
|
||||
pi = proto_tree_add_text (collectd_tree, tvb,
|
||||
offset, part_length,
|
||||
pt = proto_tree_add_subtree_format(collectd_tree, tvb,
|
||||
offset, part_length, ett_collectd_invalid_length, NULL,
|
||||
"collectd %s segment: Length = %i <BAD>",
|
||||
val_to_str_const (part_type, part_names, "UNKNOWN"),
|
||||
part_length);
|
||||
|
||||
pt = proto_item_add_subtree (pi, ett_collectd_invalid_length);
|
||||
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset,
|
||||
2, part_type);
|
||||
pi = proto_tree_add_uint (pt, hf_collectd_length, tvb,
|
||||
|
@ -1322,13 +1292,12 @@ dissect_collectd (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
default:
|
||||
{
|
||||
pkt_unknown++;
|
||||
pi = proto_tree_add_text (collectd_tree, tvb,
|
||||
offset, part_length,
|
||||
pt = proto_tree_add_subtree_format(collectd_tree, tvb,
|
||||
offset, part_length, ett_collectd_unknown, NULL,
|
||||
"collectd %s segment: %i bytes",
|
||||
val_to_str_const(part_type, part_names, "UNKNOWN"),
|
||||
part_length);
|
||||
|
||||
pt = proto_item_add_subtree(pi, ett_collectd_unknown);
|
||||
pi = proto_tree_add_uint (pt, hf_collectd_type, tvb,
|
||||
offset, 2, part_type);
|
||||
proto_tree_add_uint (pt, hf_collectd_length, tvb,
|
||||
|
|
|
@ -157,7 +157,6 @@ static void
|
|||
dissect_componentstatusprotocol_componentstatusreport_message(tvbuff_t *message_tvb, proto_tree *message_tree)
|
||||
{
|
||||
tvbuff_t *association_tvb;
|
||||
proto_item *association_item;
|
||||
proto_tree *association_tree;
|
||||
/* gint associations; - variable set but not used, so commented out */
|
||||
int i;
|
||||
|
@ -173,9 +172,8 @@ dissect_componentstatusprotocol_componentstatusreport_message(tvbuff_t *message_
|
|||
offset = COMPONENTSTATUSREPORT_ASSOCIATIONARRAY_OFFSET;
|
||||
i = 1;
|
||||
while(tvb_reported_length_remaining(message_tvb, offset) >= COMPONENTASSOCIATION_LENGTH) {
|
||||
association_item = proto_tree_add_text(message_tree, message_tvb, offset, COMPONENTASSOCIATION_LENGTH,
|
||||
"Association #%d", i++);
|
||||
association_tree = proto_item_add_subtree(association_item, ett_association);
|
||||
association_tree = proto_tree_add_subtree_format(message_tree, message_tvb, offset, COMPONENTASSOCIATION_LENGTH,
|
||||
ett_association, NULL, "Association #%d", i++);
|
||||
association_tvb = tvb_new_subset(message_tvb, offset,
|
||||
MIN(COMPONENTASSOCIATION_LENGTH, tvb_length_remaining(message_tvb, offset)),
|
||||
COMPONENTASSOCIATION_LENGTH);
|
||||
|
@ -234,15 +232,10 @@ dissect_componentstatusprotocol(tvbuff_t *message_tvb, packet_info *pinfo, proto
|
|||
|
||||
col_set_str(pinfo->cinfo, COL_PROTOCOL, "ComponentStatusProtocol");
|
||||
|
||||
/* In the interest of speed, if "tree" is NULL, don't do any work not
|
||||
necessary to generate protocol tree items. */
|
||||
if (tree) {
|
||||
/* create the componentstatusprotocol protocol tree */
|
||||
componentstatusprotocol_item = proto_tree_add_item(tree, proto_componentstatusprotocol, message_tvb, 0, -1, ENC_NA);
|
||||
componentstatusprotocol_tree = proto_item_add_subtree(componentstatusprotocol_item, ett_componentstatusprotocol);
|
||||
} else {
|
||||
componentstatusprotocol_tree = NULL;
|
||||
};
|
||||
/* create the componentstatusprotocol protocol tree */
|
||||
componentstatusprotocol_item = proto_tree_add_item(tree, proto_componentstatusprotocol, message_tvb, 0, -1, ENC_NA);
|
||||
componentstatusprotocol_tree = proto_item_add_subtree(componentstatusprotocol_item, ett_componentstatusprotocol);
|
||||
|
||||
/* dissect the message */
|
||||
dissect_componentstatusprotocol_message(message_tvb, pinfo, componentstatusprotocol_tree);
|
||||
return(tvb_length(message_tvb));
|
||||
|
|
|
@ -1309,7 +1309,7 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32
|
|||
proto_tree *r_type_tree, *itf_tree, *reason_tree, *dec_tree, *error_tree, *clientsi_tree, *pdp_tree;
|
||||
guint16 r_type, m_type, reason, reason_sub, cmd_code, cmd_flags, error, error_sub,
|
||||
tcp_port, katimer, accttimer;
|
||||
guint32 ipv4addr, ifindex;
|
||||
guint32 ifindex;
|
||||
struct e_in6_addr ipv6addr;
|
||||
oid_info_t* oid_info = NULL;
|
||||
guint32* pprid_subids = NULL;
|
||||
|
@ -1326,11 +1326,10 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32
|
|||
case COPS_OBJ_CONTEXT:
|
||||
r_type = tvb_get_ntohs(tvb, offset);
|
||||
m_type = tvb_get_ntohs(tvb, offset + 2);
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 4, "Contents: R-Type: %s, M-Type: %u",
|
||||
val_to_str_const(r_type, cops_r_type_vals, "Unknown"),
|
||||
m_type);
|
||||
r_type_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_cops_r_type_flags, NULL,
|
||||
"Contents: R-Type: %s, M-Type: %u",
|
||||
val_to_str_const(r_type, cops_r_type_vals, "Unknown"), m_type);
|
||||
|
||||
r_type_tree = proto_item_add_subtree(ti, ett_cops_r_type_flags);
|
||||
proto_tree_add_uint(r_type_tree, hf_cops_r_type_flags, tvb, offset, 2, r_type);
|
||||
offset += 2;
|
||||
proto_tree_add_uint(r_type_tree, hf_cops_m_type_flags, tvb, offset, 2, m_type);
|
||||
|
@ -1339,24 +1338,22 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32
|
|||
case COPS_OBJ_IN_INT:
|
||||
case COPS_OBJ_OUT_INT:
|
||||
if (c_type == 1) { /* IPv4 */
|
||||
ipv4addr = tvb_get_ipv4(tvb, offset);
|
||||
ifindex = tvb_get_ntohl(tvb, offset + 4);
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 8, "Contents: IPv4 address %s, ifIndex: %u",
|
||||
ip_to_str((guint8 *)&ipv4addr), ifindex);
|
||||
itf_tree = proto_item_add_subtree(ti, ett_cops_itf);
|
||||
proto_tree_add_ipv4(itf_tree,
|
||||
itf_tree = proto_tree_add_subtree_format(tree, tvb, offset, 8, ett_cops_itf, NULL,
|
||||
"Contents: IPv4 address %s, ifIndex: %u",
|
||||
tvb_ip_to_str(tvb, offset), ifindex);
|
||||
proto_tree_add_item(itf_tree,
|
||||
(c_num == COPS_OBJ_IN_INT) ? hf_cops_in_int_ipv4 : hf_cops_out_int_ipv4,
|
||||
tvb, offset, 4, ipv4addr);
|
||||
tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset += 4;
|
||||
} else if (c_type == 2) { /* IPv6 */
|
||||
tvb_get_ipv6(tvb, offset, &ipv6addr);
|
||||
ifindex = tvb_get_ntohl(tvb, offset + (int)sizeof ipv6addr);
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 20, "Contents: IPv6 address %s, ifIndex: %u",
|
||||
ip6_to_str(&ipv6addr), ifindex);
|
||||
itf_tree = proto_item_add_subtree(ti, ett_cops_itf);
|
||||
proto_tree_add_ipv6(itf_tree,
|
||||
itf_tree = proto_tree_add_subtree_format(tree, tvb, offset, 20, ett_cops_itf, NULL,
|
||||
"Contents: IPv6 address %s, ifIndex: %u",
|
||||
tvb_ip6_to_str(tvb, offset), ifindex);
|
||||
proto_tree_add_item(itf_tree,
|
||||
(c_num == COPS_OBJ_IN_INT) ? hf_cops_in_int_ipv6 : hf_cops_out_int_ipv6,
|
||||
tvb, offset, 16, (guint8 *)&ipv6addr);
|
||||
tvb, offset, 16, ENC_NA);
|
||||
offset += 16;
|
||||
} else {
|
||||
break;
|
||||
|
@ -1367,14 +1364,14 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32
|
|||
case COPS_OBJ_REASON:
|
||||
reason = tvb_get_ntohs(tvb, offset);
|
||||
reason_sub = tvb_get_ntohs(tvb, offset + 2);
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 4, "Contents: Reason-Code: %s, Reason Sub-code: 0x%04x",
|
||||
reason_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_cops_reason, NULL,
|
||||
"Contents: Reason-Code: %s, Reason Sub-code: 0x%04x",
|
||||
val_to_str_const(reason, cops_reason_vals, "<Unknown value>"), reason_sub);
|
||||
reason_tree = proto_item_add_subtree(ti, ett_cops_reason);
|
||||
proto_tree_add_uint(reason_tree, hf_cops_reason, tvb, offset, 2, reason);
|
||||
offset += 2;
|
||||
if (reason == 13) { /* RFC 2748 2.2.5 */
|
||||
proto_tree_add_text(reason_tree, tvb, offset, 2, "Reason Sub-code: "
|
||||
"Unknown object's C-Num %u, C-Type %u",
|
||||
proto_tree_add_uint_format_value(reason_tree, hf_cops_reason_sub, tvb, offset, 2,
|
||||
reason_sub, "Unknown object's C-Num %u, C-Type %u",
|
||||
tvb_get_guint8(tvb, offset), tvb_get_guint8(tvb, offset + 1));
|
||||
} else
|
||||
proto_tree_add_uint(reason_tree, hf_cops_reason_sub, tvb, offset, 2, reason_sub);
|
||||
|
@ -1385,16 +1382,14 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32
|
|||
if (c_type == 1) {
|
||||
cmd_code = tvb_get_ntohs(tvb, offset);
|
||||
cmd_flags = tvb_get_ntohs(tvb, offset + 2);
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 4, "Contents: Command-Code: %s, Flags: %s",
|
||||
dec_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_cops_decision, NULL, "Contents: Command-Code: %s, Flags: %s",
|
||||
val_to_str_const(cmd_code, cops_dec_cmd_code_vals, "<Unknown value>"),
|
||||
val_to_str_const(cmd_flags, cops_dec_cmd_flag_vals, "<Unknown flag>"));
|
||||
dec_tree = proto_item_add_subtree(ti, ett_cops_decision);
|
||||
proto_tree_add_uint(dec_tree, hf_cops_dec_cmd_code, tvb, offset, 2, cmd_code);
|
||||
offset += 2;
|
||||
proto_tree_add_uint(dec_tree, hf_cops_dec_flags, tvb, offset, 2, cmd_flags);
|
||||
} else if (c_type == 5) { /*COPS-PR Data*/
|
||||
ti = proto_tree_add_text(tree, tvb, offset, len, "Contents: %d bytes", len);
|
||||
dec_tree = proto_item_add_subtree(ti, ett_cops_decision);
|
||||
dec_tree = proto_tree_add_subtree_format(tree, tvb, offset, len, ett_cops_decision, NULL, "Contents: %d bytes", len);
|
||||
dissect_cops_pr_objects(tvb, pinfo, offset, dec_tree, len, &oid_info, &pprid_subids, &pprid_subids_len);
|
||||
}
|
||||
|
||||
|
@ -1412,14 +1407,14 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32
|
|||
|
||||
error = tvb_get_ntohs(tvb, offset);
|
||||
error_sub = tvb_get_ntohs(tvb, offset + 2);
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 4, "Contents: Error-Code: %s, Error Sub-code: 0x%04x",
|
||||
error_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_cops_error, NULL,
|
||||
"Contents: Error-Code: %s, Error Sub-code: 0x%04x",
|
||||
val_to_str_const(error, cops_error_vals, "<Unknown value>"), error_sub);
|
||||
error_tree = proto_item_add_subtree(ti, ett_cops_error);
|
||||
proto_tree_add_uint(error_tree, hf_cops_error, tvb, offset, 2, error);
|
||||
offset += 2;
|
||||
if (error == 13) { /* RFC 2748 2.2.8 */
|
||||
proto_tree_add_text(error_tree, tvb, offset, 2, "Error Sub-code: "
|
||||
"Unknown object's C-Num %u, C-Type %u",
|
||||
proto_tree_add_uint_format_value(error_tree, hf_cops_error_sub, tvb, offset, 2,
|
||||
error_sub, "Unknown object's C-Num %u, C-Type %u",
|
||||
tvb_get_guint8(tvb, offset), tvb_get_guint8(tvb, offset + 1));
|
||||
} else
|
||||
proto_tree_add_uint(error_tree, hf_cops_error_sub, tvb, offset, 2, error_sub);
|
||||
|
@ -1439,8 +1434,7 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32
|
|||
if (c_type != 2) /*Not COPS-PR data*/
|
||||
break;
|
||||
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 4, "Contents: %d bytes", len);
|
||||
clientsi_tree = proto_item_add_subtree(ti, ett_cops_clientsi);
|
||||
clientsi_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_cops_clientsi, NULL, "Contents: %d bytes", len);
|
||||
|
||||
dissect_cops_pr_objects(tvb, pinfo, offset, clientsi_tree, len, &oid_info, &pprid_subids, &pprid_subids_len);
|
||||
|
||||
|
@ -1479,24 +1473,22 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32
|
|||
case COPS_OBJ_PDPREDIRADDR:
|
||||
case COPS_OBJ_LASTPDPADDR:
|
||||
if (c_type == 1) { /* IPv4 */
|
||||
ipv4addr = tvb_get_ipv4(tvb, offset);
|
||||
tcp_port = tvb_get_ntohs(tvb, offset + 4 + 2);
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 8, "Contents: IPv4 address %s, TCP Port Number: %u",
|
||||
ip_to_str((guint8 *)&ipv4addr), tcp_port);
|
||||
pdp_tree = proto_item_add_subtree(ti, ett_cops_pdp);
|
||||
proto_tree_add_ipv4(pdp_tree,
|
||||
pdp_tree = proto_tree_add_subtree_format(tree, tvb, offset, 8, ett_cops_pdp, NULL,
|
||||
"Contents: IPv4 address %s, TCP Port Number: %u",
|
||||
tvb_ip_to_str(tvb, offset), tcp_port);
|
||||
proto_tree_add_item(pdp_tree,
|
||||
(c_num == COPS_OBJ_PDPREDIRADDR) ? hf_cops_pdprediraddr_ipv4 : hf_cops_lastpdpaddr_ipv4,
|
||||
tvb, offset, 4, ipv4addr);
|
||||
tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset += 4;
|
||||
} else if (c_type == 2) { /* IPv6 */
|
||||
tvb_get_ipv6(tvb, offset, &ipv6addr);
|
||||
tcp_port = tvb_get_ntohs(tvb, offset + (int)sizeof ipv6addr + 2);
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 20, "Contents: IPv6 address %s, TCP Port Number: %u",
|
||||
ip6_to_str(&ipv6addr), tcp_port);
|
||||
pdp_tree = proto_item_add_subtree(ti, ett_cops_pdp);
|
||||
proto_tree_add_ipv6(pdp_tree,
|
||||
pdp_tree = proto_tree_add_subtree_format(tree, tvb, offset, 20, ett_cops_pdp, NULL,
|
||||
"Contents: IPv6 address %s, TCP Port Number: %u",
|
||||
tvb_ip6_to_str(tvb, offset), tcp_port);
|
||||
proto_tree_add_item(pdp_tree,
|
||||
(c_num == COPS_OBJ_PDPREDIRADDR) ? hf_cops_pdprediraddr_ipv6 : hf_cops_lastpdpaddr_ipv6,
|
||||
tvb, offset, 16, (guint8 *)&ipv6addr);
|
||||
tvb, offset, 16, ENC_NA);
|
||||
offset += 16;
|
||||
} else {
|
||||
break;
|
||||
|
@ -1570,7 +1562,6 @@ static guint redecode_oid(guint32* pprid_subids, guint pprid_subids_len, guint8*
|
|||
static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32 offset, proto_tree *tree,
|
||||
guint8 s_num, guint8 s_type, int len,
|
||||
oid_info_t** oid_info_p, guint32** pprid_subids, guint* pprid_subids_len) {
|
||||
proto_item *ti;
|
||||
proto_tree *asn_tree, *gperror_tree, *cperror_tree;
|
||||
guint16 gperror=0, gperror_sub=0, cperror=0, cperror_sub=0;
|
||||
asn1_ctx_t actx;
|
||||
|
@ -1585,8 +1576,7 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3
|
|||
if (s_type != 1) /* Not Prefix Provisioning Instance Identifier (PPRID) */
|
||||
break;
|
||||
/* Never tested this branch */
|
||||
ti = proto_tree_add_text(tree, tvb, offset, len, "Contents:");
|
||||
asn_tree = proto_item_add_subtree(ti, ett_cops_asn1);
|
||||
asn_tree = proto_tree_add_subtree(tree, tvb, offset, len, ett_cops_asn1, NULL, "Contents:");
|
||||
|
||||
dissect_ber_object_identifier(FALSE, &actx, asn_tree, tvb, offset, hf_cops_pprid_oid, &oid_tvb);
|
||||
|
||||
|
@ -1616,8 +1606,7 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3
|
|||
|
||||
if (s_type != 1) break; /* Not Provisioning Instance Identifier (PRID) */
|
||||
|
||||
ti=proto_tree_add_text(tree, tvb, offset, len, "Contents:");
|
||||
asn_tree = proto_item_add_subtree(ti, ett_cops_asn1);
|
||||
asn_tree = proto_tree_add_subtree(tree, tvb, offset, len, ett_cops_asn1, NULL, "Contents:");
|
||||
|
||||
offset = get_ber_identifier(tvb, offset, &ber_class, &ber_pc, &ber_tag);
|
||||
offset = get_ber_length(tvb, offset, &encoid_len, NULL);
|
||||
|
@ -1658,8 +1647,7 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3
|
|||
|
||||
if (s_type != 1) break;/* Not Encoded Provisioning Instance Data (EPD) */
|
||||
|
||||
ti = proto_tree_add_text(tree, tvb, offset, len, "Contents:");
|
||||
asn_tree = proto_item_add_subtree(ti, ett_cops_asn1);
|
||||
asn_tree = proto_tree_add_subtree(tree, tvb, offset, len, ett_cops_asn1, NULL, "Contents:");
|
||||
|
||||
/*
|
||||
* XXX: LAZYNESS WARNING:
|
||||
|
@ -1745,8 +1733,7 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3
|
|||
case COPS_OBJ_ERRPRID: {
|
||||
if (s_type != 1) break; /*Not Error Provisioning Instance Identifier (ErrorPRID)*/
|
||||
|
||||
ti = proto_tree_add_text(tree, tvb, offset, len, "Contents:");
|
||||
asn_tree = proto_item_add_subtree(ti, ett_cops_asn1);
|
||||
asn_tree = proto_tree_add_subtree(tree, tvb, offset, len, ett_cops_asn1, NULL, "Contents:");
|
||||
|
||||
dissect_ber_object_identifier(FALSE, &actx, asn_tree, tvb, offset, hf_cops_errprid_oid, NULL);
|
||||
|
||||
|
@ -1758,14 +1745,14 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3
|
|||
|
||||
gperror = tvb_get_ntohs(tvb, offset);
|
||||
gperror_sub = tvb_get_ntohs(tvb, offset + 2);
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 4, "Contents: Error-Code: %s, Error Sub-code: 0x%04x",
|
||||
gperror_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_cops_gperror, NULL,
|
||||
"Contents: Error-Code: %s, Error Sub-code: 0x%04x",
|
||||
val_to_str_const(gperror, cops_gperror_vals, "<Unknown value>"), gperror_sub);
|
||||
gperror_tree = proto_item_add_subtree(ti, ett_cops_gperror);
|
||||
proto_tree_add_uint(gperror_tree, hf_cops_gperror, tvb, offset, 2, gperror);
|
||||
offset += 2;
|
||||
if (gperror == 13) { /* RFC 3084 4.4 */
|
||||
proto_tree_add_text(gperror_tree, tvb, offset, 2, "Error Sub-code: "
|
||||
"Unknown object's C-Num %u, C-Type %u",
|
||||
proto_tree_add_uint_format_value(gperror_tree, hf_cops_gperror_sub, tvb, offset, 2,
|
||||
gperror_sub, "Unknown object's C-Num %u, C-Type %u",
|
||||
tvb_get_guint8(tvb, offset), tvb_get_guint8(tvb, offset + 1));
|
||||
} else
|
||||
proto_tree_add_uint(gperror_tree, hf_cops_gperror_sub, tvb, offset, 2, gperror_sub);
|
||||
|
@ -1777,13 +1764,13 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3
|
|||
|
||||
cperror = tvb_get_ntohs(tvb, offset);
|
||||
cperror_sub = tvb_get_ntohs(tvb, offset + 2);
|
||||
ti = proto_tree_add_text(tree, tvb, offset, 4, "Contents: Error-Code: %s, Error Sub-code: 0x%04x",
|
||||
val_to_str_const(cperror, cops_cperror_vals, "<Unknown value>"), cperror_sub);
|
||||
cperror_tree = proto_item_add_subtree(ti, ett_cops_cperror);
|
||||
cperror_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_cops_gperror, NULL,
|
||||
"Contents: Error-Code: %s, Error Sub-code: 0x%04x",
|
||||
val_to_str_const(gperror, cops_gperror_vals, "<Unknown value>"), gperror_sub);
|
||||
proto_tree_add_uint(cperror_tree, hf_cops_cperror, tvb, offset, 2, cperror);
|
||||
offset += 2;
|
||||
if (cperror == 13) { /* RFC 3084 4.5 */
|
||||
proto_tree_add_text(cperror_tree, tvb, offset, 2, "Error Sub-code: "
|
||||
proto_tree_add_uint_format_value(cperror_tree, hf_cops_cperror_sub, tvb, offset, 2, cperror_sub,
|
||||
"Unknown object's S-Num %u, C-Type %u",
|
||||
tvb_get_guint8(tvb, offset), tvb_get_guint8(tvb, offset + 1));
|
||||
} else
|
||||
|
@ -3666,7 +3653,6 @@ cops_ipv6_classifier(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
|||
/* Cops - Section : Gate Specifications */
|
||||
static int
|
||||
cops_flow_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -3686,8 +3672,7 @@ cops_flow_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
|||
offset += 2;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 28, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 28, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Token Bucket Rate */
|
||||
info_to_display(tvb,object_tree,offset,4,"Token Bucket Rate",NULL,FMT_FLT,&hf_cops_pc_token_bucket_rate);
|
||||
|
@ -3720,8 +3705,7 @@ cops_flow_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
|||
if (n < 64) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 28, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 28, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Token Bucket Rate */
|
||||
info_to_display(tvb,object_tree,offset,4,"Token Bucket Rate",NULL,FMT_FLT,&hf_cops_pc_token_bucket_rate);
|
||||
|
@ -3754,8 +3738,7 @@ cops_flow_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
|||
if (n < 92) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 28, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 28, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Token Bucket Rate */
|
||||
info_to_display(tvb,object_tree,offset,4,"Token Bucket Rate",NULL,FMT_FLT,&hf_cops_pc_token_bucket_rate);
|
||||
|
@ -3824,7 +3807,6 @@ cops_docsis_service_class_name(tvbuff_t *tvb, proto_tree *st, guint object_len,
|
|||
/* Cops - Section : Best Effort Service */
|
||||
static int
|
||||
cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -3839,8 +3821,7 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 36 : 32, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 36 : 32, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -3890,8 +3871,7 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
if (n < 56) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 36 : 32, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 36 : 32, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -3941,8 +3921,7 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
if (n < 80) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 36 : 32, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 36 : 32, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -3995,7 +3974,6 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
/* Cops - Section : Non-Real-Time Polling Service */
|
||||
static int
|
||||
cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -4010,8 +3988,7 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 40 : 36, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -4065,8 +4042,7 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint
|
|||
if (n < 64) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 40 : 36, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -4120,8 +4096,7 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint
|
|||
if (n < 92) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 40 : 36, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -4178,7 +4153,6 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint
|
|||
/* Cops - Section : Real-Time Polling Service */
|
||||
static int
|
||||
cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -4193,8 +4167,7 @@ cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 40 : 36, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -4245,8 +4218,7 @@ cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
|
|||
if (n < 64) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 40 : 36, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -4297,8 +4269,7 @@ cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
|
|||
if (n < 92) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 40 : 36, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -4352,7 +4323,6 @@ cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
|
|||
/* Cops - Section : Unsolicited Grant Service */
|
||||
static int
|
||||
cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -4367,8 +4337,7 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 28 : 24, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 28 : 24, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -4410,8 +4379,7 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
|
|||
if (n < 40) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 28 : 24, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 28 : 24, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -4453,8 +4421,7 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
|
|||
if (n < 56) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 28 : 24, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 28 : 24, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -4499,7 +4466,6 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g
|
|||
/* Cops - Section : Unsolicited Grant Service with Activity Detection */
|
||||
static int
|
||||
cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -4514,8 +4480,7 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n,
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 36 : 32, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 36 : 32, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -4565,8 +4530,7 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n,
|
|||
if (n < 56) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 36 : 32, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 36 : 32, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -4616,8 +4580,7 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n,
|
|||
if (n < 80) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 36 : 32, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 36 : 32, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -4670,7 +4633,6 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n,
|
|||
/* Cops - Section : Downstream Service */
|
||||
static int
|
||||
cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -4685,8 +4647,7 @@ cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 40 : 36, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -4744,8 +4705,7 @@ cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
if (n < 56) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 40 : 36, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -4803,8 +4763,7 @@ cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
if (n < 80) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, i05 ? 40 : 36, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, i05 ? 40 : 36, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -4886,7 +4845,6 @@ cops_upstream_drop_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
|||
/* Cops - Section : Best Effort Service */
|
||||
static int
|
||||
cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -4901,8 +4859,7 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -4938,8 +4895,7 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
|
|||
if (n < 56) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -4975,8 +4931,7 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
|
|||
if (n < 80) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -5015,7 +4970,6 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
|
|||
/* Cops - Section : Non-Real-Time Polling Service */
|
||||
static int
|
||||
cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -5030,8 +4984,7 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 28, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 28, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -5071,8 +5024,7 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint
|
|||
if (n < 64) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -5112,8 +5064,7 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint
|
|||
if (n < 92) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -5156,7 +5107,6 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint
|
|||
/* Cops - Section : Real-Time Polling Service */
|
||||
static int
|
||||
cops_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -5171,8 +5121,7 @@ cops_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 28, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 28, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -5209,8 +5158,7 @@ cops_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
|
|||
if (n < 64) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -5247,8 +5195,7 @@ cops_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
|
|||
if (n < 92) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -5288,7 +5235,6 @@ cops_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
|
|||
/* Cops - Section : Unsolicited Grant Service */
|
||||
static int
|
||||
cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -5303,8 +5249,7 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 16, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 16, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -5332,8 +5277,7 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
|
|||
if (n < 40) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 16, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 16, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -5361,8 +5305,7 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
|
|||
if (n < 56) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 16, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 16, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -5393,7 +5336,6 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o
|
|||
/* Cops - Section : Unsolicited Grant Service with Activity Detection */
|
||||
static int
|
||||
cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -5408,8 +5350,7 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -5445,8 +5386,7 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
if (n < 56) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -5482,8 +5422,7 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
if (n < 80) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Request Transmission Policy */
|
||||
decode_docsis_request_transmission_policy(tvb, offset, object_tree, hf_cops_pcmm_request_transmission_policy);
|
||||
|
@ -5522,7 +5461,6 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32
|
|||
/* Cops - Section : Downstream Service */
|
||||
static int
|
||||
cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
|
||||
proto_item *ti;
|
||||
proto_tree *stt, *object_tree;
|
||||
|
||||
/* Create a subtree */
|
||||
|
@ -5537,8 +5475,7 @@ cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
|
|||
offset += 3;
|
||||
|
||||
/* Authorized Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Authorized Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Authorized Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -5574,8 +5511,7 @@ cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
|
|||
if (n < 56) return offset;
|
||||
|
||||
/* Reserved Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Reserved Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Reserved Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
@ -5611,8 +5547,7 @@ cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset)
|
|||
if (n < 80) return offset;
|
||||
|
||||
/* Committed Envelope */
|
||||
ti = proto_tree_add_text(stt, tvb, offset, 24, "Committed Envelope");
|
||||
object_tree = proto_item_add_subtree(ti, ett_cops_subtree);
|
||||
object_tree = proto_tree_add_subtree(stt, tvb, offset, 24, ett_cops_subtree, NULL, "Committed Envelope");
|
||||
|
||||
/* Traffic Priority */
|
||||
info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority);
|
||||
|
|
|
@ -495,8 +495,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
|
|||
proto_item *ti;
|
||||
proto_tree *test_tree;
|
||||
|
||||
ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s[%d]",pDescr->sz, i++);
|
||||
test_tree = proto_item_add_subtree(ti, ett_csn1);
|
||||
test_tree = proto_tree_add_subtree_format(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, "%s[%d]",pDescr->sz, i++);
|
||||
|
||||
csnStreamInit(&arT, bit_offset, remaining_bits_len);
|
||||
Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR*)pDescr->descr.ptr, tvb, pui8, ett_csn1);
|
||||
|
@ -560,8 +559,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
|
|||
proto_item *ti;
|
||||
proto_tree *test_tree;
|
||||
|
||||
ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s", pDescr->sz);
|
||||
test_tree = proto_item_add_subtree(ti, ett_csn1);
|
||||
test_tree = proto_tree_add_subtree_format(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, "%s", pDescr->sz);
|
||||
|
||||
csnStreamInit(&arT, bit_offset, remaining_bits_len);
|
||||
Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR*)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
|
||||
|
@ -619,8 +617,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
|
|||
}
|
||||
|
||||
if (pDescr->sz) {
|
||||
ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s", pDescr->sz);
|
||||
test_tree = proto_item_add_subtree(ti, ett_csn1);
|
||||
test_tree = proto_tree_add_subtree(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, pDescr->sz);
|
||||
} else {
|
||||
test_tree = tree;
|
||||
}
|
||||
|
@ -671,13 +668,11 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
|
|||
bit_offset += length_len;
|
||||
remaining_bits_len -= length_len;
|
||||
|
||||
ti = proto_tree_add_text(tree, tvb, bit_offset>>3, ((bit_offset+length-1)>>3)-(bit_offset>>3) + 1, "%s", pDescr->sz);
|
||||
test_tree = proto_tree_add_subtree(tree, tvb, bit_offset>>3, ((bit_offset+length-1)>>3)-(bit_offset>>3) + 1, ett_csn1, &ti, pDescr->sz);
|
||||
} else {
|
||||
ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s", pDescr->sz);
|
||||
test_tree = proto_tree_add_subtree(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, pDescr->sz);
|
||||
}
|
||||
|
||||
test_tree = proto_item_add_subtree(ti, ett_csn1);
|
||||
|
||||
csnStreamInit(&arT, bit_offset, length > 0 ? length : remaining_bits_len);
|
||||
Status = serialize(test_tree, &arT, tvb, pvDATA(data, pDescr->offset), ett_csn1);
|
||||
|
||||
|
@ -992,8 +987,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
|
|||
proto_item *ti;
|
||||
proto_tree *test_tree;
|
||||
|
||||
ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s[%d]",pDescr->sz, i++);
|
||||
test_tree = proto_item_add_subtree(ti, ett_csn1);
|
||||
test_tree = proto_tree_add_subtree_format(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, "%s[%d]",pDescr->sz, i++);
|
||||
|
||||
csnStreamInit(&arT, bit_offset, remaining_bits_len);
|
||||
Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pui8, ett_csn1);
|
||||
|
@ -1045,8 +1039,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
|
|||
proto_item *ti;
|
||||
proto_tree *test_tree;
|
||||
|
||||
ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s",pDescr->sz);
|
||||
test_tree = proto_item_add_subtree(ti, ett_csn1);
|
||||
test_tree = proto_tree_add_subtree(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, pDescr->sz);
|
||||
|
||||
csnStreamInit(&arT, bit_offset, remaining_bits_len);
|
||||
Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
|
||||
|
@ -1301,8 +1294,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
|
|||
|
||||
if (remaining_bits_len > 0)
|
||||
{
|
||||
proto_item *ti = proto_tree_add_text(tree, tvb, bit_offset>>3, -1, "Padding Bits");
|
||||
proto_tree *padding_tree = proto_item_add_subtree(ti, ett_csn1);
|
||||
proto_tree *padding_tree = proto_tree_add_subtree(tree, tvb, bit_offset>>3, -1, ett_csn1, NULL, "Padding Bits");
|
||||
while (remaining_bits_len > 0)
|
||||
{
|
||||
gint bits_to_handle = remaining_bits_len + (bit_offset%8);
|
||||
|
@ -1446,8 +1438,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
|
|||
proto_item *ti;
|
||||
proto_tree *test_tree;
|
||||
|
||||
ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s",pDescr->sz);
|
||||
test_tree = proto_item_add_subtree(ti, ett_csn1);
|
||||
test_tree = proto_tree_add_subtree(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, pDescr->sz);
|
||||
|
||||
csnStreamInit(&arT, bit_offset, remaining_bits_len);
|
||||
Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
|
||||
|
@ -1510,8 +1501,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
|
|||
{ /* get data element */
|
||||
ElementCount++;
|
||||
|
||||
ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s[%d]",pDescr->sz, ElementCount-1);
|
||||
test_tree = proto_item_add_subtree(ti, ett_csn1);
|
||||
test_tree = proto_tree_add_subtree_format(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, "%s[%d]", pDescr->sz, ElementCount-1);
|
||||
|
||||
csnStreamInit(&arT, bit_offset, remaining_bits_len);
|
||||
Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1);
|
||||
|
|
|
@ -115,12 +115,11 @@ static gint ett_dcc_trace = -1;
|
|||
|
||||
|
||||
#define D_CHECKSUM() { \
|
||||
proto_tree *cktree, *ckti; \
|
||||
ckti = proto_tree_add_text(dcc_optree, tvb, offset, (int)sizeof(DCC_CK), \
|
||||
"Checksum - %s", val_to_str(tvb_get_guint8(tvb,offset), \
|
||||
proto_tree *cktree; \
|
||||
cktree = proto_tree_add_subtree_format(dcc_optree, tvb, offset, (int)sizeof(DCC_CK), \
|
||||
ett_dcc_ck, NULL, "Checksum - %s", val_to_str(tvb_get_guint8(tvb,offset), \
|
||||
dcc_cktype_vals, \
|
||||
"Unknown Type: %u")); \
|
||||
cktree = proto_item_add_subtree(ckti, ett_dcc_ck); \
|
||||
proto_tree_add_item(cktree, hf_dcc_ck_type, tvb, offset, 1, ENC_BIG_ENDIAN); \
|
||||
offset += 1; \
|
||||
proto_tree_add_item(cktree, hf_dcc_ck_len, tvb, offset, 1, ENC_BIG_ENDIAN); \
|
||||
|
@ -259,8 +258,7 @@ dissect_dcc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
|
|||
offset, 4, ENC_BIG_ENDIAN);
|
||||
offset += 4;
|
||||
|
||||
ti = proto_tree_add_text(dcc_tree, tvb, offset, -1, "Operation Numbers (Opaque to Server)");
|
||||
dcc_opnumtree = proto_item_add_subtree(ti, ett_dcc_opnums);
|
||||
dcc_opnumtree = proto_tree_add_subtree(dcc_tree, tvb, offset, -1, ett_dcc_opnums, NULL, "Operation Numbers (Opaque to Server)");
|
||||
|
||||
/* Note - these are indeterminate - they are sortof considered opaque to the client */
|
||||
/* Make some attempt to figure out if this data is little endian, not guaranteed to be
|
||||
|
@ -289,9 +287,8 @@ dissect_dcc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
|
|||
offset, 4, client_is_le);
|
||||
offset += 4;
|
||||
|
||||
ti = proto_tree_add_text(dcc_tree, tvb, offset, -1, "Operation: %s",
|
||||
val_to_str(op, dcc_op_vals, "Unknown Op: %u"));
|
||||
dcc_optree = proto_item_add_subtree(ti, ett_dcc_op);
|
||||
dcc_optree = proto_tree_add_subtree_format(dcc_tree, tvb, offset, -1, ett_dcc_op, NULL,
|
||||
"Operation: %s", val_to_str(op, dcc_op_vals, "Unknown Op: %u"));
|
||||
|
||||
switch(op) {
|
||||
case DCC_OP_NOP:
|
||||
|
|
Loading…
Reference in New Issue