diff options
author | Dmitry Chagin <dchagin@FreeBSD.org> | 2019-05-06 19:57:51 +0000 |
---|---|---|
committer | Dmitry Chagin <dchagin@FreeBSD.org> | 2019-05-06 19:57:51 +0000 |
commit | bbac65c772a37b0191445f55bdcdfb6bd0ac5fdb (patch) | |
tree | a2cc5dabf2f24b35be0e3664e517797c93b29db4 /sys/compat/linux/linux.c | |
parent | 9c1437ae571b48d3b8684de5d3913a9f9f52871c (diff) | |
download | src-bbac65c772a37b0191445f55bdcdfb6bd0ac5fdb.tar.gz src-bbac65c772a37b0191445f55bdcdfb6bd0ac5fdb.zip |
Rewrite linux_ifflags() in more readable Linuxulator style.
Reviewed by: emaste
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D20146
Notes
Notes:
svn path=/head/; revision=347203
Diffstat (limited to 'sys/compat/linux/linux.c')
-rw-r--r-- | sys/compat/linux/linux.c | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/sys/compat/linux/linux.c b/sys/compat/linux/linux.c index af17e135e1ca..33a2a1098401 100644 --- a/sys/compat/linux/linux.c +++ b/sys/compat/linux/linux.c @@ -269,16 +269,30 @@ ifname_linux_to_bsd(struct thread *td, const char *lxname, char *bsdname) void linux_ifflags(struct ifnet *ifp, short *flags) { - - *flags = (ifp->if_flags | ifp->if_drv_flags) & 0xffff; - /* these flags have no Linux equivalent */ - *flags &= ~(IFF_DRV_OACTIVE|IFF_SIMPLEX| - IFF_LINK0|IFF_LINK1|IFF_LINK2); - /* Linux' multicast flag is in a different bit */ - if (*flags & IFF_MULTICAST) { - *flags &= ~IFF_MULTICAST; - *flags |= 0x1000; - } + unsigned short fl; + + fl = (ifp->if_flags | ifp->if_drv_flags) & 0xffff; + *flags = 0; + if (fl & IFF_UP) + *flags |= LINUX_IFF_UP; + if (fl & IFF_BROADCAST) + *flags |= LINUX_IFF_BROADCAST; + if (fl & IFF_DEBUG) + *flags |= LINUX_IFF_DEBUG; + if (fl & IFF_LOOPBACK) + *flags |= LINUX_IFF_LOOPBACK; + if (fl & IFF_POINTOPOINT) + *flags |= LINUX_IFF_POINTOPOINT; + if (fl & IFF_DRV_RUNNING) + *flags |= LINUX_IFF_RUNNING; + if (fl & IFF_NOARP) + *flags |= LINUX_IFF_NOARP; + if (fl & IFF_PROMISC) + *flags |= LINUX_IFF_PROMISC; + if (fl & IFF_ALLMULTI) + *flags |= LINUX_IFF_ALLMULTI; + if (fl & IFF_MULTICAST) + *flags |= LINUX_IFF_MULTICAST; } int |