xref: /aosp_15_r20/external/iproute2/misc/lnstat.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker #ifndef _LNSTAT_H
2*de1e4e89SAndroid Build Coastguard Worker #define _LNSTAT_H
3*de1e4e89SAndroid Build Coastguard Worker 
4*de1e4e89SAndroid Build Coastguard Worker #include <limits.h>
5*de1e4e89SAndroid Build Coastguard Worker #include <sys/select.h>
6*de1e4e89SAndroid Build Coastguard Worker 
7*de1e4e89SAndroid Build Coastguard Worker #define LNSTAT_VERSION "0.02 041002"
8*de1e4e89SAndroid Build Coastguard Worker 
9*de1e4e89SAndroid Build Coastguard Worker #define PROC_NET_STAT	"/proc/net/stat"
10*de1e4e89SAndroid Build Coastguard Worker 
11*de1e4e89SAndroid Build Coastguard Worker #define LNSTAT_MAX_FILES			32
12*de1e4e89SAndroid Build Coastguard Worker #define LNSTAT_MAX_FIELDS_PER_LINE		32
13*de1e4e89SAndroid Build Coastguard Worker #define LNSTAT_MAX_FIELD_NAME_LEN		32
14*de1e4e89SAndroid Build Coastguard Worker 
15*de1e4e89SAndroid Build Coastguard Worker struct lnstat_file;
16*de1e4e89SAndroid Build Coastguard Worker 
17*de1e4e89SAndroid Build Coastguard Worker struct lnstat_field {
18*de1e4e89SAndroid Build Coastguard Worker 	struct lnstat_file *file;
19*de1e4e89SAndroid Build Coastguard Worker 	unsigned int num;			/* field number in line */
20*de1e4e89SAndroid Build Coastguard Worker 	char name[LNSTAT_MAX_FIELD_NAME_LEN+1];
21*de1e4e89SAndroid Build Coastguard Worker 	unsigned long values[2];		/* two buffers for values */
22*de1e4e89SAndroid Build Coastguard Worker 	unsigned long result;
23*de1e4e89SAndroid Build Coastguard Worker };
24*de1e4e89SAndroid Build Coastguard Worker 
25*de1e4e89SAndroid Build Coastguard Worker struct lnstat_file {
26*de1e4e89SAndroid Build Coastguard Worker 	struct lnstat_file *next;
27*de1e4e89SAndroid Build Coastguard Worker 	char path[PATH_MAX+1];
28*de1e4e89SAndroid Build Coastguard Worker 	char basename[NAME_MAX+1];
29*de1e4e89SAndroid Build Coastguard Worker 	struct timeval last_read;		/* last time of read */
30*de1e4e89SAndroid Build Coastguard Worker 	struct timeval interval;		/* interval */
31*de1e4e89SAndroid Build Coastguard Worker 	int compat;				/* 1 == backwards compat mode */
32*de1e4e89SAndroid Build Coastguard Worker 	FILE *fp;
33*de1e4e89SAndroid Build Coastguard Worker 	unsigned int num_fields;		/* number of fields */
34*de1e4e89SAndroid Build Coastguard Worker 	struct lnstat_field fields[LNSTAT_MAX_FIELDS_PER_LINE];
35*de1e4e89SAndroid Build Coastguard Worker };
36*de1e4e89SAndroid Build Coastguard Worker 
37*de1e4e89SAndroid Build Coastguard Worker 
38*de1e4e89SAndroid Build Coastguard Worker struct lnstat_file *lnstat_scan_dir(const char *path, const int num_req_files,
39*de1e4e89SAndroid Build Coastguard Worker 				    const char **req_files);
40*de1e4e89SAndroid Build Coastguard Worker int lnstat_update(struct lnstat_file *lnstat_files);
41*de1e4e89SAndroid Build Coastguard Worker int lnstat_dump(FILE *outfd, struct lnstat_file *lnstat_files);
42*de1e4e89SAndroid Build Coastguard Worker struct lnstat_field *lnstat_find_field(struct lnstat_file *lnstat_files,
43*de1e4e89SAndroid Build Coastguard Worker 				       const char *name);
44*de1e4e89SAndroid Build Coastguard Worker #endif /* _LNSTAT_H */
45