⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iface.c

📁 watchdog source watchdog source
💻 C
字号:
/* $Header: /cvsroot/watchdog/watchdog/src/iface.c,v 1.2 2006/07/31 09:39:23 meskes Exp $ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <errno.h>#include <string.h>#include <stdlib.h>#include "extern.h"#include "watch_err.h"#if USE_SYSLOG#include <syslog.h>#endif#define NETDEV_LINE_LEN	128int check_iface(struct list *dev){    FILE *file = fopen ("/proc/net/dev", "r");        if (file == NULL) {        int err = errno;        #if USE_SYSLOG        syslog(LOG_ERR, "cannot open /proc/net/dev (errno = %d = '%m')", err);#else                           /* USE_SYSLOG */        perror(progname);#endif                          /* USE_SYSLOG */        if (softboot)		return (err);	return(ENOERR);    }    /* read the file line by line */    while (!feof(file)) {	char line[NETDEV_LINE_LEN];                if (fgets(line, CONFIG_LINE_LEN, file) == NULL) {		if (!ferror(file))		        break;	        else {	        	int err = errno;#if USE_SYSLOG		        syslog(LOG_ERR, "cannot read /proc/net/dev (errno = %d = '%m')", err);#else                           /* USE_SYSLOG */		        perror(progname);#endif                          /* USE_SYSLOG */			fclose(file);		        if (softboot)				return (err);			return(ENOERR);	        }	} else {		int i = 0;					for (; line[i] == ' ' || line[i] == '\t'; i++);		if (strncmp(line + i, dev->name, strlen(dev->name)) == 0) {			unsigned long bytes = strtoul(line + i + strlen(dev->name) + 1, NULL, 10);			#if USE_SYSLOG			/* do verbose logging */			if (verbose && logtick && ticker == 1)		            syslog(LOG_INFO, "device %s received %u bytes", dev->name, bytes);#endif   			if (dev->parameter.iface.bytes == bytes) {				fclose(file);#if USE_SYSLOG		            	syslog(LOG_ERR, "device %s did not receive anything since last check", dev->name);#endif   				return (ENETUNREACH);			}			else				dev->parameter.iface.bytes = bytes;		}        }    }    if (fclose(file) != 0) {        int err = errno;        #if USE_SYSLOG        syslog(LOG_ERR, "cannot close /proc/net/dev (errno = %d = '%m')", err);#else                           /* USE_SYSLOG */        perror(progname);#endif                          /* USE_SYSLOG */        if (softboot)		return (err);	return(ENOERR);    }    return (ENOERR);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -