[Winpcap-users] PPP connection - filtering problem

Gianluca Varenni gianluca.varenni at gmail.com
Mon Aug 29 16:24:44 GMT 2005


Hi Stanislaw

It seems a bug in the statistics code for the Dialup adapters. I'll look at 
the problem in the next couple of weeks.

Thank you for your bug report.

Have a nice day
GV


----- Original Message ----- 
From: "Stanislaw Wierchola" <stacho at tls.pl>
To: <winpcap-users at winpcap.org>
Sent: Monday, August 22, 2005 4:10 AM
Subject: [Winpcap-users] PPP connection - filtering problem


> Hi,
>
>  I use WinPcap to count outgoing/incoming traffic. I have two filters:
> "src IP_ADDRESS"/"dst IP_ADDRESS", where IP_ ADDRESS is the IP address
> of the interface. It WORKS for Ethernet devices.
>
>  The problem is with PPP/SLIP connection. Both filters gives sum of
> incoming end outgoing traffic. In WinPcap FAQ (Q-5: Can I use WinPcap on a
> PPP connection?) there is information that:
> "filtering and statistics gathering is done at user level."
> I understand that filtering works on PPP connection but it is implemented
> at user level WinPcap library ?
>
>  I use Windows XP SP2, WinPcap 3.1 and mingw.
>
>  I capture some packages from this inteface with Ethereal and they look
> OK - they have correct source and destination IP addresses, etc.
>
> The most important parts of the code (it works for Ethernet devices):
> pcap_if_t  *d;
>
> //1. Search for all devices
> pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf);
>
> //2. User select one of devices - d
> ...
>
> //3. Open selected device
> fp= pcap_open(d->name, 100, PCAP_OPENFLAG_PROMISCUOUS, 1000, NULL, 
> errbuf);
>
> //4. Create, compile and set filter
> netmask=0xffffff;      // or taken from pcap_addr->netmask
> string filtr = "dst "; // or "dst host "
> filtr += iptos(((struct sockaddr_in 
> *)d->addresses->addr)->sin_addr.s_addr);
> pcap_compile(fp, &fcode, (char*)filtr.c_str(), 1, netmask);
> pcap_setfilter(fp, &fcode);
>
> //5. Change mode to stat
> pcap_setmode(fp, MODE_STAT);
>
> //6. Start loop
> pcap_loop(fp, 0, dispatcher_handler, NULL);
>
> // Counter function
> dispatcher_handler(u_char *parameters, const struct pcap_pkthdr *header,
> const u_char *pkt_data)
> {
>  ...
>  counter += (*(LONGLONG*)(pkt_data + 8)) ;
>  ...
> }
>
> Thanks for help,
> Stanislaw Wierchola
> _______________________________________________
> Winpcap-users mailing list
> Winpcap-users at winpcap.org
> https://www.winpcap.org/mailman/listinfo/winpcap-users 



More information about the Winpcap-users mailing list