Beispiel #1
0
def verify_interface_on(step):
    step("\n########## Verifying interface are up ########## \n")

    for switch in switches:
        ports = [switch.ports["if01"]]
        verify_turn_on_interfaces(switch, ports)

    step("\nExiting verify_interface_on\n")
Beispiel #2
0
def configure(switch1, switch2, step):
    '''
     - Configures the IP address in SW1, SW2 and SW3
     - Creates router bgp instance on SW1 and SW2
     - Configures the router id
     - Configures the network range
     - Configure redistribute and neighbor
    '''
    '''
    - Enable the link.
    - Set IP for the switches.
    '''

    # Enabling interface 1 SW1.
    with switch1.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW1.
        step("Enabling interface1 on SW1")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 1 of SW1
        step("Configuring IPv4 address on link 1 SW1")
        ctx.ip_address("%s/%s" % (ip_addr1, default_pl))

    verify_turn_on_interfaces(switch1, [switch1.ports["if01"]])

    with switch2.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW2.
        step("Enabling interface1 on SW2")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 1 of SW2
        step("Configuring IPv4 address on link 1 SW2")
        ctx.ip_address("%s/%s" % (ip_addr2, default_pl))

    verify_turn_on_interfaces(switch2, [switch2.ports["if01"]])

    #    For SW1 and SW2, configure bgp
    step("Configuring router id on SW1")
    configure_router_id(switch1, as_num1, sw1_router_id)

    step("Configuring networks on SW1")
    configure_network(switch1, as_num1, "9.0.0.0/8")

    step("Configuring neighbors on SW1")
    configure_neighbor(switch1, as_num1, ip_addr2, as_num2)

    step("Configuring router id on SW2")
    configure_router_id(switch2, as_num2, sw2_router_id)

    step("Configuring networks on SW2")
    configure_network(switch2, as_num2, "10.0.0.0/8")

    step("Configuring networks on SW2")
    configure_network(switch2, as_num2, "11.0.0.0/8")

    step("Configuring neighbors on SW2")
    configure_neighbor(switch2, as_num2, ip_addr1, as_num1)
Beispiel #3
0
def verify_interface_on(step):
    step("\n########## Verifying interface are up ########## \n")

    for switch in switches:
        int1 = switch.ports["if01"]
        if switch.name == "ops1":
            int2 = switch.ports["if02"]
            ports = [int1, int2]
        else:
            ports = [int1]
        verify_turn_on_interfaces(switch, ports)
def configure(step, switch1, switch2):
    """
     - Configures the IP address in SW1, SW2 and SW3
     - Creates router bgp instance on SW1 and SW2
     - Configures the router id
     - Configures the network range
     - Configure redistribute and neighbor
    """

    """
    - Enable the link.
    - Set IP for the switches.
    """

    with switch1.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW1.
        step("Enabling interface1 on SW1")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 1 of SW1
        ctx.ip_address("%s/%s" % (IP_ADDR1, DEFAULT_PL))

    verify_turn_on_interfaces(switch1, [switch1.ports["if01"]])

    with switch2.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW2.
        step("Enabling interface1 on SW2")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 1 of SW2
        ctx.ip_address("%s/%s" % (IP_ADDR2, DEFAULT_PL))

    verify_turn_on_interfaces(switch2, [switch2.ports["if01"]])

#    For SW1 and SW2, configure bgp
    step("Configuring router id on SW1")
    configure_router_id(step, switch1, AS_NUM1, SW1_ROUTER_ID)

    step("Configuring networks on SW1")
    configure_network(switch1, AS_NUM1, "9.0.0.0/8")

    step("Configuring neighbors on SW1")
    configure_neighbor(switch1, AS_NUM1, IP_ADDR2, AS_NUM2)

    step("Configuring router id on SW2")
    configure_router_id(step, switch2, AS_NUM2, SW2_ROUTER_ID)

    step("Configuring networks on SW2")
    configure_network(switch2, AS_NUM2, "10.0.0.0/8")

    step("Configuring networks on SW2")
    configure_network(switch2, AS_NUM2, "11.0.0.0/8")

    step("Configuring neighbors on SW2")
    configure_neighbor(switch2, AS_NUM2, IP_ADDR1, AS_NUM1)
Beispiel #5
0
def configuration(topology, request):

    sw1 = topology.get('sw1')
    sw2 = topology.get('sw2')
    sw3 = topology.get('sw3')
    sw4 = topology.get('sw4')
    sw5 = topology.get('sw5')

    assert sw1 is not None
    assert sw2 is not None
    assert sw3 is not None
    assert sw4 is not None
    assert sw5 is not None

    configure_interface(sw1, SW1_INTF1, SW1_INTF1_IPV4_ADDR)
    configure_interface(sw1, SW1_INTF2, SW1_INTF2_IPV4_ADDR)
    configure_interface(sw2, SW2_INTF1, SW2_INTF1_IPV4_ADDR)
    configure_interface(sw2, SW2_INTF2, SW2_INTF2_IPV4_ADDR)
    configure_interface(sw3, SW3_INTF1, SW3_INTF1_IPV4_ADDR)
    configure_interface(sw3, SW3_INTF2, SW3_INTF2_IPV4_ADDR)
    configure_interface(sw4, SW4_INTF1, SW4_INTF1_IPV4_ADDR)
    configure_interface(sw5, SW5_INTF2, SW5_INTF2_IPV4_ADDR)

    ports_sw1 = [sw1.ports[SW1_INTF1], sw1.ports[SW1_INTF2]]
    verify_turn_on_interfaces(sw1, ports_sw1)
    ports_sw2 = [sw2.ports[SW2_INTF1], sw2.ports[SW2_INTF2]]
    verify_turn_on_interfaces(sw2, ports_sw2)
    ports_sw3 = [sw3.ports[SW3_INTF1], sw3.ports[SW3_INTF2]]
    verify_turn_on_interfaces(sw3, ports_sw3)
    ports_sw4 = [sw4.ports[SW4_INTF1]]
    verify_turn_on_interfaces(sw4, ports_sw4)
    ports_sw5 = [sw5.ports[SW5_INTF2]]
    verify_turn_on_interfaces(sw5, ports_sw5)

    # Configuring ospf with network command in sw1, sw2, sw3, sw4 and sw5
    configure_ospf_router(sw1, SW1_ROUTER_ID, SW1_INTF1_IPV4_ADDR,
                          OSPF_AREA_100)
    configure_ospf_router(sw1, SW1_ROUTER_ID, SW1_INTF2_IPV4_ADDR,
                          OSPF_AREA_100)
    configure_ospf_router(sw2, SW2_ROUTER_ID, SW2_INTF1_IPV4_ADDR,
                          OSPF_AREA_100)
    configure_ospf_router(sw2, SW2_ROUTER_ID, SW2_INTF2_IPV4_ADDR,
                          OSPF_AREA_0)
    configure_ospf_router(sw3, SW3_ROUTER_ID, SW3_INTF1_IPV4_ADDR,
                          OSPF_AREA_200)
    configure_ospf_router(sw3, SW3_ROUTER_ID, SW3_INTF2_IPV4_ADDR,
                          OSPF_AREA_0)
    configure_ospf_router(sw4, SW4_ROUTER_ID, SW4_INTF1_IPV4_ADDR,
                          OSPF_AREA_200)
    configure_ospf_router(sw5, SW5_ROUTER_ID, SW5_INTF2_IPV4_ADDR,
                          OSPF_AREA_100)
def configuration(topology, request):
    sw1 = topology.get('sw1')
    sw2 = topology.get('sw2')

    assert sw1 is not None
    assert sw2 is not None

    # Configuring ip address for sw2 and sw3
    configure_interface(sw1, SW1_INTF1, SW1_INTF1_IPV4_ADDR)
    configure_interface(sw2, SW2_INTF1, SW2_INTF1_IPV4_ADDR)

    verify_turn_on_interfaces(sw1, sw1.ports[SW1_INTF1])
    verify_turn_on_interfaces(sw2, sw2.ports[SW2_INTF1])

    # Configuring ospf with network command in sw2 and sw3
    configure_ospf_router(sw1, SW1_ROUTER_ID, OSPF_NETWRK_ADDR, OSPF_AREA_1)
    configure_ospf_router(sw2, SW2_ROUTER_ID, OSPF_NETWRK_ADDR, OSPF_AREA_1)
def configuration(topology, request):
    sw2 = topology.get('sw2')
    sw3 = topology.get('sw3')

    assert sw2 is not None
    assert sw3 is not None

    # Configuring ip address for sw2 and sw3
    configure_interface(sw2, SW2_INTF2, SW2_INTF2_IPV4_ADDR)
    configure_interface(sw3, SW3_INTF2, SW3_INTF2_IPV4_ADDR)

    verify_turn_on_interfaces(sw2, [sw2.ports[SW2_INTF2]])
    verify_turn_on_interfaces(sw3, [sw3.ports[SW3_INTF2]])

    # Configuring ospf with network command in sw2 and sw3
    configure_ospf_router(sw2, SW2_ROUTER_ID, SW2_INTF2_IPV4_ADDR, OSPF_AREA_1)
    configure_ospf_router(sw3, SW3_ROUTER_ID, SW3_INTF2_IPV4_ADDR, OSPF_AREA_1)
Beispiel #8
0
def configuration(topology, request):
    sw1 = topology.get('sw1')
    sw2 = topology.get('sw2')
    sw3 = topology.get('sw3')
    hs1 = topology.get('hs1')
    hs2 = topology.get('hs2')

    assert sw1 is not None
    assert sw2 is not None
    assert sw3 is not None
    assert hs1 is not None
    assert hs2 is not None

    # Configuring ip address for sw2 and sw3
    configure_interface(sw1, SW1_INTF1, SW1_INTF1_IPV4_ADDR)
    configure_interface(sw1, SW1_INTF2, SW1_INTF2_IPV4_ADDR)
    configure_interface(sw2, SW2_INTF1, SW2_INTF1_IPV4_ADDR)
    configure_interface(sw2, SW2_INTF2, SW2_INTF2_IPV4_ADDR)
    configure_interface(sw3, SW3_INTF1, SW3_INTF1_IPV4_ADDR)
    configure_interface(sw3, SW3_INTF2, SW3_INTF2_IPV4_ADDR)

    ports_sw1 = [sw1.ports[SW1_INTF1], sw1.ports[SW1_INTF2]]
    verify_turn_on_interfaces(sw1, ports_sw1)
    ports_sw2 = [sw2.ports[SW2_INTF1], sw2.ports[SW2_INTF2]]
    verify_turn_on_interfaces(sw2, ports_sw2)
    ports_sw3 = [sw3.ports[SW3_INTF1], sw3.ports[SW3_INTF2]]
    verify_turn_on_interfaces(sw3, ports_sw3)

    # Configure IP and bring UP host 1 interfaces
    hs1.libs.ip.interface('1', addr='10.10.40.2/24', up=True)

    # Configure IP and bring UP host 2 interfaces
    hs2.libs.ip.interface('1', addr='10.10.30.2/24', up=True)

    # Configuring ospf with network command in sw2 and sw3
    configure_ospf_router(sw1, SW1_ROUTER_ID, SW1_INTF1_IPV4_ADDR, OSPF_AREA_1)
    configure_ospf_router(sw2, SW2_ROUTER_ID, SW2_INTF1_IPV4_ADDR, OSPF_AREA_1)
    configure_ospf_router(sw2, SW2_ROUTER_ID, SW2_INTF2_IPV4_ADDR, OSPF_AREA_1)
    configure_ospf_router(sw3, SW3_ROUTER_ID, SW3_INTF2_IPV4_ADDR, OSPF_AREA_1)
Beispiel #9
0
def configure(step, switch1, switch2):
    """
     - Configures the IP address in SW1, SW2 and SW3
     - Creates router bgp instance on SW1 and SW2
     - Configures the router id
     - Configures the network range
     - Configure redistribute and neighbor
    """
    """
    - Enable the link.
    - Set IP for the switches.
    """
    with switch1.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW1.
        step("Enabling interface1 on SW1")
        ctx.no_shutdown()
        # Assigning an IPv6 address on interface 1 of SW1
        step("Configuring IPv6 address on link 1 SW1")
        ctx.ipv6_address("%s/64" % ip_addr1)
        # Assigning an IPv4 address on interface 1 of SW1
        ctx.ip_address("%s/8" % (sw1_router_id))

    verify_turn_on_interfaces(switch1, [switch1.ports["if01"]])

    with switch2.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW2.
        step("Enabling interface1 on SW2")
        ctx.no_shutdown()
        # Assigning an IPv6 address on interface 1 of SW2
        step("Configuring IPv4 address on link 1 SW2")
        ctx.ipv6_address("%s/64" % ip_addr2)
        # Assigning an IPv4 address on interface 1 for link 1 SW2
        ctx.ip_address("%s/8" % (sw2_router_id))

    verify_turn_on_interfaces(switch2, [switch2.ports["if01"]])
    """
    For SW1 and SW2, configure bgp
    """

    step("Configuring router id on SW1")
    configure_router_id(step, switch1, as_num1, sw1_router_id)

    step("Configuring networks on SW1")
    configure_network(switch1, as_num1, "2ccd:1:1::/67")

    step("Configuring networks on SW1")
    configure_network(switch1, as_num1, "5d5d:1:1::/69")

    step("Configuring networks on SW1")
    configure_network(switch1, as_num1, "7d5d:1:1::/85")

    step("Configuring networks on SW1")
    configure_network(switch1, as_num1, "9966:1:2::/85")

    step("Configuring neighbors on SW1")
    configure_neighbor(switch1, as_num1, ip_addr2, as_num2)

    step("Configuring router id on SW2")
    configure_router_id(step, switch2, as_num2, sw2_router_id)

    step("Configuring networks on SW2")
    configure_network(switch2, as_num2, "3dcd:1:1::/64")

    step("Configuring neighbors on SW2")
    configure_neighbor(switch2, as_num2, ip_addr1, as_num1)
def configure(step, switch1, switch2, switch3):
    """
     - Configures the IP address in SW1, SW2 and SW3
     - Creates router bgp instance on SW1 and SW2
     - Configures the router id
     - Configures the network range
     - Configure redistribute and neighbor
    """

    """
    - Enable the link.
    - Set IP for the switches.
    """
    # Enabling interface 1 SW1.
    with switch1.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW1.
        step("Enabling interface1 on SW1")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 1 of SW1
        step("Configuring IPv4 address on link 1 SW1")
        ctx.ip_address("%s/%s" % (ip_addr1, default_pl))

    verify_turn_on_interfaces(switch1, [switch1.ports["if01"]])

    with switch2.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW2.
        step("Enabling interface1 on SW2")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 1 of SW2
        step("Configuring IPv4 address on link 1 SW2")
        ctx.ip_address("%s/%s" % (ip_addr2, default_pl))

    with switch2.libs.vtysh.ConfigInterface("if02") as ctx:
        # Enabling interface 2 SW2.
        step("Enabling interface2 on SW2")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 2 of SW2
        step("Configuring IPv4 address on link 2 SW2")
        ctx.ip_address("%s/%s" % (ip_addr3, default_pl))

    ports = [switch2.ports["if01"], switch2.ports["if02"]]
    verify_turn_on_interfaces(switch2, ports)

    with switch3.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW3.
        step("Enabling interface1 on SW3")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 1 of SW3
        step("Configuring IPv4 address on link 1 SW3")
        ctx.ip_address("%s/%s" % (ip_addr4, default_pl))

    verify_turn_on_interfaces(switch3, [switch3.ports["if01"]])

    """
    For SW2 and SW3, configure bgp
    """
    step("Configuring static routes on SW2")
    configure_static_route(switch2, "12.0.0.0/8", "7.0.0.1")

    step("Configuring route-map routes on SW2")
    configure_route_map(switch2, "BGP_Rmap")

    step("Configuring router-id on SW2")
    configure_router_id(step, switch2, as_num1, sw2_router_id)

    step("Configuring networks on SW2")
    configure_network(switch2, as_num1, "10.0.0.0/8")

    step("Configuring redistribute configuration on SW2")
    configure_redistribute(switch2, as_num1, "connected")

    step("Configuring redistribute route-map configuration on SW2")
    configure_redistribute_rmap(switch2, as_num1, "static", "BGP_Rmap")

    step("Configuring bgp neighbor on SW2")
    configure_neighbor(switch2, as_num1, ip_addr4, as_num2)

    step("Applying route-map to bgp neighbor on SW2")
    configure_neighbor_rmap(switch2, as_num1, ip_addr4, as_num2, "BGP_Rmap")

    exitcontext(switch2)

    step("Configuring router-id on SW3")
    configure_router_id(step, switch3, as_num2, sw3_router_id)

    step("Configuring networks on SW2")
    configure_network(switch3, as_num2, "19.0.0.0/8")

    configure_neighbor(switch3, as_num2, ip_addr3, as_num1)

    exitcontext(switch3)
Beispiel #11
0
def configure(sw1, sw2, sw3):
    '''
     - Configures the IP address in SW1, SW2 and SW3
     - Creates router bgp instance on SW1, SW2 and SW3
     - Configures the router id
     - Configures the network range
     - Configure neighbor
    '''
    '''
    - Enable the link.
    - Set IP for the switches.
    '''
    # Enabling interface 1 SW1.
    print("Enabling interface1 on SW1")
    sw1p1 = sw1.ports['if01']
    sw1("configure terminal")
    sw1("interface {sw1p1}".format(**locals()))
    sw1("no shutdown")

    # Assigning an IPv4 address on interface 1 of SW1
    print("Configuring IPv4 address on link 1 SW1")
    sw1("ip address %s/%s" % (IP_ADDR1, DEFAULT_PL))
    sw1("end")

    verify_turn_on_interfaces(sw1, [sw1.ports["if01"]])

    # Enabling interface 1 SW2
    print("Enabling interface1 on SW2")
    sw2p1 = sw2.ports['if01']
    sw2("configure terminal")
    sw2("interface {sw2p1}".format(**locals()))
    sw2("no shutdown")

    # Assigning an IPv4 address on interface 1 for link 1 SW2
    print("Configuring IPv4 address on link 1 SW2")
    sw2("ip address %s/%s" % (IP_ADDR2_1, DEFAULT_PL))
    sw2("end")

    # Enabling interface 2 SW2
    print("Enabling interface 2 on SW2")
    sw2p2 = sw2.ports['if02']
    sw2("configure terminal")
    sw2("interface {sw2p2}".format(**locals()))
    sw2("no shutdown")

    # Assigning an IPv4 address on interface 2 for link 2 SW2
    print("Configuring IPv4 address on link 2 SW2")
    sw2("ip address %s/%s" % (IP_ADDR2_2, DEFAULT_PL))
    sw2("end")

    ports = [sw2.ports["if01"], sw2.ports["if02"]]
    verify_turn_on_interfaces(sw2, ports)

    # Enabling interface 1 SW3
    print("Enabling interface 1 on SW3")
    sw3p1 = sw3.ports['if01']
    sw3("configure terminal")
    sw3("interface {sw3p1}".format(**locals()))
    sw3("no shutdown")

    # Assigning an IPv4 address on interface 1 for link 2 SW3
    print("Configuring IPv4 address on link 2 SW3")
    sw3("ip address %s/%s" % (IP_ADDR3, DEFAULT_PL))
    sw3("end")

    verify_turn_on_interfaces(sw3, [sw3.ports["if01"]])

    # For SW1, SW2 and SW3, configure bgp
    print("Configuring route context on SW1")
    sw1("configure terminal")
    sw1("router bgp " + AS_NUM1)
    sw1("end")

    print("Configuring router id on SW1")
    configure_router_id(sw1, AS_NUM1, SW1_ROUTER_ID)
    print("Configuring networks on SW1")
    configure_network(sw1, AS_NUM1, "11.0.0.0/8")
    print("Configuring neighbors on SW1")
    configure_neighbor(sw1, AS_NUM1, IP_ADDR2_1, AS_NUM2)

    print("Configuring route context on SW2")
    sw2("configure terminal")
    sw2("router bgp " + AS_NUM2)
    sw2("end")
    print("Configuring router id on SW2")
    configure_router_id(sw2, AS_NUM2, SW2_ROUTER_ID)
    print("Configuring networks on SW2")
    configure_network(sw2, AS_NUM2, "15.0.0.0/8")
    print("Configuring neighbor 1 on SW2")
    configure_neighbor(sw2, AS_NUM2, IP_ADDR1, AS_NUM1)
    print("Configuring neighbor 3 on SW2")
    configure_neighbor(sw2, AS_NUM2, IP_ADDR3, AS_NUM3)

    print("Configuring route context on SW3")
    sw3("configure terminal")
    sw3("router bgp " + AS_NUM3)
    sw3("end")
    print("Configuring router id on SW3")
    configure_router_id(sw3, AS_NUM3, SW3_ROUTER_ID)
    print("Configuring networks on SW3")
    configure_network(sw3, AS_NUM3, "12.0.0.0/8")
    print("Configuring neighbor on SW3")
    configure_neighbor(sw3, AS_NUM3, IP_ADDR2_2, AS_NUM2)
def configure(topology, step):
    '''
     - Configures the IP address in SW1, SW2 and SW3
     - Creates router bgp instance on SW1, SW2 and SW3
     - Configures the router id
     - Configures the network range
     - Configure neighbor
    '''

    switch1 = topology.get("ops1")
    assert switch1 is not None
    switch2 = topology.get("ops2")
    assert switch2 is not None
    switch3 = topology.get("ops3")
    assert switch3 is not None
    '''
    - Enable the link.
    - Set IP for the switches.
    '''
    with switch1.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW1.
        step("Enabling interface1 on SW1")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 1 of SW1
        step("Configuring IPv4 address on link 1 SW1")
        ctx.ip_address("%s/%s" % (ip_addr1, default_pl))

    verify_turn_on_interfaces(switch1, [switch1.ports["if01"]])

    with switch2.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW2.
        step("Enabling interface1 on SW2")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 1 of SW2
        step("Configuring IPv4 address on link 1 SW2")
        ctx.ip_address("%s/%s" % (ip_addr2_1, default_pl))

    with switch2.libs.vtysh.ConfigInterface("if02") as ctx:
        # Enabling interface 2 SW2.
        step("Enabling interface2 on SW1")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 2 of SW2
        step("Configuring IPv4 address on link 2 SW2")
        ctx.ip_address("%s/%s" % (ip_addr2_2, default_pl))

    ports = [switch2.ports["if01"], switch2.ports["if02"]]
    verify_turn_on_interfaces(switch2, ports)

    with switch3.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW3.
        step("Enabling interface1 on SW3")
        ctx.no_shutdown()
        # Assigning an IPv4 address on interface 1 of SW3
        step("Configuring IPv4 address on link 1 SW3")
        ctx.ip_address("%s/%s" % (ip_addr3, default_pl))

    verify_turn_on_interfaces(switch3, [switch3.ports["if01"]])

    # For SW1, SW2 and SW3, configure bgp
    step("Configuring router id on SW1")
    configure_router_id(switch1, as_num, sw1_router_id)

    step("Configuring networks on SW1")
    configure_network(switch1, as_num, "11.0.0.0/8")

    step("Configuring neighbors on SW1")
    configure_neighbor(switch1, as_num, ip_addr2_1, as_num2)

    step("Configuring router id on SW2")
    configure_router_id(switch2, as_num2, sw2_router_id)

    step("Configuring networks on SW2")
    configure_network(switch2, as_num2, "15.0.0.0/8")

    step("Configuring neighbor 1 on SW2")
    configure_neighbor(switch2, as_num2, ip_addr1, as_num)

    step("Configuring neighbor 3 on SW2")
    configure_neighbor(switch2, as_num2, ip_addr3, as_num3)

    step("Configuring router id on SW3")
    configure_router_id(switch3, as_num3, sw3_router_id)

    step("Configuring networks on SW3")
    configure_network(switch3, as_num3, "12.0.0.0/8")

    step("Configuring neighbor on SW3")
    configure_neighbor(switch3, as_num3, ip_addr2_2, as_num2)
def configure(step, switch1, switch2):
    """
     - Configure the IP address in SW1, SW2
     - Configure ipv6 prefix
     - Configure route-map
     - Create router bgp instance on SW1 and SW2
     - Configure the router id
     - Configure the network range
     - Configure the neighbor
     - Apply route-map to neighbor on SW1
    """

    with switch1.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW1.
        step("Enabling interface1 on SW1")
        ctx.no_shutdown()
        # Assigning an IPv6 address on interface 1 of SW1
        step("Configuring IPv6 address on link 1 SW1")
        ctx.ipv6_address("%s/%s" % (ipv6_addr1, default_pl))

    verify_turn_on_interfaces(switch1, [switch1.ports["if01"]])

    with switch2.libs.vtysh.ConfigInterface("if01") as ctx:
        # Enabling interface 1 SW2.
        step("Enabling interface1 on SW1")
        ctx.no_shutdown()
        # Assigning an IPv6 address on interface 1 of SW2
        step("Configuring IPv6 address on link 1 SW2")
        ctx.ipv6_address("%s/%s" % (ipv6_addr2, default_pl))

    verify_turn_on_interfaces(switch2, [switch2.ports["if01"]])

    # Configuring ipv6 prefix-list on switch 1
    step("Configuring ipv6 prefix configuration on SW1")
    configure_prefix_list(switch1, "BGP1_IN", "10", "deny", "9966:1:2::/64",
                          80, 100)

    configure_prefix_list(switch1, "BGP1_IN", "20", "permit", "7d5d:1:1::/64",
                          0, 70)

    configure_prefix_list(switch1, "BGP1_IN", "30", "permit", "5d5d:1:1::/64",
                          0, 70)

    configure_prefix_list(switch1, "BGP1_IN", "40", "permit", "2ccd:1:1::/64",
                          65, 0)

    configure_prefix_list(switch1, "BGP1_IN", "50", "permit", "4ddc:1:1::/64",
                          0, 0)

    # Configuring Route-map on switch 1
    step("Configuring route-map on SW1")
    configure_route_map(switch1, "BGP1_IN", "BGP1_IN")

    # Configuring BGP on switch 1
    step("Configuring router-id on SW1")
    configure_router_id(step, switch1, as_num1, sw1_router_id)

    step("Configuring networks on SW1")
    configure_network(switch1, as_num1, "3dcd:1:1::/64")

    step("Configuring bgp neighbor on SW1")
    configure_neighbor(switch1, as_num1, ipv6_addr2, as_num2)

    step("Applying route-map to bgp neighbor on SW1")
    configure_neighbor_rmap(switch1, as_num1, ipv6_addr2, as_num2, "BGP1_IN",
                            "in")
    sleep(5)

    # Configuring ipv6 prefix-list on switch 2
    step("Configuring ipv6 prefix list configuration on SW2")
    configure_prefix_list(
        switch2, "A_sample_name_to_verify_the_"
        "max_length_of_the_prefix_list_name_that_"
        "can_be_confd", "4294967295", "permit", "any", 0, 0)

    step("Configuring ipv6 prefix list configuration on SW2")
    configure_prefix_list(switch2, "p2", "5", "deny", "any", 0, 0)

    # Boundary and limit testing and Negative testing for prefix list
    step("Boundary and limit testing and Negative testing for"
         " ipv6 prefix list configuration on SW2")

    verify_prefix_list_config(switch2, "p2", "0", "deny", "any", 0, 0)

    verify_prefix_list_config(switch2, "p2", "4294967296", "deny", "any", 0, 0)

    verify_prefix_list_config(switch2, "p2", "-429", "deny", "any", 0, 0)

    # Configuring Route-map on switch 2
    step("Configuring route-map on SW2")
    configure_route_map(
        switch2, "BGP2_Rmap1", "A_sample_name_to_verify_the_"
        "max_length_of_the_prefix_list_name_that_"
        "can_be_confd")

    step("Configuring route-map on SW2")
    configure_route_map(switch2, "BGP2_Rmap2", "p2")

    # Configuring BGP on switch 2
    step("Configuring router-id on SW2")
    configure_router_id(step, switch2, as_num2, sw2_router_id)

    step("Configuring networks on SW2")
    configure_network(switch2, as_num2, "2ccd:1:1::/67")

    configure_network(switch2, as_num2, "7d5d:1:1::/85")

    configure_network(switch2, as_num2, "5d5d:1:1::/69")

    configure_network(switch2, as_num2, "9966:1:2::/85")

    configure_network(switch2, as_num2, "4ddc:1:1::/64")

    configure_neighbor(switch2, as_num2, ipv6_addr1, as_num1)

    step("Applying route-map to bgp neighbor on SW2")
    configure_neighbor_rmap(switch2, as_num2, ipv6_addr1, as_num1,
                            "BGP2_Rmap1", "out")

    step("Applying route-map to bgp neighbor on SW2")
    configure_neighbor_rmap(switch2, as_num2, ipv6_addr1, as_num1,
                            "BGP2_Rmap2", "in")
    sleep(10)