[Gd-chatter] r11000 - in trunk/libraries: packetizer protocols

andreas at gwydiondylan.org andreas at gwydiondylan.org
Tue Nov 28 23:28:00 CET 2006


Author: andreas
Date: Tue Nov 28 23:27:57 2006
New Revision: 11000

Modified:
   trunk/libraries/packetizer/fields.dylan
   trunk/libraries/packetizer/leaf-frames.dylan
   trunk/libraries/packetizer/module.dylan
   trunk/libraries/packetizer/protocol-definer-macro.dylan
   trunk/libraries/protocols/ethernet.dylan
   trunk/libraries/protocols/ieee80211.dylan
Log:
job: 7299

802.1q (this time for real).


Modified: trunk/libraries/packetizer/fields.dylan
==============================================================================
--- trunk/libraries/packetizer/fields.dylan	(original)
+++ trunk/libraries/packetizer/fields.dylan	Tue Nov 28 23:27:57 2006
@@ -124,6 +124,12 @@
   slot count, required-init-keyword: count:;
 end;
 
+/* one day I want to have this... 
+define class <externally-delimited-repeated-field> (<self-delimited-repeated-field>)
+  keyword reached-end?:, init-value: always(#f);
+end;
+*/
+
 define method make(class == <repeated-field>,
                    #rest rest, 
                    #key count, reached-end?,
@@ -135,7 +141,7 @@
         elseif(reached-end?)
           <self-delimited-repeated-field>
         else
-          error("unsupported repeated field")
+          error("unknown repeated field type encountered");
         end,
         count: count,
         reached-end?: reached-end?,

Modified: trunk/libraries/packetizer/leaf-frames.dylan
==============================================================================
--- trunk/libraries/packetizer/leaf-frames.dylan	(original)
+++ trunk/libraries/packetizer/leaf-frames.dylan	Tue Nov 28 23:27:57 2006
@@ -106,6 +106,10 @@
 define n-bit-unsigned-integer(<5bit-unsigned-integer>; 5) end;
 define n-bit-unsigned-integer(<6bit-unsigned-integer>; 6) end;
 define n-bit-unsigned-integer(<7bit-unsigned-integer>; 7) end;
+define n-bit-unsigned-integer(<9bit-unsigned-integer>; 9) end;
+define n-bit-unsigned-integer(<10bit-unsigned-integer>; 10) end;
+define n-bit-unsigned-integer(<11bit-unsigned-integer>; 11) end;
+define n-bit-unsigned-integer(<12bit-unsigned-integer>; 12) end;
 define n-bit-unsigned-integer(<13bit-unsigned-integer>; 13) end;
 define n-bit-unsigned-integer(<14bit-unsigned-integer>; 14) end;
 

Modified: trunk/libraries/packetizer/module.dylan
==============================================================================
--- trunk/libraries/packetizer/module.dylan	(original)
+++ trunk/libraries/packetizer/module.dylan	Tue Nov 28 23:27:57 2006
@@ -34,10 +34,11 @@
     <3byte-big-endian-unsigned-integer>,
     <2byte-big-endian-unsigned-integer>, <2byte-little-endian-unsigned-integer>,
     <3byte-little-endian-unsigned-integer>,
-    <1bit-unsigned-integer>, <6bit-unsigned-integer>, <3bit-unsigned-integer>,
-    <4bit-unsigned-integer>, <5bit-unsigned-integer>,
-    <7bit-unsigned-integer>, <13bit-unsigned-integer>,
-    <2bit-unsigned-integer>, <14bit-unsigned-integer>;
+    <1bit-unsigned-integer>, <2bit-unsigned-integer>, <3bit-unsigned-integer>,
+    <4bit-unsigned-integer>, <5bit-unsigned-integer>, <6bit-unsigned-integer>,
+    <7bit-unsigned-integer>, <9bit-unsigned-integer>, <10bit-unsigned-integer>,
+    <11bit-unsigned-integer>, <12bit-unsigned-integer>, <13bit-unsigned-integer>,
+    <14bit-unsigned-integer>, <15bit-unsigned-integer>;
 
   export <variable-size-byte-vector>, <externally-delimited-string>,
     <raw-frame>;

Modified: trunk/libraries/packetizer/protocol-definer-macro.dylan
==============================================================================
--- trunk/libraries/packetizer/protocol-definer-macro.dylan	(original)
+++ trunk/libraries/packetizer/protocol-definer-macro.dylan	Tue Nov 28 23:27:57 2006
@@ -303,7 +303,7 @@
         end-of-field := real-end;
       else
         error("This shouldn't happen... in %s, start %d end %d (%d bits), used %d\n",
-              frame-field.field.field-name, start, end-of-field, end-of-field - start, length - bit-offset(start));
+              frame-field.field.field-name, start, end-of-field, end-of-field - start, length);
       end;
     end;
   else

Modified: trunk/libraries/protocols/ethernet.dylan
==============================================================================
--- trunk/libraries/protocols/ethernet.dylan	(original)
+++ trunk/libraries/protocols/ethernet.dylan	Tue Nov 28 23:27:57 2006
@@ -68,6 +68,17 @@
     type-function: element(<ethernet-frame>.layer, frame.type-code, default: <raw-frame>);
 end;
 
+define protocol vlan-tag (header-frame)
+  over <ethernet-frame> #x8100;
+  summary "VLAN: %=", vlan-id;
+  field priority :: <3bit-unsigned-integer>;
+  field canonical-format-indicatior :: <1bit-unsigned-integer>;
+  field vlan-id :: <12bit-unsigned-integer>;
+  layering field type-code :: <2byte-big-endian-unsigned-integer>;
+  variably-typed-field payload,
+    type-function: element(<ethernet-frame>.layer, frame.type-code, default: <raw-frame>);
+end;
+
 define protocol stp-identifier (container-frame)
   summary "%=/%=", bridge-priority, bridge-address;
   field bridge-priority :: <2byte-big-endian-unsigned-integer>;
@@ -133,7 +144,8 @@
                      #x000a => <cdp-vtp-native-vlan-id>;
                      #x000b => <cdp-duplex>;
                      #x000e => <cdp-ata-186-voip-vlan-request>;
-                     #x0010 => <cdp-ata-186-voip-vlan-assignment>;
+                     #x000f => <cdp-ata-186-voip-vlan-assignment>;
+                     #x0010 => <cdp-power>;
                      #x0011 => <cdp-mtu>;
                      #x0012 => <cdp-avvid-trust-bitmap>;
                      #x0013 => <cdp-avvid-untrusted-port-CoS>;
@@ -233,6 +245,10 @@
   summary "ATA 186 VoIP VLAN Assignment";
 end;
 
+define protocol cdp-power (cdp-unknown-record)
+  summary "Power: %=", cdp-value;
+end;
+
 define protocol cdp-mtu (cdp-record)
   summary "MTU: %=", cdp-mtu;
   field cdp-mtu :: <big-endian-unsigned-integer-4byte>;

Modified: trunk/libraries/protocols/ieee80211.dylan
==============================================================================
--- trunk/libraries/protocols/ieee80211.dylan	(original)
+++ trunk/libraries/protocols/ieee80211.dylan	Tue Nov 28 23:27:57 2006
@@ -52,8 +52,6 @@
 define constant $information-element-challenge-text = 16;
 
 define n-byte-vector(timestamp, 8) end;
-define n-bit-unsigned-integer(<11bit-unsigned-integer>; 11) end;
-define n-bit-unsigned-integer(<12bit-unsigned-integer>; 12) end;
 
 define protocol ieee80211-sequence-control (container-frame)
   field sequence-number :: <12bit-unsigned-integer>;



More information about the chatter mailing list