diff options
author | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2001-08-29 09:02:37 +0000 |
---|---|---|
committer | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2001-08-29 09:02:37 +0000 |
commit | 87fa919c38a6f767e29563f8f507d8168fcafc5c (patch) | |
tree | a1d77c82828f064ab4d893d1ec1ab946f6672cf2 /packet-isakmp.c | |
parent | 8c70306f068409c6c202d7bce5ac45b08208fd68 (diff) |
Call the ESP dissector regardless of whether "tree" is non-null or not.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@3882 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'packet-isakmp.c')
-rw-r--r-- | packet-isakmp.c | 67 |
1 files changed, 32 insertions, 35 deletions
diff --git a/packet-isakmp.c b/packet-isakmp.c index e7ab12de34..d882cbe0ca 100644 --- a/packet-isakmp.c +++ b/packet-isakmp.c @@ -3,7 +3,7 @@ * (ISAKMP) (RFC 2408) * Brad Robel-Forrest <brad.robel-forrest@watchguard.com> * - * $Id: packet-isakmp.c,v 1.39 2001/08/29 08:12:32 guy Exp $ + * $Id: packet-isakmp.c,v 1.40 2001/08/29 09:02:37 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -257,6 +257,8 @@ dissect_isakmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { int offset = 0; struct isakmp_hdr * hdr; + proto_item * ti; + proto_tree * isakmp_tree = NULL; struct udp_encap_esp_hdr * udp_encap_hdr; guint32 len; guint8 payload, next_payload; @@ -271,40 +273,41 @@ dissect_isakmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) col_clear(pinfo->fd, COL_INFO); hdr = (struct isakmp_hdr *)tvb_get_ptr(tvb, 0, sizeof (struct isakmp_hdr)); - udp_encap_hdr = (struct udp_encap_esp_hdr *)tvb_get_ptr(tvb, 0, sizeof(struct udp_encap_esp_hdr)); - len = pntohl(&hdr->length); - if(memcmp(udp_encap_hdr->non_ike_marker,non_ike_marker,8) == 0) { - if (udp_encap_hdr->esp_SPI != 0) { - if (check_col(pinfo->fd, COL_INFO)) + if (tree) { + ti = proto_tree_add_item(tree, proto_isakmp, tvb, offset, len, FALSE); + isakmp_tree = proto_item_add_subtree(ti, ett_isakmp); + } + + udp_encap_hdr = (struct udp_encap_esp_hdr *)tvb_get_ptr(tvb, 0, sizeof(struct udp_encap_esp_hdr)); + + if (memcmp(udp_encap_hdr->non_ike_marker,non_ike_marker,8) == 0) { + if (check_col(pinfo->fd, COL_INFO)) { + if (udp_encap_hdr->esp_SPI != 0) col_add_str(pinfo->fd, COL_INFO, "UDP encapsulated IPSec - ESP"); - } - else { - if (check_col(pinfo->fd, COL_INFO)) + else col_add_str(pinfo->fd, COL_INFO, "UDP encapsulated IPSec - AH"); } - if(tree) { - proto_item * ti; - proto_tree * isakmp_tree; - - ti = proto_tree_add_item(tree, proto_isakmp, tvb, offset, len, FALSE); - isakmp_tree = proto_item_add_subtree(ti, ett_isakmp); - - proto_tree_add_text(isakmp_tree, tvb, offset, sizeof(udp_encap_hdr->non_ike_marker),"Non-IKE-Marker"); - offset += sizeof(udp_encap_hdr->non_ike_marker); + if (tree) + proto_tree_add_text(isakmp_tree, tvb, offset, + sizeof(udp_encap_hdr->non_ike_marker), + "Non-IKE-Marker"); + offset += sizeof(udp_encap_hdr->non_ike_marker); - if (udp_encap_hdr->esp_SPI != 0) { - next_tvb = tvb_new_subset(tvb, offset, -1, -1); - call_dissector(esp_handle, next_tvb, pinfo, tree); - } else { - proto_tree_add_text(isakmp_tree, tvb, offset, sizeof(udp_encap_hdr->esp_SPI),"Non-ESP-Marker"); - offset += sizeof(udp_encap_hdr->esp_SPI); - - /* - * Dissect AH Envelope, and then call AH dissector. - */ - } + if (udp_encap_hdr->esp_SPI != 0) { + next_tvb = tvb_new_subset(tvb, offset, -1, -1); + call_dissector(esp_handle, next_tvb, pinfo, tree); + } else { + if (tree) + proto_tree_add_text(isakmp_tree, tvb, offset, + sizeof(udp_encap_hdr->esp_SPI), + "Non-ESP-Marker"); + offset += sizeof(udp_encap_hdr->esp_SPI); + + /* + * Dissect AH Envelope, and then call AH dissector. + */ } return; } @@ -313,12 +316,6 @@ dissect_isakmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) col_add_str(pinfo->fd, COL_INFO, exchtype2str(hdr->exch_type)); if (tree) { - proto_item * ti; - proto_tree * isakmp_tree; - - ti = proto_tree_add_item(tree, proto_isakmp, tvb, offset, len, FALSE); - isakmp_tree = proto_item_add_subtree(ti, ett_isakmp); - proto_tree_add_text(isakmp_tree, tvb, offset, sizeof(hdr->icookie), "Initiator cookie"); offset += sizeof(hdr->icookie); |