X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FIPv6Setup.py;h=2c68c338e23a818713c0cc064219ebe18aca89ca;hb=d5e00c67d229e6f6fd9461755423cee800a1635e;hp=6b5d8a5f66567ffb4fd18f83300e1867ea6db766;hpb=10f3b07a5c883e20ef345c8b1c8e24063a50281f;p=csit.git diff --git a/resources/libraries/python/IPv6Setup.py b/resources/libraries/python/IPv6Setup.py index 6b5d8a5f66..2c68c338e2 100644 --- a/resources/libraries/python/IPv6Setup.py +++ b/resources/libraries/python/IPv6Setup.py @@ -78,7 +78,8 @@ class IPv6Setup(object): if node is None: continue if node['type'] == NodeType.DUT: - self.vpp_set_if_ipv6_addr(node, port['if'], port['addr'], + port_key = topo.get_interface_by_name(node, port['if']) + self.vpp_set_if_ipv6_addr(node, port_key, port['addr'], net['prefix']) interfaces.append((node, port['if'])) @@ -156,19 +157,20 @@ class IPv6Setup(object): raise Exception('TG ifconfig failed') @staticmethod - def vpp_set_if_ipv6_addr(node, interface, addr, prefix): + def vpp_set_if_ipv6_addr(node, iface_key, addr, prefix): """Set IPv6 address on VPP. :param node: VPP node. - :param interface: Node interface. + :param iface_key: Node interface key. :param addr: IPv6 address. :param prefix: IPv6 address prefix. :type node: dict - :type interface: str + :type iface_key: str :type addr: str :type prefix: str """ - sw_if_index = Topology.get_interface_sw_index(node, interface) + topo = Topology() + sw_if_index = Topology.get_interface_sw_index(node, iface_key) with VatTerminal(node) as vat: vat.vat_terminal_exec_cmd_from_template('add_ip_address.vat', sw_if_index=sw_if_index, @@ -246,6 +248,24 @@ class IPv6Setup(object): sw_if_id=sw_if_index, param='surpress') + @staticmethod + def vpp_ra_send_after_interval(node, interface, interval=2): + """Setup vpp router advertisement(RA) in such way it sends RA packet + after and every interval value. + + :param node: VPP node. + :param interface: Interface name. + :param interval: Interval for RA resend + :type node: dict + :type interface: str + :type interval: int + """ + sw_if_index = Topology.get_interface_sw_index(node, interface) + VatExecutor.cmd_from_template(node, + 'sw_interface_ip6nd_ra_config.vat', + sw_if_id=sw_if_index, + param='interval {0}'.format(interval)) + def vpp_all_ra_suppress_link_layer(self, nodes): """Suppress ICMPv6 router advertisement message for link scope address on all VPP nodes in the topology. @@ -256,11 +276,8 @@ class IPv6Setup(object): for node in nodes.values(): if node['type'] == NodeType.TG: continue - for port_k, port_v in node['interfaces'].items(): - if_name = port_v.get('name') - if if_name is None: - continue - self.vpp_ra_suppress_link_layer(node, if_name) + for port_k in node['interfaces'].keys(): + self.vpp_ra_suppress_link_layer(node, port_k) @staticmethod def get_link_address(link, nodes_addr):