14677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger#ifndef _LNSTAT_H
24677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger#define _LNSTAT_H
34677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger
44677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger#include <limits.h>
5dd9cc0ee81a670619d3cb713c98a90abb4cf41d3Natanael Copa#include <sys/select.h>
64677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger
74677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger#define LNSTAT_VERSION "0.02 041002"
84677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger
94677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger#define PROC_NET_STAT	"/proc/net/stat"
104677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger
114677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger#define LNSTAT_MAX_FILES			32
124677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger#define LNSTAT_MAX_FIELDS_PER_LINE		32
134677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger#define LNSTAT_MAX_FIELD_NAME_LEN		32
144677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger
154677a549831336400e16210e6f12251dc07d5232osdl.net!shemmingerstruct lnstat_file;
164677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger
174677a549831336400e16210e6f12251dc07d5232osdl.net!shemmingerstruct lnstat_field {
184677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	struct lnstat_file *file;
194677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	unsigned int num;			/* field number in line */
204677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	char name[LNSTAT_MAX_FIELD_NAME_LEN+1];
214677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	unsigned long values[2];		/* two buffers for values */
224677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	unsigned long result;
234677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger};
244677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger
254677a549831336400e16210e6f12251dc07d5232osdl.net!shemmingerstruct lnstat_file {
264677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	struct lnstat_file *next;
274677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	char path[PATH_MAX+1];
284677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	char basename[NAME_MAX+1];
294677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	struct timeval last_read;		/* last time of read */
304677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	struct timeval interval;		/* interval */
314677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	int compat;				/* 1 == backwards compat mode */
324677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	FILE *fp;
334677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	unsigned int num_fields;		/* number of fields */
344677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger	struct lnstat_field fields[LNSTAT_MAX_FIELDS_PER_LINE];
354677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger};
364677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger
374677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger
384677a549831336400e16210e6f12251dc07d5232osdl.net!shemmingerstruct lnstat_file *lnstat_scan_dir(const char *path, const int num_req_files,
394677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger				    const char **req_files);
404677a549831336400e16210e6f12251dc07d5232osdl.net!shemmingerint lnstat_update(struct lnstat_file *lnstat_files);
414677a549831336400e16210e6f12251dc07d5232osdl.net!shemmingerint lnstat_dump(FILE *outfd, struct lnstat_file *lnstat_files);
424677a549831336400e16210e6f12251dc07d5232osdl.net!shemmingerstruct lnstat_field *lnstat_find_field(struct lnstat_file *lnstat_files,
434677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger				       const char *name);
444677a549831336400e16210e6f12251dc07d5232osdl.net!shemminger#endif /* _LNSTAT_H */
45