set me [exec hostname]
set pf1 [new Network/Pcap/Live]
$pf1 set promisc_ true
set intf [$pf1 open readonly]
puts "pf1 configured on interface $intf"
set filt "(ip src host foobar) and (not ether broadcast)"
set nbytes [$pf1 filter $filt]
puts "filter compiled to $nbytes bytes"
puts "drops: [$pf1 pdrops], pkts: [$pf1 pkts]"
This example first determines the name of the local system which
will be used in constructing a BPF/libpcap filter predicate.
The new Network/Pcap/Live call creates an instance of the
pcap network object for capturing live traffic.
The promisc_ flag tells the packet filter whether it should
configure the undelying interface in promiscuous mode (if it is supported).
The open call activates the packet filter, and may be specified
as readonly, writeonly, or readwrite.
It returns the name of the network interface the filter is associated
with.
The open call takes an optional extra parameter (not illustrated)
indicating the name of the interface to use in cases where a particular
interface should be used on a multi-homed host.
The filter method is used to create a BPF-compatible packet
filter program which is loaded into the underlying BPF machinery.
The filter method returns the number of bytes used by the
filter predicate.
The pdrops and pkts methods are available for statistics
collection.
They report the number of packets dropped by the filter due to
buffer exhaustion and the
total number of packets that arrived at the filter, respectively
(not the number of packets accepted by the filter).
Tom Henderson 2011-11-05