diff options
author | Michael Mann <mmann78@netscape.net> | 2013-04-24 23:15:38 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-04-24 23:15:38 +0000 |
commit | 2d9a44e0fa20c881dc75b487630c55b7af6fe377 (patch) | |
tree | f0ba8b562f4fcf893c058b06573681feb3baebe3 /epan/dissectors/packet-lmp.c | |
parent | 2dc27b8b855eecc2f93280e798e3be725707eb89 (diff) |
Add a few IP filterable fields to make checkAPIs.pl happy. It appears that "enumerated filter fields" are necessary, but that allows them to shirk the check* tools to possibly find unused hfs.
svn path=/trunk/; revision=49021
Diffstat (limited to 'epan/dissectors/packet-lmp.c')
-rw-r--r-- | epan/dissectors/packet-lmp.c | 129 |
1 files changed, 78 insertions, 51 deletions
diff --git a/epan/dissectors/packet-lmp.c b/epan/dissectors/packet-lmp.c index b8693a67a8..ada6877991 100644 --- a/epan/dissectors/packet-lmp.c +++ b/epan/dissectors/packet-lmp.c @@ -53,6 +53,7 @@ #include <epan/in_cksum.h> #include <epan/etypes.h> #include <epan/ipproto.h> +#include <epan/expert.h> #include <show_exception.h> #include "packet-ip.h" @@ -374,6 +375,9 @@ enum hf_lmp_filter_keys { LMPF_VAL_REMOTE_INTERFACE_ID_IPV4, LMPF_VAL_REMOTE_INTERFACE_ID_IPV6, LMPF_VAL_REMOTE_INTERFACE_ID_UNNUM, + LMPF_VAL_CHANNEL_STATUS_INTERFACE_ID_IPV4, + LMPF_VAL_CHANNEL_STATUS_INTERFACE_ID_IPV6, + LMPF_VAL_CHANNEL_STATUS_INTERFACE_ID_UNNUM, LMPF_VAL_MESSAGE_ID, LMPF_VAL_MESSAGE_ID_ACK, LMPF_VAL_CONFIG_HELLO, @@ -395,16 +399,20 @@ enum hf_lmp_filter_keys { LMPF_VAL_TE_LINK_FLAGS_FAULT_MGMT, LMPF_VAL_TE_LINK_FLAGS_LINK_VERIFY, LMPF_VAL_TE_LINK_LOCAL_IPV4, + LMPF_VAL_TE_LINK_LOCAL_IPV6, LMPF_VAL_TE_LINK_LOCAL_UNNUM, LMPF_VAL_TE_LINK_REMOTE_IPV4, + LMPF_VAL_TE_LINK_REMOTE_IPV6, LMPF_VAL_TE_LINK_REMOTE_UNNUM, LMPF_VAL_DATA_LINK_FLAGS, LMPF_VAL_DATA_LINK_FLAGS_PORT, LMPF_VAL_DATA_LINK_FLAGS_ALLOCATED, LMPF_VAL_DATA_LINK_LOCAL_IPV4, + LMPF_VAL_DATA_LINK_LOCAL_IPV6, LMPF_VAL_DATA_LINK_LOCAL_UNNUM, LMPF_VAL_DATA_LINK_REMOTE_IPV4, + LMPF_VAL_DATA_LINK_REMOTE_IPV6, LMPF_VAL_DATA_LINK_REMOTE_UNNUM, LMPF_VAL_DATA_LINK_SUBOBJ, LMPF_VAL_DATA_LINK_SUBOBJ_SWITCHING_TYPE, @@ -488,6 +496,8 @@ enum hf_lmp_filter_keys { LMPF_VAL_LAD_INFO_SUBOBJ_SWITCHING_TYPE, LMPF_VAL_LAD_INFO_SUBOBJ_LSP_ENCODING, + LMPF_CHECKSUM, + LMPF_MAX }; @@ -729,27 +739,21 @@ dissect_lmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) if (lmp_checksum_config) { cksum = tvb_get_ntohs(tvb, offset+6); + ti = proto_tree_add_item(lmp_header_tree, hf_lmp_filter[LMPF_CHECKSUM], tvb, + offset+6, 2, ENC_BIG_ENDIAN); if (!pinfo->fragmented && (int) tvb_length(tvb) >= msg_length) { - /* The packet isn't part of a fragmented datagram and isn't - truncated, so we can checksum it. */ - cksum_vec[0].ptr = tvb_get_ptr(tvb, 0, msg_length); - cksum_vec[0].len = msg_length; - computed_cksum = in_cksum(&cksum_vec[0], 1); - - if (computed_cksum == 0) { - proto_tree_add_text(lmp_header_tree, tvb, offset+6, 2, - "Message Checksum: 0x%04x [correct]", - cksum); - } else { - proto_tree_add_text(lmp_header_tree, tvb, offset+6, 2, - "Message Checksum: 0x%04x [incorrect, should be 0x%04x]", - cksum, - in_cksum_shouldbe(cksum, computed_cksum)); - } - } else { - proto_tree_add_text(lmp_header_tree, tvb, offset+6, 2, - "Message Checksum: 0x%04x", - cksum); + /* The packet isn't part of a fragmented datagram and isn't truncated, so we can checksum it. */ + cksum_vec[0].ptr = tvb_get_ptr(tvb, 0, msg_length); + cksum_vec[0].len = msg_length; + computed_cksum = in_cksum(&cksum_vec[0], 1); + + if (computed_cksum == 0) { + proto_item_append_text( ti, " [correct]"); + } + else { + expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN, "[incorrect, should be 0x%04x]", + in_cksum_shouldbe(cksum, computed_cksum)); + } } } else { proto_tree_add_text(lmp_header_tree, tvb, offset+6, 2, "No checksum"); @@ -874,8 +878,8 @@ dissect_lmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) l = (type == 3)? LMPF_VAL_LOCAL_LINK_ID_IPV6: LMPF_VAL_REMOTE_LINK_ID_IPV6; proto_item_append_text(ti, ": IPv6 %s", tvb_ip6_to_str(tvb, offset2)); - proto_tree_add_text(lmp_object_tree, tvb, offset2, 16, "IPv6: %s", - tvb_ip6_to_str(tvb, offset2)); + proto_tree_add_item(lmp_object_tree, hf_lmp_filter[l], tvb, + offset2, 16, ENC_NA); break; case 5: case 6: @@ -912,8 +916,8 @@ dissect_lmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) l = (type == 3)? LMPF_VAL_LOCAL_INTERFACE_ID_IPV6: LMPF_VAL_REMOTE_INTERFACE_ID_IPV6; proto_item_append_text(ti, ": IPv6 %s", tvb_ip6_to_str(tvb, offset2)); - proto_tree_add_text(lmp_object_tree, tvb, offset2, 16, "IPv6: %s", - tvb_ip6_to_str(tvb, offset2)); + proto_tree_add_item(lmp_object_tree, hf_lmp_filter[l], tvb, + offset2, 16, ENC_NA); break; case 5: @@ -1130,13 +1134,13 @@ dissect_lmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) case 2: proto_item_append_text(ti, ": IPv6: Local %s, Remote %s", tvb_ip6_to_str(tvb, offset2+4), - tvb_ip6_to_str(tvb, offset2+8)); - proto_tree_add_text(lmp_object_tree, tvb, offset2+4, 16, - "TE-Link Local ID - IPv6: %s", - tvb_ip6_to_str(tvb, offset2)); - proto_tree_add_text(lmp_object_tree, tvb, offset2+20,16, - "TE-Link Remote ID - IPv6: %s", - tvb_ip6_to_str(tvb, offset2+4)); + tvb_ip6_to_str(tvb, offset2+20)); + proto_tree_add_item(lmp_object_tree, + hf_lmp_filter[LMPF_VAL_TE_LINK_LOCAL_IPV6], + tvb, offset2+4, 16, ENC_NA); + proto_tree_add_item(lmp_object_tree, + hf_lmp_filter[LMPF_VAL_TE_LINK_REMOTE_IPV6], + tvb, offset2+20, 16, ENC_NA); break; case 3: @@ -1380,22 +1384,20 @@ dissect_lmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) for (l=0; l<obj_length - 4; ) { switch(type) { case 1: - proto_tree_add_text(lmp_object_tree, tvb, offset2+l, 4, - "Interface ID: IPv4: %s", - tvb_ip_to_str(tvb, offset2+l)); + proto_tree_add_item(lmp_object_tree, hf_lmp_filter[LMPF_VAL_CHANNEL_STATUS_INTERFACE_ID_IPV4], + tvb, offset2+l, 4, ENC_BIG_ENDIAN); l += 4; break; case 2: - proto_tree_add_text(lmp_object_tree, tvb, offset2+l, 16, "Interface ID: IPv6: %s", - tvb_ip6_to_str(tvb, offset2+l)); + proto_tree_add_item(lmp_object_tree, hf_lmp_filter[LMPF_VAL_CHANNEL_STATUS_INTERFACE_ID_IPV6], + tvb, offset2+l, 16, ENC_NA); l += 16; break; case 3: - proto_tree_add_text(lmp_object_tree, tvb, offset2+l, 4, - "Interface ID: Unnumbered: %d", - tvb_get_ntohl(tvb, offset2+l)); + proto_tree_add_item(lmp_object_tree, hf_lmp_filter[LMPF_VAL_CHANNEL_STATUS_INTERFACE_ID_UNNUM], + tvb, offset2+l, 4, ENC_BIG_ENDIAN); l += 4; break; @@ -1732,15 +1734,13 @@ dissect_lmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) tvb_get_ntohs(tvb, offset2+8), tvb_get_ntohs(tvb, offset2+10)); - proto_tree_add_uint(lmp_object_tree, + proto_tree_add_item(lmp_object_tree, hf_lmp_filter[LMPF_VAL_SERVICE_CONFIG_CPSA_MIN_NVC], - tvb, offset2+8, 2, - tvb_get_ntohs(tvb, offset2+8)); + tvb, offset2+8, 2, ENC_BIG_ENDIAN); - proto_tree_add_uint(lmp_object_tree, + proto_tree_add_item(lmp_object_tree, hf_lmp_filter[LMPF_VAL_SERVICE_CONFIG_CPSA_MAX_NVC], - tvb, offset2+10, 2, - tvb_get_ntohs(tvb, offset2+10)); + tvb, offset2+10, 2, ENC_BIG_ENDIAN); /* Local interface ID */ proto_item_append_text(ti, ": Local Interface ID %s", @@ -1836,16 +1836,14 @@ dissect_lmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) switch(type) { case 1: - l = LMPF_VAL_LOCAL_DA_DCN_ADDR; proto_item_append_text(ti, ": %s", tvb_ip_to_str(tvb, offset2)); - proto_tree_add_item(lmp_object_tree, hf_lmp_filter[l], tvb, + proto_tree_add_item(lmp_object_tree, hf_lmp_filter[LMPF_VAL_LOCAL_DA_DCN_ADDR], tvb, offset2, 4, ENC_BIG_ENDIAN); break; case 2: - l = LMPF_VAL_REMOTE_DA_DCN_ADDR; proto_item_append_text(ti, ": %s", tvb_ip_to_str(tvb, offset2)); - proto_tree_add_item(lmp_object_tree, hf_lmp_filter[l], tvb, + proto_tree_add_item(lmp_object_tree, hf_lmp_filter[LMPF_VAL_REMOTE_DA_DCN_ADDR], tvb, offset2, 4, ENC_BIG_ENDIAN); break; @@ -2302,11 +2300,17 @@ proto_register_lmp(void) {&hf_lmp_filter[LMPF_VAL_LOCAL_LINK_ID_IPV4], { "Local Link ID - IPv4", "lmp.local_linkid_ipv4", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + {&hf_lmp_filter[LMPF_VAL_LOCAL_LINK_ID_IPV6], + { "Local Link ID - IPv6", "lmp.local_linkid_ipv6", FT_IPv6, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, {&hf_lmp_filter[LMPF_VAL_LOCAL_LINK_ID_UNNUM], { "Local Link ID - Unnumbered", "lmp.local_linkid_unnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, {&hf_lmp_filter[LMPF_VAL_REMOTE_LINK_ID_IPV4], - { "Remote Link ID - IPv4", "lmp.remote_linkid_ipv4", FT_UINT32, BASE_DEC, NULL, 0x0, + { "Remote Link ID - IPv4", "lmp.remote_linkid_ipv4", FT_IPv4, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + {&hf_lmp_filter[LMPF_VAL_REMOTE_LINK_ID_IPV6], + { "Remote Link ID - IPv6", "lmp.remote_linkid_ipv6", FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }}, {&hf_lmp_filter[LMPF_VAL_REMOTE_LINK_ID_UNNUM], { "Remote Link ID - Unnumbered", "lmp.remote_linkid_unnum", FT_UINT32, BASE_DEC, NULL, 0x0, @@ -2315,16 +2319,30 @@ proto_register_lmp(void) {&hf_lmp_filter[LMPF_VAL_LOCAL_INTERFACE_ID_IPV4], { "Local Interface ID - IPv4", "lmp.local_interfaceid_ipv4", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + {&hf_lmp_filter[LMPF_VAL_LOCAL_INTERFACE_ID_IPV6], + { "Local Interface ID - IPv6", "lmp.local_interfaceid_ipv6", FT_IPv6, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, {&hf_lmp_filter[LMPF_VAL_LOCAL_INTERFACE_ID_UNNUM], { "Local Interface ID - Unnumbered", "lmp.local_interfaceid_unnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, {&hf_lmp_filter[LMPF_VAL_REMOTE_INTERFACE_ID_IPV4], { "Remote Interface ID - IPv4", "lmp.remote_interfaceid_ipv4", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + {&hf_lmp_filter[LMPF_VAL_REMOTE_INTERFACE_ID_IPV6], + { "Remote Interface ID - IPv6", "lmp.remote_interfaceid_ipv6", FT_IPv6, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, {&hf_lmp_filter[LMPF_VAL_REMOTE_INTERFACE_ID_UNNUM], { "Remote Interface ID - Unnumbered", "lmp.remote_interfaceid_unnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, - + {&hf_lmp_filter[LMPF_VAL_CHANNEL_STATUS_INTERFACE_ID_IPV4], + { "Interface ID: IPv4", "lmp.channel_status_interfaceid_ipv4", FT_IPv4, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + {&hf_lmp_filter[LMPF_VAL_CHANNEL_STATUS_INTERFACE_ID_IPV6], + { "Interface ID: IPv6", "lmp.channel_status_interfaceid_ipv6", FT_IPv6, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + {&hf_lmp_filter[LMPF_VAL_CHANNEL_STATUS_INTERFACE_ID_UNNUM], + { "Interface ID: Unnumbered", "lmp.channel_status_interfaceid_unnum", FT_UINT32, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, {&hf_lmp_filter[LMPF_VAL_MESSAGE_ID], { "Message-ID Value", "lmp.messageid", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, @@ -2375,12 +2393,18 @@ proto_register_lmp(void) {&hf_lmp_filter[LMPF_VAL_TE_LINK_LOCAL_IPV4], { "TE-Link Local ID - IPv4", "lmp.te_link.local_ipv4", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + {&hf_lmp_filter[LMPF_VAL_TE_LINK_LOCAL_IPV6], + { "TE-Link Local ID - IPv6", "lmp.te_link.local_ipv6", FT_IPv6, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, {&hf_lmp_filter[LMPF_VAL_TE_LINK_LOCAL_UNNUM], { "TE-Link Local ID - Unnumbered", "lmp.te_link.local_unnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, {&hf_lmp_filter[LMPF_VAL_TE_LINK_REMOTE_IPV4], { "TE-Link Remote ID - IPv4", "lmp.te_link.remote_ipv4", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + {&hf_lmp_filter[LMPF_VAL_TE_LINK_REMOTE_IPV6], + { "TE-Link Remote ID - IPv6", "lmp.te_link.remote_ipv6", FT_IPv6, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, {&hf_lmp_filter[LMPF_VAL_TE_LINK_REMOTE_UNNUM], { "TE-Link Remote ID - Unnumbered", "lmp.te_link.remote_unnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, @@ -2677,6 +2701,9 @@ proto_register_lmp(void) {&hf_lmp_filter[LMPF_VAL_LAD_INFO_SUBOBJ_LSP_ENCODING], { "LSP Encoding Type", "lmp.lad_encoding", FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gmpls_lsp_enc_rvals), 0x0, NULL, HFILL }}, + {&hf_lmp_filter[LMPF_CHECKSUM], + { "Message Checksum", "lmp.checksum", FT_UINT16, BASE_HEX, NULL, 0x0, + NULL, HFILL }}, }; for (i=0; i<NUM_LMP_SUBTREES; i++) { |