Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F107786643
D33792.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D33792.diff
View Options
diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c
--- a/sys/compat/linprocfs/linprocfs.c
+++ b/sys/compat/linprocfs/linprocfs.c
@@ -1412,11 +1412,6 @@
return (error);
}
-/*
- * Criteria for interface name translation
- */
-#define IFP_IS_ETH(ifp) (ifp->if_type == IFT_ETHER)
-
static int
linux_ifname(struct ifnet *ifp, char *buffer, size_t buflen)
{
@@ -1426,7 +1421,7 @@
IFNET_RLOCK_ASSERT();
/* Short-circuit non ethernet interfaces */
- if (!IFP_IS_ETH(ifp))
+ if (linux_use_real_ifname(ifp))
return (strlcpy(buffer, ifp->if_xname, buflen));
/* Determine the (relative) unit number for ethernet interfaces */
@@ -1434,7 +1429,7 @@
CK_STAILQ_FOREACH(ifscan, &V_ifnet, if_link) {
if (ifscan == ifp)
return (snprintf(buffer, buflen, "eth%d", ethno));
- if (IFP_IS_ETH(ifscan))
+ if (!linux_use_real_ifname(ifscan))
ethno++;
}
diff --git a/sys/compat/linux/linux.h b/sys/compat/linux/linux.h
--- a/sys/compat/linux/linux.h
+++ b/sys/compat/linux/linux.h
@@ -55,12 +55,6 @@
#define LINUX_IFHWADDRLEN 6
#define LINUX_IFNAMSIZ 16
-/*
- * Criteria for interface name translation
- */
-#define IFP_IS_ETH(ifp) (ifp->if_type == IFT_ETHER)
-#define IFP_IS_LOOP(ifp) (ifp->if_type == IFT_LOOP)
-
struct l_sockaddr {
unsigned short sa_family;
char sa_data[14];
diff --git a/sys/compat/linux/linux_ioctl.c b/sys/compat/linux/linux_ioctl.c
--- a/sys/compat/linux/linux_ioctl.c
+++ b/sys/compat/linux/linux_ioctl.c
@@ -2121,7 +2121,7 @@
error = ENODEV;
CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) {
if (ifr.ifr_ifindex == index) {
- if (IFP_IS_ETH(ifp))
+ if (!linux_use_real_ifname(ifp))
snprintf(ifr.ifr_name, LINUX_IFNAMSIZ,
"eth%d", ethno);
else
@@ -2130,7 +2130,7 @@
error = 0;
break;
}
- if (IFP_IS_ETH(ifp))
+ if (!linux_use_real_ifname(ifp))
ethno++;
index++;
}
diff --git a/sys/compat/linux/linux_util.h b/sys/compat/linux/linux_util.h
--- a/sys/compat/linux/linux_util.h
+++ b/sys/compat/linux/linux_util.h
@@ -120,6 +120,15 @@
char *linux_get_char_devices(void);
void linux_free_get_char_devices(char *string);
+/*
+ * Criteria for interface name translation
+ */
+#define IFP_IS_ETH(ifp) ((ifp)->if_type == IFT_ETHER)
+#define IFP_IS_LOOP(ifp) ((ifp)->if_type == IFT_LOOP)
+
+struct ifnet;
+bool linux_use_real_ifname(const struct ifnet *ifp);
+
#if defined(KTR)
#define KTR_LINUX KTR_SUBSYS
diff --git a/sys/compat/linux/linux_util.c b/sys/compat/linux/linux_util.c
--- a/sys/compat/linux/linux_util.c
+++ b/sys/compat/linux/linux_util.c
@@ -50,6 +50,10 @@
#include <sys/systm.h>
#include <sys/vnode.h>
+#include <net/if.h>
+#include <net/if_var.h>
+#include <net/if_types.h>
+
#include <machine/stdarg.h>
#include <compat/linux/linux_dtrace.h>
@@ -82,6 +86,11 @@
linux_emul_path, sizeof(linux_emul_path),
"Linux runtime environment path");
+static bool use_real_ifnames = false;
+SYSCTL_BOOL(_compat_linux, OID_AUTO, use_real_ifnames, CTLFLAG_RWTUN,
+ &use_real_ifnames, 0,
+ "Use FreeBSD interface names instead of generating ethN aliases");
+
/*
* Search an alternate path before passing pathname arguments on to
* system calls. Useful for keeping a separate 'emulation tree'.
@@ -315,3 +324,9 @@
return (EINVAL);
}
+
+bool
+linux_use_real_ifname(const struct ifnet *ifp)
+{
+ return (use_real_ifnames || !IFP_IS_ETH(ifp));
+}
diff --git a/sys/modules/linux_common/Makefile b/sys/modules/linux_common/Makefile
--- a/sys/modules/linux_common/Makefile
+++ b/sys/modules/linux_common/Makefile
@@ -11,6 +11,7 @@
EXPORT_SYMS+= linux_emul_path
EXPORT_SYMS+= linux_get_osname
EXPORT_SYMS+= linux_get_osrelease
+EXPORT_SYMS+= linux_use_real_ifname
.if !defined(KERNBUILDDIR)
.warning Building Linuxulator outside of a kernel does not make sense
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Jan 19, 4:55 AM (4 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15924573
Default Alt Text
D33792.diff (3 KB)
Attached To
Mode
D33792: linux: add sysctl to pass untranslated interface names
Attached
Detach File
Event Timeline
Log In to Comment