Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.sbin/ifwatchd We already know the interface name, so don...
details: https://anonhg.NetBSD.org/src/rev/a9f977129e8b
branches: trunk
changeset: 348157:a9f977129e8b
user: roy <roy%NetBSD.org@localhost>
date: Thu Oct 06 10:30:31 2016 +0000
description:
We already know the interface name, so don't bother calling if_indextoname
to work it out again.
diffstat:
usr.sbin/ifwatchd/ifwatchd.c | 53 +++++++++++++++++++------------------------
1 files changed, 23 insertions(+), 30 deletions(-)
diffs (142 lines):
diff -r 71f1da8faecd -r a9f977129e8b usr.sbin/ifwatchd/ifwatchd.c
--- a/usr.sbin/ifwatchd/ifwatchd.c Thu Oct 06 03:17:44 2016 +0000
+++ b/usr.sbin/ifwatchd/ifwatchd.c Thu Oct 06 10:30:31 2016 +0000
@@ -1,6 +1,6 @@
-/* $NetBSD: ifwatchd.c,v 1.36 2016/09/29 15:25:28 roy Exp $ */
+/* $NetBSD: ifwatchd.c,v 1.37 2016/10/06 10:30:31 roy Exp $ */
#include <sys/cdefs.h>
- __RCSID("$NetBSD: ifwatchd.c,v 1.36 2016/09/29 15:25:28 roy Exp $");
+ __RCSID("$NetBSD: ifwatchd.c,v 1.37 2016/10/06 10:30:31 roy Exp $");
/*-
* Copyright (c) 2002, 2003 The NetBSD Foundation, Inc.
@@ -63,8 +63,8 @@
static void dispatch(const void *, size_t);
static enum addrflag check_addrflags(int af, int addrflags);
static void check_addrs(const struct ifa_msghdr *ifam);
-static void invoke_script(const struct sockaddr *sa, const struct sockaddr *dst,
- enum event ev, int ifindex, const char *ifname_hint);
+static void invoke_script(const char *ifname, enum event ev,
+ const struct sockaddr *sa, const struct sockaddr *dst);
static void list_interfaces(const char *ifnames);
static void check_announce(const struct if_announcemsghdr *ifan);
static void check_carrier(const struct if_msghdr *ifm);
@@ -346,19 +346,26 @@
}
if ((ev == UP && aflag == READY) ||
(ev == DOWN && aflag == DETACHED /* XXX why DETACHED? */))
- invoke_script(ifa, brd, ev, ifd->index, ifd->ifname);
+ invoke_script(ifd->ifname, ev, ifa, brd);
}
}
static void
-invoke_script(const struct sockaddr *sa, const struct sockaddr *dest,
- enum event ev, int ifindex, const char *ifname_hint)
+invoke_script(const char *ifname, enum event ev,
+ const struct sockaddr *sa, const struct sockaddr *dest)
{
- char addr[NI_MAXHOST], daddr[NI_MAXHOST], ifname_buf[IFNAMSIZ];
- const char * volatile ifname;
+ char addr[NI_MAXHOST], daddr[NI_MAXHOST];
const char *script;
int status;
+ if (ifname == NULL)
+ return;
+
+ script = *scripts[ev];
+ if (script == NULL)
+ return;
+
+ addr[0] = daddr[0] = 0;
if (sa != NULL) {
if (sa->sa_len == 0) {
fprintf(stderr,
@@ -384,15 +391,7 @@
return;
}
}
- }
- addr[0] = daddr[0] = 0;
- ifname = if_indextoname(ifindex, ifname_buf);
- ifname = ifname ? ifname : ifname_hint;
- if (ifname == NULL)
- return;
-
- if (sa != NULL) {
if (getnameinfo(sa, sa->sa_len, addr, sizeof addr, NULL, 0,
NI_NUMERICHOST)) {
if (verbose)
@@ -400,6 +399,7 @@
return; /* this address can not be handled */
}
}
+
if (dest != NULL) {
if (getnameinfo(dest, dest->sa_len, daddr, sizeof daddr,
NULL, 0, NI_NUMERICHOST)) {
@@ -409,9 +409,6 @@
}
}
- script = *scripts[ev];
- if (script == NULL) return;
-
if (verbose)
(void) printf("calling: %s %s %s %s %s %s\n",
script, ifname, DummyTTY, DummySpeed, addr, daddr);
@@ -496,7 +493,7 @@
printf("unknown link status ignored\n");
return;
}
- invoke_script(NULL, NULL, ev, ifm->ifm_index, p->ifname);
+ invoke_script(p->ifname, ev, NULL, NULL);
p->last_carrier_status = carrier_status;
}
}
@@ -513,12 +510,10 @@
switch (ifan->ifan_what) {
case IFAN_ARRIVAL:
- invoke_script(NULL, NULL, ARRIVAL, p->index,
- NULL);
+ invoke_script(p->ifname, ARRIVAL, NULL, NULL);
break;
case IFAN_DEPARTURE:
- invoke_script(NULL, NULL, DEPARTURE, p->index,
- p->ifname);
+ invoke_script(p->ifname, DEPARTURE, NULL, NULL);
break;
default:
if (verbose)
@@ -592,8 +587,7 @@
ifa = p->ifa_addr;
if (ifa != NULL && ifa->sa_family == AF_LINK)
- invoke_script(NULL, NULL, ARRIVAL, ifd->index,
- NULL);
+ invoke_script(ifd->ifname, ARRIVAL, NULL, NULL);
if ((p->ifa_flags & IFF_UP) == 0)
continue;
@@ -608,8 +602,7 @@
if (ioctl(s, SIOCGIFMEDIA, &ifmr) != -1
&& (ifmr.ifm_status & IFM_AVALID)
&& (ifmr.ifm_status & IFM_ACTIVE)) {
- invoke_script(NULL, NULL, CARRIER,
- ifd->index, ifd->ifname);
+ invoke_script(ifd->ifname, CARRIER, NULL, NULL);
ifd->last_carrier_status =
LINK_STATE_UP;
}
@@ -618,7 +611,7 @@
aflag = check_addrflags(ifa->sa_family, p->ifa_addrflags);
if (aflag != READY)
continue;
- invoke_script(ifa, p->ifa_dstaddr, UP, ifd->index, ifd->ifname);
+ invoke_script(ifd->ifname, UP, ifa, p->ifa_dstaddr);
}
freeifaddrs(res);
out:
Home |
Main Index |
Thread Index |
Old Index