Description
I'm running Hyperion on (Debian) Linux, along with a bunch of Qemu virtual machines. My network topology is rather complex with public and private IP Vlans, and a bridged Vlan between Token Ring and Ethernet. This translates to having multiple preconfigured bridge devices on my machine where those Layer 2 components are tied together.
Currently, I preconfigure some tap devices for Hercules with the system provided network setup facilities, and refer to those with their names. This is outlined partly in README.SNA.
0E40 LCS -e SNA tap0
0E41 LCS -e SNA tap1
0E42.2 LCS tap2
So, the taps are preconfigured and already assigned to the respective bridge devices after system boot.
On the pro side, this allows to use the user parameter of the ip
command, to make tap devices owned by the user who eventually runs Hercules.
I have learned to like the -netdev
parameter of Qemu a lot. This removes the necessity of preconfiguring tap devices, but creates tap devices dynamically, and assigns them to the given bridge device (internal LAN, external LAN, etc.) The drawback is that only root is allowed to assign taps to bridges. Since Qemu runs as root for other reasons, this isn't a big issue.
Example of a Qemu command parameter:
-netdev bridge,id=hercules-mvs,br=br0
Proposal
I'd love to see a likewise enhancement to the LCS configuration parameters. The following text might be added 1:1 to the documentation, should the feature request ever be considered.
-b bridgename
or --bridge bridgename
where bridgename refers to a preconfigured bridge interface like br0.
-n
and -b
are mutually exclusive, and -m
is honored. -o
and guestip parameters are ignored.
Using -b
makes Hercules being run as root mandatory.
Use case for this enhancement is that when my system is running as usual, many taps are defined. If I add another Hercules instance at this point, the next free tap device number is assigned after all those being creates by the Qemu instances.
After a reboot, that tap number is different, because statically defined in the network configuration, and established way before Qemu instances are started. That necessitates to manually change the Hercules configuration file.
Possible workarounds:
- I needlessly must preallocate a number of tap devices for this occasion.
- I first must stop all Qemu instances to get a predictable tap number for said Hercules instance.
Hence a fully dynamic approach as outlined above would make this mess a no-brainer.