[radv] Support multiple ipv6 prefixes per vlan interface (#9934)
Why I did it Radvd.conf.j2 template creates two copies of the vlan interface when there are more than one ipv6 address assigned to a single vlan interface. Changed the format to add prefixes under the same vlan interface block. How I did it Modifies radvd.conf.j2 and added unit tests How to verify it Configure multiple ipv6 address to the same vlan, start radvd Unit test will check if radvd.conf with multiple ipv6 addresses is formed correctly
This commit is contained in:
parent
b7ae4f2e67
commit
f136c53d19
@ -10,9 +10,21 @@
|
|||||||
|
|
||||||
{# If our configuration has VLAN interfaces... #}
|
{# If our configuration has VLAN interfaces... #}
|
||||||
{% if VLAN_INTERFACE %}
|
{% if VLAN_INTERFACE %}
|
||||||
{% for (name, prefix) in VLAN_INTERFACE|pfx_filter %}
|
{% set vlan_list = dict() %}
|
||||||
{# If this VLAN has an IPv6 address... #}
|
{% for (name,prefix) in VLAN_INTERFACE|pfx_filter %}
|
||||||
|
{% if name is not in vlan_list and prefix | ipv6 %}
|
||||||
|
{% set prefix_list = [] %}
|
||||||
|
{% set _ = vlan_list.update({name: prefix_list}) %}
|
||||||
|
{% endif %}
|
||||||
{% if prefix | ipv6 %}
|
{% if prefix | ipv6 %}
|
||||||
|
{# If our configuration has VLAN interfaces... #}
|
||||||
|
{% set prefix_list = vlan_list.get(name) %}
|
||||||
|
{% set _ = prefix_list.append(prefix) %}
|
||||||
|
{% set _ = vlan_list.update({name: prefix_list}) %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% for name, prefixes in vlan_list.items() %}
|
||||||
interface {{ name }}
|
interface {{ name }}
|
||||||
{
|
{
|
||||||
IgnoreIfMissing on;
|
IgnoreIfMissing on;
|
||||||
@ -23,6 +35,7 @@ interface {{ name }}
|
|||||||
AdvOtherConfigFlag off;
|
AdvOtherConfigFlag off;
|
||||||
AdvLinkMTU 9100;
|
AdvLinkMTU 9100;
|
||||||
AdvHomeAgentFlag off;
|
AdvHomeAgentFlag off;
|
||||||
|
{% for prefix in prefixes %}
|
||||||
prefix {{ prefix | network }}/{{ prefix | prefixlen }} {
|
prefix {{ prefix | network }}/{{ prefix | prefixlen }} {
|
||||||
AdvOnLink on;
|
AdvOnLink on;
|
||||||
AdvAutonomous off;
|
AdvAutonomous off;
|
||||||
@ -30,8 +43,7 @@ interface {{ name }}
|
|||||||
AdvValidLifetime infinity;
|
AdvValidLifetime infinity;
|
||||||
AdvPreferredLifetime infinity;
|
AdvPreferredLifetime infinity;
|
||||||
};
|
};
|
||||||
|
{% endfor %}
|
||||||
};
|
};
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
|
||||||
|
579
src/sonic-config-engine/tests/radv-test-sample-graph.xml
Normal file
579
src/sonic-config-engine/tests/radv-test-sample-graph.xml
Normal file
@ -0,0 +1,579 @@
|
|||||||
|
<DeviceMiniGraph xmlns="Microsoft.Search.Autopilot.Evolution" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<CpgDec>
|
||||||
|
<IsisRouters xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution"/>
|
||||||
|
<PeeringSessions>
|
||||||
|
<BGPSession>
|
||||||
|
<StartRouter>switch-t0</StartRouter>
|
||||||
|
<StartPeer>10.1.0.32</StartPeer>
|
||||||
|
<EndRouter>BGPMonitor</EndRouter>
|
||||||
|
<EndPeer>10.20.30.40</EndPeer>
|
||||||
|
<Multihop>30</Multihop>
|
||||||
|
<HoldTime>10</HoldTime>
|
||||||
|
<KeepAliveTime>3</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
<BGPSession>
|
||||||
|
<MacSec>false</MacSec>
|
||||||
|
<StartRouter>switch-t0</StartRouter>
|
||||||
|
<StartPeer>10.0.0.56</StartPeer>
|
||||||
|
<EndRouter>ARISTA01T1</EndRouter>
|
||||||
|
<EndPeer>10.0.0.57</EndPeer>
|
||||||
|
<Multihop>1</Multihop>
|
||||||
|
<HoldTime>180</HoldTime>
|
||||||
|
<KeepAliveTime>60</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
<BGPSession>
|
||||||
|
<StartRouter>switch-t0</StartRouter>
|
||||||
|
<StartPeer>FC00::71</StartPeer>
|
||||||
|
<EndRouter>ARISTA01T1</EndRouter>
|
||||||
|
<EndPeer>FC00::72</EndPeer>
|
||||||
|
<Multihop>1</Multihop>
|
||||||
|
<HoldTime>180</HoldTime>
|
||||||
|
<KeepAliveTime>60</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
<BGPSession>
|
||||||
|
<MacSec>false</MacSec>
|
||||||
|
<StartRouter>switch-t0</StartRouter>
|
||||||
|
<StartPeer>10.0.0.58</StartPeer>
|
||||||
|
<EndRouter>ARISTA02T1</EndRouter>
|
||||||
|
<EndPeer>10.0.0.59</EndPeer>
|
||||||
|
<Multihop>1</Multihop>
|
||||||
|
<HoldTime>180</HoldTime>
|
||||||
|
<KeepAliveTime>60</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
<BGPSession>
|
||||||
|
<StartRouter>switch-t0</StartRouter>
|
||||||
|
<StartPeer>FC00::75</StartPeer>
|
||||||
|
<EndRouter>ARISTA02T1</EndRouter>
|
||||||
|
<EndPeer>FC00::76</EndPeer>
|
||||||
|
<Multihop>1</Multihop>
|
||||||
|
<HoldTime>180</HoldTime>
|
||||||
|
<KeepAliveTime>60</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
<BGPSession>
|
||||||
|
<MacSec>false</MacSec>
|
||||||
|
<StartRouter>switch-t0</StartRouter>
|
||||||
|
<StartPeer>10.0.0.60</StartPeer>
|
||||||
|
<EndRouter>ARISTA03T1</EndRouter>
|
||||||
|
<EndPeer>10.0.0.61</EndPeer>
|
||||||
|
<Multihop>1</Multihop>
|
||||||
|
<HoldTime>180</HoldTime>
|
||||||
|
<KeepAliveTime>60</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
<BGPSession>
|
||||||
|
<StartRouter>switch-t0</StartRouter>
|
||||||
|
<StartPeer>FC00::79</StartPeer>
|
||||||
|
<EndRouter>ARISTA03T1</EndRouter>
|
||||||
|
<EndPeer>FC00::7A</EndPeer>
|
||||||
|
<Multihop>1</Multihop>
|
||||||
|
<HoldTime>180</HoldTime>
|
||||||
|
<KeepAliveTime>60</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
<BGPSession>
|
||||||
|
<MacSec>false</MacSec>
|
||||||
|
<StartRouter>switch-t0</StartRouter>
|
||||||
|
<StartPeer>10.0.0.62</StartPeer>
|
||||||
|
<EndRouter>ARISTA04T1</EndRouter>
|
||||||
|
<EndPeer>10.0.0.63</EndPeer>
|
||||||
|
<Multihop>1</Multihop>
|
||||||
|
<HoldTime>180</HoldTime>
|
||||||
|
<KeepAliveTime>60</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
<BGPSession>
|
||||||
|
<StartRouter>switch-t0</StartRouter>
|
||||||
|
<StartPeer>FC00::7D</StartPeer>
|
||||||
|
<EndRouter>ARISTA04T1</EndRouter>
|
||||||
|
<EndPeer>FC00::7E</EndPeer>
|
||||||
|
<Multihop>1</Multihop>
|
||||||
|
<HoldTime>180</HoldTime>
|
||||||
|
<KeepAliveTime>60</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
</PeeringSessions>
|
||||||
|
<Routers xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<a:BGPRouterDeclaration>
|
||||||
|
<a:ASN>0</a:ASN>
|
||||||
|
<a:BgpGroups/>
|
||||||
|
<a:Hostname>BGPMonitor</a:Hostname>
|
||||||
|
<a:Peers>
|
||||||
|
<BGPPeer>
|
||||||
|
<ElementType>BGPPeer</ElementType>
|
||||||
|
<Address>10.1.0.32</Address>
|
||||||
|
<RouteMapIn i:nil="true"/>
|
||||||
|
<RouteMapOut i:nil="true"/>
|
||||||
|
<Vrf i:nil="true"/>
|
||||||
|
</BGPPeer>
|
||||||
|
</a:Peers>
|
||||||
|
<a:RouteMaps/>
|
||||||
|
</a:BGPRouterDeclaration>
|
||||||
|
<a:BGPRouterDeclaration>
|
||||||
|
<a:ASN>65100</a:ASN>
|
||||||
|
<a:Hostname>switch-t0</a:Hostname>
|
||||||
|
<a:Peers>
|
||||||
|
<BGPPeer>
|
||||||
|
<Address>10.0.0.57</Address>
|
||||||
|
<RouteMapIn i:nil="true"/>
|
||||||
|
<RouteMapOut i:nil="true"/>
|
||||||
|
<Vrf i:nil="true"/>
|
||||||
|
</BGPPeer>
|
||||||
|
<BGPPeer>
|
||||||
|
<Address>10.0.0.59</Address>
|
||||||
|
<RouteMapIn i:nil="true"/>
|
||||||
|
<RouteMapOut i:nil="true"/>
|
||||||
|
<Vrf i:nil="true"/>
|
||||||
|
</BGPPeer>
|
||||||
|
<BGPPeer>
|
||||||
|
<Address>10.0.0.61</Address>
|
||||||
|
<RouteMapIn i:nil="true"/>
|
||||||
|
<RouteMapOut i:nil="true"/>
|
||||||
|
<Vrf i:nil="true"/>
|
||||||
|
</BGPPeer>
|
||||||
|
<BGPPeer>
|
||||||
|
<Address>10.0.0.63</Address>
|
||||||
|
<RouteMapIn i:nil="true"/>
|
||||||
|
<RouteMapOut i:nil="true"/>
|
||||||
|
<Vrf i:nil="true"/>
|
||||||
|
</BGPPeer>
|
||||||
|
</a:Peers>
|
||||||
|
<a:RouteMaps/>
|
||||||
|
</a:BGPRouterDeclaration>
|
||||||
|
<a:BGPRouterDeclaration>
|
||||||
|
<a:ASN>64600</a:ASN>
|
||||||
|
<a:Hostname>ARISTA01T1</a:Hostname>
|
||||||
|
<a:RouteMaps/>
|
||||||
|
</a:BGPRouterDeclaration>
|
||||||
|
<a:BGPRouterDeclaration>
|
||||||
|
<a:ASN>64600</a:ASN>
|
||||||
|
<a:Hostname>ARISTA02T1</a:Hostname>
|
||||||
|
<a:RouteMaps/>
|
||||||
|
</a:BGPRouterDeclaration>
|
||||||
|
<a:BGPRouterDeclaration>
|
||||||
|
<a:ASN>64600</a:ASN>
|
||||||
|
<a:Hostname>ARISTA03T1</a:Hostname>
|
||||||
|
<a:RouteMaps/>
|
||||||
|
</a:BGPRouterDeclaration>
|
||||||
|
<a:BGPRouterDeclaration>
|
||||||
|
<a:ASN>64600</a:ASN>
|
||||||
|
<a:Hostname>ARISTA04T1</a:Hostname>
|
||||||
|
<a:RouteMaps/>
|
||||||
|
</a:BGPRouterDeclaration>
|
||||||
|
</Routers>
|
||||||
|
</CpgDec>
|
||||||
|
<DpgDec>
|
||||||
|
<DeviceDataPlaneInfo>
|
||||||
|
<IPSecTunnels/>
|
||||||
|
<LoopbackIPInterfaces xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<a:LoopbackIPInterface>
|
||||||
|
<Name>HostIP</Name>
|
||||||
|
<AttachTo>Loopback0</AttachTo>
|
||||||
|
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<b:IPPrefix>10.1.0.32/32</b:IPPrefix>
|
||||||
|
</a:Prefix>
|
||||||
|
<a:PrefixStr>10.1.0.32/32</a:PrefixStr>
|
||||||
|
</a:LoopbackIPInterface>
|
||||||
|
<a:LoopbackIPInterface>
|
||||||
|
<Name>HostIP1</Name>
|
||||||
|
<AttachTo>Loopback0</AttachTo>
|
||||||
|
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<b:IPPrefix>FC00:1::32/128</b:IPPrefix>
|
||||||
|
</a:Prefix>
|
||||||
|
<a:PrefixStr>FC00:1::32/128</a:PrefixStr>
|
||||||
|
</a:LoopbackIPInterface>
|
||||||
|
<a:LoopbackIPInterface>
|
||||||
|
<Name>LoopbackIP1</Name>
|
||||||
|
<AttachTo>Loopback1</AttachTo>
|
||||||
|
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<b:IPPrefix>10.10.0.99/32</b:IPPrefix>
|
||||||
|
</a:Prefix>
|
||||||
|
<a:PrefixStr>10.10.0.99/32</a:PrefixStr>
|
||||||
|
</a:LoopbackIPInterface>
|
||||||
|
<a:LoopbackIPInterface>
|
||||||
|
<Name>LoopbackIP2</Name>
|
||||||
|
<AttachTo>Loopback2</AttachTo>
|
||||||
|
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<b:IPPrefix>10.21.0.64/32</b:IPPrefix>
|
||||||
|
</a:Prefix>
|
||||||
|
<a:PrefixStr>10.21.0.64/32</a:PrefixStr>
|
||||||
|
</a:LoopbackIPInterface>
|
||||||
|
<a:LoopbackIPInterface>
|
||||||
|
<Name>LoopbackIP3</Name>
|
||||||
|
<AttachTo>Loopback3</AttachTo>
|
||||||
|
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<b:IPPrefix>10.21.64.2/32</b:IPPrefix>
|
||||||
|
</a:Prefix>
|
||||||
|
<a:PrefixStr>10.21.64.2/32</a:PrefixStr>
|
||||||
|
</a:LoopbackIPInterface>
|
||||||
|
</LoopbackIPInterfaces>
|
||||||
|
<ManagementIPInterfaces xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<a:ManagementIPInterface>
|
||||||
|
<Name>HostIP</Name>
|
||||||
|
<AttachTo>eth0</AttachTo>
|
||||||
|
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<b:IPPrefix>10.0.0.100/24</b:IPPrefix>
|
||||||
|
</a:Prefix>
|
||||||
|
<a:PrefixStr>10.0.0.100/24</a:PrefixStr>
|
||||||
|
</a:ManagementIPInterface>
|
||||||
|
<a:ManagementIPInterface>
|
||||||
|
<Name>HostIP</Name>
|
||||||
|
<AttachTo>eth0</AttachTo>
|
||||||
|
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<b:IPPrefix>2603:10e2:0:2902::8/64</b:IPPrefix>
|
||||||
|
</a:Prefix>
|
||||||
|
<a:PrefixStr>2603:10e2:0:2902::8/64</a:PrefixStr>
|
||||||
|
</a:ManagementIPInterface>
|
||||||
|
</ManagementIPInterfaces>
|
||||||
|
<ManagementVIPInterfaces xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution"/>
|
||||||
|
<MplsInterfaces/>
|
||||||
|
<MplsTeInterfaces/>
|
||||||
|
<RsvpInterfaces/>
|
||||||
|
<Hostname>switch-t0</Hostname>
|
||||||
|
<PortChannelInterfaces>
|
||||||
|
<PortChannel>
|
||||||
|
<Name>PortChannel01</Name>
|
||||||
|
<AttachTo>fortyGigE0/112</AttachTo>
|
||||||
|
<SubInterface/>
|
||||||
|
</PortChannel>
|
||||||
|
<PortChannel>
|
||||||
|
<Name>PortChannel02</Name>
|
||||||
|
<AttachTo>fortyGigE0/116</AttachTo>
|
||||||
|
<SubInterface/>
|
||||||
|
</PortChannel>
|
||||||
|
<PortChannel>
|
||||||
|
<Name>PortChannel03</Name>
|
||||||
|
<AttachTo>fortyGigE0/120</AttachTo>
|
||||||
|
<SubInterface/>
|
||||||
|
</PortChannel>
|
||||||
|
<PortChannel>
|
||||||
|
<Name>PortChannel04</Name>
|
||||||
|
<AttachTo>fortyGigE0/124</AttachTo>
|
||||||
|
<SubInterface/>
|
||||||
|
</PortChannel>
|
||||||
|
</PortChannelInterfaces>
|
||||||
|
<VlanInterfaces>
|
||||||
|
<VlanInterface>
|
||||||
|
<Name>Vlan1000</Name>
|
||||||
|
<AttachTo>fortyGigE0/4;fortyGigE0/8;fortyGigE0/12;fortyGigE0/16;fortyGigE0/20;fortyGigE0/24;fortyGigE0/28;fortyGigE0/32;fortyGigE0/36;fortyGigE0/40;fortyGigE0/44;fortyGigE0/48;fortyGigE0/52;fortyGigE0/56;fortyGigE0/60;fortyGigE0/64;fortyGigE0/68;fortyGigE0/72;fortyGigE0/76;fortyGigE0/80;fortyGigE0/84;fortyGigE0/88;fortyGigE0/92;fortyGigE0/96</AttachTo>
|
||||||
|
<NoDhcpRelay>False</NoDhcpRelay>
|
||||||
|
<StaticDHCPRelay>0.0.0.0/0</StaticDHCPRelay>
|
||||||
|
<FhrpProtoType i:nil="true"/>
|
||||||
|
<Type i:nil="true"/>
|
||||||
|
<DhcpRelays>192.0.0.1;192.0.0.2</DhcpRelays>
|
||||||
|
<Dhcpv6Relays>fc02:2000::1;fc02:2000::2</Dhcpv6Relays>
|
||||||
|
<VlanID>1000</VlanID>
|
||||||
|
<Tag>1000</Tag>
|
||||||
|
<Subnets>192.168.0.0/27</Subnets>
|
||||||
|
<MacAddress i:nil="true"/>
|
||||||
|
<SecondarySubnets/>
|
||||||
|
</VlanInterface>
|
||||||
|
<VlanInterface>
|
||||||
|
<Name>Vlan2000</Name>
|
||||||
|
<AttachTo>fortyGigE0/112;fortyGigE0/116;fortyGigE0/120</AttachTo>
|
||||||
|
<NoDhcpRelay>False</NoDhcpRelay>
|
||||||
|
<StaticDHCPRelay>0.0.0.0/0</StaticDHCPRelay>
|
||||||
|
<FhrpProtoType i:nil="true"/>
|
||||||
|
<Type i:nil="true"/>
|
||||||
|
<DhcpRelays></DhcpRelays>
|
||||||
|
<VlanID>2000</VlanID>
|
||||||
|
<Tag>2000</Tag>
|
||||||
|
<Subnets>192.168.200.0/27</Subnets>
|
||||||
|
<MacAddress i:nil="true"/>
|
||||||
|
<SecondarySubnets/>
|
||||||
|
</VlanInterface>
|
||||||
|
<VlanInterface>
|
||||||
|
<Name>Vlan99</Name>
|
||||||
|
<AttachTo>fortyGigE0/100</AttachTo>
|
||||||
|
<NoDhcpRelay>False</NoDhcpRelay>
|
||||||
|
<StaticDHCPRelay>0.0.0.0/0</StaticDHCPRelay>
|
||||||
|
<FhrpProtoType i:nil="true"/>
|
||||||
|
<Type>UserDefinedL2Vlan</Type>
|
||||||
|
<DhcpRelays>192.0.0.1;192.0.0.2</DhcpRelays>
|
||||||
|
<VlanID>99</VlanID>
|
||||||
|
<Tag>99</Tag>
|
||||||
|
<Subnets/>
|
||||||
|
<MacAddress i:nil="true"/>
|
||||||
|
<SecondarySubnets/>
|
||||||
|
</VlanInterface>
|
||||||
|
<VlanInterface>
|
||||||
|
<Name>Vlan98</Name>
|
||||||
|
<AttachTo>fortyGigE0/100;PortChannel01;PortChannel03</AttachTo>
|
||||||
|
<NoDhcpRelay>False</NoDhcpRelay>
|
||||||
|
<StaticDHCPRelay>0.0.0.0/0</StaticDHCPRelay>
|
||||||
|
<FhrpProtoType i:nil="true"/>
|
||||||
|
<Type>UserDefinedL2Vlan</Type>
|
||||||
|
<DhcpRelays>192.0.0.1;192.0.0.2</DhcpRelays>
|
||||||
|
<VlanID>98</VlanID>
|
||||||
|
<Tag>98</Tag>
|
||||||
|
<Subnets/>
|
||||||
|
<MacAddress i:nil="true"/>
|
||||||
|
<SecondarySubnets/>
|
||||||
|
</VlanInterface>
|
||||||
|
</VlanInterfaces>
|
||||||
|
<IPInterfaces>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:nil="true"/>
|
||||||
|
<AttachTo>PortChannel01</AttachTo>
|
||||||
|
<Prefix>10.0.0.56/31</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:Name="true"/>
|
||||||
|
<AttachTo>PortChannel01</AttachTo>
|
||||||
|
<Prefix>FC00::71/126</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:nil="true"/>
|
||||||
|
<AttachTo>PortChannel02</AttachTo>
|
||||||
|
<Prefix>10.0.0.58/31</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:Name="true"/>
|
||||||
|
<AttachTo>PortChannel02</AttachTo>
|
||||||
|
<Prefix>FC00::75/126</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:nil="true"/>
|
||||||
|
<AttachTo>PortChannel03</AttachTo>
|
||||||
|
<Prefix>10.0.0.60/31</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:Name="true"/>
|
||||||
|
<AttachTo>PortChannel03</AttachTo>
|
||||||
|
<Prefix>FC00::79/126</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:nil="true"/>
|
||||||
|
<AttachTo>PortChannel04</AttachTo>
|
||||||
|
<Prefix>10.0.0.62/31</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:Name="true"/>
|
||||||
|
<AttachTo>PortChannel04</AttachTo>
|
||||||
|
<Prefix>FC00::7D/126</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:nil="true"/>
|
||||||
|
<AttachTo>Vlan1000</AttachTo>
|
||||||
|
<Prefix>192.168.0.1/27</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:nil="true"/>
|
||||||
|
<AttachTo>Vlan1000</AttachTo>
|
||||||
|
<Prefix>fc02:1000::1/64</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:nil="true"/>
|
||||||
|
<AttachTo>Vlan2000</AttachTo>
|
||||||
|
<Prefix>192.168.200.1/27</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:nil="true"/>
|
||||||
|
<AttachTo>Vlan1000</AttachTo>
|
||||||
|
<Prefix>fc02:2000::1/64</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
</IPInterfaces>
|
||||||
|
<DataAcls/>
|
||||||
|
<AclInterfaces>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>ERSPAN</AttachTo>
|
||||||
|
<InAcl>everflow</InAcl>
|
||||||
|
<Type>Everflow</Type>
|
||||||
|
</AclInterface>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>ERSPANv6</AttachTo>
|
||||||
|
<InAcl>everflowV6</InAcl>
|
||||||
|
<Type>Everflow</Type>
|
||||||
|
</AclInterface>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>EGRESS_ERSPAN</AttachTo>
|
||||||
|
<OutAcl>everflow_egress</OutAcl>
|
||||||
|
<Type>Everflow</Type>
|
||||||
|
</AclInterface>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>PortChannel01;PortChannel02;PortChannel03;PortChannel04</AttachTo>
|
||||||
|
<InAcl>DataAclIngress</InAcl>
|
||||||
|
<Type>DataPlane</Type>
|
||||||
|
</AclInterface>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>PortChannel01;PortChannel02;Vlan98</AttachTo>
|
||||||
|
<OutAcl>DataAclEgress</OutAcl>
|
||||||
|
<Type>DataPlane</Type>
|
||||||
|
</AclInterface>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>SNMP</AttachTo>
|
||||||
|
<InAcl>SNMP_ACL</InAcl>
|
||||||
|
<Type>SNMP</Type>
|
||||||
|
</AclInterface>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>NTP</AttachTo>
|
||||||
|
<InAcl>NTP_ACL</InAcl>
|
||||||
|
<Type>NTP</Type>
|
||||||
|
</AclInterface>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>SSH</AttachTo>
|
||||||
|
<InAcl>SSH_ACL</InAcl>
|
||||||
|
<Type>SSH</Type>
|
||||||
|
</AclInterface>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>SSH</AttachTo>
|
||||||
|
<InAcl>ROUTER-PROTECT</InAcl>
|
||||||
|
<Type>SSH</Type>
|
||||||
|
</AclInterface>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>SNMP</AttachTo>
|
||||||
|
<InAcl>ROUTER-PROTECT</InAcl>
|
||||||
|
<Type>SNMP</Type>
|
||||||
|
</AclInterface>
|
||||||
|
<AclInterface>
|
||||||
|
<AttachTo>NTP</AttachTo>
|
||||||
|
<InAcl>NTP_ACL</InAcl>
|
||||||
|
</AclInterface>
|
||||||
|
</AclInterfaces>
|
||||||
|
<DownstreamSummaries/>
|
||||||
|
<DownstreamSummarySet xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution"/>
|
||||||
|
</DeviceDataPlaneInfo>
|
||||||
|
</DpgDec>
|
||||||
|
<PngDec>
|
||||||
|
<DeviceInterfaceLinks>
|
||||||
|
<DeviceLinkBase>
|
||||||
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
|
<EndDevice>ARISTA01T1</EndDevice>
|
||||||
|
<EndPort>Ethernet1/1</EndPort>
|
||||||
|
<StartDevice>switch-t0</StartDevice>
|
||||||
|
<StartPort>fortyGigE0/112</StartPort>
|
||||||
|
</DeviceLinkBase>
|
||||||
|
<DeviceLinkBase>
|
||||||
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
|
<EndDevice>ARISTA02T1</EndDevice>
|
||||||
|
<EndPort>Ethernet1/1</EndPort>
|
||||||
|
<StartDevice>switch-t0</StartDevice>
|
||||||
|
<StartPort>fortyGigE0/116</StartPort>
|
||||||
|
</DeviceLinkBase>
|
||||||
|
<DeviceLinkBase>
|
||||||
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
|
<EndDevice>ARISTA03T1</EndDevice>
|
||||||
|
<EndPort>Ethernet1/1</EndPort>
|
||||||
|
<StartDevice>switch-t0</StartDevice>
|
||||||
|
<StartPort>fortyGigE0/120</StartPort>
|
||||||
|
</DeviceLinkBase>
|
||||||
|
<DeviceLinkBase>
|
||||||
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
|
<EndDevice>ARISTA04T1</EndDevice>
|
||||||
|
<EndPort>Ethernet1/1</EndPort>
|
||||||
|
<StartDevice>switch-t0</StartDevice>
|
||||||
|
<StartPort>fortyGigE0/124</StartPort>
|
||||||
|
<Bandwidth>100000</Bandwidth>
|
||||||
|
</DeviceLinkBase>
|
||||||
|
<DeviceLinkBase>
|
||||||
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
|
<Bandwidth>100000</Bandwidth>
|
||||||
|
<EndDevice>switch-t0</EndDevice>
|
||||||
|
<EndPort>fortyGigE0/4</EndPort>
|
||||||
|
<FlowControl>true</FlowControl>
|
||||||
|
<StartDevice>ARISTA05T1</StartDevice>
|
||||||
|
<StartPort>Ethernet1/33</StartPort>
|
||||||
|
<Validate>true</Validate>
|
||||||
|
</DeviceLinkBase>
|
||||||
|
<DeviceLinkBase>
|
||||||
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
|
<EndDevice>Servers0</EndDevice>
|
||||||
|
<EndPort>eth0</EndPort>
|
||||||
|
<StartDevice>switch-t0</StartDevice>
|
||||||
|
<StartPort>fortyGigE0/4</StartPort>
|
||||||
|
</DeviceLinkBase>
|
||||||
|
<DeviceLinkBase>
|
||||||
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
|
<EndDevice>Servers100</EndDevice>
|
||||||
|
<EndPort>eth0</EndPort>
|
||||||
|
<StartDevice>switch-t0</StartDevice>
|
||||||
|
<StartPort>fortyGigE0/100</StartPort>
|
||||||
|
</DeviceLinkBase>
|
||||||
|
</DeviceInterfaceLinks>
|
||||||
|
<Devices>
|
||||||
|
<Device i:type="ToRRouter">
|
||||||
|
<Hostname>switch-t0</Hostname>
|
||||||
|
<HwSku>Force10-S6000</HwSku>
|
||||||
|
</Device>
|
||||||
|
<Device i:type="LeafRouter">
|
||||||
|
<Hostname>ARISTA01T1</Hostname>
|
||||||
|
<HwSku>Arista</HwSku>
|
||||||
|
</Device>
|
||||||
|
<Device i:type="LeafRouter">
|
||||||
|
<Hostname>ARISTA02T1</Hostname>
|
||||||
|
<HwSku>Arista</HwSku>
|
||||||
|
</Device>
|
||||||
|
<Device i:type="LeafRouter">
|
||||||
|
<Hostname>ARISTA03T1</Hostname>
|
||||||
|
<HwSku>Arista</HwSku>
|
||||||
|
</Device>
|
||||||
|
<Device i:type="LeafRouter">
|
||||||
|
<Hostname>ARISTA04T1</Hostname>
|
||||||
|
<HwSku>Arista</HwSku>
|
||||||
|
</Device>
|
||||||
|
</Devices>
|
||||||
|
</PngDec>
|
||||||
|
<MetadataDeclaration>
|
||||||
|
<Devices xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<a:DeviceMetadata>
|
||||||
|
<a:Name>switch-t0</a:Name>
|
||||||
|
<a:Properties>
|
||||||
|
<a:DeviceProperty>
|
||||||
|
<a:Name>ErspanDestinationIpv4</a:Name>
|
||||||
|
<a:Reference i:nil="true"/>
|
||||||
|
<a:Value>2.2.2.2</a:Value>
|
||||||
|
</a:DeviceProperty>
|
||||||
|
</a:Properties>
|
||||||
|
</a:DeviceMetadata>
|
||||||
|
</Devices>
|
||||||
|
<Properties xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution"/>
|
||||||
|
</MetadataDeclaration>
|
||||||
|
<LinkMetadataDeclaration>
|
||||||
|
<Link xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<a:LinkMetadata>
|
||||||
|
<a:Name i:nil="true"/>
|
||||||
|
<a:Properties>
|
||||||
|
<a:DeviceProperty>
|
||||||
|
<a:Name>AutoNegotiation</a:Name>
|
||||||
|
<a:Reference i:nil="true"/>
|
||||||
|
<a:Value>True</a:Value>
|
||||||
|
</a:DeviceProperty>
|
||||||
|
<a:DeviceProperty>
|
||||||
|
<a:Name>FECDisabled</a:Name>
|
||||||
|
<a:Reference i:nil="true"/>
|
||||||
|
<a:Value>True</a:Value>
|
||||||
|
</a:DeviceProperty>
|
||||||
|
</a:Properties>
|
||||||
|
<a:Key>ARISTA05T1:Ethernet1/33;switch-t0:fortyGigE0/4</a:Key>
|
||||||
|
</a:LinkMetadata>
|
||||||
|
<a:LinkMetadata>
|
||||||
|
<a:Name i:nil="true"/>
|
||||||
|
<a:Properties>
|
||||||
|
<a:DeviceProperty>
|
||||||
|
<a:Name>AutoNegotiation</a:Name>
|
||||||
|
<a:Reference i:nil="true"/>
|
||||||
|
<a:Value>False</a:Value>
|
||||||
|
</a:DeviceProperty>
|
||||||
|
<a:DeviceProperty>
|
||||||
|
<a:Name>FECDisabled</a:Name>
|
||||||
|
<a:Reference i:nil="true"/>
|
||||||
|
<a:Value>True</a:Value>
|
||||||
|
</a:DeviceProperty>
|
||||||
|
</a:Properties>
|
||||||
|
<a:Key>ARISTA06T1:Ethernet1/34;switch-t0:fortyGigE0/8</a:Key>
|
||||||
|
</a:LinkMetadata>
|
||||||
|
</Link>
|
||||||
|
</LinkMetadataDeclaration>
|
||||||
|
<MetadataDeclaration>
|
||||||
|
<Devices xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<a:DeviceMetadata>
|
||||||
|
<a:Name>switch-t0</a:Name>
|
||||||
|
<a:Properties>
|
||||||
|
<a:DeviceProperty>
|
||||||
|
<a:Name>DeploymentId</a:Name>
|
||||||
|
<a:Reference i:nil="true"/>
|
||||||
|
<a:Value>1</a:Value>
|
||||||
|
</a:DeviceProperty>
|
||||||
|
</a:Properties>
|
||||||
|
</a:DeviceMetadata>
|
||||||
|
</Devices>
|
||||||
|
<Properties xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution"/>
|
||||||
|
</MetadataDeclaration>
|
||||||
|
<Hostname>switch-t0</Hostname>
|
||||||
|
<HwSku>Force10-S6000</HwSku>
|
||||||
|
</DeviceMiniGraph>
|
35
src/sonic-config-engine/tests/sample_output/py2/radvd.conf
Normal file
35
src/sonic-config-engine/tests/sample_output/py2/radvd.conf
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# =========== Managed by sonic-cfggen -- DO NOT edit manually! ====================
|
||||||
|
# Generated by /usr/share/sonic/templates/radvd.conf.j2 using config DB data
|
||||||
|
# File: /etc/radvd.conf
|
||||||
|
#
|
||||||
|
# Config file for radvd, the router advertisement daemon
|
||||||
|
# See man page for radvd.conf for descriptions of all available options
|
||||||
|
#
|
||||||
|
|
||||||
|
interface Vlan1000
|
||||||
|
{
|
||||||
|
IgnoreIfMissing on;
|
||||||
|
AdvSendAdvert on;
|
||||||
|
MinRtrAdvInterval 60;
|
||||||
|
MaxRtrAdvInterval 180;
|
||||||
|
AdvManagedFlag on;
|
||||||
|
AdvOtherConfigFlag off;
|
||||||
|
AdvLinkMTU 9100;
|
||||||
|
AdvHomeAgentFlag off;
|
||||||
|
prefix fc02:2000::/64 {
|
||||||
|
AdvOnLink on;
|
||||||
|
AdvAutonomous off;
|
||||||
|
AdvRouterAddr off;
|
||||||
|
AdvValidLifetime infinity;
|
||||||
|
AdvPreferredLifetime infinity;
|
||||||
|
};
|
||||||
|
prefix fc02:1000::/64 {
|
||||||
|
AdvOnLink on;
|
||||||
|
AdvAutonomous off;
|
||||||
|
AdvRouterAddr off;
|
||||||
|
AdvValidLifetime infinity;
|
||||||
|
AdvPreferredLifetime infinity;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
35
src/sonic-config-engine/tests/sample_output/py3/radvd.conf
Normal file
35
src/sonic-config-engine/tests/sample_output/py3/radvd.conf
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# =========== Managed by sonic-cfggen -- DO NOT edit manually! ====================
|
||||||
|
# Generated by /usr/share/sonic/templates/radvd.conf.j2 using config DB data
|
||||||
|
# File: /etc/radvd.conf
|
||||||
|
#
|
||||||
|
# Config file for radvd, the router advertisement daemon
|
||||||
|
# See man page for radvd.conf for descriptions of all available options
|
||||||
|
#
|
||||||
|
|
||||||
|
interface Vlan1000
|
||||||
|
{
|
||||||
|
IgnoreIfMissing on;
|
||||||
|
AdvSendAdvert on;
|
||||||
|
MinRtrAdvInterval 60;
|
||||||
|
MaxRtrAdvInterval 180;
|
||||||
|
AdvManagedFlag on;
|
||||||
|
AdvOtherConfigFlag off;
|
||||||
|
AdvLinkMTU 9100;
|
||||||
|
AdvHomeAgentFlag off;
|
||||||
|
prefix fc02:1000::/64 {
|
||||||
|
AdvOnLink on;
|
||||||
|
AdvAutonomous off;
|
||||||
|
AdvRouterAddr off;
|
||||||
|
AdvValidLifetime infinity;
|
||||||
|
AdvPreferredLifetime infinity;
|
||||||
|
};
|
||||||
|
prefix fc02:2000::/64 {
|
||||||
|
AdvOnLink on;
|
||||||
|
AdvAutonomous off;
|
||||||
|
AdvRouterAddr off;
|
||||||
|
AdvValidLifetime infinity;
|
||||||
|
AdvPreferredLifetime infinity;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
@ -25,6 +25,7 @@ class TestJ2Files(TestCase):
|
|||||||
self.arista7050_t0_minigraph = os.path.join(self.test_dir, 'sample-arista-7050-t0-minigraph.xml')
|
self.arista7050_t0_minigraph = os.path.join(self.test_dir, 'sample-arista-7050-t0-minigraph.xml')
|
||||||
self.multi_asic_minigraph = os.path.join(self.test_dir, 'multi_npu_data', 'sample-minigraph.xml')
|
self.multi_asic_minigraph = os.path.join(self.test_dir, 'multi_npu_data', 'sample-minigraph.xml')
|
||||||
self.multi_asic_port_config = os.path.join(self.test_dir, 'multi_npu_data', 'sample_port_config-0.ini')
|
self.multi_asic_port_config = os.path.join(self.test_dir, 'multi_npu_data', 'sample_port_config-0.ini')
|
||||||
|
self.radv_test_minigraph = os.path.join(self.test_dir, 'radv-test-sample-graph.xml')
|
||||||
self.output_file = os.path.join(self.test_dir, 'output')
|
self.output_file = os.path.join(self.test_dir, 'output')
|
||||||
os.environ["CFGGEN_UNIT_TESTING"] = "2"
|
os.environ["CFGGEN_UNIT_TESTING"] = "2"
|
||||||
|
|
||||||
@ -67,7 +68,14 @@ class TestJ2Files(TestCase):
|
|||||||
template_path = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-dhcp-relay', 'docker-dhcp-relay.supervisord.conf.j2')
|
template_path = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-dhcp-relay', 'docker-dhcp-relay.supervisord.conf.j2')
|
||||||
argument = '-m ' + self.t0_minigraph + ' -p ' + self.t0_port_config + ' -t ' + template_path + ' > ' + self.output_file
|
argument = '-m ' + self.t0_minigraph + ' -p ' + self.t0_port_config + ' -t ' + template_path + ' > ' + self.output_file
|
||||||
self.run_script(argument)
|
self.run_script(argument)
|
||||||
self.assertTrue(filecmp.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'docker-dhcp-relay.supervisord.conf'), self.output_file))
|
self.assertTrue(filecmp.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'docker-dhcp-relay.supervisord.conf'), self.output_file), self.output_file)
|
||||||
|
|
||||||
|
def test_radv(self):
|
||||||
|
# Test generation of radvd.conf with multiple ipv6 prefixes
|
||||||
|
template_path = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-router-advertiser', 'radvd.conf.j2')
|
||||||
|
argument = '-m ' + self.radv_test_minigraph + ' -p ' + self.t0_port_config + ' -t ' + template_path + ' > ' + self.output_file
|
||||||
|
self.run_script(argument)
|
||||||
|
self.assertTrue(filecmp.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'radvd.conf'), self.output_file))
|
||||||
|
|
||||||
def test_lldp(self):
|
def test_lldp(self):
|
||||||
lldpd_conf_template = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-lldp', 'lldpd.conf.j2')
|
lldpd_conf_template = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-lldp', 'lldpd.conf.j2')
|
||||||
|
Loading…
Reference in New Issue
Block a user