[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