aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Chagin <dchagin@FreeBSD.org>2023-03-04 09:11:38 +0000
committerDmitry Chagin <dchagin@FreeBSD.org>2023-03-04 09:11:38 +0000
commit130383f2f10c110de3379a302766fa098290d5ac (patch)
treea9a03ef2cf9e4976b2a1b4231eb85401ee029551
parent6c5786fd37cb588f577c7fa63c56fc2f59c38786 (diff)
downloadsrc-130383f2f10c110de3379a302766fa098290d5ac.tar.gz
src-130383f2f10c110de3379a302766fa098290d5ac.zip
linux(4): Make linux_ifflags return a value
To simplify the use of the function in the printf-like statements. Differential Revision: https://reviews.freebsd.org/D38830
-rw-r--r--sys/compat/linsysfs/linsysfs.c4
-rw-r--r--sys/compat/linux/linux.c29
-rw-r--r--sys/compat/linux/linux_common.h2
-rw-r--r--sys/compat/linux/linux_ioctl.c4
4 files changed, 19 insertions, 20 deletions
diff --git a/sys/compat/linsysfs/linsysfs.c b/sys/compat/linsysfs/linsysfs.c
index f916858a17a7..0c0744a054a0 100644
--- a/sys/compat/linsysfs/linsysfs.c
+++ b/sys/compat/linsysfs/linsysfs.c
@@ -98,13 +98,11 @@ static int
linsysfs_ifnet_flags(PFS_FILL_ARGS)
{
struct ifnet *ifp;
- unsigned short flags;
ifp = ifname_linux_to_bsd(td, pn->pn_parent->pn_name, NULL);
if (ifp == NULL)
return (ENOENT);
- linux_ifflags(ifp, &flags);
- sbuf_printf(sb, "0x%x\n", flags);
+ sbuf_printf(sb, "0x%x\n", linux_ifflags(ifp));
return (0);
}
diff --git a/sys/compat/linux/linux.c b/sys/compat/linux/linux.c
index a7844f4bbbcf..135bc10e2dc1 100644
--- a/sys/compat/linux/linux.c
+++ b/sys/compat/linux/linux.c
@@ -416,33 +416,34 @@ ifname_linux_to_bsd(struct thread *td, const char *lxname, char *bsdname)
return (arg.ifp);
}
-void
-linux_ifflags(struct ifnet *ifp, short *flags)
+unsigned short
+linux_ifflags(struct ifnet *ifp)
{
- unsigned short fl;
+ unsigned short fl, flags;
fl = (if_getflags(ifp) | if_getdrvflags(ifp)) & 0xffff;
- *flags = 0;
+ flags = 0;
if (fl & IFF_UP)
- *flags |= LINUX_IFF_UP;
+ flags |= LINUX_IFF_UP;
if (fl & IFF_BROADCAST)
- *flags |= LINUX_IFF_BROADCAST;
+ flags |= LINUX_IFF_BROADCAST;
if (fl & IFF_DEBUG)
- *flags |= LINUX_IFF_DEBUG;
+ flags |= LINUX_IFF_DEBUG;
if (fl & IFF_LOOPBACK)
- *flags |= LINUX_IFF_LOOPBACK;
+ flags |= LINUX_IFF_LOOPBACK;
if (fl & IFF_POINTOPOINT)
- *flags |= LINUX_IFF_POINTOPOINT;
+ flags |= LINUX_IFF_POINTOPOINT;
if (fl & IFF_DRV_RUNNING)
- *flags |= LINUX_IFF_RUNNING;
+ flags |= LINUX_IFF_RUNNING;
if (fl & IFF_NOARP)
- *flags |= LINUX_IFF_NOARP;
+ flags |= LINUX_IFF_NOARP;
if (fl & IFF_PROMISC)
- *flags |= LINUX_IFF_PROMISC;
+ flags |= LINUX_IFF_PROMISC;
if (fl & IFF_ALLMULTI)
- *flags |= LINUX_IFF_ALLMULTI;
+ flags |= LINUX_IFF_ALLMULTI;
if (fl & IFF_MULTICAST)
- *flags |= LINUX_IFF_MULTICAST;
+ flags |= LINUX_IFF_MULTICAST;
+ return (flags);
}
static u_int
diff --git a/sys/compat/linux/linux_common.h b/sys/compat/linux/linux_common.h
index 9ebaff26b9ff..c25c4abf18ae 100644
--- a/sys/compat/linux/linux_common.h
+++ b/sys/compat/linux/linux_common.h
@@ -36,7 +36,7 @@ int ifname_bsd_to_linux_name(const char *, char *, size_t);
struct ifnet *ifname_linux_to_bsd(struct thread *td,
const char *lxname, char *bsdname);
-void linux_ifflags(struct ifnet *ifp, short *flags);
+unsigned short linux_ifflags(struct ifnet *);
int linux_ifhwaddr(struct ifnet *ifp, struct l_sockaddr *lsa);
int linux_to_bsd_domain(int domain);
diff --git a/sys/compat/linux/linux_ioctl.c b/sys/compat/linux/linux_ioctl.c
index 8900102bbbc7..8551ba180aa4 100644
--- a/sys/compat/linux/linux_ioctl.c
+++ b/sys/compat/linux/linux_ioctl.c
@@ -2237,9 +2237,9 @@ again:
static int
linux_gifflags(struct thread *td, struct ifnet *ifp, struct l_ifreq *ifr)
{
- l_short flags;
+ unsigned short flags;
- linux_ifflags(ifp, &flags);
+ flags = linux_ifflags(ifp);
return (copyout(&flags, &ifr->ifr_flags, sizeof(flags)));
}