def test_ipv4_multiple_lines_confg(self): # For failures self.maxDiff = None # Set Genie Tb testbed = Testbed() Genie.testbed = testbed # Device dev1 = Device(name='PE1', testbed=testbed, os='nxos') intf1 = Interface(name='Ethernet3/7', device=dev1, \ aliases=['PE1_1']) vrf = Vrf(name='test', testbed=testbed) dev1.add_feature(vrf) # Apply configuration intf1.description = 'multiple lines config' ipv4a = IPv4Addr(device=dev1) ipv4a.ipv4 = IPv4Address('192.168.1.1') ipv4a.prefix_length = '24' intf1.add_ipv4addr(ipv4a) ipv4b = IPv4Addr(device=dev1) ipv4b.ipv4 = IPv4Address('192.168.1.2') ipv4b.prefix_length = '24' ipv4b.ipv4_secondary = True intf1.add_ipv4addr(ipv4b) intf1.shutdown = False # make intf2 as L3 interface intf1.switchport_enable = False # Build config cfgs = intf1.build_config(apply=False) # Check config build correctly self.assertMultiLineEqual( str(cfgs), '\n'.join([ 'interface Ethernet3/7', ' description multiple lines config', ' no shutdown', ' no switchport', ' ip address 192.168.1.1/24', ' ip address 192.168.1.2/24 secondary', ' exit' ])) # Build unconfig uncfgs = intf1.build_unconfig(apply=False, attributes={'switchport_enable': True, 'description': True, 'shutdown': True}) # Check config build correctly self.assertMultiLineEqual( str(uncfgs), '\n'.join([ 'interface Ethernet3/7', ' no description', ' shutdown', ' switchport', ' exit' ]))
def config_interface_subinterface_and_secondary_addresses( device, interface, sub_interface_num, ip_address, prefix, encap_type, start, end, ): """ Configure sub-interface and secondary addresses on device Args: device (`obj`): Device object interface (`str`): Interface name sub_interface_num (`int`): Subinterface to be added to interface name ip_address(`str`): IP addressed to be configured on interface prefix(`str`): prefix to be used in configuration encap_type (`str`): Encapsulation type start (`int`): start number on ip end (`int`): end number on ip Returns: None Raises: SubCommandFailure """ # interface {interface}.999 # encapsulation dot1Q 999 # ip address 10.4.0.1 255.255.255.0 # ip address 1.1.x.1 255.255.255.0 secondary (x -> 1 to 15) name = interface + "." + str(sub_interface_num) sub_intf = Interface(device=device, name=name) sub_intf.eth_encap_type1 = encap_type sub_intf.eth_encap_val1 = sub_interface_num ipv4a = IPv4Addr(device=device) ipv4a.ipv4 = IPv4Address(ip_address.format(x=start)) ipv4a.prefix_length = prefix sub_intf.add_ipv4addr(ipv4a) for x in range(end - start): ipv4b = IPv4Addr(device=device) ipv4b.ipv4 = IPv4Address(ip_address.format(x=x + 1)) ipv4b.prefix_length = prefix ipv4b.ipv4_secondary = True sub_intf.add_ipv4addr(ipv4b) try: config = str(sub_intf.build_config(apply=False)) sub_intf.build_config() except Exception as e: log.error(str(e)) raise Exception("Failed to config \n {}".format(config)) return config
def configure_intf_ip(self, conf_obj, ip, mask, **kwargs): ipv4 = IPv4Addr(device=kwargs['device']) ipv4.ipv4 = IPv4Address(ip) ipv4.prefix_length = mask conf_obj.add_ipv4addr(ipv4) conf_obj.build_config()
def test_mcast_config(self): # For failures self.maxDiff = None # VRF configuration vrf1 = Vrf('VRF1') self.igmp.device_attr[self.dev1].require_router_alert = True igmp1 = self.igmp.device_attr[self.dev1].vrf_attr[vrf1] ssm1 = Ssm(device=self.dev1) ssm1.ssm_group_range = '239.1.1.0/24' ssm1.ssm_source_addr = '1.1.1.1' igmp1.add_ssm(ssm1) ssm2 = Ssm(device=self.dev1) ssm2.ssm_group_range = '239.1.1.0/24' ssm2.ssm_source_addr = '2.2.2.2' igmp1.add_ssm(ssm2) # Interface configuration intf1_obj = Interface(device=self.dev1, name='Ethernet2/4') intf1_obj.vrf = vrf1 intf1 = intf1_obj.name self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .enable = True self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .robustness_variable = 7 self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .group_policy = 'test2' self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .immediate_leave = True self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .max_groups = 10 self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .query_interval = 133 self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .query_max_response_time = 15 self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .version = 3 # join and static groups configuration igmp_intf1 = self.igmp.device_attr[ self.dev1].vrf_attr[vrf1].interface_attr[intf1] join_group1 = IgmpGroup(device=self.dev1) join_group1.join_group = '239.1.1.1' join_group2 = IgmpGroup(device=self.dev1) join_group2.join_group = '239.3.3.3' join_group2.join_group_source_addr = '1.1.1.1' join_group3 = IgmpGroup(device=self.dev1) join_group3.join_group = '239.2.2.2' static_group1 = IgmpGroup(device=self.dev1) static_group1.static_group = '239.5.5.5' static_group2 = IgmpGroup(device=self.dev1) static_group2.static_group = '239.6.6.6' static_group2.static_group_source_addr = '2.2.2.1' static_group3 = IgmpGroup(device=self.dev1) static_group3.static_group = '239.6.6.6' static_group3.static_group_source_addr = '2.2.2.2' igmp_intf1.add_groups(join_group1) igmp_intf1.add_groups(join_group2) igmp_intf1.add_groups(join_group3) igmp_intf1.add_groups(static_group1) igmp_intf1.add_groups(static_group2) igmp_intf1.add_groups(static_group3) vrf2 = Vrf('default') igmp2 = self.igmp.device_attr[self.dev1].vrf_attr[vrf2] ssm1 = Ssm(device=self.dev1) ssm1.ssm_group_range = '239.1.2.0/24' ssm1.ssm_source_addr = '3.3.3.3' igmp2.add_ssm(ssm1) ssm2 = Ssm(device=self.dev1) ssm2.ssm_group_range = '239.1.1.0/24' ssm2.ssm_source_addr = '3.3.3.3' igmp2.add_ssm(ssm2) # Interface configuration intf2_obj = Interface(device=self.dev1, name='Ethernet2/1') ipv4a = IPv4Addr(device=self.dev1) ipv4a.ipv4 = '20.1.2.1' ipv4a.prefix_length = '24' intf2_obj.add_ipv4addr(ipv4a) intf2 = intf2_obj.name self.igmp.device_attr[self.dev1].vrf_attr[vrf2].interface_attr[intf2]\ .enable = True # join and static groups configuration igmp_intf1 = self.igmp.device_attr[ self.dev1].vrf_attr[vrf2].interface_attr[intf2] join_group = IgmpGroup(device=self.dev1) join_group.join_group = '239.3.3.3' join_group.join_group_source_addr = '1.1.1.1' static_group = IgmpGroup(device=self.dev1) static_group.static_group = '239.5.5.5' igmp_intf1.add_groups(join_group) igmp_intf1.add_groups(static_group) # Build interface config for none-default vrfs intf_cfgs = intf1_obj.build_config(apply=False) self.assertMultiLineEqual( str(intf_cfgs), '\n'.join([ 'interface Ethernet2/4', ' vrf member VRF1', ' exit', ])) intf_cfgs = intf2_obj.build_config(apply=False) self.assertMultiLineEqual( str(intf_cfgs), '\n'.join([ 'interface Ethernet2/1', ' ip address 20.1.2.1/24', ' exit', ])) # Build igmp configuration cfgs = self.igmp.build_config(apply=False) # Check config built correctly self.assertMultiLineEqual( str(cfgs[self.dev1.name]), '\n'.join([ 'ip igmp enforce-router-alert', 'ip igmp ssm-translate 239.1.1.0/24 3.3.3.3', 'ip igmp ssm-translate 239.1.2.0/24 3.3.3.3', 'interface Ethernet2/1', ' ip pim sparse-mode', ' ip igmp join-group 239.3.3.3 source 1.1.1.1', ' ip igmp static-oif 239.5.5.5', ' exit', 'vrf context VRF1', ' ip igmp ssm-translate 239.1.1.0/24 1.1.1.1', ' ip igmp ssm-translate 239.1.1.0/24 2.2.2.2', ' exit', 'interface Ethernet2/4', ' ip pim sparse-mode', ' ip igmp access-group test2', ' ip igmp immediate-leave', ' ip igmp state-limit 10', ' ip igmp query-interval 133', ' ip igmp query-max-response-time 15', ' ip igmp robustness-variable 7', ' ip igmp version 3', ' ip igmp join-group 239.1.1.1', ' ip igmp join-group 239.2.2.2', ' ip igmp join-group 239.3.3.3 source 1.1.1.1', ' ip igmp static-oif 239.5.5.5', ' ip igmp static-oif 239.6.6.6 source 2.2.2.1', ' ip igmp static-oif 239.6.6.6 source 2.2.2.2', ' exit', ])) # Build unconfig cfgs = self.igmp.build_unconfig(apply=False) # Check config correctly unconfigured self.assertMultiLineEqual( str(cfgs[self.dev1.name]), '\n'.join([ 'no ip igmp enforce-router-alert', 'no ip igmp ssm-translate 239.1.1.0/24 3.3.3.3', 'no ip igmp ssm-translate 239.1.2.0/24 3.3.3.3', 'interface Ethernet2/1', ' no ip pim sparse-mode', ' no ip igmp join-group 239.3.3.3 source 1.1.1.1', ' no ip igmp static-oif 239.5.5.5', ' exit', 'no vrf context VRF1', 'interface Ethernet2/4', ' no ip pim sparse-mode', ' no ip igmp access-group test2', ' no ip igmp immediate-leave', ' no ip igmp state-limit 10', ' no ip igmp query-interval 133', ' no ip igmp query-max-response-time 15', ' no ip igmp robustness-variable 7', ' no ip igmp version 3', ' no ip igmp join-group 239.1.1.1', ' no ip igmp join-group 239.2.2.2', ' no ip igmp join-group 239.3.3.3 source 1.1.1.1', ' no ip igmp static-oif 239.5.5.5', ' no ip igmp static-oif 239.6.6.6 source 2.2.2.1', ' no ip igmp static-oif 239.6.6.6 source 2.2.2.2', ' exit', ])) # Build unconfig with attribute cfgs = self.igmp.build_unconfig(apply=False, attributes={ 'device_attr': { self.dev1: { 'require_router_alert': True, 'vrf_attr': { vrf1: { 'ssm': None, }, vrf2: { 'interface_attr': { 'Ethernet2/1': { 'enable': True } } } } } } }) # Check config correctly unconfigured self.assertMultiLineEqual( str(cfgs[self.dev1.name]), '\n'.join([ 'no ip igmp enforce-router-alert', 'interface Ethernet2/1', ' no ip pim sparse-mode', ' exit', 'vrf context VRF1', ' no ip igmp ssm-translate 239.1.1.0/24 1.1.1.1', ' no ip igmp ssm-translate 239.1.1.0/24 2.2.2.2', ' exit', ]))
def test_all_ethernet(self): testbed = Testbed() Genie.testbed = Testbed() dev1 = Device(name='PE1', os='iosxe') intf1 = Interface(device=dev1, name='GigabitEthernet0/0/1') vrf = Vrf(name='test', testbed=testbed) dev1.add_feature(vrf) # Defining attributes section intf1.description = 'test desc' intf1.enabled = True intf1.link_up_down_trap_enable = True intf1.mtu = 500 intf1.vrf = vrf intf1.vrf_downstream = 'vrf_downstream_test' intf1.mac_address = 'aaaa.bbbb.cccc' intf1.bandwidth = 768 intf1.link_status = True intf1.load_interval = 30 intf1.encapsulation = 'dot1q' intf1.first_dot1q = '20' intf1.second_dot1q = '30' ipv4a = IPv4Addr(device=dev1) ipv4a.ipv4 = IPv4Address('192.168.1.1') ipv4a.prefix_length = '24' intf1.add_ipv4addr(ipv4a) ipv4b = IPv4Addr(device=dev1) ipv4b.ipv4 = IPv4Address('192.168.1.2') ipv4b.prefix_length = '24' ipv4b.ipv4_secondary = True intf1.add_ipv4addr(ipv4b) ipv6a = IPv6Addr(device=dev1) ipv6a.ipv6 = IPv6Address('2001:db1:1::1') ipv6a.ipv6_prefix_length = '64' intf1.add_ipv6addr(ipv6a) ipv6b = IPv6Addr(device=dev1) ipv6b.ipv6 = IPv6Address('2001:db1:2::2') ipv6b.ipv6_prefix_length = '64' intf1.add_ipv6addr(ipv6b) ipv6b.ipv6_anycast = True intf1.dhcp = True intf1.dhcp_client_id = '10' intf1.dhcp_hostname = 'dhcp-host' intf1.unnumbered_intf_ref = 'GigabitEthernet0/0/2.20' intf1.ipv6_unnumbered_intf_ref = 'GigabitEthernet0/0/3.100' intf1.ipv6_enabled = True intf1.ipv6_autoconf = True intf1.ipv6_autoconf_default = True intf1.medium = "broadcast" intf1.delay = 100 intf1.port_speed = '1000' intf1.auto_negotiate = True intf1.duplex_mode = "full" intf1.flow_control_receive = True intf1.flow_control_send = False # Check config cfg = intf1.build_config(apply=False) self.assertMultiLineEqual( str(cfg), '\n'.join([ 'interface GigabitEthernet0/0/1', ' encapsulation dot1q 20 second-dot1q 30', ' vrf forwarding test downstream vrf_downstream_test', ' description test desc', ' bandwidth 768', ' mtu 500', ' no shutdown', ' snmp trap link-status', ' logging event link-status', ' load-interval 30', ' ipv6 enable', ' ipv6 address autoconfig default', ' ip unnumbered GigabitEthernet0/0/2.20', ' ipv6 unnumbered GigabitEthernet0/0/3.100', ' speed 1000', ' negotiation auto', ' duplex full', ' flowcontrol receive on', ' flowcontrol send off', ' ip address dhcp client-id 10 hostname dhcp-host', ' medium broadcast', ' delay 100', ' ip address 192.168.1.1 255.255.255.0', ' ip address 192.168.1.2 255.255.255.0 secondary', ' ipv6 address 2001:db1:1::1/64', ' ipv6 address 2001:db1:2::2/64 anycast', ' mac-address aaaa.bbbb.cccc', ' exit', ])) # Check unconfig without attribtues uncfg = intf1.build_unconfig(apply=False) self.assertMultiLineEqual( str(uncfg), '\n'.join([ 'default interface GigabitEthernet0/0/1', 'interface GigabitEthernet0/0/1', 'shutdown', ])) # Check ipv4 unconfig uncfg = intf1.build_unconfig(apply=False, attributes="ipv4addr") self.assertMultiLineEqual( str(uncfg), '\n'.join([ 'interface GigabitEthernet0/0/1', ' no ip address 192.168.1.1 255.255.255.0', ' no ip address 192.168.1.2 255.255.255.0 secondary', ' exit', ])) # Check encapsulation unconfig uncfg = intf1.build_unconfig(apply=False, attributes={ "encapsulation": None, "first_dot1q": None }) self.assertMultiLineEqual( str(uncfg), '\n'.join([ 'interface GigabitEthernet0/0/1', ' no encapsulation dot1q', ' exit', ]))
def test_mcast_config(self): # For failures self.maxDiff = None # VRF configuration vrf1 = Vrf('VRF1') self.igmp.device_attr[self.dev1].vrf_attr[vrf1].global_max_groups = 63999 igmp1 = self.igmp.device_attr[self.dev1].vrf_attr[vrf1] ssm1 = Ssm(device=self.dev1) ssm1.ssm_group_policy = 'test' ssm1.ssm_source_addr = '1.1.1.1' igmp1.add_ssm(ssm1) ssm2 = Ssm(device=self.dev1) ssm2.ssm_group_policy = 'test1' ssm2.ssm_source_addr = '2.2.2.2' igmp1.add_ssm(ssm2) # Interface configuration intf1_obj = Interface(device=self.dev1, name='GigabitEthernet2') intf1_obj.vrf = vrf1 intf1 = intf1_obj.name self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .enable = True self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .last_member_query_interval = 100 self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .group_policy = 'test2' self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .immediate_leave = True self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .max_groups = 10 self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .query_interval = 133 self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .query_max_response_time = 15 self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1]\ .version = 3 # join and static groups configuration igmp_intf1 = self.igmp.device_attr[self.dev1].vrf_attr[vrf1].interface_attr[intf1] join_group1 = IgmpGroup(device=self.dev1) join_group1.join_group = '239.1.1.1' join_group2 = IgmpGroup(device=self.dev1) join_group2.join_group = '239.3.3.3' join_group2.join_group_source_addr = '1.1.1.1' join_group3 = IgmpGroup(device=self.dev1) join_group3.join_group = '239.2.2.2' static_group1 = IgmpGroup(device=self.dev1) static_group1.static_group = '239.5.5.5' static_group2 = IgmpGroup(device=self.dev1) static_group2.static_group = '239.6.6.6' static_group2.static_group_source_addr = '2.2.2.1' static_group3 = IgmpGroup(device=self.dev1) static_group3.static_group = '239.6.6.6' static_group3.static_group_source_addr = '2.2.2.2' igmp_intf1.add_groups(join_group1) igmp_intf1.add_groups(join_group2) igmp_intf1.add_groups(join_group3) igmp_intf1.add_groups(static_group1) igmp_intf1.add_groups(static_group2) igmp_intf1.add_groups(static_group3) vrf2 = Vrf('default') self.igmp.device_attr[self.dev1].vrf_attr[vrf2].global_max_groups = 63999 igmp2 = self.igmp.device_attr[self.dev1].vrf_attr[vrf2] ssm1 = Ssm(device=self.dev1) ssm1.ssm_group_policy = 'test' ssm1.ssm_source_addr = '1.1.1.1' igmp2.add_ssm(ssm1) ssm2 = Ssm(device=self.dev1) ssm2.ssm_group_policy = 'test2' ssm2.ssm_source_addr = '3.3.3.3' igmp2.add_ssm(ssm2) # Interface configuration intf2_obj = Interface(device=self.dev1, name='GigabitEthernet1') ipv4a = IPv4Addr(device=self.dev1) ipv4a.ipv4 = '10.1.2.1' ipv4a.prefix_length = '24' intf2_obj.add_ipv4addr(ipv4a) intf2 = intf2_obj.name self.igmp.device_attr[self.dev1].vrf_attr[vrf2].interface_attr[intf2]\ .enable = True # join and static groups configuration igmp_intf1 = self.igmp.device_attr[self.dev1].vrf_attr[vrf2].interface_attr[intf2] join_group = IgmpGroup(device=self.dev1) join_group.join_group = '239.3.3.3' join_group.join_group_source_addr = '1.1.1.1' static_group = IgmpGroup(device=self.dev1) static_group.static_group = '239.5.5.5' igmp_intf1.add_groups(join_group) igmp_intf1.add_groups(static_group) # Build interface config for none-default vrfs intf_cfgs = intf1_obj.build_config(apply=False) self.assertMultiLineEqual( str(intf_cfgs), '\n'.join([ 'interface GigabitEthernet2', ' vrf forwarding VRF1', ' exit', ])) intf_cfgs = intf2_obj.build_config(apply=False) self.assertMultiLineEqual( str(intf_cfgs), '\n'.join([ 'interface GigabitEthernet1', ' ip address 10.1.2.1 255.255.255.0', ' exit', ])) # Build igmp configuration cfgs = self.igmp.build_config(apply=False) # Check config built correctly self.assertMultiLineEqual( str(cfgs[self.dev1.name]), '\n'.join([ 'ip igmp limit 63999', 'ip igmp ssm-map enable', 'ip igmp ssm-map static test 1.1.1.1', 'ip igmp ssm-map static test2 3.3.3.3', 'interface GigabitEthernet1', ' ip pim sparse-mode', ' ip igmp join-group 239.3.3.3 source 1.1.1.1', ' ip igmp static-group 239.5.5.5', ' exit', 'ip igmp vrf VRF1 limit 63999', 'ip igmp vrf VRF1 ssm-map enable', 'ip igmp vrf VRF1 ssm-map static test 1.1.1.1', 'ip igmp vrf VRF1 ssm-map static test1 2.2.2.2', 'interface GigabitEthernet2', ' ip pim sparse-mode', ' ip igmp last-member-query-interval 100', ' ip igmp access-group test2', ' ip igmp immediate-leave group-list all-groups', ' ip igmp limit 10', ' ip igmp query-interval 133', ' ip igmp query-max-response-time 15', ' ip igmp version 3', ' ip igmp join-group 239.1.1.1', ' ip igmp join-group 239.2.2.2', ' ip igmp join-group 239.3.3.3 source 1.1.1.1', ' ip igmp static-group 239.5.5.5', ' ip igmp static-group 239.6.6.6 source 2.2.2.1', ' ip igmp static-group 239.6.6.6 source 2.2.2.2', ' exit', ])) # Build unconfig cfgs = self.igmp.build_unconfig(apply=False) # Check config correctly unconfigured self.assertMultiLineEqual( str(cfgs[self.dev1.name]), '\n'.join([ 'no ip igmp limit 63999', 'no ip igmp ssm-map enable', 'no ip igmp ssm-map static test 1.1.1.1', 'no ip igmp ssm-map static test2 3.3.3.3', 'interface GigabitEthernet1', ' no ip pim sparse-mode', ' no ip igmp join-group 239.3.3.3 source 1.1.1.1', ' no ip igmp static-group 239.5.5.5', ' exit', 'no ip igmp vrf VRF1 limit 63999', 'no ip igmp vrf VRF1 ssm-map enable', 'no ip igmp vrf VRF1 ssm-map static test 1.1.1.1', 'no ip igmp vrf VRF1 ssm-map static test1 2.2.2.2', 'interface GigabitEthernet2', ' no ip pim sparse-mode', ' no ip igmp last-member-query-interval 100', ' no ip igmp access-group test2', ' no ip igmp immediate-leave group-list all-groups', ' no ip igmp limit 10', ' no ip igmp query-interval 133', ' no ip igmp query-max-response-time 15', ' no ip igmp version 3', ' no ip igmp join-group 239.1.1.1', ' no ip igmp join-group 239.2.2.2', ' no ip igmp join-group 239.3.3.3 source 1.1.1.1', ' no ip igmp static-group 239.5.5.5', ' no ip igmp static-group 239.6.6.6 source 2.2.2.1', ' no ip igmp static-group 239.6.6.6 source 2.2.2.2', ' exit', ])) # Build unconfig with attribute cfgs = self.igmp.build_unconfig(apply=False, attributes={'device_attr': { self.dev1: { 'vrf_attr': { vrf1: { 'global_max_groups': None, 'ssm': {ssm1: None}}, vrf2: { 'interface_attr': { 'GigabitEthernet1': { 'enable': True } } }}}}}) # Check config correctly unconfigured self.assertMultiLineEqual( str(cfgs[self.dev1.name]), '\n'.join([ 'interface GigabitEthernet1', ' no ip pim sparse-mode', ' exit', 'no ip igmp vrf VRF1 limit 63999', 'no ip igmp vrf VRF1 ssm-map enable', 'no ip igmp vrf VRF1 ssm-map static test 1.1.1.1', ]))