ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/examples/network_iface_stats.c
Revision: 1.7
Committed: Wed Jul 13 09:31:53 2005 UTC (19 years, 5 months ago) by tdb
Content type: text/plain
Branch: MAIN
CVS Tags: LIBSTATGRAB_0_17, LIBSTATGRAB_0_16, LIBSTATGRAB_0_15, LIBSTATGRAB_0_14, LIBSTATGRAB_0_13, LIBSTATGRAB_0_12, HEAD
Changes since 1.6: +1 -1 lines
Log Message:
Change the name of the duplex value from "dup" to "duplex". This will
break the ABI, but we're changing the fs stats anyway. The API change
is minimal, so hopefully won't affect too many people.

File Contents

# User Rev Content
1 tdb 1.1 /*
2 tdb 1.5 * i-scream libstatgrab
3 tdb 1.1 * http://www.i-scream.org
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
8     * as published by the Free Software Foundation; either version 2
9     * of the License, or (at your option) any later version.
10     *
11     * This program is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU General Public License for more details.
15     *
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     #include <stdio.h>
24     #include <statgrab.h>
25     #include <stdlib.h>
26     #include <unistd.h>
27    
28     int main(int argc, char **argv){
29    
30 tdb 1.4 sg_network_iface_stats *network_iface_stats;
31 tdb 1.1 int iface_count, i;
32    
33     /* Initialise statgrab */
34 tdb 1.4 sg_init();
35 tdb 1.1
36     /* Drop setuid/setgid privileges. */
37 tdb 1.4 if (sg_drop_privileges() != 0) {
38 tdb 1.1 perror("Error. Failed to drop privileges");
39     return 1;
40     }
41    
42 tdb 1.4 network_iface_stats = sg_get_network_iface_stats(&iface_count);
43 tdb 1.1
44     if(network_iface_stats == NULL){
45     fprintf(stderr, "Failed to get network interface stats\n");
46     exit(1);
47     }
48    
49 ats 1.6 if (argc != 1) {
50     /* If an argument is given, use bsearch to find just that
51     * interface. */
52     sg_network_iface_stats key;
53    
54     key.interface_name = argv[1];
55     network_iface_stats = bsearch(&key, network_iface_stats,
56     iface_count,
57     sizeof *network_iface_stats,
58     sg_network_iface_compare_name);
59     if (network_iface_stats == NULL) {
60     fprintf(stderr, "Interface %s not found\n", argv[1]);
61     exit(1);
62     }
63     iface_count = 1;
64     }
65    
66 tdb 1.1 printf("Name\tSpeed\tDuplex\n");
67     for(i = 0; i < iface_count; i++) {
68     printf("%s\t%d\t", network_iface_stats->interface_name, network_iface_stats->speed);
69 tdb 1.7 switch (network_iface_stats->duplex) {
70 tdb 1.4 case SG_IFACE_DUPLEX_FULL:
71 tdb 1.1 printf("full\n");
72     break;
73 tdb 1.4 case SG_IFACE_DUPLEX_HALF:
74 tdb 1.1 printf("half\n");
75     break;
76     default:
77     printf("unknown\n");
78     break;
79     }
80 tdb 1.3 network_iface_stats++;
81 tdb 1.1 }
82    
83     exit(0);
84     }