[Gd-chatter] r10849 - in trunk/libraries: gui-sniffer packetizer
hannes at gwydiondylan.org
hannes at gwydiondylan.org
Fri Aug 11 01:35:42 CEST 2006
Author: hannes
Date: Fri Aug 11 01:35:40 2006
New Revision: 10849
Modified:
trunk/libraries/gui-sniffer/gui-sniffer.dylan
trunk/libraries/packetizer/util.dylan
Log:
Bug: 7299
*better treeview stuff (generate a root-item for each layer)
*only 2 byte address in hexdump (ethereal does this also)
Modified: trunk/libraries/gui-sniffer/gui-sniffer.dylan
==============================================================================
--- trunk/libraries/gui-sniffer/gui-sniffer.dylan (original)
+++ trunk/libraries/gui-sniffer/gui-sniffer.dylan Fri Aug 11 01:35:40 2006
@@ -31,6 +31,11 @@
sorted-frame-fields(a-frame)
end;
+define method frame-children-generator (a-frame :: <header-frame>)
+ let ffs = sorted-frame-fields(a-frame);
+ copy-sequence(ffs, end: ffs.size - 1);
+end;
+
define method frame-children-generator (frame-field :: <frame-field>)
if (instance?(frame-field.field, <repeated-field>))
frame-field.value
@@ -41,6 +46,13 @@
end
end;
+define method frame-root-generator (frame :: <header-frame>)
+ add!(frame-root-generator(payload(frame)), frame);
+end;
+
+define method frame-root-generator (frame :: <frame>)
+ list(frame);
+end;
define method frame-print-label (frame-field :: <frame-field>)
if (~ frame-children-predicate(frame-field))
format-to-string("%s: %=", frame-field.field.field-name, frame-field.value)
@@ -67,22 +79,6 @@
format-to-string("%=", frame);
end;
-define method frame-viewer(frame :: <frame>)
- make(<tree-control>,
- roots: vector(frame),
- label-key: frame-print-label,
- children-generator: frame-children-generator,
- children-predicate: frame-children-predicate)
-end;
-
-define method frame-viewer(frames :: <collection>)
- make(<tree-control>,
- roots: frames,
- label-key: frame-print-label,
- children-generator: frame-children-generator,
- children-predicate: frame-children-predicate)
-end;
-
define method print-source (frame :: <ethernet-frame>)
as(<string>, frame.source-address)
end;
@@ -117,22 +113,24 @@
show-packet-tree(frame, packet);
show-packet-hex-dump(frame, packet);
end;
-
define method show-packet-tree (frame :: <gui-sniffer-frame>, packet)
frame.packet-tree-view.tree-control-roots
:= if (packet)
- frame-children-generator(packet);
+ frame-root-generator(packet);
else
#[]
end;
end;
define method show-packet-hex-dump (frame :: <gui-sniffer-frame>, network-packet)
+ //XXX: this should be easier!
frame.packet-hex-dump.gadget-value
:= if (network-packet)
let out = make(<string-stream>, direction: #"output");
block()
- hexdump(out, network-packet.packet);
+ hexdump(out, network-packet.packet); //XXX: once assemble-frame
+ //on unparsed-container-frame works,
+ //we can use assemble-frame here
stream-contents(out);
cleanup
close(out)
@@ -147,6 +145,7 @@
*count* := *count* + 1;
*count*;
end;
+
define frame <gui-sniffer-frame> (<simple-frame>, <filter>)
slot network-frames = make(<stretchy-vector>);
slot filter-expression = #f;
Modified: trunk/libraries/packetizer/util.dylan
==============================================================================
--- trunk/libraries/packetizer/util.dylan (original)
+++ trunk/libraries/packetizer/util.dylan Fri Aug 11 01:35:40 2006
@@ -13,7 +13,7 @@
end;
for (byte keyed-by index in sequence)
if(sequence.size > 16 & modulo(index, 16) == 0)
- format(stream, "%s ", hex(index, size: 8))
+ format(stream, "%s ", hex(index, size: 4))
end;
format(stream, "%s", hex(byte, size: 2));
if(modulo(index, 16) == 15
More information about the chatter
mailing list