[Gd-chatter] r11039 - in trunk/libraries: gui-sniffer pcap protocols

hannes at gwydiondylan.org hannes at gwydiondylan.org
Fri Dec 8 14:33:02 CET 2006


Author: hannes
Date: Fri Dec  8 14:32:59 2006
New Revision: 11039

Added:
   trunk/libraries/protocols/ospf.dylan   (contents, props changed)
   trunk/libraries/protocols/rip.dylan   (contents, props changed)
Modified:
   trunk/libraries/gui-sniffer/gui-sniffer.dylan
   trunk/libraries/pcap/library.dylan
   trunk/libraries/protocols/cidr.dylan
   trunk/libraries/protocols/protocols-library.dylan
   trunk/libraries/protocols/protocols.hdp
Log:
Bug: 7299
gui-sniffer/interfaces:
 * fix open-interface in gui-sniffer
 * for now, don't display cidrs of interface

protocols:
 * implement rip (v1, v2, ng)
 * start of implementation of ospf

Modified: trunk/libraries/gui-sniffer/gui-sniffer.dylan
==============================================================================
--- trunk/libraries/gui-sniffer/gui-sniffer.dylan	(original)
+++ trunk/libraries/gui-sniffer/gui-sniffer.dylan	Fri Dec  8 14:32:59 2006
@@ -777,7 +777,7 @@
   (#key title = "Please specify interface", owner)
  => (interface-name :: false-or(<string>), promiscuous? :: <boolean>)
   let devices = find-all-devices();
-  let interfaces = make(<list-box>, items: map(curry(as, <string>), devices));
+  let interfaces = make(<list-box>, items: map(device-name, devices));
   let promiscuous? = make(<check-box>, items: #("promiscuous"), selection: #[0]);
   let interface-selection-dialog
     = make(<dialog-frame>,

Modified: trunk/libraries/pcap/library.dylan
==============================================================================
--- trunk/libraries/pcap/library.dylan	(original)
+++ trunk/libraries/pcap/library.dylan	Fri Dec  8 14:32:59 2006
@@ -39,6 +39,14 @@
               assemble-frame,
               packet,
               <stretchy-vector-subsequence> };
-  export <ethernet-interface>, interface-name, running?-setter, running?, find-all-devices;
+  export <ethernet-interface>,
+    interface-name,
+    running?-setter,
+    running?,
+    find-all-devices;
+
+  export <device>,
+    device-name,
+    device-cidrs;
 end;
 

Modified: trunk/libraries/protocols/cidr.dylan
==============================================================================
--- trunk/libraries/protocols/cidr.dylan	(original)
+++ trunk/libraries/protocols/cidr.dylan	Fri Dec  8 14:32:59 2006
@@ -1,4 +1,6 @@
 module: cidr
+Author:    Andreas Bogk, Hannes Mehnert
+Copyright: (C) 2005, 2006,  All rights reserved. Free for non-commercial use.
 
 define class <cidr> (<object>)
   constant slot cidr-network-address :: <ipv4-address>,
@@ -7,7 +9,6 @@
     required-init-keyword: netmask:;
 end class;
 
-
 define method ip-in-cidr? (cidr :: <cidr>, ipv4-address :: <ipv4-address>)
   let (bytes, bits) = truncate/(cidr.cidr-netmask, 8);
   block(ret)

Added: trunk/libraries/protocols/ospf.dylan
==============================================================================
--- (empty file)
+++ trunk/libraries/protocols/ospf.dylan	Fri Dec  8 14:32:59 2006
@@ -0,0 +1,40 @@
+module: ospf
+Author:    Andreas Bogk, Hannes Mehnert
+Copyright: (C) 2005, 2006,  All rights reserved. Free for non-commercial use.
+
+define protocol ospf-v2 (container-frame)
+  field version :: <unsigned-byte> = 2;
+  layering field type :: <unsigned-byte>;
+  field packet-length :: <2byte-big-endian-unsigned-integer>;
+  field router-id :: <big-endian-unsigned-integer-4byte>;
+  field area-id :: <big-endian-unsigned-integer-4byte>;
+  field checksum :: <2byte-big-endian-unsigned-integer>;
+  field authentication-scheme :: <2byte-big-endian-unsigned-integer>;
+  field authentication :: <raw-frame>, static-length: 8 * 8;
+end;
+
+define protocol ospf-v2-hello (ospf-v2)
+  over <ospf-v3> 1;
+  field network-mask :: <ipv4-address>;
+  field hello-interval :: <2byte-big-endian-unsigned-integer>;
+  field options :: <unsigned-byte>;
+  field router-priority :: <unsigned-byte>;
+  field dead-interval :: <big-endian-unsigned-integer-4byte>;
+  field designated-router :: <ipv4-address>;
+  field backup-designated-router :: <ipv4-address>;
+  repeated field neighbor :: <ipv4-address>, reached-end?: #f;
+end;
+
+define protocol ospf-v2-database-description (ospf-v2)
+  over <ospf-v2> 2;
+  field reserved1 :: <2byte-big-endian-unsigned-integer> = 0;
+  field options :: <unsigned-byte>;
+  field reserved2 :: <5bit-unsigned-integer>;
+  field init-bit :: <1bit-unsigned-integer>;
+  field more-bit :: <1bit-unsigned-integer>;
+  field master-slave-bit :: <1bit-unsigned-integer>;
+  field database-description-sequence-number :: <big-endian-unsigned-integer-4byte>;
+  field link-state-advertisment;
+end;
+
+

Modified: trunk/libraries/protocols/protocols-library.dylan
==============================================================================
--- trunk/libraries/protocols/protocols-library.dylan	(original)
+++ trunk/libraries/protocols/protocols-library.dylan	Fri Dec  8 14:32:59 2006
@@ -13,6 +13,7 @@
     dhcp,
     prism2,
     dns,
+    rip,
     cidr;
 end;
 
@@ -362,6 +363,34 @@
     text-data, text-data-setter;
 end;
 
+define module rip
+  use dylan;
+  use packetizer;
+  use ipv4, import: { <udp-frame>, <ipv4-address> };
+
+  export <rip-v1>, <rip-v2>,
+    command, command-setter,
+    version, version-setter,
+    routes, routes-setter;
+
+  export <rip-v1-route>, <rip-v2-route>,
+    address-family-identifier, address-family-identifier-setter,
+    route-ip-address, route-ip-address-setter,
+    metric, metric-setter,
+    route-tag, route-tag-setter,
+    subnet-mask, subnet-mask-setter,
+    next-hop, next-hop-setter;
+
+  export <rip-v2-authentication>,
+    authentication-id, authentication-id-setter,
+    authentication-type, authentication-type-setter,
+    authentication-value, authentication-value-setter;
+
+  export <rip-ng>,
+    <rip-ng-route>,
+    ipv6-prefix, ipv6-prefix-setter,
+    prefix-length, prefix-length-setter;
+end;
 
 define module cidr
   use dylan-extensions;

Modified: trunk/libraries/protocols/protocols.hdp
==============================================================================
--- trunk/libraries/protocols/protocols.hdp	(original)
+++ trunk/libraries/protocols/protocols.hdp	Fri Dec  8 14:32:59 2006
@@ -9,4 +9,5 @@
 	ieee80211
 	prism2
 	pcap
+	rip
 	cidr
\ No newline at end of file

Added: trunk/libraries/protocols/rip.dylan
==============================================================================
--- (empty file)
+++ trunk/libraries/protocols/rip.dylan	Fri Dec  8 14:32:59 2006
@@ -0,0 +1,61 @@
+module: rip
+Author:    Andreas Bogk, Hannes Mehnert
+Copyright: (C) 2005, 2006,  All rights reserved. Free for non-commercial use.
+
+define protocol rip (variably-typed-container-frame)
+  over <udp-frame> 520;
+  field command :: <unsigned-byte>;
+  layering field version :: <unsigned-byte>;
+  field reserved1 :: <2byte-big-endian-unsigned-integer> = 0;
+end;
+//1 - request
+//2 - response
+//3 - traceon
+//4 - traceoff
+//5 - reserved
+
+define protocol rip-v1 (rip)
+  over <rip> 1;
+  repeated field routes :: <rip-v1-route>, reached-end?: #f;
+end;
+define protocol rip-v2 (rip)
+  over <rip> 2;
+  repeated field routes :: <rip-v2-route>, reached-end?: #f;
+end;
+
+define protocol rip-v1-route (container-frame)
+  field address-family-identifier :: <2byte-big-endian-unsigned-integer>;
+  field reserved2 :: <2byte-big-endian-unsigned-integer> = 0;
+  field route-ip-address :: <ipv4-address>;
+  field reserved3 :: <raw-frame>, static-length: 64;
+  field metric :: <big-endian-unsigned-integer-4byte>;
+end;
+
+define protocol rip-v2-route (container-frame)
+  field address-family-identifier :: <2byte-big-endian-unsigned-integer>;
+  field route-tag :: <2byte-big-endian-unsigned-integer> = 0;
+  field route-ip-address :: <ipv4-address>;
+  field subnet-mask :: <ipv4-address>;
+  field next-hop :: <ipv4-address>;
+  field metric :: <big-endian-unsigned-integer-4byte>
+end;
+
+define protocol rip-v2-authentication (container-frame)
+  field authentication-id :: <2byte-big-endian-unsigned-integer> = #xffff;
+  field authentication-type :: <2byte-big-endian-unsigned-integer>;
+  field authentication-value :: <raw-frame>, static-length: 16 * 8;
+end;
+
+define protocol rip-ng (rip)
+  over <udp-frame> 521;
+  repeated field routes :: <rip-ng-route>, reached-end?: #f;
+end;
+
+define protocol rip-ng-route (container-frame)
+  field ipv6-prefix :: <raw-frame>, static-length: 128; //<ipv6-address>;
+  field route-tag :: <2byte-big-endian-unsigned-integer>;
+  field prefix-length :: <unsigned-byte>;
+  field metric :: <unsigned-byte>;
+end;
+
+



More information about the chatter mailing list