[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