Ethereal-dev: [Ethereal-dev] isis domain-wide-distribution support
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Hannes Gredler <hannes@xxxxxxxxxxx>
Date: Thu, 7 Jun 2001 15:00:50 +0200
ethereal developers, pls find attached a patch to support rfc2966 for is-is. also cleaned up much of the IP_INT_REACH TLV parsing. patched to display TLV #22 in Mbps rather than in bytes per second, like on routers embedded diagnostic tools. /hannes
? hannes-isis-hdlc-tcpdump.1500 ? hannes-isis-hdlc-tcpdump.1500.2 ? hannes-isis-lan-tcpdump.1500 ? hannes-isis-auth-tcpdump.1514 ? hannes-isis-ppp-tcpdump.1500 ? hannes-isis-metric-type-tcpdump.1500 ? hannes-isis-metric-type-l1-tcpdump.1500 Index: packet-isis-lsp.c =================================================================== RCS file: /cvsroot/ethereal/packet-isis-lsp.c,v retrieving revision 1.14 diff -u -r1.14 packet-isis-lsp.c --- packet-isis-lsp.c 2001/05/23 18:44:59 1.14 +++ packet-isis-lsp.c 2001/06/07 12:55:35 @@ -414,24 +414,42 @@ memcpy(&src, &pd[offset+4], 4); memcpy(&mask, &pd[offset+8], 4); ti = proto_tree_add_text ( tree, NullTVB, offset, 12, - "IP prefix: %s (%s) : %s", - get_hostname(src), ip_to_str((guint8*)&src), + "IPv4 prefix: %s : %s", + ip_to_str((guint8*)&src), ip_to_str((guint8*)&mask) ); ntree = proto_item_add_subtree(ti, ett_isis_lsp_clv_ip_reachability); proto_tree_add_text (ntree, NullTVB, offset, 1, - "Default Metric: %s %s %d:%d", - ISIS_LSP_CLV_METRIC_SUPPORTED(pd[offset]) ? "External" : "Internal", - ISIS_LSP_CLV_METRIC_RESERVED(pd[offset]) ? "(reserved bit != 0)" : "", + "Default Metric: %d, %s, Distribution: %s", ISIS_LSP_CLV_METRIC_VALUE(pd[offset]), - pd[offset] ); - dissect_metric ( ntree, offset + 1, pd[offset+1], - "Delay", FALSE ); - dissect_metric ( ntree, offset + 2, pd[offset+2], - "Expense",FALSE ); - dissect_metric ( ntree, offset + 3, pd[offset+3], - "Error", FALSE ); + ISIS_LSP_CLV_METRIC_IE(pd[offset]) ? "External" : "Internal", + ISIS_LSP_CLV_METRIC_UPDOWN(pd[offset]) ? "down" : "up"); + + + if (ISIS_LSP_CLV_METRIC_SUPPORTED(pd[offset+1])) { + proto_tree_add_text (ntree, NullTVB, offset+1, 1, "Delay Metric: Not supported"); + } else { + proto_tree_add_text (ntree, NullTVB, offset+1, 1, "Delay Metric: %d, %s", + ISIS_LSP_CLV_METRIC_VALUE(pd[offset+1]), + ISIS_LSP_CLV_METRIC_IE(pd[offset+1]) ? "External" : "Internal"); + } + + if (ISIS_LSP_CLV_METRIC_SUPPORTED(pd[offset+2])) { + proto_tree_add_text (ntree, NullTVB, offset+2, 1, "Expense Metric: Not supported"); + } else { + proto_tree_add_text (ntree, NullTVB, offset+2, 1, "Exense Metric: %d, %s", + ISIS_LSP_CLV_METRIC_VALUE(pd[offset+2]), + ISIS_LSP_CLV_METRIC_IE(pd[offset+2]) ? "External" : "Internal"); + } + + if (ISIS_LSP_CLV_METRIC_SUPPORTED(pd[offset+3])) { + proto_tree_add_text (ntree, NullTVB, offset+3, 1, "Error Metric: Not supported"); + } else { + proto_tree_add_text (ntree, NullTVB, offset+3, 1, "Error Metric: %d, %s", + ISIS_LSP_CLV_METRIC_VALUE(pd[offset+3]), + ISIS_LSP_CLV_METRIC_IE(pd[offset+3]) ? "External" : "Internal"); + } } offset += 12; length -= 12; @@ -845,15 +863,40 @@ } ntree = proto_item_add_subtree(ti, ett_isis_lsp_clv_is_neighbors); - dissect_metric ( ntree, offset, pd[offset], "Default", - TRUE ); - dissect_metric ( ntree, offset + 1, pd[offset+1], - "Delay", FALSE ); - dissect_metric ( ntree, offset + 2, pd[offset+2], - "Expense",FALSE ); - dissect_metric ( ntree, offset + 3, pd[offset+3], - "Error", FALSE ); + + + proto_tree_add_text (ntree, NullTVB, offset, 1, + "Default Metric: %d, %s", + ISIS_LSP_CLV_METRIC_VALUE(pd[offset]), + ISIS_LSP_CLV_METRIC_IE(pd[offset]) ? "External" : "Internal"); + + if (ISIS_LSP_CLV_METRIC_SUPPORTED(pd[offset+1])) { + proto_tree_add_text (ntree, NullTVB, offset+1, 1, "Delay Metric: Not supported"); + } else { + proto_tree_add_text (ntree, NullTVB, offset+1, 1, "Delay Metric: %d, %s", + ISIS_LSP_CLV_METRIC_VALUE(pd[offset+1]), + ISIS_LSP_CLV_METRIC_IE(pd[offset+1]) ? "External" : "Internal"); + } + + + if (ISIS_LSP_CLV_METRIC_SUPPORTED(pd[offset+2])) { + proto_tree_add_text (ntree, NullTVB, offset+2, 1, "Expense Metric: Not supported"); + } else { + proto_tree_add_text (ntree, NullTVB, offset+2, 1, "Expense Metric: %d, %s", + ISIS_LSP_CLV_METRIC_VALUE(pd[offset+2]), + ISIS_LSP_CLV_METRIC_IE(pd[offset+2]) ? "External" : "Internal"); + } + + if (ISIS_LSP_CLV_METRIC_SUPPORTED(pd[offset+3])) { + proto_tree_add_text (ntree, NullTVB, offset+3, 1, "Error Metric: Not supported"); + } else { + proto_tree_add_text (ntree, NullTVB, offset+3, 1, "Error Metric: %d, %s", + ISIS_LSP_CLV_METRIC_VALUE(pd[offset+3]), + ISIS_LSP_CLV_METRIC_IE(pd[offset+3]) ? "External" : "Internal"); + } + + /* this is redundant information Proto_tree_add_text ( ntree, NullTVB, offset + 4, id_length, "Neighbour ID: %s", @@ -1002,7 +1045,7 @@ ui = pntohl (&pd[offset]); memcpy (&bw, &ui, 4); proto_tree_add_text (tree, NullTVB, offset-2, 6, - "Maximum link bandwidth : %f bytes/second", bw ); + "Maximum link bandwidth : %.2f Mbps", bw*8/1000000 ); } /* @@ -1029,7 +1072,7 @@ ui = pntohl (&pd[offset]); memcpy (&bw, &ui, 4); proto_tree_add_text (tree, NullTVB, offset-2, 6, - "Reservable link bandwidth: %f bytes/second", bw ); + "Reservable link bandwidth: %.2f Mbps", bw*8/1000000 ); } /* @@ -1063,7 +1106,7 @@ ui = pntohl (&pd[offset]); memcpy (&bw, &ui, 4); proto_tree_add_text (ntree, NullTVB, offset+4*i, 4, - "priority level %d: %f bytes/second", i, bw ); + "priority level %d: %.2f Mbps", i, bw*8/1000000 ); } } @@ -1408,7 +1451,7 @@ inx++; } if (!some) { - strcat ( sbuf, "<none set!>" ); + strcat ( sbuf, "default-only" ); } proto_tree_add_text(lsp_tree, NullTVB, offset + 18, 1, "Type block(0x%02x): P:%d, Supported metric(s): %s, OL:%d, istype:%s", Index: packet-isis-lsp.h =================================================================== RCS file: /cvsroot/ethereal/packet-isis-lsp.h,v retrieving revision 1.5 diff -u -r1.5 packet-isis-lsp.h --- packet-isis-lsp.h 2001/05/14 18:40:15 1.5 +++ packet-isis-lsp.h 2001/06/07 12:55:36 @@ -50,7 +50,9 @@ #define ISIS_LSP_TYPE_LEVEL_2 3 #define ISIS_LSP_CLV_METRIC_SUPPORTED(x) ((x)&0xf0) +#define ISIS_LSP_CLV_METRIC_IE(x) ((x)&0x20) #define ISIS_LSP_CLV_METRIC_RESERVED(x) ((x)&0x40) +#define ISIS_LSP_CLV_METRIC_UPDOWN(x) ((x)&0x40) #define ISIS_LSP_CLV_METRIC_VALUE(x) ((x)&0x3f) /*
- Follow-Ups:
- Re: [Ethereal-dev] isis domain-wide-distribution support
- From: Guy Harris
- Re: [Ethereal-dev] isis domain-wide-distribution support
- Prev by Date: [Ethereal-dev] Dies on Protocol Hierarchy Stats
- Next by Date: Re: [Ethereal-dev] Dies on Protocol Hierarchy Stats
- Previous by thread: [Ethereal-dev] Dies on Protocol Hierarchy Stats
- Next by thread: Re: [Ethereal-dev] isis domain-wide-distribution support
- Index(es):