[Gd-chatter] r10979 - in trunk/libraries: gui-sniffer protocols
andreas at gwydiondylan.org
andreas at gwydiondylan.org
Tue Nov 21 22:14:39 CET 2006
Author: andreas
Date: Tue Nov 21 22:14:36 2006
New Revision: 10979
Modified:
trunk/libraries/gui-sniffer/gui-sniffer.dylan
trunk/libraries/gui-sniffer/module.dylan
trunk/libraries/protocols/ieee80211.dylan
trunk/libraries/protocols/ipv4.dylan
trunk/libraries/protocols/pcap.dylan
trunk/libraries/protocols/prism2.dylan
trunk/libraries/protocols/protocols-library.dylan
trunk/libraries/protocols/protocols.hdp
Log:
job: 7299
* Fixed computation of hexdump highlighting start offset
* Implemented BSD Radio capture header for pcap.dylan
Modified: trunk/libraries/gui-sniffer/gui-sniffer.dylan
==============================================================================
--- trunk/libraries/gui-sniffer/gui-sniffer.dylan (original)
+++ trunk/libraries/gui-sniffer/gui-sniffer.dylan Tue Nov 21 22:14:36 2006
@@ -285,15 +285,6 @@
end;
end;
-define method compute-absolute-offset (frame :: <ethernet-frame>)
- => (res :: <integer>)
- 0
-end;
-define method compute-absolute-offset (frame :: <prism2-frame>)
- => (res :: <integer>)
- 0
-end;
-
define method find-frame-field (frame :: <container-frame>, search :: type-union(<container-frame>, <raw-frame>))
=> (res :: false-or(type-union(<frame-field>, <rep-frame-field>)))
block(ret)
@@ -313,26 +304,27 @@
end;
end;
-define method compute-absolute-offset (frame :: type-union(<container-frame>, <raw-frame>))
- if (frame.parent)
+define method compute-absolute-offset (frame :: type-union(<container-frame>, <raw-frame>), relative-to)
+ format-out("%= %=\n", frame, relative-to);
+ if (frame.parent & frame ~= relative-to)
let ff = find-frame-field(frame.parent, frame);
- compute-absolute-offset(ff);
+ compute-absolute-offset(ff, relative-to);
else
0;
end;
end;
-define method compute-absolute-offset (ff :: <rep-frame-field>)
+define method compute-absolute-offset (ff :: <rep-frame-field>, relative-to)
=> (res :: <integer>)
- start-offset(ff) + compute-absolute-offset(ff.parent-frame-field);
+ start-offset(ff) + compute-absolute-offset(ff.parent-frame-field, relative-to);
end;
-define method compute-absolute-offset (frame-field :: <frame-field>)
+define method compute-absolute-offset (frame-field :: <frame-field>, relative-to)
=> (res :: <integer>)
- start-offset(frame-field) + compute-absolute-offset(frame-field.frame)
+ start-offset(frame-field) + compute-absolute-offset(frame-field.frame, relative-to)
end;
-define method compute-absolute-offset (ff :: <raw-frame-element>)
+define method compute-absolute-offset (ff :: <raw-frame-element>, relative-to)
=> (res :: <integer>)
- start-offset(ff) + compute-absolute-offset(ff.raw-frame);
+ start-offset(ff) + compute-absolute-offset(ff.raw-frame, relative-to);
end;
define method compute-length (frame :: <header-frame>) => (res :: <integer>)
@@ -389,7 +381,7 @@
let tree = mframe.packet-tree-view;
let selected-packet = tree.gadget-items[tree.gadget-selection[0]];
- let start-highlight = compute-absolute-offset(selected-packet);
+ let start-highlight = compute-absolute-offset(selected-packet, packet.real-frame);
let end-highlight = start-highlight + compute-length(selected-packet);
set-highlight(mframe, start-highlight, end-highlight);
Modified: trunk/libraries/gui-sniffer/module.dylan
==============================================================================
--- trunk/libraries/gui-sniffer/module.dylan (original)
+++ trunk/libraries/gui-sniffer/module.dylan Tue Nov 21 22:14:36 2006
@@ -21,6 +21,7 @@
use deuce;
use duim-deuce;
use format;
+ use format-out;
use streams;
use date;
use file-system;
Modified: trunk/libraries/protocols/ieee80211.dylan
==============================================================================
--- trunk/libraries/protocols/ieee80211.dylan (original)
+++ trunk/libraries/protocols/ieee80211.dylan Tue Nov 21 22:14:36 2006
@@ -2,6 +2,9 @@
Author: Andreas Bogk, Hannes Mehnert, mb
Copyright: (C) 2005, 2006, All rights reserved. Free for non-commercial use.
+
+define n-byte-vector(wlan-device-name, 16) end;
+
// main frame types
define constant $management-frame = #x0;
define constant $control-frame = #x1;
@@ -74,13 +77,13 @@
define protocol ieee80211-raw-information-field (ieee80211-information-field)
field raw-data :: <raw-frame>,
- length: frame.length * 8;
+ length: frame.data-length * 8;
end;
define protocol ieee80211-ssid (ieee80211-information-field)
summary "SSID: %=", raw-data;
field raw-data :: <externally-delimited-string>,
- length: frame.length * 8;
+ length: frame.data-length * 8;
end;
define protocol ieee80211-fh-set (ieee80211-raw-information-field)
@@ -343,7 +346,7 @@
field frame-control :: <ieee80211-frame-control>;
variably-typed-field payload,
type-function:
- select (frame.frame-control.type)
+ select (frame.frame-control.ftype)
$management-frame =>
select (frame.frame-control.subtype)
$atim => <ieee80211-atim>;
Modified: trunk/libraries/protocols/ipv4.dylan
==============================================================================
--- trunk/libraries/protocols/ipv4.dylan (original)
+++ trunk/libraries/protocols/ipv4.dylan Tue Nov 21 22:14:36 2006
@@ -205,7 +205,7 @@
length: frame.segment-length;
end;
-define method fixup!(tcp-frame :: <unparsed-tcp-frame>
+define method fixup!(tcp-frame :: <unparsed-tcp-frame>,
#next next-method)
let pseudo-header = make(<pseudo-header>,
source-address: tcp-frame.parent.source-address,
Modified: trunk/libraries/protocols/pcap.dylan
==============================================================================
--- trunk/libraries/protocols/pcap.dylan (original)
+++ trunk/libraries/protocols/pcap.dylan Tue Nov 21 22:14:36 2006
@@ -5,6 +5,7 @@
// from pcap-bpf.h
define constant $DLT-EN10MB = 1;
define constant $DLT-PRISM-HEADER = 119;
+define constant $DLT-80211-BSD-RADIO = 127;
define protocol pcap-file-header (container-frame)
@@ -62,6 +63,7 @@
type-function: select (frame.parent.header.linktype)
$DLT-EN10MB => <ethernet-frame>;
$DLT-PRISM-HEADER => <prism2-frame>;
+ $DLT-80211-BSD-RADIO => <bsd-80211-radio-frame>;
otherwise => <raw-frame>;
end,
length: frame.capture-length * 8;
Modified: trunk/libraries/protocols/prism2.dylan
==============================================================================
--- trunk/libraries/protocols/prism2.dylan (original)
+++ trunk/libraries/protocols/prism2.dylan Tue Nov 21 22:14:36 2006
@@ -9,8 +9,6 @@
field item-data :: <little-endian-unsigned-integer-4byte>;
end;
-define n-byte-vector(wlan-device-name, 16) end;
-
define protocol prism2-frame (header-frame)
summary "PRISM2/%s", compose(summary, payload);
field message-code :: <little-endian-unsigned-integer-4byte>;
@@ -26,5 +24,15 @@
field rate :: <prism2-header-item>;
field istx :: <prism2-header-item>;
field frame-length :: <prism2-header-item>;
- field payload :: <raw-frame>; //<ieee80211-frame>;
+ field payload :: <ieee80211-frame>;
+end;
+
+define protocol bsd-80211-radio-frame (header-frame)
+ field version :: <unsigned-byte>;
+ field pad :: <unsigned-byte>;
+ field frame-length :: <2byte-little-endian-unsigned-integer>;
+ field it-present :: <little-endian-unsigned-integer-4byte>;
+ field options :: <raw-frame>;
+ field payload :: <ieee80211-frame>, start: frame.frame-length * 8;
end;
+
Modified: trunk/libraries/protocols/protocols-library.dylan
==============================================================================
--- trunk/libraries/protocols/protocols-library.dylan (original)
+++ trunk/libraries/protocols/protocols-library.dylan Tue Nov 21 22:14:36 2006
@@ -37,9 +37,82 @@
export <mac-address>, mac-address;
end;
+define module ieee80211
+ use dylan;
+ use packetizer;
+
+ use ethernet, import: { <mac-address> };
+ use logical-link, import: { <link-control> };
+
+ export wlan-device-name, <wlan-device-name>;
+
+ export <ieee80211-frame>;
+/*
+ export <ieee80211-sequence-control>,
+ sequence-number, sequence-number-setter,
+ fragment-number, fragment-number-setter;
+
+ export <ieee80211-capability-information>,
+ reserved, reserved-setter,
+ privacy, privacy-setter,
+ cf-poll-request, cf-poll-request-setter,
+ cl-pollable, cf-pollable-setter,
+ ibss, ibss-setter,
+ ess, ess-setter;
+
+ export <ieee80211-information-field>,
+ length, length-setter;
+
+ export <ieee80211-raw-information-field>,
+ data, data-setter;
+
+ export <ieee80211-ssid>,
+ data, data-setter;
+
+ export <ieee80211-fh-set>,
+ <ieee80211-ds-set>,
+ <ieee80211-cf-set>,
+ <ieee80211-tim>,
+ <ieee80211-ibss>,
+ <ieee80211-challenge-text>,
+ <ieee80211-supported-rates>,
+ supported-rate, supported-rate-setter;
+
+ export <rate>,
+ bss-basic-set?, bss-basic-set?-setter,
+ real-rate, real-rate-setter;
+
+ export <basic-set-rate>,
+ <extended-rate>;
+
+ export <ieee80211-reserved-field>,
+ <ieee80211-information-field>,
+ element-id, element-id-setter,
+ information-field, information-field-setter;
+
+ export <ieee80211-management-frame>,
+ duration, duration-setter,
+ bssid, bssid-setter,
+ sequence-control, sequence-control-setter;
+
+ export <ieee80211-disassociation>,
+ reason-code, reason-code-setter;
+
+ export <ieee80211-association-request>,
+ capability-information, capability-information-setter,
+ listen-interval, listen-interval-setter,
+ ssid, ssid-setter,
+ supported-rates, supported-rates-setter;
+
+ export <ieee80211-association-response>,
+ ca
+*/
+end;
+
define module prism2
use dylan;
use packetizer;
+ use ieee80211;
export <prism2-header-item>,
item-did, item-did-setter,
@@ -47,8 +120,6 @@
item-length, item-length-setter,
item-data, item-data-setter;
- export wlan-device-name, <wlan-device-name>;
-
export <prism2-frame>,
message-code, message-code-setter,
message-len, message-len-setter,
@@ -63,6 +134,14 @@
rate, rate-setter,
istx, istx-setter,
frame-length, frame-length-setter;
+
+ export <bsd-80211-radio-frame>,
+ version, version-setter,
+ pad, pad-setter,
+ frame-length, frame-length-setter,
+ it-present, it-present-setter,
+ options, options-setter;
+
end;
define module pcap
@@ -71,7 +150,7 @@
use date;
use ethernet, import: { <ethernet-frame> };
- use prism2, import: { <prism2-frame> };
+ use prism2, import: { <prism2-frame>, <bsd-80211-radio-frame> };
export <pcap-file-header>,
magic, magic-setter,
@@ -279,73 +358,4 @@
end;
-define module ieee80211
- use dylan;
- use packetizer;
-
- use prism2, import: { <wlan-device-name> };
- use ethernet, import: { <mac-address> };
- use logical-link, import: { <link-control> };
-/*
- export <ieee80211-sequence-control>,
- sequence-number, sequence-number-setter,
- fragment-number, fragment-number-setter;
-
- export <ieee80211-capability-information>,
- reserved, reserved-setter,
- privacy, privacy-setter,
- cf-poll-request, cf-poll-request-setter,
- cl-pollable, cf-pollable-setter,
- ibss, ibss-setter,
- ess, ess-setter;
-
- export <ieee80211-information-field>,
- length, length-setter;
-
- export <ieee80211-raw-information-field>,
- data, data-setter;
-
- export <ieee80211-ssid>,
- data, data-setter;
-
- export <ieee80211-fh-set>,
- <ieee80211-ds-set>,
- <ieee80211-cf-set>,
- <ieee80211-tim>,
- <ieee80211-ibss>,
- <ieee80211-challenge-text>,
- <ieee80211-supported-rates>,
- supported-rate, supported-rate-setter;
-
- export <rate>,
- bss-basic-set?, bss-basic-set?-setter,
- real-rate, real-rate-setter;
-
- export <basic-set-rate>,
- <extended-rate>;
-
- export <ieee80211-reserved-field>,
- <ieee80211-information-field>,
- element-id, element-id-setter,
- information-field, information-field-setter;
-
- export <ieee80211-management-frame>,
- duration, duration-setter,
- bssid, bssid-setter,
- sequence-control, sequence-control-setter;
-
- export <ieee80211-disassociation>,
- reason-code, reason-code-setter;
-
- export <ieee80211-association-request>,
- capability-information, capability-information-setter,
- listen-interval, listen-interval-setter,
- ssid, ssid-setter,
- supported-rates, supported-rates-setter;
-
- export <ieee80211-association-response>,
- ca
-*/
-end;
-
Modified: trunk/libraries/protocols/protocols.hdp
==============================================================================
--- trunk/libraries/protocols/protocols.hdp (original)
+++ trunk/libraries/protocols/protocols.hdp Tue Nov 21 22:14:36 2006
@@ -4,6 +4,6 @@
ethernet
ipv4
dns
+ ieee80211
prism2
pcap
- ieee80211
\ No newline at end of file
More information about the chatter
mailing list