summaryrefslogtreecommitdiffstats
path: root/sys/netinet6/in6.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet6/in6.c')
-rw-r--r--sys/netinet6/in6.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index e260e5d..08dd259 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -1874,9 +1874,18 @@ in6_ifinit(struct ifnet *ifp, struct in6_ifaddr *ia,
ia->ia_addr = *sin6;
if (ifacount <= 1 && ifp->if_ioctl) {
+ int flags;
+
+ /*
+ * Historically, drivers managed IFF_UP flag theirselves, so we
+ * need to check whether driver did that.
+ */
+ flags = ifp->if_flags;
error = (*ifp->if_ioctl)(ifp, SIOCSIFADDR, (caddr_t)ia);
if (error)
return (error);
+ if ((ifp->if_flags & IFF_UP) && (flags & IFF_UP) == 0)
+ if_up(ifp);
}
ia->ia_ifa.ifa_metric = ifp->if_metric;
OpenPOWER on IntegriCloud