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

Comparing projects/libstatgrab/examples/network_traffic.c (file contents):
Revision 1.3 by tdb, Sun Aug 24 20:24:09 2003 UTC vs.
Revision 1.8 by tdb, Mon Jan 19 16:49:19 2004 UTC

# Line 1 | Line 1
1   /*
2   * i-scream central monitoring system
3   * http://www.i-scream.org
4 < * Copyright (C) 2000-2003 i-scream
4 > * Copyright (C) 2000-2004 i-scream
5   *
6   * This program is free software; you can redistribute it and/or
7   * modify it under the terms of the GNU General Public License
# Line 16 | Line 16
16   * You should have received a copy of the GNU General Public License
17   * along with this program; if not, write to the Free Software
18   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19 + *
20 + * $Id$
21   */
22  
23   /* A very basic example of how to get the network statistics from the system
# Line 23 | Line 25
25   * a total
26   * Takes several arguments :
27   * -d <number>  Takes the number of seconds to wait to get traffic sent since last call
28 < *              Note, this is not network traffic per second. Its the traffic since last
29 < *              call. If you want it traffic per second averaged over time since last call
28 > *              Note, this is not network traffic per second. Its the traffic since last
29 > *              call. If you want it traffic per second averaged over time since last call
30   *              You need to divide against the time since last time this was called. The time
31   *              between 2 calls is stored in systime in the network_stat_t structure.
32   * -b           Display in bytes
33   * -k           Display in kilobytes
34 < * -m           Display in megabytes
34 > * -m           Display in megabytes
35   */
36  
37   #include <stdio.h>
# Line 51 | Line 53 | int main(int argc, char **argv){
53          int num_network_stats;
54  
55          /* Parse command line options */
56 <        while ((c = getopt(argc, argv, "d:bkm")) != EOF){
56 >        while ((c = getopt(argc, argv, "d:bkm")) != -1){
57                  switch (c){
58                          case 'd':
59                                  delay = atoi(optarg);
# Line 68 | Line 70 | int main(int argc, char **argv){
70                  }
71          }
72  
73 <        /* We are not intrested in the amount of traffic ever transmitted, just differences.
73 >        /* Initialise statgrab */
74 >        statgrab_init();
75 >
76 >        /* Drop setuid/setgid privileges. */
77 >        if (statgrab_drop_privileges() != 0) {
78 >                perror("Error. Failed to drop privileges");
79 >                return 1;
80 >        }
81 >
82 >        /* We are not interested in the amount of traffic ever transmitted, just differences.
83           * Because of this, we do nothing for the very first call.
84           */
85 <        
85 >
86          network_stats = get_network_stats_diff(&num_network_stats);
87          if (network_stats == NULL){
88                  perror("Error. Failed to get network stats");
# Line 80 | Line 91 | int main(int argc, char **argv){
91  
92          /* Clear the screen ready for display the network stats */
93          printf("\033[2J");
94 <        
94 >
95          /* Keep getting the network stats */
96          while ( (network_stats = get_network_stats_diff(&num_network_stats)) != NULL){
97                  int x;
# Line 100 | Line 111 | int main(int argc, char **argv){
111                                          break;
112                                  case 'k':
113                                          printf("\033[%d;2H%-25s : %5lld k", line_number++, "Network Interface Rx", (network_stats->rx / 1024));
114 <                                        printf("\033[%d;2H%-25s : %5lld", line_number++, "Network Interface Tx", (network_stats->tx / 1024));
115 <                                        break;
114 >                                        printf("\033[%d;2H%-25s : %5lld", line_number++, "Network Interface Tx", (network_stats->tx / 1024));
115 >                                        break;
116                                  case 'm':
117                                          printf("\033[%d;2H%-25s : %5.2f m", line_number++, "Network Interface Rx", network_stats->rx / (1024.00*1024.00));
118                                          printf("\033[%d;2H%-25s : %5.2f m", line_number++, "Network Interface Tx", network_stats->tx / (1024.00*1024.00));
119                          }
120                          printf("\033[%d;2H%-25s : %ld ", line_number++, "Network Interface systime", (long) network_stats->systime);
121 <                
121 >
122                          /* Add a blank line between interfaces */      
123                          line_number++;
124  
# Line 119 | Line 130 | int main(int argc, char **argv){
130                           * to keep track of the orginal pointer to free later */
131                          network_stats++;
132                  }
133 <                
133 >
134                  printf("\033[%d;2H%-25s : %-10s", line_number++, "Network Interface Name", "Total Network IO");
135                  switch(units){
136                          case 'b':
# Line 135 | Line 146 | int main(int argc, char **argv){
146                                  printf("\033[%d;2H%-25s : %5.2f m", line_number++, "Network Total Tx", (total_tx  / (1024.00*1024.00)));
147                                  break;
148                  }
149 <                
149 >
150                  fflush(stdout);
151  
152                  sleep(delay);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines