The test aims to verify the following edge cases:
- A route with only one output VIF being a pimreg device
- A route with pimreg device used as the input VIF
The test configures two multicast routes, one with pimreg as the only
output VIF and one with pimreg as an input VIF and tests that they behave
as expected.
Signed-off-by: Yotam Gigi <yotamg(a)mellanox.com>
---
recipes/switchdev/mr-008-lone-pimreg.py | 72 ++++++++++++++++++++++++++++++++
recipes/switchdev/mr-008-lone-pimreg.xml | 5 +++
2 files changed, 77 insertions(+)
create mode 100644 recipes/switchdev/mr-008-lone-pimreg.py
create mode 100644 recipes/switchdev/mr-008-lone-pimreg.xml
diff --git a/recipes/switchdev/mr-008-lone-pimreg.py
b/recipes/switchdev/mr-008-lone-pimreg.py
new file mode 100644
index 0000000..a595149
--- /dev/null
+++ b/recipes/switchdev/mr-008-lone-pimreg.py
@@ -0,0 +1,72 @@
+"""
+Copyright 2017 Mellanox Technologies. All rights reserved.
+Licensed under the GNU General Public License, version 2 as
+published by the Free Software Foundation; see COPYING for details.
+"""
+
+__author__ = """
+yotamg(a)mellanox.com (Yotam Gigi)
+"""
+
+from lnst.Controller.Task import ctl
+from lnst.Common.Consts import MROUTE
+from TestLib import TestLib
+from time import sleep
+import random
+from mr_common import MrouteTest
+
+def test_ip(major, minor):
+ return ["192.168.%d.%d" % (major, minor),
+ "2002:%d::%d" % (major, minor)]
+def ipv4(ip):
+ return ip[0]
+
+def mcgrp(num):
+ return "239.255.%d.%d" % (num/0x100, num%0x100)
+
+def do_task(ctl, hosts, ifaces, aliases):
+ m1, m2, sw = hosts
+ m1_if1, m1_if2, m2_if1, m2_if2, m2_if3, m2_if4, sw_if1, \
+ sw_br_m1, sw_br_m2, sw_if3, sw_if4, sw_if5, sw_if2 = ifaces
+
+ sw_ports = [sw_if1, sw_if2, sw_if3, sw_if4, sw_if5]
+
+ tl = TestLib(ctl, aliases)
+ mt = MrouteTest(tl, hosts, ifaces)
+
+ sleep(30)
+ mt.init()
+
+ # add vifs
+ mt.add_vif(sw_if1, 0)
+ mt.add_vif(sw_if2, 1)
+ mt.add_vif(sw_if3, 2)
+ mt.add_vif(sw_if4, 3)
+ mt.add_vif(sw_if5, 4)
+ mt.pimreg_add(5)
+
+ # add an (S,G) route pointing to a lone pimreg
+ route1 = mt.mroute_create(ipv4(test_ip(5,2)), mcgrp(1), 4, [5])
+
+ # add an (S,G) route with pimgreg dev as ingress
+ route2 = mt.mroute_create(ipv4(test_ip(5,2)), mcgrp(2), 5, [1, 2, 3])
+
+ mt.fini()
+
+do_task(ctl, [ctl.get_host("machine1"),
+ ctl.get_host("machine2"),
+ ctl.get_host("switch")],
+ [ctl.get_host("machine1").get_interface("if1"),
+ ctl.get_host("machine1").get_interface("if2"),
+ ctl.get_host("machine2").get_interface("if1"),
+ ctl.get_host("machine2").get_interface("if2"),
+ ctl.get_host("machine2").get_interface("if3"),
+ ctl.get_host("machine2").get_interface("if4"),
+ ctl.get_host("switch").get_interface("if1"),
+ ctl.get_host("switch").get_interface("if2"),
+ ctl.get_host("switch").get_interface("if3"),
+ ctl.get_host("switch").get_interface("if4"),
+ ctl.get_host("switch").get_interface("if5"),
+ ctl.get_host("switch").get_interface("if6"),
+ ctl.get_host("switch").get_interface("br0")],
+ ctl.get_aliases())
diff --git a/recipes/switchdev/mr-008-lone-pimreg.xml
b/recipes/switchdev/mr-008-lone-pimreg.xml
new file mode 100644
index 0000000..62823cb
--- /dev/null
+++ b/recipes/switchdev/mr-008-lone-pimreg.xml
@@ -0,0 +1,5 @@
+<lnstrecipe
xmlns:xi="http://www.w3.org/2003/XInclude">
+ <xi:include href="default_aliases.xml" />
+ <xi:include href="mr_common_topology.xml" />
+ <task python="mr-008-lone-pimreg.py" />
+</lnstrecipe>
--
2.8.4