Hi Laine,
Could you give this requirement that support define vlan interface with
non-default name in detail ?
Thanks.
*Leno Hou*
E-mail : lenohou(a)gmail.com
On Wed, Nov 30, 2016 at 3:06 AM, Laine Stump <laine(a)laine.org> wrote:
Thanks for taking the time to dig into the code! That's very
helpful.
We need to also support going in the other direction (defining a vlan
interface with a non-default name and having the XML properly created. This
would mostly be handled in redhat-get.xsl, but might also need some
supporting stuff in the C part of the code (I haven't looked).
On 11/25/2016 12:31 PM, Leno Hou wrote:
> This patch fixes the problem as shown below.
> * virsh dumpxml failed with vlan1292 in inactive status
> * virt-manager failed to view vlan1292 interface details.
>
> Following is steps to reproduce in virsh.
> 1) setup 802.1q vlan tagging using ifcfg-files
> #cat > /etc/sysconfig/network-scripts/ifcfg-vlan1292 < EOF
> VLAN=yes
> VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
> DEVICE=vlan1292
> PHYSDEV=eth0
> ONBOOT=yes
> BOOTPROTO=static
> IPADDR=10.254.5.254
> NETMASK=255.255.255.0
> TYPE=Ethernet
> NM_CONTROLLED=no
> EOF
>
> 2) active vlan interface and dumpxml
> #ifup vlan1292
> #virsh iface-dumpxml vlan1292
> <interface type='vlan' name='vlan1292'>
> <protocol family='ipv4'>
> <ip address='10.254.5.254' prefix='24'/>
> </protocol>
> <protocol family='ipv6'>
> <ip address='fe80::4:21ff:fe00:b300' prefix='64'/>
> </protocol>
> <link speed='1000' state='up'/>
> <vlan tag='1292'>
> <interface name='eth0'/>
> </vlan>
> </interface>
>
> 3) deactive vlan interface and dumpxml
> #ifdown vlan1292
> #virsh iface-dumpxml vlan1292
> error: XML error: vlan interface misses the tag attribute
>
> Once applied this patch, it's will be successfully return the results:
> #virsh iface-dumpxml vlan1292
> <interface type='vlan' name='vlan1292'>
> <start mode='onboot'/>
> <protocol family='ipv4'>
> <ip address='10.254.5.254' prefix='24'/>
> </protocol>
> <vlan tag='1292'>
> <interface name='eth0'/>
> </vlan>
> </interface>
>
> Signed-off-by: Leno Hou <lenohou(a)gmail.com>
> ---
> data/xml/redhat-put.xsl | 21 ++++++++++++++++-----
> 1 file changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/data/xml/redhat-put.xsl b/data/xml/redhat-put.xsl
> index ed56c66..0a370fe 100644
> --- a/data/xml/redhat-put.xsl
> +++ b/data/xml/redhat-put.xsl
> @@ -56,11 +56,22 @@
> <xsl:template name="vlan-device">
> <xsl:variable name="name" select="node[@label =
'DEVICE']/@value"/>
> - <xsl:variable name="device" select="substring-before($name,
'.')"/>
> - <xsl:variable name="tag" select="substring-after($name,
'.')"/>
> - <vlan tag="{$tag}">
> - <interface name="{$device}"/>
> - </vlan>
> + <xsl:choose>
> + <xsl:when test="contains($name, '.')">
> + <xsl:variable name="device"
select="substring-before($name,
> '.')"/>
> + <xsl:variable name="tag" select="substring-after($name,
'.')"/>
> + <vlan tag="{$tag}">
> + <interface name="{$device}"/>
> + </vlan>
> + </xsl:when>
> + <xsl:otherwise>
> + <xsl:variable name="device" select="node[@label =
> 'PHYSDEV']/@value"/>
> + <xsl:variable name="tag" select="translate($name,
> translate($name, '0123456789', ''), '')"/>
> + <vlan tag="{$tag}">
> + <interface name="{$device}"/>
> + </vlan>
> + </xsl:otherwise>
> + </xsl:choose>
> </xsl:template>
> <!--
>