[Gd-chatter] r10861 - trunk/libraries/packetizer
mb at gwydiondylan.org
mb at gwydiondylan.org
Tue Aug 22 13:34:33 CEST 2006
Author: mb
Date: Tue Aug 22 13:34:31 2006
New Revision: 10861
Modified:
trunk/libraries/packetizer/ieee80211.dylan
trunk/libraries/packetizer/module.dylan
Log:
Bug: 7299
Improved 80211 parsing
Modified: trunk/libraries/packetizer/ieee80211.dylan
==============================================================================
--- trunk/libraries/packetizer/ieee80211.dylan (original)
+++ trunk/libraries/packetizer/ieee80211.dylan Tue Aug 22 13:34:31 2006
@@ -70,38 +70,42 @@
// ieee80211 information fields
define protocol ieee80211-information-field (container-frame)
field length :: <unsigned-byte>,
- fixup: byte-offset(frame-size(frame.information));
- // the fields also contain binary data
- field data :: <externally-delimited-string>,
+ fixup: byte-offset(frame-size(frame.data));
+end;
+
+define protocol ieee80211-raw-information-field (ieee80211-information-field)
+ field data :: <raw-frame>,
length: frame.length * 8;
end;
define protocol ieee80211-ssid (ieee80211-information-field)
summary "SSID: %=", data;
+ field data :: <externally-delimited-string>,
+ length: frame.length * 8;
end;
-define protocol ieee80211-fh-set (ieee80211-information-field)
+define protocol ieee80211-fh-set (ieee80211-raw-information-field)
end;
-define protocol ieee80211-ds-set (ieee80211-information-field)
+define protocol ieee80211-ds-set (ieee80211-raw-information-field)
end;
-define protocol ieee80211-cf-set (ieee80211-information-field)
+define protocol ieee80211-cf-set (ieee80211-raw-information-field)
end;
-define protocol ieee80211-tim (ieee80211-information-field)
+define protocol ieee80211-tim (ieee80211-raw-information-field)
end;
-define protocol ieee80211-ibss (ieee80211-information-field)
+define protocol ieee80211-ibss (ieee80211-raw-information-field)
end;
-define protocol ieee80211-challenge-text (ieee80211-information-field)
+define protocol ieee80211-challenge-text (ieee80211-raw-information-field)
end;
-define protocol ieee80211-supported-rates (ieee80211-information-field)
+define protocol ieee80211-supported-rates (ieee80211-raw-information-field)
end;
-define protocol ieee80211-reserved-field (ieee80211-information-field)
+define protocol ieee80211-reserved-field (ieee80211-raw-information-field)
end;
// ieee80211 information elements (information field header)
@@ -126,6 +130,8 @@
// management frames
define protocol ieee80211-management-frame (container-frame)
+ summary "DST %=, SRC %=, BSSID %=", destination-address,
+ source-address, bssid;
field duration :: <2byte-little-endian-unsigned-integer>;
field destination-address :: <mac-address>;
field source-address :: <mac-address>;
@@ -134,11 +140,12 @@
end;
define protocol ieee80211-disassociation (ieee80211-management-frame)
+ summary "DISASSOC %=", method (x) next-method() end;
field reason-code :: <2byte-little-endian-unsigned-integer>;
end;
define protocol ieee80211-association-request (ieee80211-management-frame)
- summary "%s", compose(summary, ssid);
+ summary "ASSOC-REQ %= %s", method (x) next-method() end, compose(summary, ssid);
field capability-information :: <ieee80211-capability-information>;
field listen-interval :: <2byte-little-endian-unsigned-integer>;
field ssid :: <ieee80211-information-element>;
@@ -153,7 +160,7 @@
end;
define protocol ieee80211-reassociation-request (ieee80211-management-frame)
- summary "%s", compose(summary, ssid);
+ summary "REASSOC %s", compose(summary, ssid);
field capabilty-information :: <ieee80211-capability-information>;
field listen-intervall :: <2byte-little-endian-unsigned-integer>;
field current-ap-address :: <mac-address>;
@@ -169,32 +176,29 @@
end;
define protocol ieee80211-probe-request (ieee80211-management-frame)
- summary "%s", compose(summary, ssid);
+ summary "PROBE-REQ %= %s", method(x) next-method() end, compose(summary, ssid);
field ssid :: <ieee80211-information-element>;
field supported-rates :: <ieee80211-information-element>;
end;
define protocol ieee80211-probe-response (ieee80211-management-frame)
- summary "%s", compose(summary, ssid);
+ summary "PROBE-RESP %= %s", method (x) next-method() end, compose(summary, ssid);
field timestamp :: <timestamp>;
field beacon-intervall :: <2byte-little-endian-unsigned-integer>;
field capability-information :: <ieee80211-capability-information>;
field ssid :: <ieee80211-information-element>;
field supported-rates :: <ieee80211-information-element>;
- field raw-data :: <raw-frame>;
- // the following fields may or may not be present
- // field fh-parameter-set :: <ieee80211-information-element>;
- // field ds-parameter-set :: <ieee80211-information-element>;
- // field cf-parameter-set :: <ieee80211-information-element>;
- // field ibbs :: <ieee80211-information-element>;
+ repeated field additional-information :: <ieee80211-information-element>,
+ reached-end?: method (x) #f end;
end;
define protocol ieee80211-authentication (ieee80211-management-frame)
+ summary "AUTH %=", method (x) next-method() end;
field algorithm-number :: <2byte-little-endian-unsigned-integer>;
field transaction-sequence-number :: <2byte-little-endian-unsigned-integer>;
field status-code :: <2byte-little-endian-unsigned-integer>;
- field raw-data :: <raw-frame>;
- // field challenge-text :: <ieee80211-information-element>;
+ repeated field additional-information :: <ieee80211-information-element>,
+ reached-end?: method (x) #f end;
end;
define protocol ieee80211-deauthentication (ieee80211-management-frame)
@@ -205,19 +209,14 @@
end;
define protocol ieee80211-beacon (ieee80211-management-frame)
- summary "%s", compose(summary, ssid);
+ summary "BEACON %= %s", method (x) next-method() end, compose(summary, ssid);
field timestamp :: <timestamp>;
field beacon-interval :: <2byte-little-endian-unsigned-integer>;
field capability-information :: <2byte-little-endian-unsigned-integer>;
field ssid :: <ieee80211-information-element>;
field supported-rates :: <ieee80211-information-element>;
- field raw-data :: <raw-frame>;
- // the following fields may or may not be present
- // field fh-parameter-set :: <ieee80211-information-element>;
- // field ds-parameter-set :: <ieee80211-information-element>;
- // field cf-parameter-set :: <ieee80211-information-element>;
- // field ibbs :: <ieee80211-information-element>;
- // field tim :: <ieee80211-information-element>;
+ repeated field additional-information :: <ieee80211-information-element>,
+ reached-end?: method (x) #f end;
end;
// ieee80211 data frames
@@ -230,6 +229,7 @@
end;
define protocol ieee80211-null-function (ieee80211-data-frame)
+ summary "NULL-FUNCTION %=", method (x) next-method() end;
field payload :: <raw-frame>; // there should be no data
end;
Modified: trunk/libraries/packetizer/module.dylan
==============================================================================
--- trunk/libraries/packetizer/module.dylan (original)
+++ trunk/libraries/packetizer/module.dylan Tue Aug 22 13:34:31 2006
@@ -31,7 +31,7 @@
<decoded-arp-frame>, <decoded-ethernet-frame>,
<fixed-size-byte-vector-frame>, data,
total-length, concrete-frame-fields,
- <repeated-field>;
+ <repeated-field>, <malformed-packet-error>;
export <pcap-file>, <pcap-file-header>, <pcap-packet>, header, packets,
$DLT-EN10MB, $DLT-PRISM-HEADER, make-unix-time, decode-unix-time, timestamp;
@@ -42,7 +42,9 @@
export $broken-ipv4, hexdump;
- export <unsigned-byte>;
+ export <unsigned-byte>, <3byte-big-endian-unsigned-integer>,
+ <3byte-little-endian-unsigned-integer>,
+ <externally-delimited-string>;
export <integer-or-unknown>, $unknown-at-compile-time;
More information about the chatter
mailing list