summaryrefslogtreecommitdiffstats
path: root/trunk/src/ifstatus.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/ifstatus.c')
-rw-r--r--trunk/src/ifstatus.c221
1 files changed, 0 insertions, 221 deletions
diff --git a/trunk/src/ifstatus.c b/trunk/src/ifstatus.c
deleted file mode 100644
index 655d16f..0000000
--- a/trunk/src/ifstatus.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/* $Id: ifstatus.c 1.3 Wed, 13 Nov 2002 22:37:54 +0100 lennart $ */
-
-/*
- * This file is part of ifplugd.
- *
- * ifplugd is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ifplugd is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ifplugd; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-#include <getopt.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <net/if.h>
-
-#include <libdaemon/dlog.h>
-
-#include "interface.h"
-#include "svn-revision.h"
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-int interface_auto_up = 0, interface_do_message = 0;
-
-int verbose = 0;
-char *interface = NULL;
-
-int handle(char *iface) {
- int fd, r = 0;
- interface_status_t s;
-
- if ((fd = socket(PF_INET, SOCK_DGRAM, 0)) < 0)
- return -1;
-
- if (verbose > 0) {
- printf("%s:\n", iface);
-
- if ((s = interface_detect_beat_ethtool(fd, iface)) == IFSTATUS_ERR)
- printf(" SIOCETHTOOL failed (%s)\n", strerror(errno));
- else
- printf(" SIOCETHTOOL: %s\n", s == IFSTATUS_UP ? "link beat detected" : "unplugged");
-
- if ((s = interface_detect_beat_mii(fd, iface)) == IFSTATUS_ERR)
- printf(" SIOCGMIIPHY failed (%s)\n", strerror(errno));
- else
- printf(" SIOCGMIIPHY: %s\n", s == IFSTATUS_UP ? "link beat detected" : "unplugged");
-
- if ((s = interface_detect_beat_priv(fd, iface)) == IFSTATUS_ERR)
- printf(" SIOCDEVPRIVATE failed (%s)\n", strerror(errno));
- else
- printf(" SIOCDEVPRIVATE: %s\n", s == IFSTATUS_UP ? "link beat detected" : "unplugged");
-
- if ((s = interface_detect_beat_wlan(fd, iface)) == IFSTATUS_ERR)
- printf(" Wireless failed.\n");
- else
- printf(" Wireless: %s\n", s == IFSTATUS_UP ? "link beat detected" : "unplugged");
-
- } else {
-
- if ((s = interface_detect_beat_mii(fd, iface)) == IFSTATUS_ERR)
- if ((s = interface_detect_beat_ethtool(fd, iface)) == IFSTATUS_ERR)
- if ((s = interface_detect_beat_wlan(fd, iface)) == IFSTATUS_ERR)
- s = interface_detect_beat_priv(fd, iface);
-
- switch(s) {
- case IFSTATUS_UP:
- if (!verbose)
- printf("%s: link beat detected\n", iface);
- r = 1;
- break;
-
- case IFSTATUS_DOWN:
- if (!verbose)
- printf("%s: unplugged\n", iface);
- r = 2;
- break;
-
- default:
- if (!verbose)
- printf("%s: not supported\n", iface);
-
- r = -1;
- break;
- }
- }
-
-
- close(fd);
- return r;
-}
-
-void usage(char *p) {
- if (strrchr(p, '/'))
- p = strchr(p, '/')+1;
-
- printf("%s [options] [INTERFACE]\n"
- " -a --auto Enable interface automatically (%s)\n"
- " -q --quiet Quiet behaviour (%s)\n"
- " -v --verbose Enable verbosity (%s)\n"
- " -h --help Show this help\n"
- " -V --version Show version number\n",
- p, interface_auto_up ? "on" : "off", verbose < 0 ? "on" : "off", verbose > 0 ? "on" : "off");
-}
-
-
-void parse(int argc, char *argv[]) {
- static struct option long_options[] = {
- {"auto", no_argument, 0, 'a'},
- {"quiet", no_argument, 0, 'q'},
- {"verbose", no_argument, 0, 'v'},
- {"help", no_argument, 0, 'h'},
- {"version", no_argument, 0, 'V'},
- {0, 0, 0, 0}
- };
- int option_index = 0;
- int help = 0;
-
- for (;;) {
- int c;
-
- if ((c = getopt_long(argc, argv, "avhqV", long_options, &option_index)) < 0)
- break;
-
- switch (c) {
- case 'a' :
- interface_auto_up = !interface_auto_up;
- break;
- case 'v':
- verbose++;
- break;
- case 'q':
- verbose--;
- break;
- case 'h':
- help = 1;
- break;
- case 'V':
-#ifdef SVN_REVISION
- printf("ifstatus "VERSION" (SVN: "SVN_REVISION")\n");
-#else
- printf("ifstatus "VERSION"\n");
-#endif
- exit(0);
- default:
- fprintf(stderr, "Unknown parameter.\n");
- exit(1);
-
- }
- }
-
- if (help) {
- usage(argv[0]);
- exit(0);
- }
-
- if (optind < argc)
- interface = argv[optind];
-}
-
-
-int main(int argc, char *argv[]) {
- parse(argc, argv);
-
- if (interface) {
- int r;
-
- if ((r = handle(interface)) < 0) {
- if (verbose == 0)
- fprintf(stderr, "Failure (%s)\n", strerror(errno));
- return 1;
- }
-
- return r+1;
-
- } else {
- FILE *f;
- char ln[256];
-
- if (!(f = fopen("/proc/net/dev", "r"))) {
- fprintf(stderr, "Failed to open /proc/net/dev: %s\n", strerror(errno));
- return 1;
- }
-
- fgets(ln, sizeof(ln), f);
- fgets(ln, sizeof(ln), f);
-
- while (fgets(ln, sizeof(ln), f)) {
- char *p, *e;
-
- p = ln+strspn(ln, " \t");
- if (!(e = strchr(p, ':'))) {
- fprintf(stderr, "Parse failure in /proc/net/dev.\n");
- fclose(f);
- return 1;
- }
-
- *e = 0;
- handle(p);
- }
-
- fclose(f);
- }
-
- return 0;
-}