diff options
-rw-r--r-- | sys/compat/linux/linux.c | 13 | ||||
-rw-r--r-- | sys/compat/linux/linux_common.h | 1 |
2 files changed, 11 insertions, 3 deletions
diff --git a/sys/compat/linux/linux.c b/sys/compat/linux/linux.c index 53a874ebfab7..252645cf2ae5 100644 --- a/sys/compat/linux/linux.c +++ b/sys/compat/linux/linux.c @@ -434,10 +434,17 @@ ifname_linux_to_bsd(struct thread *td, const char *lxname, char *bsdname) 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 index 3392f55672f3..94ff5e49b57a 100644 --- a/sys/compat/linux/linux_common.h +++ b/sys/compat/linux/linux_common.h @@ -39,6 +39,7 @@ int ifname_linux_to_bsd(struct thread *, const char *, char *); 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, |