Signed-off-by: Shi Lei <shilei.massclouds(a)gmx.com>
---
docs/formatnetwork.html.in | 27 +++++++++++++++++++++-
docs/schemas/network.rng | 1 +
tests/networkxml2confdata/vlan-network.conf | 16 +++++++++++++
tests/networkxml2confdata/vlan-network.xml | 13 +++++++++++
tests/networkxml2conftest.c | 1 +
.../vlan-network-multi-vlan-tag.xml | 11 +++++++++
.../vlan-network-no-forward-dev.xml | 10 ++++++++
tests/networkxml2xmlin/vlan-network-with-dhcp.xml | 15 ++++++++++++
tests/networkxml2xmlin/vlan-network.xml | 10 ++++++++
tests/networkxml2xmlout/vlan-network-with-dhcp.xml | 17 ++++++++++++++
tests/networkxml2xmlout/vlan-network.xml | 12 ++++++++++
tests/networkxml2xmltest.c | 5 ++++
12 files changed, 137 insertions(+), 1 deletion(-)
create mode 100644 tests/networkxml2confdata/vlan-network.conf
create mode 100644 tests/networkxml2confdata/vlan-network.xml
create mode 100644 tests/networkxml2xmlin/vlan-network-multi-vlan-tag.xml
create mode 100644 tests/networkxml2xmlin/vlan-network-no-forward-dev.xml
create mode 100644 tests/networkxml2xmlin/vlan-network-with-dhcp.xml
create mode 100644 tests/networkxml2xmlin/vlan-network.xml
create mode 100644 tests/networkxml2xmlout/vlan-network-with-dhcp.xml
create mode 100644 tests/networkxml2xmlout/vlan-network.xml
diff --git a/docs/formatnetwork.html.in b/docs/formatnetwork.html.in
index 363a72b..294256c 100644
--- a/docs/formatnetwork.html.in
+++ b/docs/formatnetwork.html.in
@@ -156,7 +156,7 @@
<dt><code>mtu</code></dt>
<dd>
- The <code>size</code> attribute of the
<code>mtu></code>
+ The <code>size</code> attribute of the <code>mtu</code>
element specifies the Maximum Transmission Unit (MTU) for the
network. <span class="since">Since 3.1.0</span>. In the
case
of a libvirt-managed network (one with forward mode
@@ -299,6 +299,31 @@
<span class="since">Since 2.2.0</span>
</dd>
+ <dt><code>vlan</code></dt>
+ <dd>
+ All guests linked to this network will belong to a VLan.
+ Guests communicate with each other directly and communicate
+ with outside network via this network. Egress traffic from
+ this network will be tagged transparently by the VLan-Tag;
+ ingress traffic will be untagged and transport into this
+ network only if traffic has the same VLan-Tag, or be dropped.
+ The <code>dev</code> attribute must be set to specify the
+ host's interface which forwards traffice between this network
+ and outside. The <code>vlan</code> element and its
<code>tag</code>
+ element must be one and only, and the <code>id</code> attribute
+ specifies the tag of this VLan. The <code>bridge</code> element
+ can be ignored since it is a internal bridge. This network
+ supports <code>ip</code> and <code>dhcp</code>.
+ <span class="since">Since 4.7.0</span>
+ <pre>
+...
+ <forward mode='vlan' dev='eth1'/>
+ <vlan>
+ <tag id="20"/>
+ </vlan>
+...</pre>
+ </dd>
+
<dt><code>bridge</code></dt>
<dd>
This network describes either 1) an existing host bridge
diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng
index f37c422..046f6dd 100644
--- a/docs/schemas/network.rng
+++ b/docs/schemas/network.rng
@@ -114,6 +114,7 @@
<value>private</value>
<value>vepa</value>
<value>hostdev</value>
+ <value>vlan</value>
</choice>
</attribute>
</optional>
diff --git a/tests/networkxml2confdata/vlan-network.conf
b/tests/networkxml2confdata/vlan-network.conf
new file mode 100644
index 0000000..5d1d091
--- /dev/null
+++ b/tests/networkxml2confdata/vlan-network.conf
@@ -0,0 +1,16 @@
+##WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
+##OVERWRITTEN AND LOST. Changes to this configuration should be made using:
+## virsh net-edit vlanB
+## or other application using the libvirt API.
+##
+## dnsmasq conf file created by libvirt
+strict-order
+except-interface=lo
+bind-dynamic
+interface=virbr1
+dhcp-range=192.168.126.60,192.168.126.69
+dhcp-no-override
+dhcp-authoritative
+dhcp-lease-max=10
+dhcp-hostsfile=/var/lib/libvirt/dnsmasq/vlanB.hostsfile
+addn-hosts=/var/lib/libvirt/dnsmasq/vlanB.addnhosts
diff --git a/tests/networkxml2confdata/vlan-network.xml
b/tests/networkxml2confdata/vlan-network.xml
new file mode 100644
index 0000000..0faa7bb
--- /dev/null
+++ b/tests/networkxml2confdata/vlan-network.xml
@@ -0,0 +1,13 @@
+<network>
+ <name>vlanB</name>
+ <forward mode="vlan" dev="p5p1"/>
+ <bridge name='virbr1'/>
+ <vlan>
+ <tag id="20"/>
+ </vlan>
+ <ip address="192.168.126.2" netmask="255.255.255.0">
+ <dhcp>
+ <range start="192.168.126.60" end="192.168.126.69"/>
+ </dhcp>
+ </ip>
+</network>
diff --git a/tests/networkxml2conftest.c b/tests/networkxml2conftest.c
index 8e7751e..d106c6a 100644
--- a/tests/networkxml2conftest.c
+++ b/tests/networkxml2conftest.c
@@ -144,6 +144,7 @@ mymain(void)
DO_TEST("dhcp6-nat-network", dhcpv6);
DO_TEST("dhcp6host-routed-network", dhcpv6);
DO_TEST("ptr-domains-auto", dhcpv6);
+ DO_TEST("vlan-network", full);
virObjectUnref(dhcpv6);
virObjectUnref(full);
diff --git a/tests/networkxml2xmlin/vlan-network-multi-vlan-tag.xml
b/tests/networkxml2xmlin/vlan-network-multi-vlan-tag.xml
new file mode 100644
index 0000000..328e9a4
--- /dev/null
+++ b/tests/networkxml2xmlin/vlan-network-multi-vlan-tag.xml
@@ -0,0 +1,11 @@
+<network>
+ <name>vlanB</name>
+ <uuid>d29b765a-896c-450c-b94a-1b6b21c340db</uuid>
+ <forward mode="vlan" dev="eth1"/>
+ <bridge name='virbr1'/>
+ <mac address='12:34:56:78:9A:BC'/>
+ <vlan>
+ <tag id="20"/>
+ <tag id="30"/>
+ </vlan>
+</network>
diff --git a/tests/networkxml2xmlin/vlan-network-no-forward-dev.xml
b/tests/networkxml2xmlin/vlan-network-no-forward-dev.xml
new file mode 100644
index 0000000..c8384cf
--- /dev/null
+++ b/tests/networkxml2xmlin/vlan-network-no-forward-dev.xml
@@ -0,0 +1,10 @@
+<network>
+ <name>vlanB</name>
+ <uuid>d29b765a-896c-450c-b94a-1b6b21c340db</uuid>
+ <forward mode="vlan"/>
+ <bridge name='virbr1'/>
+ <mac address='12:34:56:78:9A:BC'/>
+ <vlan>
+ <tag id="20"/>
+ </vlan>
+</network>
diff --git a/tests/networkxml2xmlin/vlan-network-with-dhcp.xml
b/tests/networkxml2xmlin/vlan-network-with-dhcp.xml
new file mode 100644
index 0000000..e51eaeb
--- /dev/null
+++ b/tests/networkxml2xmlin/vlan-network-with-dhcp.xml
@@ -0,0 +1,15 @@
+<network>
+ <name>vlanB</name>
+ <uuid>d29b765a-896c-450c-b94a-1b6b21c340db</uuid>
+ <forward mode="vlan" dev="eth1"/>
+ <bridge name='virbr1'/>
+ <mac address='12:34:56:78:9A:BC'/>
+ <vlan>
+ <tag id="20"/>
+ </vlan>
+ <ip address="192.168.126.2" netmask="255.255.255.0">
+ <dhcp>
+ <range start="192.168.126.60" end="192.168.126.69"/>
+ </dhcp>
+ </ip>
+</network>
diff --git a/tests/networkxml2xmlin/vlan-network.xml
b/tests/networkxml2xmlin/vlan-network.xml
new file mode 100644
index 0000000..3bf075a
--- /dev/null
+++ b/tests/networkxml2xmlin/vlan-network.xml
@@ -0,0 +1,10 @@
+<network>
+ <name>vlanB</name>
+ <uuid>d29b765a-896c-450c-b94a-1b6b21c340db</uuid>
+ <forward mode="vlan" dev="eth1"/>
+ <bridge name='virbr1'/>
+ <mac address='12:34:56:78:9A:BC'/>
+ <vlan>
+ <tag id="20"/>
+ </vlan>
+</network>
diff --git a/tests/networkxml2xmlout/vlan-network-with-dhcp.xml
b/tests/networkxml2xmlout/vlan-network-with-dhcp.xml
new file mode 100644
index 0000000..58ab96d
--- /dev/null
+++ b/tests/networkxml2xmlout/vlan-network-with-dhcp.xml
@@ -0,0 +1,17 @@
+<network>
+ <name>vlanB</name>
+ <uuid>d29b765a-896c-450c-b94a-1b6b21c340db</uuid>
+ <forward dev='eth1' mode='vlan'>
+ <interface dev='eth1'/>
+ </forward>
+ <bridge name='virbr1' stp='on' delay='0'/>
+ <mac address='12:34:56:78:9a:bc'/>
+ <vlan>
+ <tag id='20'/>
+ </vlan>
+ <ip address='192.168.126.2' netmask='255.255.255.0'>
+ <dhcp>
+ <range start='192.168.126.60' end='192.168.126.69'/>
+ </dhcp>
+ </ip>
+</network>
diff --git a/tests/networkxml2xmlout/vlan-network.xml
b/tests/networkxml2xmlout/vlan-network.xml
new file mode 100644
index 0000000..e19ce49
--- /dev/null
+++ b/tests/networkxml2xmlout/vlan-network.xml
@@ -0,0 +1,12 @@
+<network>
+ <name>vlanB</name>
+ <uuid>d29b765a-896c-450c-b94a-1b6b21c340db</uuid>
+ <forward dev='eth1' mode='vlan'>
+ <interface dev='eth1'/>
+ </forward>
+ <bridge name='virbr1' stp='on' delay='0'/>
+ <mac address='12:34:56:78:9a:bc'/>
+ <vlan>
+ <tag id='20'/>
+ </vlan>
+</network>
diff --git a/tests/networkxml2xmltest.c b/tests/networkxml2xmltest.c
index eb7db76..72957c7 100644
--- a/tests/networkxml2xmltest.c
+++ b/tests/networkxml2xmltest.c
@@ -44,6 +44,7 @@ testCompareXMLToXMLFiles(const char *inxml, const char *outxml,
result = TEST_COMPARE_NET_XML2XML_RESULT_FAIL_FORMAT;
goto cleanup;
}
+
if (expectResult == TEST_COMPARE_NET_XML2XML_RESULT_FAIL_FORMAT)
goto cleanup;
@@ -160,6 +161,10 @@ mymain(void)
DO_TEST_PARSE_ERROR("passthrough-duplicate");
DO_TEST("metadata");
DO_TEST("set-mtu");
+ DO_TEST("vlan-network");
+ DO_TEST("vlan-network-with-dhcp");
+ DO_TEST_PARSE_ERROR("vlan-network-no-forward-dev");
+ DO_TEST_PARSE_ERROR("vlan-network-multi-vlan-tag");
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
--
2.7.4