[Gd-chatter] r10845 - trunk/libraries/pcap
hannes at gwydiondylan.org
hannes at gwydiondylan.org
Thu Aug 10 16:43:28 CEST 2006
Author: hannes
Date: Thu Aug 10 16:43:26 2006
New Revision: 10845
Modified:
trunk/libraries/pcap/pcap.dylan
Log:
Bug: 7299
*make promiscious? a class slot, not global defined (wireless cards on windows don't support promiscious mode)
Modified: trunk/libraries/pcap/pcap.dylan
==============================================================================
--- trunk/libraries/pcap/pcap.dylan (original)
+++ trunk/libraries/pcap/pcap.dylan Thu Aug 10 16:43:26 2006
@@ -11,6 +11,7 @@
(interface, packet :: <pcap-packet-header*>, bytes)
let real-interface = import-c-dylan-object(interface);
let res = make(<byte-vector>, size: packet.caplen);
+ //XXX: performance!
for (i from 0 below packet.caplen)
res[i] := bytes[i];
end;
@@ -34,11 +35,13 @@
//XXX needed because bug #7192 c-ffi stuff needs to be compiled in tight mode
define generic interface-name (object :: <ethernet-interface>) => (res :: <string>);
+define generic promiscious? (object :: <ethernet-interface>) => (res :: <boolean>);
define generic pcap-t (object :: <ethernet-interface>) => (res :: <object>);
define generic pcap-t-setter (value :: <object>, object :: <ethernet-interface>) => (res :: <object>);
define open class <ethernet-interface> (<filter>)
constant slot interface-name :: <string> = "ath0", init-keyword: name:;
+ constant slot promiscious? :: <boolean> = #t, init-keyword: promiscious?:;
slot pcap-t;
end;
@@ -67,7 +70,6 @@
end;
define constant $ethernet-buffer-size = 1600;
-define constant $promisc = 1;
define constant $timeout = 100;
define method initialize
@@ -80,7 +82,7 @@
format-out("trying interface %s\n", name);
let res = pcap-open-live(name,
$ethernet-buffer-size,
- $promisc,
+ if (interface.promiscious?) 1 else 0 end,
$timeout,
buffer-offset(errbuf, 0));
if (res ~= null-pointer(<C-void*>))
More information about the chatter
mailing list