summaryrefslogtreecommitdiff
path: root/netcheck.c
blob: ce07bc206714fea3dd0034a6ee5b6801383518f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <errno.h>
#include <time.h>

#define TMP "/tmp/netcheck_test.txt"

#define ETH_DOWN_CURR fileread("/sys/class/net/eth0/statistics/rx_bytes")
#define ETH_UP_CURR  fileread("/sys/class/net/eth0/statistics/tx_bytes")
#define WLAN_DOWN_CURR fileread("/sys/class/net/wlan0/statistics/rx_bytes")
#define WLAN_UP_CURR fileread("/sys/class/net/wlan0/statistics/tx_bytes")

int con_size(double i){
if       (i > 1000000) 
	printf(" %1.1lfM", i / 1000000) ;
else if  (i > 1000  ) 
	printf(" %3.0lfK", i / 1000) ;
else                 
	printf(" %3.0lfB", i);
}

int fileread(char *fi)
{
    FILE *f; unsigned long i;
    f = fopen(fi, "r");
    fscanf(f, "%ld", &i);
    fclose(f);
    return i;
}

int main()
{
unsigned long curr_down, curr_up;
unsigned long former_down, former_up, former_time;
unsigned long curr_time = time(NULL);

curr_down = WLAN_DOWN_CURR + ETH_DOWN_CURR ;
curr_up = WLAN_UP_CURR + ETH_UP_CURR ;

FILE *tmp_file;
tmp_file = fopen(TMP, "r");
if (tmp_file != NULL) 
{
	fscanf(tmp_file, "%d %d %ld",	&former_down,
					&former_up,
					&former_time);
	fclose(tmp_file);

	unsigned short time_diff = curr_time - former_time;

	printf("DOWN"); 
	con_size((curr_down - former_down) / time_diff);
	printf(" UP");
	con_size((curr_up   - former_up)   / time_diff);
	printf("\n");
	}
else  
    printf("DOWN    X UP    X\n");

    tmp_file = fopen(TMP, "w");
    fprintf(tmp_file,"%ld %ld %ld",	curr_down,
		    			curr_up,
					curr_time);
    fclose(tmp_file);
}