Author: hannes
Date: Fri Aug 11 21:40:21 2006
New Revision: 10851
Modified:
trunk/libraries/network-flow/module.dylan
trunk/libraries/network-flow/network-flow.dylan
Log:
Bug: 7299
*implement <completer> which takes a template frame
and fills all fields set to a value in the template
frame to each frame passing through it
(for use in layering)
* add push-data-aux(<push-input>, <pcap-file-writer>, <pcap-packet>)
this is needed to write <pcap-packets> where the time is already
set (used in gui-sniffer)
Modified: trunk/libraries/network-flow/module.dylan
==============================================================================
--- trunk/libraries/network-flow/module.dylan (original)
+++ trunk/libraries/network-flow/module.dylan Fri Aug 11 21:40:21 2006
@@ -16,6 +16,7 @@
export <summary-printer>, <verbose-printer>,
<decapsulator>, <demultiplexer>,
create-output-for-filter,
+ <completer>,
<frame-filter>,
<pcap-file-reader>,
<pcap-file-writer>,
Modified: trunk/libraries/network-flow/network-flow.dylan
==============================================================================
--- trunk/libraries/network-flow/network-flow.dylan (original)
+++ trunk/libraries/network-flow/network-flow.dylan Fri Aug 11 21:40:21 2006
@@ -184,6 +184,35 @@
force-output(node.file-stream);
end;
+define method push-data-aux (input :: <push-input>,
+ node :: <pcap-file-writer>,
+ frame :: <pcap-packet>)
+ write(node.file-stream,
+ assemble-frame(frame));
+ force-output(node.file-stream);
+end;
+
+define class <completer> (<filter>)
+ constant slot template-frame :: <frame>, required-init-keyword:
template-frame:;
+end;
+
+define method push-data-aux (input :: <push-input>,
+ node :: <completer>,
+ frame :: <container-frame>);
+ for (field in node.template-frame.fields)
+ unless (field.getter(frame))
+ let default-field-value = field.getter(node.template-frame);
+ if (default-field-value)
+ field.setter(default-field-value, frame);
+ elseif (~ field.fixup-function)
+ format-out("Field %=\n", field.field-name);
+ signal(make(<undefined-field-error>));
+ end;
+ end;
+ end;
+ push-data(node.the-output, frame);
+end;
+
/*
begin
--
Gd-chatter mailing list
Gd-chatter@xxxxxxxxxxxxxxxx
https://www.opendylan.org/mailman/listinfo/gd-chatter
|