Ethereal-dev: [Ethereal-dev] bugfixes for OSPFv3 dissector
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Palle Lyckegaard <PalleLyckegaard@xxxxxxxxxx>
Date: Thu, 13 Sep 2001 20:49:25 +0200
Hi, attached are bugfixes for the OSPFv3 dissector. Regards Palle Lyckegaard email: Palle[AT]lyckegaard.dk
Index: packet-ospf.c =================================================================== RCS file: /cvsroot/ethereal/packet-ospf.c,v retrieving revision 1.44 diff -u -r1.44 packet-ospf.c --- packet-ospf.c 2001/09/11 06:38:57 1.44 +++ packet-ospf.c 2001/09/13 18:35:54 @@ -226,6 +226,7 @@ static void dissect_ospf_v3_address_prefix(tvbuff_t *, int, int, proto_tree *); + static void dissect_ospf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { @@ -245,6 +246,8 @@ unsigned int ospf_header_length; guint8 instance_ID; guint8 reserved; + guint32 areaid; + if (check_col(pinfo->fd, COL_PROTOCOL)) col_set_str(pinfo->fd, COL_PROTOCOL, "OSPF"); @@ -289,12 +292,9 @@ ospflen); proto_tree_add_text(ospf_header_tree, tvb, 4, 4, "Source OSPF Router ID: %s", ip_to_str(tvb_get_ptr(tvb, 4, 4))); - if (tvb_get_ntohl(tvb, 8) == 0) { - proto_tree_add_text(ospf_header_tree, tvb, 8, 4, "Area ID: Backbone"); - } else { - proto_tree_add_text(ospf_header_tree, tvb, 8, 4, "Area ID: %s", - ip_to_str(tvb_get_ptr(tvb, 8, 4))); - } + areaid=tvb_get_ntohl(tvb,8); + proto_tree_add_text(ospf_header_tree, tvb, 8, 4, "Area ID: %s %s", + ip_to_str(tvb_get_ptr(tvb, 8, 4)), areaid == 0 ? "(Backbone)" : ""); cksum = tvb_get_ntohs(tvb, 12); length = tvb_length(tvb); /* XXX - include only the length from the OSPF header? */ @@ -572,7 +572,6 @@ offset += 12; break; - default: break; } @@ -1234,7 +1233,7 @@ proto_tree_add_text(ospf_lsa_tree, tvb, offset + 8, 4, "Advertising Router: %s", ip_to_str(tvb_get_ptr(tvb, offset + 8, 4))); - proto_tree_add_text(ospf_lsa_tree, tvb, offset + 12, 4, "LS Sequence Number: 0x%04x", + proto_tree_add_text(ospf_lsa_tree, tvb, offset + 12, 4, "LS Sequence Number: %d", tvb_get_ntohl(tvb, offset + 12)); proto_tree_add_text(ospf_lsa_tree, tvb, offset + 16, 2, "LS Checksum: %04x", tvb_get_ntohs(tvb, offset + 16)); @@ -1396,7 +1395,7 @@ offset+=8; /* address_prefix */ - dissect_ospf_v3_address_prefix(tvb, offset+8, prefix_length, ospf_lsa_tree); + dissect_ospf_v3_address_prefix(tvb, offset, prefix_length, ospf_lsa_tree); offset+=(prefix_length+31)/32*4; @@ -1426,7 +1425,7 @@ proto_tree_add_text(ospf_lsa_tree, tvb, offset + 8, 4, "Destination Router ID: %s", ip_to_str(tvb_get_ptr(tvb, offset + 8, 4))); - offset+=12 ; + offset+=12; break; @@ -1447,7 +1446,7 @@ else flags_string[2] = '.'; - router_lsa_flags_string[3]=0; + flags_string[3]=0; proto_tree_add_text(ospf_lsa_tree, tvb, offset, 1, "Flags: 0x%02x (%s)", flags, flags_string); @@ -1467,7 +1466,7 @@ /* referenced LS type */ referenced_ls_type=tvb_get_ntohs(tvb, offset+6); proto_tree_add_text(ospf_lsa_tree, tvb, offset+2, 2,"Referenced LS type 0x%04x (%s)", - referenced_ls_type, val_to_str(referenced_ls_type, ls_type_vals, "Unknown")); + referenced_ls_type, val_to_str(referenced_ls_type, v3_ls_type_vals, "Unknown")); offset+=8; @@ -1477,7 +1476,7 @@ offset+=(prefix_length+31)/32*4; /* Forwarding Address (optional - only if F-flag is on) */ - if ( (offset < end_offset) && (flags == OSPF_V3_AS_EXTERNAL_FLAG_F) ) { + if ( (offset < end_offset) && (flags & OSPF_V3_AS_EXTERNAL_FLAG_F) ) { proto_tree_add_text(ospf_lsa_tree, tvb, offset, 16,"Forwarding Address: %s", ip6_to_str((struct e_in6_addr *)tvb_get_ptr(tvb, offset, 16))); @@ -1485,7 +1484,7 @@ } /* External Route Tag (optional - only if T-flag is on) */ - if ( (offset < end_offset) && (flags == OSPF_V3_AS_EXTERNAL_FLAG_T) ) { + if ( (offset < end_offset) && (flags & OSPF_V3_AS_EXTERNAL_FLAG_T) ) { external_route_tag=tvb_get_ntohl(tvb, offset); proto_tree_add_text(ospf_lsa_tree, tvb, offset, 4,"External Route Tag: 0x%04x", external_route_tag); @@ -1556,7 +1555,7 @@ /* referenced LS type */ referenced_ls_type=tvb_get_ntohs(tvb, offset+2); proto_tree_add_text(ospf_lsa_tree, tvb, offset+2, 2,"Referenced LS type 0x%04x (%s)", - referenced_ls_type, val_to_str(referenced_ls_type, ls_type_vals, "Unknown")); + referenced_ls_type, val_to_str(referenced_ls_type, v3_ls_type_vals, "Unknown")); /* Referenced Link State ID */ proto_tree_add_text(ospf_lsa_tree, tvb, offset + 4, 4, "Referenced Link State ID: %s",
- Follow-Ups:
- Re: [Ethereal-dev] bugfixes for OSPFv3 dissector
- From: Guy Harris
- Re: [Ethereal-dev] bugfixes for OSPFv3 dissector
- Prev by Date: Re: [Ethereal-dev] Re: patches
- Next by Date: Re: [Ethereal-dev] bugfixes for OSPFv3 dissector
- Previous by thread: Re: [Ethereal-dev] packet-nfs.c patch for timestamps
- Next by thread: Re: [Ethereal-dev] bugfixes for OSPFv3 dissector
- Index(es):