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