diff options
author | Michael Mann <mmann78@netscape.net> | 2013-05-05 11:02:42 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-05-05 11:02:42 +0000 |
commit | 2a9201a34fa7ce8b900668608ef7b71378fb1c70 (patch) | |
tree | dc1ba947545be462913bd81da3496eb88e39b8a4 /epan/dissectors/packet-lisp-data.c | |
parent | e13a0996eee08cb0da67d9b6fd94a9b3898cde11 (diff) |
Remove if (tree) so expert_info will always be called.
svn path=/trunk/; revision=49170
Diffstat (limited to 'epan/dissectors/packet-lisp-data.c')
-rw-r--r-- | epan/dissectors/packet-lisp-data.c | 131 |
1 files changed, 64 insertions, 67 deletions
diff --git a/epan/dissectors/packet-lisp-data.c b/epan/dissectors/packet-lisp-data.c index 81635a2b15..3c8ffa3862 100644 --- a/epan/dissectors/packet-lisp-data.c +++ b/epan/dissectors/packet-lisp-data.c @@ -104,80 +104,77 @@ dissect_lisp_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat col_set_str(pinfo->cinfo, COL_INFO, "LISP Encapsulation Header"); - if (tree) { - - /* create display subtree for the protocol */ - ti = proto_tree_add_item(tree, proto_lisp_data, tvb, 0, - LISP_DATA_HEADER_LEN, ENC_NA); - - lisp_data_tree = proto_item_add_subtree(ti, ett_lisp_data); - - tif = proto_tree_add_item(lisp_data_tree, - hf_lisp_data_flags, tvb, offset, 1, ENC_BIG_ENDIAN); - - lisp_data_flags_tree = proto_item_add_subtree(tif, ett_lisp_data_flags); - - proto_tree_add_item(lisp_data_flags_tree, - hf_lisp_data_flags_nonce, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(lisp_data_flags_tree, - hf_lisp_data_flags_lsb, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(lisp_data_flags_tree, - hf_lisp_data_flags_enr, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(lisp_data_flags_tree, - hf_lisp_data_flags_mv, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(lisp_data_flags_tree, - hf_lisp_data_flags_iid, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(lisp_data_flags_tree, - hf_lisp_data_flags_res, tvb, offset, 1, ENC_BIG_ENDIAN); - - flags = tvb_get_guint8(tvb, offset); - offset += 1; + /* create display subtree for the protocol */ + ti = proto_tree_add_item(tree, proto_lisp_data, tvb, 0, + LISP_DATA_HEADER_LEN, ENC_NA); + + lisp_data_tree = proto_item_add_subtree(ti, ett_lisp_data); + + tif = proto_tree_add_item(lisp_data_tree, + hf_lisp_data_flags, tvb, offset, 1, ENC_BIG_ENDIAN); + + lisp_data_flags_tree = proto_item_add_subtree(tif, ett_lisp_data_flags); + + proto_tree_add_item(lisp_data_flags_tree, + hf_lisp_data_flags_nonce, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(lisp_data_flags_tree, + hf_lisp_data_flags_lsb, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(lisp_data_flags_tree, + hf_lisp_data_flags_enr, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(lisp_data_flags_tree, + hf_lisp_data_flags_mv, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(lisp_data_flags_tree, + hf_lisp_data_flags_iid, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(lisp_data_flags_tree, + hf_lisp_data_flags_res, tvb, offset, 1, ENC_BIG_ENDIAN); + + flags = tvb_get_guint8(tvb, offset); + offset += 1; + + if (flags&LISP_DATA_FLAG_E && !(flags&LISP_DATA_FLAG_N)) { + expert_add_info_format(pinfo, tif, PI_PROTOCOL, PI_WARN, + "Invalid flag combination: if E is set, N MUST be set"); + } - if (flags&LISP_DATA_FLAG_E && !(flags&LISP_DATA_FLAG_N)) { + if (flags&LISP_DATA_FLAG_N) { + if (flags&LISP_DATA_FLAG_V) { expert_add_info_format(pinfo, tif, PI_PROTOCOL, PI_WARN, - "Invalid flag combination: if E is set, N MUST be set"); + "Invalid flag combination: N and V can't be set both"); + } + proto_tree_add_item(lisp_data_tree, + hf_lisp_data_nonce, tvb, offset, 3, ENC_BIG_ENDIAN); + } else { + if (flags&LISP_DATA_FLAG_V) { + proto_item *tiv; + proto_tree *lisp_data_mapver_tree; + + tiv = proto_tree_add_item(lisp_data_tree, + hf_lisp_data_mapver, tvb, offset, 3, ENC_BIG_ENDIAN); + + lisp_data_mapver_tree = proto_item_add_subtree(tiv, ett_lisp_data_mapver); + + proto_tree_add_item(lisp_data_mapver_tree, + hf_lisp_data_srcmapver, tvb, offset, 3, ENC_BIG_ENDIAN); + proto_tree_add_item(lisp_data_mapver_tree, + hf_lisp_data_dstmapver, tvb, offset, 3, ENC_BIG_ENDIAN); } + } + offset += 3; - if (flags&LISP_DATA_FLAG_N) { - if (flags&LISP_DATA_FLAG_V) { - expert_add_info_format(pinfo, tif, PI_PROTOCOL, PI_WARN, - "Invalid flag combination: N and V can't be set both"); - } + if (flags&LISP_DATA_FLAG_I) { + proto_tree_add_item(lisp_data_tree, + hf_lisp_data_iid, tvb, offset, 3, ENC_BIG_ENDIAN); + offset += 3; + if (flags&LISP_DATA_FLAG_L) { proto_tree_add_item(lisp_data_tree, - hf_lisp_data_nonce, tvb, offset, 3, ENC_BIG_ENDIAN); - } else { - if (flags&LISP_DATA_FLAG_V) { - proto_item *tiv; - proto_tree *lisp_data_mapver_tree; - - tiv = proto_tree_add_item(lisp_data_tree, - hf_lisp_data_mapver, tvb, offset, 3, ENC_BIG_ENDIAN); - - lisp_data_mapver_tree = proto_item_add_subtree(tiv, ett_lisp_data_mapver); - - proto_tree_add_item(lisp_data_mapver_tree, - hf_lisp_data_srcmapver, tvb, offset, 3, ENC_BIG_ENDIAN); - proto_tree_add_item(lisp_data_mapver_tree, - hf_lisp_data_dstmapver, tvb, offset, 3, ENC_BIG_ENDIAN); - } + hf_lisp_data_lsb8, tvb, offset, 1, ENC_BIG_ENDIAN); } - offset += 3; - - if (flags&LISP_DATA_FLAG_I) { + /*offset +=1;*/ + } else { + if (flags&LISP_DATA_FLAG_L) { proto_tree_add_item(lisp_data_tree, - hf_lisp_data_iid, tvb, offset, 3, ENC_BIG_ENDIAN); - offset += 3; - if (flags&LISP_DATA_FLAG_L) { - proto_tree_add_item(lisp_data_tree, - hf_lisp_data_lsb8, tvb, offset, 1, ENC_BIG_ENDIAN); - } - /*offset +=1;*/ - } else { - if (flags&LISP_DATA_FLAG_L) { - proto_tree_add_item(lisp_data_tree, - hf_lisp_data_lsb, tvb, offset, 4, ENC_BIG_ENDIAN); - /*offset += 4;*/ - } + hf_lisp_data_lsb, tvb, offset, 4, ENC_BIG_ENDIAN); + /*offset += 4;*/ } } |