Skip to content

Commit 87e4a43

Browse files
authored
Merge pull request #194 from matttbe/multiple-ifaces
net: support multiple interfaces and different bridges
2 parents ec760db + 24cd34c commit 87e4a43

File tree

5 files changed

+18
-11
lines changed

5 files changed

+18
-11
lines changed

virtme/commands/run.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,7 @@ def make_parser() -> argparse.ArgumentParser:
121121
action="append",
122122
const="user",
123123
nargs="?",
124-
choices=["user", "bridge", "loop"],
125-
help="Enable basic network access.",
124+
help="Enable basic network access: user, bridge(=<br>), loop.",
126125
)
127126
g.add_argument(
128127
"--balloon",
@@ -1338,8 +1337,12 @@ def do_script(shellcmd: str, ret_path=None, show_boot_console=False) -> None:
13381337
if net == "user":
13391338
qemuargs.extend(["-netdev", "user,id=n%d" % index])
13401339
extend_dhcp = True
1341-
elif net == "bridge":
1342-
qemuargs.extend(["-netdev", "bridge,id=n%d,br=virbr0" % index])
1340+
elif net == "bridge" or net.startswith("bridge="):
1341+
if len(net) > 7 and net[6] == '=':
1342+
bridge = net[7:]
1343+
else:
1344+
bridge = "virbr0"
1345+
qemuargs.extend(["-netdev", "bridge,id=n%d,br=%s" % (index, bridge)])
13431346
extend_dhcp = True
13441347
elif net == "loop":
13451348
hubid = index
@@ -1348,7 +1351,7 @@ def do_script(shellcmd: str, ret_path=None, show_boot_console=False) -> None:
13481351
qemuargs.extend(["-device", "%s,netdev=n%d" % (arch.virtio_dev_type("net"), index)])
13491352
qemuargs.extend(["-netdev", "hubport,id=n%d,hubid=%d" % (index, hubid)])
13501353
else:
1351-
assert False
1354+
arg_fail("--net: invalid choice: '%s' (choose from user, bridge(=<br>), loop)" % net)
13521355
index += 1
13531356
if extend_dhcp:
13541357
kernelargs.extend(["virtme.dhcp"])

virtme/guest/virtme-init

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,8 +252,11 @@ mount --bind "$tmpfile" "$real_sudoers"
252252

253253
if cat /proc/cmdline |grep -q -E '(^| )virtme.dhcp($| )'; then
254254
# udev is liable to rename the interface out from under us.
255-
virtme_net=`ls "$(ls -d /sys/bus/virtio/drivers/virtio_net/virtio* |sort -g |head -n1)"/net`
256-
busybox udhcpc -i "$virtme_net" -n -q -f -s "$(dirname $0)/virtme-udhcpc-script"
255+
for d in /sys/bus/virtio/drivers/virtio_net/virtio*/net/*; do
256+
virtme_net=$(basename "${d}")
257+
busybox udhcpc -i "$virtme_net" -n -q -f -s "$(dirname $0)/virtme-udhcpc-script" &
258+
done
259+
wait
257260
fi
258261

259262
if cat /proc/cmdline |grep -q -E '(^| )virtme.snapd($| )'; then

virtme/guest/virtme-udhcpc-script

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ if [[ "$1" == "deconfig" ]]; then
1010
ip addr flush dev "$interface"
1111
elif [[ "$1" == "bound" ]]; then
1212
ip addr add "$ip/$mask" dev "$interface"
13-
ip route add default via "$router" dev "$interface"
13+
if [[ -n "$router" ]]; then
14+
ip route add default via "$router" dev "$interface"
15+
fi
1416
if [[ -n "$dns" ]]; then
1517
# A lot of systems will have /etc/resolv.conf symlinked to
1618
# /run/NetworkManager/something_or_other. Debian symlinks to /run/resolvconf.

virtme_ng/run.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,7 @@ def make_parser():
349349
"--network",
350350
"-n",
351351
action="append",
352-
choices=['user', 'bridge', 'loop'],
353-
help="Enable network access",
352+
help="Enable network access: user, bridge(=<br>), loop",
354353
)
355354

356355
parser.add_argument(

virtme_ng_init

0 commit comments

Comments
 (0)