ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/docs/network.txt
(Generate patch)

Comparing projects/libstatgrab/docs/network.txt (file contents):
Revision 1.2 by pajs, Mon May 12 13:37:44 2003 UTC vs.
Revision 1.4 by tdb, Sun Aug 24 20:24:08 2003 UTC

# Line 1 | Line 1
1   Network Statistics
2 + ==================
3  
4 < All network statistics return a network_stat_t structure.
4 > $Id$
5  
6 + Data Structure
7 + --------------
8 +
9 + All network statistics return a structure of type network_stat_t that
10 + looks like this:
11 +
12   typedef struct{
13          char *interface_name;
14          long long tx;
# Line 9 | Line 16 | typedef struct{
16          time_t systime;
17   }network_stat_t;
18  
19 < Interface name is the name known to the OS. E.g. eth0 on linux.
20 < tx is a long long with the number of bytes transmitted.
21 < rx is a long long with the number of bytes recieved.
22 < sysname is time_t covering the time the amount of data in rx/tx was
23 < generated.
19 > interface_name  is the name know to the operating system.
20 >                (eg. on linux is might be eth0)
21 > tx              is the number of bytes transmitted.
22 > rx              is the number of bytes received.
23 > sysname         is the time period over which tx and rx were
24 >                transferred.
25  
26 + Functions
27 + ---------
28  
29   network_stat_t *get_network_stats(int *entries);
30  
31   network_stat_t *get_network_stats_diff(int *entries);
32  
33 < Both calls take a pointer to an int, "entries". This is filled with the number
34 < of network interfaces the machine has. You need to know this to know how
35 < many network_stat_t have been returned.
33 > Both calls take a pointer to an int, "entries", which is filled with
34 > the number of network interfaces the machine has. This is needed to
35 > know how many network_stat_t structures have been returned. A pointer
36 > is returned to the first network_stat_t.
37  
38 < get_network_stats returns the network traffic stored in the kernel. E.g.
39 < since bootup as long as the way it is stored in the kernel can store a large
40 < enough number. Solaris 7 can not, it only stores it in a 32bit int, so it
41 < can only store upto 4gb before it will wrap around. Solaris 8 upwards stores
42 < it in a 64bit int and so is a very large number :)
38 > get_network_stats returns the network traffic stored in the kernel
39 > which holds the amount of data transferred since bootup. On some
40 > platforms, such as Solaris 7, this value is stored in a 32bit int, so
41 > wraps around when it reaches 4GB. Other platforms, such as Solaris 8,
42 > hold the value in a 64bit int, which wraps somewhere near 17 million
43 > terabytes.
44  
45   get_network_stats_diff is the same as get_network_stats except it will
46   return the difference since the last call. So, for instance a call to
# Line 37 | Line 49 | time, 20 bytes of traffic was transmitted and 10 bytes
49   store 20, rx will store 10 and systime will store 5. This function copes
50   with wrap arounds by the O/S so should be seemless to use.
51  
52 < Bugs:
53 < get_network_stats_diff on very first call will return the same as  
42 < get_network_stats. After first call it will always return the difference.
43 < On machines that hold only 32bits of information, if the call is made 2x
44 < wrap around (eg sol7 9gb has been transferred, and it wraps at 4gb) it will
45 < return incorrect results (case above, it would say 5gb transferred).
52 > Bugs
53 > ----
54  
55 < Very basic example in examples/network_traffic.c
55 > On the very first call get_network_stats_diff will return the same as
56 > get_network_stats. After the first call it will always return the
57 > difference.
58  
59 + On operating system that hold only 32bits of data there is a problem if
60 + the values wrap twice. For example, on Solaris 7 if 9GB is transferred
61 + and the operating system wraps at 4GB, the get_network_stats_diff
62 + function will return 5GB.
63 +
64 + Example
65 + -------
66 +
67 + A very basic example can be found in examples/network_traffic.c

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines