-/* $OpenBSD: src/sbin/dhclient/dhclient.c,v 1.144 2012/06/22 00:08:43 krw Exp $ */
+/* $OpenBSD: src/sbin/dhclient/dhclient.c,v 1.145 2012/06/24 16:01:18 krw Exp $ */
/*
* Copyright 2004 Henning Brauer <henning@openbsd.org>
ifi->linkstat ? "up" : "down",
linkstat ? "up" : "down");
#endif
- ifi->linkstat = interface_link_status(ifi->name);
+ ifi->linkstat = interface_status(ifi->name);
if (ifi->linkstat) {
client->state = S_REBOOTING;
state_reboot();
} else
i = 0;
- while (!(ifi->linkstat = interface_link_status(ifi->name))) {
+ while (!(ifi->linkstat = interface_status(ifi->name))) {
if (i == 0)
fprintf(stderr, "%s: no link ...", ifi->name);
else if (i > 0)
-/* $OpenBSD: src/sbin/dhclient/dhcpd.h,v 1.74 2011/12/10 15:55:43 krw Exp $ */
+/* $OpenBSD: src/sbin/dhclient/dhcpd.h,v 1.75 2012/06/24 16:01:18 krw Exp $ */
/*
* Copyright (c) 2004 Henning Brauer <henning@openbsd.org>
void add_timeout(time_t, void (*)(void));
void cancel_timeout(void (*)(void));
int interface_status(char *);
-int interface_link_status(char *);
int interface_link_forceup(char *);
/* tables.c */
-/* $OpenBSD: src/sbin/dhclient/dispatch.c,v 1.50 2012/06/22 01:01:59 krw Exp $ */
+/* $OpenBSD: src/sbin/dhclient/dispatch.c,v 1.51 2012/06/24 16:01:18 krw Exp $ */
/*
* Copyright 2004 Henning Brauer <henning@openbsd.org>
free_timeouts = q;
}
}
-
-int
-interface_link_status(char *ifname)
-{
- struct ifmediareq ifmr;
- int sock;
-
- if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
- error("Can't create socket");
-
- memset(&ifmr, 0, sizeof(ifmr));
- strlcpy(ifmr.ifm_name, ifname, sizeof(ifmr.ifm_name));
- if (ioctl(sock, SIOCGIFMEDIA, (caddr_t)&ifmr) == -1) {
- /* EINVAL/ENOTTY -> link state unknown. treat as active */
-#ifdef DEBUG
- if (errno != EINVAL && errno != ENOTTY)
- debug("ioctl(SIOCGIFMEDIA) on %s: %m", ifname);
-#endif
- close(sock);
- return (1);
- }
- close(sock);
-
- if (ifmr.ifm_status & IFM_AVALID) {
- if (ifmr.ifm_status & IFM_ACTIVE)
- return (1);
- else
- return (0);
- }
- return (1);
-}