[chatter] r11812 - in trunk/libraries: layer network/ip-stack/layers/network/arp network/ip-stack/layers/network/ip network/ip-stack/layers/network/ip-over-ethernet
hannes at mccarthy.opendylan.org
hannes at mccarthy.opendylan.org
Wed May 14 01:10:04 CEST 2008
Author: hannes
Date: Wed May 14 01:10:04 2008
New Revision: 11812
Modified:
trunk/libraries/layer/module.dylan
trunk/libraries/layer/new-layer.dylan
trunk/libraries/layer/socket.dylan
trunk/libraries/network/ip-stack/layers/network/arp/arp.dylan
trunk/libraries/network/ip-stack/layers/network/ip-over-ethernet/ip-over-ethernet.dylan
trunk/libraries/network/ip-stack/layers/network/ip/ip.dylan
Log:
Bug: 7299
more fixes for ip layer
Modified: trunk/libraries/layer/module.dylan
==============================================================================
--- trunk/libraries/layer/module.dylan (original)
+++ trunk/libraries/layer/module.dylan Wed May 14 01:10:04 2008
@@ -72,6 +72,7 @@
define module new-layer
use common-dylan;
use format;
+ use print;
export <layer>, layer-name, default-name,
lower-layers, upper-layers,
Modified: trunk/libraries/layer/new-layer.dylan
==============================================================================
--- trunk/libraries/layer/new-layer.dylan (original)
+++ trunk/libraries/layer/new-layer.dylan Wed May 14 01:10:04 2008
@@ -9,6 +9,10 @@
slot sockets :: <list> = #();
end;
+define method print-object (layer :: <layer>, stream :: <stream>) => ()
+ format(stream, "%s", layer.layer-name);
+end;
+
define open generic register-lower-layer (upper :: <layer>, lower :: <layer>);
define open generic register-upper-layer (lower :: <layer>, upper :: <layer>);
@@ -336,6 +340,10 @@
value;
end;
+define method read-as (type == <layer>, value :: <string>) => (res :: <layer>)
+ find-layer(value);
+end;
+
define method read-as (type == <boolean>, value :: <string>) => (res :: <boolean>)
if ((value = "#t") | (value = "true") | (value = "t"))
#t;
@@ -364,7 +372,8 @@
define inline function property-value-setter
(value, property :: <property>) => (value)
- let old-value = property.property-value;
+ let old-value = slot-initialized?(property, %property-value) &
+ property.property-value;
check-property(property.property-owner, property.property-name, value);
if (old-value ~= value)
property.%property-value := value;
Modified: trunk/libraries/layer/socket.dylan
==============================================================================
--- trunk/libraries/layer/socket.dylan (original)
+++ trunk/libraries/layer/socket.dylan Wed May 14 01:10:04 2008
@@ -62,9 +62,10 @@
define method close-socket (socket :: <tapping-socket>)
socket.socket-owner.sockets := remove!(socket.socket-owner.sockets, socket);
- disconnect(socket.socket-output, socket.socket-output.connected-input);
- disconnect(socket.socket-fan-out, socket.frame-filter.the-input);
+ //disconnect(socket.socket-output, socket.socket-output.connected-input);
+ disconnect(socket.socket-fan-out, socket.fan-in); //socket.frame-filter.the-input);
disconnect(socket.demux-output, socket.fan-in);
+ disconnect(socket.socket-output, socket.socket-output.connected-input);
end;
define method socket-input (socket :: <tapping-socket>) => (res /* :: <input> */);
@@ -83,10 +84,10 @@
=> (res :: <tapping-socket>)
let socket = make(<tapping-socket>, owner: layer);
//XXX: frame-filter should be the frame-type we are interested in
- socket.frame-filter := make(<frame-filter>, frame-filter: "");
- socket.socket-fan-out := fan-out;
- connect(fan-out, socket.frame-filter);
- connect(socket.frame-filter, socket.fan-in);
+ //socket.frame-filter := make(<frame-filter>, frame-filter: "");
+ socket.socket-fan-out := create-output(fan-out);
+ connect(socket.socket-fan-out, socket.fan-in); //frame-filter);
+// connect(socket.frame-filter, socket.fan-in);
socket.demux-output := create-output-for-filter(demultiplexer, filter-string);
connect(socket.demux-output, socket.fan-in);
socket;
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 May 14 01:10:04 2008
@@ -149,7 +149,6 @@
define method push-data-aux (input :: <push-input>,
node :: <arp-handler>,
frame :: <container-frame>)
- format-out("received arp frame %=\n", frame);
if (frame.operation = #"arp-request"
& frame.target-mac-address = mac-address("00:00:00:00:00:00"))
let arp-entry = element(node.arp-table, frame.target-ip-address, default: #f);
Modified: trunk/libraries/network/ip-stack/layers/network/ip-over-ethernet/ip-over-ethernet.dylan
==============================================================================
--- trunk/libraries/network/ip-stack/layers/network/ip-over-ethernet/ip-over-ethernet.dylan (original)
+++ trunk/libraries/network/ip-stack/layers/network/ip-over-ethernet/ip-over-ethernet.dylan Wed May 14 01:10:04 2008
@@ -16,6 +16,10 @@
check-socket-arguments?(lower, type: <ipv4-frame>);
end;
+define method check-socket-arguments? (layer :: <ip-over-ethernet-layer>, #key type) => (res :: <boolean>)
+ type == <ipv4-frame>
+end;
+
define method register-lower-layer (upper :: <ip-over-ethernet-layer>, lower :: <layer>)
upper. at running-state := #"up";
end;
@@ -36,7 +40,7 @@
end;
let filter = "ipv4";
let socket = create-socket(layer.lower-layers[0], filter-string: filter);
- let res = make(<ip-over-ethernet-socket>, owner: layer, lower-socket: socket);
+ make(<ip-over-ethernet-socket>, owner: layer, lower-socket: socket);
end;
define method socket-input (socket :: <ip-over-ethernet-socket>) => (res :: <input>)
Modified: trunk/libraries/network/ip-stack/layers/network/ip/ip.dylan
==============================================================================
--- trunk/libraries/network/ip-stack/layers/network/ip/ip.dylan (original)
+++ trunk/libraries/network/ip-stack/layers/network/ip/ip.dylan Wed May 14 01:10:04 2008
@@ -33,7 +33,7 @@
cidr: lower. at ip-address,
socket: socket);
register-route(upper, route);
- connect(socket, upper.fan-in);
+ connect(socket.socket-output, upper.fan-in);
end;
define method deregister-lower-layer (upper :: <ip-layer>, lower :: <ip-adapter-layer>)
More information about the chatter
mailing list