in ptf/saimirror.py [0:0]
def setUp(self):
super(MirrorConfigData, self).setUp()
self.mac2 = "00:00:00:00:00:22"
self.mac3 = "00:00:00:00:00:33"
mac_action = SAI_PACKET_ACTION_FORWARD
self.status_success = SAI_STATUS_SUCCESS
vlan_tag = SAI_VLAN_TAGGING_MODE_TAGGED
port_type = SAI_BRIDGE_PORT_TYPE_PORT
# Thrift does not support unsigned int notation, that is why
# u16 is signed number and there is a need to convert values
# greater than 32767 (15-bit max value) as follows:
# val = MIN_SIGNED_INT_VAL + X - MAX_SIGNED_INT_VAL - 1
# where X - the number exceeds 32767 (MAX_SIGNED_INT_VAL)
# MIN_SIGNED_INT_VAL = -32768
self.gre_proto_type_0x88be = -30530
self.vlan_tpid_0x8100 = -32512
# +------------+------------+-----------+-------------+
# | LAG | VLAN ID | Port | VLAN member |
# +------------+------------+-----------+-------------+
# | | vlan40 | port24 | vlan_mem41 |
# | | | port25 | vlan_mem42 |
# | | | port26 | vlan_mem43 |
# | | | port27 | vlan_mem44 |
# | lag10 | | | vlan_mem041 |
# | lag10_upd | | | vlan_mem042 |
# +------------+------------+-----------+-------------+
# | | vlan50 | port28 | vlan_mem51 |
# | | | port29 | vlan_mem52 |
# | | | port30 | vlan_mem53 |
# | | | port31 | vlan_mem54 |
# | lag11 | | | vlan_mem051 |
# | lag11_upd | | | vlan_mem052 |
# +------------+------------+-----------+-------------+
# Port configuration
self.bridge_ports = []
self.port24_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port24,
type=port_type)
self.assertNotEqual(self.port24_bp, 0)
self.bridge_ports.append(self.port24_bp)
self.port25_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port25,
type=port_type)
self.assertNotEqual(self.port25_bp, 0)
self.bridge_ports.append(self.port25_bp)
self.port26_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port26,
type=port_type)
self.assertNotEqual(self.port26_bp, 0)
self.bridge_ports.append(self.port26_bp)
self.port27_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port27,
type=port_type)
self.assertNotEqual(self.port27_bp, 0)
self.bridge_ports.append(self.port27_bp)
self.port28_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port28,
type=port_type)
self.assertNotEqual(self.port28_bp, 0)
self.bridge_ports.append(self.port28_bp)
self.port29_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port29,
type=port_type)
self.assertNotEqual(self.port29_bp, 0)
self.bridge_ports.append(self.port29_bp)
self.port30_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port30,
type=port_type)
self.assertNotEqual(self.port30_bp, 0)
self.bridge_ports.append(self.port30_bp)
self.port31_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port31,
type=port_type)
self.assertNotEqual(self.port31_bp, 0)
self.bridge_ports.append(self.port31_bp)
# VLAN configuration
self.vlan40 = sai_thrift_create_vlan(self.client, vlan_id=40)
self.assertNotEqual(self.vlan40, 0)
self.vlan50 = sai_thrift_create_vlan(self.client, vlan_id=50)
self.assertNotEqual(self.vlan50, 0)
# VLAN members
self.vlan_members = []
self.vlan_member41 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan40,
bridge_port_id=self.port24_bp,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member41, 0)
self.vlan_members.append(self.vlan_member41)
self.vlan_member42 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan40,
bridge_port_id=self.port25_bp,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member42, 0)
self.vlan_members.append(self.vlan_member42)
self.vlan_member43 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan40,
bridge_port_id=self.port26_bp,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member43, 0)
self.vlan_members.append(self.vlan_member43)
self.vlan_member44 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan40,
bridge_port_id=self.port27_bp,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member44, 0)
self.vlan_members.append(self.vlan_member44)
self.vlan_member51 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan50,
bridge_port_id=self.port28_bp,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member51, 0)
self.vlan_members.append(self.vlan_member51)
self.vlan_member52 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan50,
bridge_port_id=self.port29_bp,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member52, 0)
self.vlan_members.append(self.vlan_member52)
self.vlan_member53 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan50,
bridge_port_id=self.port30_bp,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member53, 0)
self.vlan_members.append(self.vlan_member53)
self.vlan_member54 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan50,
bridge_port_id=self.port31_bp,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member54, 0)
self.vlan_members.append(self.vlan_member54)
# FDB configuration
self.fdb_entries = []
self.fdb_entry1 = sai_thrift_fdb_entry_t(switch_id=self.switch_id,
mac_address=self.mac2,
bv_id=self.vlan40)
status = sai_thrift_create_fdb_entry(self.client,
self.fdb_entry1,
type=SAI_FDB_ENTRY_TYPE_STATIC,
bridge_port_id=self.port25_bp,
packet_action=mac_action)
self.assertEqual(status, self.status_success)
self.fdb_entries.append(self.fdb_entry1)
self.fdb_entry2 = sai_thrift_fdb_entry_t(switch_id=self.switch_id,
mac_address=self.mac3,
bv_id=self.vlan40)
status = sai_thrift_create_fdb_entry(self.client,
self.fdb_entry2,
type=SAI_FDB_ENTRY_TYPE_STATIC,
bridge_port_id=self.port26_bp,
packet_action=mac_action)
self.assertEqual(status, self.status_success)
self.fdb_entries.append(self.fdb_entry2)
self.fdb_entry3 = sai_thrift_fdb_entry_t(switch_id=self.switch_id,
mac_address=self.mac2,
bv_id=self.vlan50)
status = sai_thrift_create_fdb_entry(self.client,
self.fdb_entry3,
type=SAI_FDB_ENTRY_TYPE_STATIC,
bridge_port_id=self.port29_bp,
packet_action=mac_action)
self.assertEqual(status, self.status_success)
self.fdb_entries.append(self.fdb_entry3)
self.fdb_entry4 = sai_thrift_fdb_entry_t(switch_id=self.switch_id,
mac_address=self.mac3,
bv_id=self.vlan50)
status = sai_thrift_create_fdb_entry(self.client,
self.fdb_entry4,
type=SAI_FDB_ENTRY_TYPE_STATIC,
bridge_port_id=self.port30_bp,
packet_action=mac_action)
self.assertEqual(status, self.status_success)
self.fdb_entries.append(self.fdb_entry4)
# Port attributes
self.ports = []
sai_thrift_set_port_attribute(self.client,
self.port24,
port_vlan_id=40)
self.ports.append(self.port24)
sai_thrift_set_port_attribute(self.client,
self.port25,
port_vlan_id=40)
self.ports.append(self.port25)
sai_thrift_set_port_attribute(self.client,
self.port26,
port_vlan_id=40)
self.ports.append(self.port26)
sai_thrift_set_port_attribute(self.client,
self.port27,
port_vlan_id=40)
self.ports.append(self.port27)
sai_thrift_set_port_attribute(self.client,
self.port28,
port_vlan_id=50)
self.ports.append(self.port28)
sai_thrift_set_port_attribute(self.client,
self.port29,
port_vlan_id=50)
self.ports.append(self.port29)
sai_thrift_set_port_attribute(self.client,
self.port30,
port_vlan_id=50)
self.ports.append(self.port30)
sai_thrift_set_port_attribute(self.client,
self.port31,
port_vlan_id=50)
self.ports.append(self.port31)
# L3 layer configuration
self.vr_id = sai_thrift_create_virtual_router(self.client,
admin_v4_state=True,
admin_v6_state=True)
# Neighbor egress configuration
# Egress RIF port11
dst_ip = "172.16.1.1"
dst_mask_ip = "172.16.1.1/24"
self.neighbor_dmac = "00:11:22:33:44:55"
self.neighbor_entry1 = sai_thrift_neighbor_entry_t(
self.switch_id,
self.port11_rif,
sai_ipaddress(dst_ip))
sai_thrift_create_neighbor_entry(self.client,
self.neighbor_entry1,
dst_mac_address=self.neighbor_dmac)
self.nhop = sai_thrift_create_next_hop(
self.client,
type=SAI_NEXT_HOP_TYPE_IP,
router_interface_id=self.port11_rif,
ip=sai_ipaddress(dst_ip))
# Egress RIF port12
dst_ip_egr = "192.168.0.1"
dst_mask_ip_egr = "192.168.0.1/24"
self.neighbor_dmac_egr = "00:55:44:33:22:11"
self.neighbor_entry2 = sai_thrift_neighbor_entry_t(
self.switch_id,
self.port12_rif,
sai_ipaddress(dst_ip_egr))
sai_thrift_create_neighbor_entry(
self.client,
self.neighbor_entry2,
dst_mac_address=self.neighbor_dmac_egr)
self.nhop2 = sai_thrift_create_next_hop(
self.client,
type=SAI_NEXT_HOP_TYPE_IP,
router_interface_id=self.port12_rif,
ip=sai_ipaddress(dst_ip_egr))
# Route configuration
self.route = sai_thrift_route_entry_t(
switch_id=self.switch_id,
destination=sai_ipprefix(dst_mask_ip),
vr_id=self.vr_id)
status = sai_thrift_create_route_entry(self.client,
self.route,
next_hop_id=self.nhop)
self.assertEqual(status, self.status_success)
self.route2 = sai_thrift_route_entry_t(
switch_id=self.switch_id,
destination=sai_ipprefix(dst_mask_ip_egr),
vr_id=self.vr_id)
status = sai_thrift_create_route_entry(self.client,
self.route2,
next_hop_id=self.nhop2)
self.assertEqual(status, self.status_success)
# IP for ERSPAN ingress mirroring
src_ipv4 = sai_thrift_ip_addr_t(ip4="17.18.19.0")
dst_ipv4 = sai_thrift_ip_addr_t(ip4="33.19.20.0")
addr_fam = SAI_IP_ADDR_FAMILY_IPV4
self.src_ip_addr = sai_thrift_ip_address_t(addr_family=addr_fam,
addr=src_ipv4)
self.dst_ip_addr = sai_thrift_ip_address_t(addr_family=addr_fam,
addr=dst_ipv4)
# IP for ERSPAN egress mirroring
src_ipv4_egr = sai_thrift_ip_addr_t(ip4="33.19.20.0")
dst_ipv4_egr = sai_thrift_ip_addr_t(ip4="17.18.19.0")
self.src_ip_addr_egr = sai_thrift_ip_address_t(addr_family=addr_fam,
addr=src_ipv4_egr)
self.dst_ip_addr_egr = sai_thrift_ip_address_t(addr_family=addr_fam,
addr=dst_ipv4_egr)
# LAG configuration
self.lags = []
self.lag10 = sai_thrift_create_lag(self.client)
self.assertNotEqual(self.lag10, 0)
self.lags.append(self.lag10)
self.lag10_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.lag10,
type=SAI_BRIDGE_PORT_TYPE_PORT)
self.assertNotEqual(self.lag10_bp, 0)
self.bridge_ports.append(self.lag10_bp)
self.vlan_member041 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan40,
bridge_port_id=self.lag10_bp,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member041, 0)
self.vlan_members.append(self.vlan_member041)
self.lag10_upd = sai_thrift_create_lag(self.client)
self.assertNotEqual(self.lag10_upd, 0)
self.lags.append(self.lag10_upd)
self.lag10_bp_upd = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.lag10_upd,
type=SAI_BRIDGE_PORT_TYPE_PORT)
self.assertNotEqual(self.lag10_bp_upd, 0)
self.bridge_ports.append(self.lag10_bp_upd)
self.vlan_member042 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan40,
bridge_port_id=self.lag10_bp_upd,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member042, 0)
self.vlan_members.append(self.vlan_member042)
self.lag11 = sai_thrift_create_lag(self.client)
self.assertNotEqual(self.lag11, 0)
self.lags.append(self.lag11)
self.lag11_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.lag11,
type=SAI_BRIDGE_PORT_TYPE_PORT)
self.assertNotEqual(self.lag11_bp, 0)
self.bridge_ports.append(self.lag11_bp)
self.vlan_member051 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan50,
bridge_port_id=self.lag11_bp,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member051, 0)
self.vlan_members.append(self.vlan_member051)
self.lag11_upd = sai_thrift_create_lag(self.client)
self.assertNotEqual(self.lag11_upd, 0)
self.lags.append(self.lag11_upd)
self.lag11_bp_upd = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.lag11_upd,
type=SAI_BRIDGE_PORT_TYPE_PORT)
self.assertNotEqual(self.lag11_bp_upd, 0)
self.bridge_ports.append(self.lag11_bp_upd)
self.vlan_member052 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan50,
bridge_port_id=self.lag11_bp_upd,
vlan_tagging_mode=vlan_tag)
self.assertNotEqual(self.vlan_member052, 0)
self.vlan_members.append(self.vlan_member052)
# Policer configuration
self.pol_id = sai_thrift_create_policer(
self.client,
meter_type=SAI_METER_TYPE_PACKETS,
mode=SAI_POLICER_MODE_SR_TCM,
cir=1,
pir=1,
green_packet_action=SAI_PACKET_ACTION_FORWARD,
red_packet_action=SAI_PACKET_ACTION_FORWARD)