On 2/24/26 8:12 AM, Michal Prívozník via Devel wrote:
On 2/24/26 08:52, Laine Stump via Devel wrote:
From: Laine Stump <[email protected]>

libvirt's <interface> element has for a long time supported adding
<route> sub-elements to specify arbitrary routes to be added to the
guest OS networking, but historically this has only worked for LXC
guests. If you tried to add <route> to the interface of a QEMU guest,
it would be rejected.

passt networking doesn't support setting *any arbitrary* route but it
does support setting a default route (using the passt commandline
"--gateway" parameter). A default route is really just a "route with
unspecified destination/prefix", so a default route can be specified
in libvirt XML with:

    <route gateway='192.168.0.1'/>

Attempts to give a specified destination, prefix, or metric will
result in a validation error.

Resolves: https://issues.redhat.com/browse/RHEL-46602
Signed-off-by: Laine Stump <[email protected]>
---
  src/qemu/qemu_passt.c    | 16 +++++++++++++
  src/qemu/qemu_validate.c | 50 ++++++++++++++++++++++++++++++++++++----
  2 files changed, 62 insertions(+), 4 deletions(-)


Please, squash in the following:

This (forgetting to add docs and a test case) is what happens when I post something at 3AM just so I can get it out of my hair! :-). I'll do you one better - I'll make one of the cases add an IPv6 default route.


diff --git i/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.passt0.args 
w/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.passt0.args
index b0f26d8089..182d8ae054 100644
--- i/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.passt0.args
+++ w/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.passt0.args
@@ -9,6 +9,7 @@ passt \
  --address 172.17.2.0 \
  --netmask 24 \
  --address 2001:db8:ac10:fd01::feed \
+--gateway 192.168.0.1 \
  --tcp-ports '2001:db8:ac10:fd01::1:10/22:2022,1000-1050,~1020,~1030-1040' \
  --udp-ports '1.2.3.4%eth0/5000-5020:6000-6020,~5010-5015' \
  --tcp-ports 80 \
diff --git i/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.xml 
w/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.xml
index 77da297936..ecad9a40b5 100644
--- i/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.xml
+++ w/tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.xml
@@ -33,6 +33,7 @@
        <source dev='eth42'/>
        <ip address='172.17.2.0' family='ipv4' prefix='24'/>
        <ip address='2001:db8:ac10:fd01::feed' family='ipv6'/>
+      <route gateway='192.168.0.1'/>
        <portForward proto='tcp' address='2001:db8:ac10:fd01::1:10'>
          <range start='22' to='2022'/>
          <range start='1000' end='1050'/>
diff --git i/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.passt0.args 
w/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.passt0.args
index b0f26d8089..182d8ae054 100644
--- i/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.passt0.args
+++ w/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.passt0.args
@@ -9,6 +9,7 @@ passt \
  --address 172.17.2.0 \
  --netmask 24 \
  --address 2001:db8:ac10:fd01::feed \
+--gateway 192.168.0.1 \
  --tcp-ports '2001:db8:ac10:fd01::1:10/22:2022,1000-1050,~1020,~1030-1040' \
  --udp-ports '1.2.3.4%eth0/5000-5020:6000-6020,~5010-5015' \
  --tcp-ports 80 \
diff --git i/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.xml 
w/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.xml
index 917a9edaa0..fc5a5e37aa 100644
--- i/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.xml
+++ w/tests/qemuxmlconfdata/net-user-passt.x86_64-latest.xml
@@ -33,6 +33,7 @@
        <source dev='eth42'/>
        <ip address='172.17.2.0' family='ipv4' prefix='24'/>
        <ip address='2001:db8:ac10:fd01::feed' family='ipv6'/>
+      <route gateway='192.168.0.1'/>
        <portForward proto='tcp' address='2001:db8:ac10:fd01::1:10'>
          <range start='22' to='2022'/>
          <range start='1000' end='1050'/>
diff --git i/tests/qemuxmlconfdata/net-user-passt.xml 
w/tests/qemuxmlconfdata/net-user-passt.xml
index 80d15de2ed..3edad133aa 100644
--- i/tests/qemuxmlconfdata/net-user-passt.xml
+++ w/tests/qemuxmlconfdata/net-user-passt.xml
@@ -30,6 +30,7 @@
        <source dev='eth42'/>
        <ip address='172.17.2.0' family='ipv4' prefix='24'/>
        <ip address='2001:db8:ac10:fd01::feed' family='ipv6'/>
+      <route gateway='192.168.0.1'/>
        <portForward proto='tcp' address='2001:db8:ac10:fd01::1:10'>
          <range start='22' to='2022'/>
          <range start='1000' end='1050'/>

Michal


Reply via email to