[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