linux(4): Move use_real_names knob to the linux.c

MI linux.[c|h] are the module independent in terms of the Linux emulation
layer (ie, intended for both ISA - 32 & 64 bit), analogue of MD linux.h.
There must be a code here that cannot be placed into the corresponding by
common sense MI source and header files, i.e., code is machine independent,
but ISA dependent.
For the use_real_names knob, the code must be placed into the
linux_socket.[c|h], however linux_socket is ISA dependent.

MFC after:		2 weeks
This commit is contained in:
Dmitry Chagin 2023-02-14 17:46:32 +03:00
parent acbbd5c039
commit 32fdc75fe7
4 changed files with 22 additions and 24 deletions

View File

@ -59,6 +59,11 @@ __FBSDID("$FreeBSD$");
CTASSERT(LINUX_IFNAMSIZ == IFNAMSIZ);
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");
static int bsd_to_linux_sigtbl[LINUX_SIGTBLSZ] = {
LINUX_SIGHUP, /* SIGHUP */
LINUX_SIGINT, /* SIGINT */
@ -723,3 +728,10 @@ bsd_to_linux_poll_events(short bev, short *lev)
*lev = bits;
}
bool
linux_use_real_ifname(const struct ifnet *ifp)
{
return (use_real_ifnames || !IFP_IS_ETH(ifp));
}

View File

@ -284,6 +284,16 @@ struct l_statx {
ktrstruct("l_sigset_t", (s), l)
#endif
/*
* 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 *);
void linux_netlink_register(void);
void linux_netlink_deregister(void);

View File

@ -50,10 +50,6 @@ __FBSDID("$FreeBSD$");
#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>
@ -86,11 +82,6 @@ SYSCTL_STRING(_compat_linux, OID_AUTO, emul_path, CTLFLAG_RWTUN,
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'.
@ -324,9 +315,3 @@ linux_device_unregister_handler(struct linux_device_handler *d)
return (EINVAL);
}
bool
linux_use_real_ifname(const struct ifnet *ifp)
{
return (use_real_ifnames || !IFP_IS_ETH(ifp));
}

View File

@ -113,15 +113,6 @@ int linux_vn_get_major_minor(const struct vnode *vn, int *major, int *minor);
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