diff --git a/sensors/slothd/slothd.c b/sensors/slothd/slothd.c index 704dd30e852c8ce22be43119f3b5297fd29da437..ab649986905cc32811e8546686c289bd6a99e95c 100644 --- a/sensors/slothd/slothd.c +++ b/sensors/slothd/slothd.c @@ -93,8 +93,11 @@ int main(int argc, char **argv) { for (;;) { if (!opts->first) { sleep(mopts.interval); - } - do_update(); + } + get_load(); + get_min_tty_idle(); + get_packet_counts(); + send_pkt(); if (opts->once) { break; } @@ -107,13 +110,6 @@ int main(int argc, char **argv) { return exitcode; } -void do_update (void) { - get_load(); - get_min_tty_idle(); - get_packet_counts(); - send_pkt(); -} - int parse_args(int argc, char **argv) { char ch; @@ -227,6 +223,9 @@ int init_slothd(void) { */ opts->ttys[opts->numttys] = strdup("/dev/ptmx"); opts->numttys++; + + /* Open socket for SIOCGHWADDR ioctl */ + pkt->ifd = socket(PF_INET, SOCK_DGRAM, 0); #endif while (opts->numttys < MAXTTYS && (dptr = readdir(devs))) { if (strstr(dptr->d_name, "tty") || strstr(dptr->d_name, "pty")) { @@ -440,35 +439,11 @@ void get_packet_counts(void) { return; } -#ifdef comment -int get_macaddrs(char *buf, void *data) { - - int i=-1, j; - char *maddr; - SLOTHD_PACKET *pkt = (SLOTHD_PACKET*)data; - - if ((maddr = strstr(buf, "MAC="))) { - maddr += 4; - ++i; - for (j = 0; j < MACADDRLEN; j+=3, maddr+=2) { - pkt->ifaces[i].macaddr[j] = *maddr; - pkt->ifaces[i].macaddr[j+1] = *(maddr+1); - pkt->ifaces[i].macaddr[j+2] = ':'; - } - pkt->ifaces[i].macaddr[MACADDRLEN-1] = '\0'; - } - pkt->numaddrs = i+1; - return 0; -} -#endif /* comment */ - int get_counters(char *buf, void *data) { SLOTHD_PACKET *pkt = (SLOTHD_PACKET*)data; #ifdef __linux__ - int sfd = socket(PF_INET, SOCK_DGRAM, 0); struct ifreq ifr; - bzero(&ifr, sizeof(struct ifreq)); #endif @@ -494,7 +469,7 @@ int get_counters(char *buf, void *data) { } #ifdef __linux__ strcpy(ifr.ifr_name, pkt->ifaces[pkt->ifcnt].ifname); - if (ioctl(sfd, SIOCGIFHWADDR, &ifr) < 0) { + if (ioctl(pkt->ifd, SIOCGIFHWADDR, &ifr) < 0) { perror("error getting HWADDR"); return -1; } @@ -505,7 +480,6 @@ int get_counters(char *buf, void *data) { if (opts->debug) { printf("macaddr: %s\n", pkt->ifaces[pkt->ifcnt].addr); } - close(sfd); #endif pkt->ifcnt++; } diff --git a/sensors/slothd/slothd.h b/sensors/slothd/slothd.h index 17458e569ad62ea619bf1eaa2000652ebcecaa5b..5c50203c7833171d51704d62fd7be8fcf19a1341 100644 --- a/sensors/slothd/slothd.h +++ b/sensors/slothd/slothd.h @@ -68,6 +68,9 @@ typedef struct { double loadavg[3]; int ifcnt; int sd; +#ifdef __linux__ + int ifd; /* IOCTL file descriptor */ +#endif struct sockaddr_in servaddr; struct { u_long ipkts; @@ -91,7 +94,6 @@ typedef struct { int parse_args(int, char**); int init_slothd(void); -void do_update(void); void get_min_tty_idle(void); void utmp_enum_terms(void);