On 6/21/07, Claudio Jeker <[EMAIL PROTECTED]> wrote:
On Wed, Jun 20, 2007 at 09:24:16PM -0400, Arnaud Bergeron wrote:
> I have a problem where I need to know how much traffic has passed on a
> given interface. I don't need it broken down by IPs, protocols or
> whatever of the sort.
>
> After a bit of research I discovered the SIOCGIFDATA ioctl that seems
> to do what I want.
>
> I built myself a little test application to try it out (see at the end
> of the mail for the code). The number it reports for my egress
> interface are weird though:
>
> $ ./ifbw pppoe0
> bandwidth: 802865637b up 1907983523b down
> reduced: 765.67MiB up 1.78GiB down
>
> I am certain I downloaded at least 2.6GB in the last few days and
> uploaded at least 3.2GB. Also, for the outbound traffic shaping queue
> I have over this interface pftop reports 33Gb of traffic.
>
> So I have questions for the network gurus. Am I doing something
> incorrectly with my code below?
> If not, are the counters just out of whack and it's normal?
>
> Also, if anybody knows a better way to do this, please tell me.
>
The if_data counters are defined as u_long which wrap at around 4.5GB.
You need to use your own absolute counter and poll if_data from time to
time. Switching to 64bit counters is not trivial but it will happen.
Thanks, that explains why.
--
:wq Claudio
Arnaud