diff --git a/sys/compat/linux/linux.c b/sys/compat/linux/linux.c --- a/sys/compat/linux/linux.c +++ b/sys/compat/linux/linux.c @@ -434,10 +434,17 @@ unsigned short linux_ifflags(struct ifnet *ifp) { - unsigned short fl, flags; + unsigned short flags; + + flags = if_getflags(ifp) | if_getdrvflags(ifp); + return (bsd_to_linux_ifflags(flags)); +} + +unsigned short +bsd_to_linux_ifflags(int fl) +{ + unsigned short flags = 0; - fl = (if_getflags(ifp) | if_getdrvflags(ifp)) & 0xffff; - flags = 0; if (fl & IFF_UP) flags |= LINUX_IFF_UP; if (fl & IFF_BROADCAST) diff --git a/sys/compat/linux/linux_common.h b/sys/compat/linux/linux_common.h --- a/sys/compat/linux/linux_common.h +++ b/sys/compat/linux/linux_common.h @@ -39,6 +39,7 @@ unsigned short linux_ifflags(struct ifnet *); int linux_ifhwaddr(struct ifnet *ifp, struct l_sockaddr *lsa); +unsigned short bsd_to_linux_ifflags(int); int linux_to_bsd_domain(int domain); int bsd_to_linux_domain(int domain); int bsd_to_linux_sockaddr(const struct sockaddr *sa,