NAME
shmif —
rump kernel shared memory
network interface
SYNOPSIS
#include <rump/rump.h>
int
rump_pub_shmif_create(
const char *path,
int *ifnum);
DESCRIPTION
The
shmif interface uses a memory mapped regular file as a
virtual Ethernet bus. All interfaces connected to the same bus see each
others' traffic.
Using a memory mapped regular file as a bus has two implications:
- The bus identifier is not in flat global namespace.
- Configuring and using the interface is possible without
superuser privileges on the host (normal host file access permissions for
the bus hold).
It is not possible to directly access the host networking facilities from a rump
kernel using purely
shmif. However, traffic can be routed to
another rump kernel instance which provides both
shmif and
virt(4) networking.
An
shmif interface can be created in two ways:
- Programmatically by calling
rump_pub_shmif_create(). The bus pathname is passed in
path. The number of the newly created interface is
available after a successful call by dereferencing
ifnum.
- Dynamically at runtime with
ifconfig(8) or equivalent
using the create command. In this case the bus path must
be configured with
ifconfig(8)
linkstr before the interface address can be
configured.
Destroying an
shmif interface is possible only via
ifconfig(8)
destroy.
SEE ALSO
rump(3),
virt(4),
ifconfig(8)