diff --git a/qubes/tests/vm/qubesvm.py b/qubes/tests/vm/qubesvm.py
index 3288a507..524c9222 100644
--- a/qubes/tests/vm/qubesvm.py
+++ b/qubes/tests/vm/qubesvm.py
@@ -714,6 +714,77 @@ class TC_90_QubesVM(QubesVMTestsMixin, qubes.tests.QubesTestCase):
self.assertXMLEqual(lxml.etree.XML(libvirt_xml),
lxml.etree.XML(expected))
+ def test_610_libvirt_xml_network(self):
+ expected = '''
+ test-inst-test
+ 7db78950-c467-4863-94d1-af59806384ea
+ 500
+ 400
+ 2
+
+
+
+
+
+
+
+
+ hvm
+
+ hvmloader
+
+
+
+ root=/dev/mapper/dmroot ro nomodeset console=hvc0 rd_NO_PLYMOUTH rd.plymouth.enable=0 plymouth.enable=0 nopat
+
+
+
+
+
+
+
+
+ destroy
+ destroy
+ destroy
+
+
+
+
+ {extra_ip}
+
+
+
+
+
+
+
+
+
+ '''
+ my_uuid = '7db78950-c467-4863-94d1-af59806384ea'
+ netvm = self.get_vm(qid=2, name='netvm', provides_network=True)
+ vm = self.get_vm(uuid=my_uuid)
+ vm.netvm = netvm
+ vm.virt_mode = 'hvm'
+ with self.subTest('ipv4_only'):
+ libvirt_xml = vm.create_config_file()
+ self.assertXMLEqual(lxml.etree.XML(libvirt_xml),
+ lxml.etree.XML(expected.format(extra_ip='')))
+ with self.subTest('ipv6'):
+ netvm.features['ipv6'] = True
+ libvirt_xml = vm.create_config_file()
+ self.assertXMLEqual(lxml.etree.XML(libvirt_xml),
+ lxml.etree.XML(expected.format(
+ extra_ip=''.format(
+ qubes.config.qubes_ipv6_prefix))))
+
@unittest.mock.patch('qubes.utils.get_timezone')
@unittest.mock.patch('qubes.utils.urandom')
@unittest.mock.patch('qubes.vm.qubesvm.QubesVM.untrusted_qdb')
@@ -826,5 +897,23 @@ class TC_90_QubesVM(QubesVMTestsMixin, qubes.tests.QubesTestCase):
'/qubes-secondary-dns': '10.139.1.2',
}
- vm.create_qdb_entries()
- self.assertEqual(test_qubesdb.data, expected)
+ with self.subTest('ipv4'):
+ vm.create_qdb_entries()
+ self.assertEqual(test_qubesdb.data, expected)
+
+ test_qubesdb.data.clear()
+ with self.subTest('ipv6'):
+ netvm.features['ipv6'] = True
+ expected['/qubes-ip6'] = qubes.config.qubes_ipv6_prefix + '::a89:3'
+ expected['/qubes-gateway6'] = 'fe80::fcff:ffff:feff:ffff'
+ vm.create_qdb_entries()
+ self.assertEqual(test_qubesdb.data, expected)
+
+ test_qubesdb.data.clear()
+ with self.subTest('ipv6_just_appvm'):
+ del netvm.features['ipv6']
+ vm.features['ipv6'] = True
+ expected['/qubes-ip6'] = qubes.config.qubes_ipv6_prefix + '::a89:3'
+ del expected['/qubes-gateway6']
+ vm.create_qdb_entries()
+ self.assertEqual(test_qubesdb.data, expected)