X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FIPv6Setup.py;h=25e8c47ec5e820551f87888120ca9e60f22bb028;hb=d0a388627a90c526ae6e6d87ca00d428ed8aac64;hp=c016423f32ad98165266c1976170875d0dad2120;hpb=8c12ff59f1a5e750151f5eb0e806dcc80e91c3c2;p=csit.git diff --git a/resources/libraries/python/IPv6Setup.py b/resources/libraries/python/IPv6Setup.py index c016423f32..25e8c47ec5 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, @@ -225,6 +227,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. @@ -235,11 +255,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):