[chatter] r11791 - in trunk/libraries/network/ip-stack/layers: media-access/ethernet network/arp
hannes at mccarthy.opendylan.org
hannes at mccarthy.opendylan.org
Wed Apr 30 03:34:04 CEST 2008
Author: hannes
Date: Wed Apr 30 03:34:03 2008
New Revision: 11791
Modified:
trunk/libraries/network/ip-stack/layers/media-access/ethernet/ethernet.dylan
trunk/libraries/network/ip-stack/layers/network/arp/arp.dylan
Log:
Job: 7299
minor fixes
Modified: trunk/libraries/network/ip-stack/layers/media-access/ethernet/ethernet.dylan
==============================================================================
--- trunk/libraries/network/ip-stack/layers/media-access/ethernet/ethernet.dylan (original)
+++ trunk/libraries/network/ip-stack/layers/media-access/ethernet/ethernet.dylan Wed Apr 30 03:34:03 2008
@@ -62,6 +62,13 @@
check-socket-arguments?(lower, type: <ethernet-frame>);
end;
+define method check-socket-arguments? (lower :: <ethernet-layer>,
+ #rest rest, #key type, #all-keys)
+ => (valid-arguments? :: <boolean>)
+ //XXX: if (valid-type?)
+ #t;
+end;
+
define method register-lower-layer (upper :: <ethernet-layer>, lower :: <layer>)
upper. at running-state := #"up";
end;
Modified: trunk/libraries/network/ip-stack/layers/network/arp/arp.dylan
==============================================================================
--- trunk/libraries/network/ip-stack/layers/network/arp/arp.dylan (original)
+++ trunk/libraries/network/ip-stack/layers/network/arp/arp.dylan Wed Apr 30 03:34:03 2008
@@ -3,9 +3,16 @@
author:
copyright:
+define class <arp-handler> (<filter>)
+ constant slot arp-table :: <vector-table> = make(<vector-table>);
+ constant slot table-lock :: <lock> = make(<lock>);
+ slot send-socket :: <socket>;
+end;
+
+
define layer arp (<layer>)
system property running-state :: <symbol> = #"down";
- slot arp-handler :: <arp-handler> = make(<arp-handler>);
+ slot arp-flow-node :: <arp-handler> = make(<arp-handler>);
end;
define method check-upper-layer? (lower :: <arp-layer>, upper :: <layer>) => (allowed? :: <boolean>);
@@ -19,38 +26,32 @@
define method register-lower-layer (upper :: <arp-layer>, lower :: <layer>)
let socket = create-socket(lower, filter-string: "arp");
- upper.arp-handler.send-socket := socket;
- connect(socket, upper.arp-handler);
+ upper.arp-flow-node.send-socket := socket;
+ connect(socket, upper.arp-flow-node);
upper. at running-state := #"up";
end;
define method deregister-lower-layer (upper :: <arp-layer>, lower :: <layer>)
for (arp-entry in choose(rcurry(instance?, <outstanding-arp-request>),
- upper.arp-handler.arp-table))
+ upper.arp-flow-node.arp-table))
cancel(arp-entry.timer);
- remove!(upper.arp-handler.arp-table, arp-entry);
+ remove!(upper.arp-flow-node.arp-table, arp-entry);
end;
upper. at running-state := #"down";
end;
-define class <arp-handler> (<filter>)
- constant slot arp-table :: <vector-table> = make(<vector-table>);
- constant slot table-lock :: <lock> = make(<lock>);
- slot send-socket :: <socket>;
-end;
-
define constant $broadcast-ethernet-address = mac-address("ff:ff:ff:ff:ff:ff");
define function arp-resolve (arp :: <arp-layer>, destination :: <ipv4-address>, clos :: <function>) => ();
if (arp. at running-state == #"down")
error("arp layer down!");
end;
- let arp-entry = element(arp.arp-handler.arp-table, destination, default: #f);
+ let arp-entry = element(arp.arp-flow-node.arp-table, destination, default: #f);
if (instance?(arp-entry, <known-arp-entry>))
clos(arp-entry.arp-mac-address);
else
- let arp-handler = arp.arp-handler;
+ let arp-handler = arp.arp-flow-node;
with-lock(arp-handler.table-lock)
if (arp-entry)
arp-entry.outstanding-closures := add!(arp-entry.outstanding-closures, clos);
More information about the chatter
mailing list