--- watchdog-5.2.4.orig/include/extern.h 2003-01-28 07:52:06.000000000 +0100 +++ watchdog-5.2.4.orig/include/extern.h 2006-02-20 13:37:48.000000000 +0100 @@ -23,9 +23,11 @@ int mtime; }; +#define NETDEV_MAX_RX 50 /* max number of digits the traffic counter may have */ + struct ifmode { - unsigned int bytes; + char bytes[NETDEV_MAX_RX]; }; union wdog_options --- watchdog-5.2.4.orig/src/iface.c 2003-01-28 07:47:38.000000000 +0100 +++ watchdog-5.2.4.orig/src/iface.c 2006-02-20 13:38:18.000000000 +0100 @@ -58,15 +58,16 @@ for (; line[i] == ' ' || line[i] == '\t'; i++); if (strncmp(line + i, dev->name, strlen(dev->name)) == 0) { - unsigned int bytes = atoi(line + i + strlen(dev->name) + 1); + char *bytes, delimiter[] = " "; + bytes = strtok(line + i + strlen(dev->name) + 1, delimiter); #if USE_SYSLOG /* do verbose logging */ if (verbose) - syslog(LOG_INFO, "device %s received %u bytes", dev->name, bytes); + syslog(LOG_INFO, "device %s received %s bytes", dev->name, bytes); #endif - if (dev->parameter.iface.bytes == bytes) { + if (strcmp(dev->parameter.iface.bytes, bytes) == 0) { fclose(file); #if USE_SYSLOG syslog(LOG_INFO, "device %s did not receive anything since last check", dev->name); @@ -75,7 +76,7 @@ return (ENETUNREACH); } else - dev->parameter.iface.bytes = bytes; + strncpy(dev->parameter.iface.bytes, bytes, NETDEV_MAX_RX); } } }