diff options
author | marcel <marcel@FreeBSD.org> | 2002-01-15 03:10:33 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2002-01-15 03:10:33 +0000 |
commit | 8a8dd3588adf3ddd97ba034cc63cbfac5ffb50ca (patch) | |
tree | 840e05d7911acb30ed3a4f80e62f794e6a68e72d /sys/compat | |
parent | 18fa15ac4c6280e328ae83dd05ba035a378fef34 (diff) | |
download | FreeBSD-src-8a8dd3588adf3ddd97ba034cc63cbfac5ffb50ca.zip FreeBSD-src-8a8dd3588adf3ddd97ba034cc63cbfac5ffb50ca.tar.gz |
Reinstate linux_ifname. Although the Linuxulator doesn't use it
itself, it's used outside the Linuxulator. Reimplement the
function so that its behaviour matches the current renaming
scheme. It's probably better to formalize these interdependencies.
Diffstat (limited to 'sys/compat')
-rw-r--r-- | sys/compat/linux/linux_ioctl.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/sys/compat/linux/linux_ioctl.c b/sys/compat/linux/linux_ioctl.c index acf71d9..4e72f85 100644 --- a/sys/compat/linux/linux_ioctl.c +++ b/sys/compat/linux/linux_ioctl.c @@ -1818,6 +1818,33 @@ linux_ioctl_console(struct thread *td, struct linux_ioctl_args *args) #define IFP_IS_ETH(ifp) (ifp->if_type == IFT_ETHER) /* + * Interface function used by linprocfs (at the time of writing). It's not + * used by the Linuxulator itself. + */ +int +linux_ifname(struct ifnet *ifp, char *buffer, size_t buflen) +{ + struct ifnet *ifscan; + int ethno; + + /* Short-circuit non ethernet interfaces */ + if (!IFP_IS_ETH(ifp)) + return (snprintf(buffer, buflen, "%s%d", ifp->if_name, + ifp->if_unit)); + + /* Determine the (relative) unit number for ethernet interfaces */ + ethno = 0; + TAILQ_FOREACH(ifscan, &ifnet, if_link) { + if (ifscan == ifp) + return (snprintf(buffer, buflen, "eth%d", ethno)); + if (IFP_IS_ETH(ifscan)) + ethno++; + } + + return (0); +} + +/* * Translate a Linux interface name to a FreeBSD interface name, * and return the associated ifnet structure * bsdname and lxname need to be least IFNAMSIZ bytes long, but |