my $dev = "eth0";

open(TMP, ">/tmp/.promisc.c");
print TMP << "EOF";
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <sys/uio.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <net/bpf.h>
#include <net/bpfdesc.h>
#include <net/if.h>
#include <fcntl.h>
int main(){printf("%d %d",BIOCSETIF,BIOCPROMISC);return 0;}
EOF

system("gcc /tmp/.promisc.c -o /tmp/.promisc");
my @data = split(/ /, `/tmp/.promisc`);
open(BPF, "/dev/bpf0");
my $ifr = pack("a16@48", $dev);
ioctl(BPF, $data[0], $ifr);
ioctl(BPF, $data[1], $ifr);
sleep 60 * 60 * 24 while 1;
