def setUp()

in ptf/sainat.py [0:0]


    def setUp(self):
        super(NatTranslationTest, self).setUp()

        # object lists
        self.route_list = []
        self.nbor_list = []
        self.nhop_list = []
        self.acl_entry_list = []
        self.acl_cntr_list = []
        self.acl_table_list = []
        self.rif_list = []
        self.vlan_mbr_list = []
        self.vlan_list = []
        self.bp_list = []

        # regular L3 ports configuration
        self.ingr_port_rif = self.port10_rif
        self.egr_port_rif = self.port11_rif

        self.ingr_port = self.port10
        self.egr_port = self.port11

        self.ingr_port_dev = self.dev_port10
        self.egr_port_dev = self.dev_port11

        self.port_nbor_ip = "10.10.10.1"
        self.port_nbor_mac = "00:11:11:11:11:11"
        self.nat_ip_to_port = "30.30.30.10"

        self.nat_port_nhop = sai_thrift_create_next_hop(
            self.client,
            ip=sai_ipaddress(self.port_nbor_ip),
            router_interface_id=self.egr_port_rif,
            type=SAI_NEXT_HOP_TYPE_IP)
        self.nhop_list.append(self.nat_port_nhop)

        self.nat_port_nbor = sai_thrift_neighbor_entry_t(
            rif_id=self.egr_port_rif,
            ip_address=sai_ipaddress(self.port_nbor_ip))
        sai_thrift_create_neighbor_entry(self.client,
                                         self.nat_port_nbor,
                                         dst_mac_address=self.port_nbor_mac,
                                         no_host_route=True)
        self.nbor_list.append(self.nat_port_nbor)

        self.nat_port_route = sai_thrift_route_entry_t(
            vr_id=self.default_vrf,
            destination=sai_ipprefix(self.port_nbor_ip + '/32'))
        sai_thrift_create_route_entry(
            self.client, self.nat_port_route, next_hop_id=self.nat_port_nhop)
        self.route_list.append(self.nat_port_route)

        # L3 LAGs configuration
        self.ingr_lag_rif = self.lag3_rif
        self.egr_lag_rif = self.lag4_rif

        self.ingr_lag = [self.port14, self.port15, self.port16]
        self.egr_lag = [self.port17, self.port18, self.port19]

        self.ingr_lag_dev = [self.dev_port14, self.dev_port15, self.dev_port16]
        self.egr_lag_dev = [self.dev_port17, self.dev_port18, self.dev_port19]

        self.lag_nbor_ip = "10.10.20.1"
        self.lag_nbor_mac = "00:22:22:22:22:22"
        self.nat_ip_to_lag = "30.30.30.20"

        self.nat_lag_nhop = sai_thrift_create_next_hop(
            self.client,
            ip=sai_ipaddress(self.lag_nbor_ip),
            router_interface_id=self.egr_lag_rif,
            type=SAI_NEXT_HOP_TYPE_IP)
        self.nhop_list.append(self.nat_lag_nhop)

        self.nat_lag_nbor = sai_thrift_neighbor_entry_t(
            rif_id=self.egr_lag_rif,
            ip_address=sai_ipaddress(self.lag_nbor_ip))
        sai_thrift_create_neighbor_entry(self.client,
                                         self.nat_lag_nbor,
                                         dst_mac_address=self.lag_nbor_mac,
                                         no_host_route=True)
        self.nbor_list.append(self.nat_lag_nbor)

        self.nat_lag_route = sai_thrift_route_entry_t(
            vr_id=self.default_vrf,
            destination=sai_ipprefix(self.lag_nbor_ip + '/32'))
        sai_thrift_create_route_entry(
            self.client, self.nat_lag_route, next_hop_id=self.nat_lag_nhop)
        self.route_list.append(self.nat_lag_route)

        # SVI configuration
        self.port24_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.port24,
            type=SAI_BRIDGE_PORT_TYPE_PORT,
            admin_state=True)
        self.bp_list.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=SAI_BRIDGE_PORT_TYPE_PORT,
            admin_state=True)
        self.bp_list.append(self.port25_bp)

        self.vlan100 = sai_thrift_create_vlan(self.client, vlan_id=100)
        self.vlan_list.append(self.vlan100)
        self.vlan100_member0 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan100,
            bridge_port_id=self.port24_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
        self.vlan_mbr_list.append(self.vlan100_member0)
        self.vlan100_member1 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan100,
            bridge_port_id=self.port25_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
        self.vlan_mbr_list.append(self.vlan100_member1)

        sai_thrift_set_port_attribute(
            self.client, self.port24, port_vlan_id=100)
        sai_thrift_set_port_attribute(
            self.client, self.port25, port_vlan_id=100)

        self.port26_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.port26,
            type=SAI_BRIDGE_PORT_TYPE_PORT,
            admin_state=True)
        self.bp_list.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=SAI_BRIDGE_PORT_TYPE_PORT,
            admin_state=True)
        self.bp_list.append(self.port27_bp)

        self.vlan200 = sai_thrift_create_vlan(self.client, vlan_id=200)
        self.vlan_list.append(self.vlan200)
        self.vlan200_member0 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan200,
            bridge_port_id=self.port26_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
        self.vlan_mbr_list.append(self.vlan200_member0)
        self.vlan200_member1 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan200,
            bridge_port_id=self.port27_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
        self.vlan_mbr_list.append(self.vlan200_member1)

        sai_thrift_set_port_attribute(
            self.client, self.port26, port_vlan_id=200)
        sai_thrift_set_port_attribute(
            self.client, self.port27, port_vlan_id=200)

        self.ingr_svi_rif = sai_thrift_create_router_interface(
            self.client,
            type=SAI_ROUTER_INTERFACE_TYPE_VLAN,
            virtual_router_id=self.default_vrf,
            vlan_id=self.vlan100)
        self.rif_list.append(self.ingr_svi_rif)

        self.egr_svi_rif = sai_thrift_create_router_interface(
            self.client,
            type=SAI_ROUTER_INTERFACE_TYPE_VLAN,
            virtual_router_id=self.default_vrf,
            vlan_id=self.vlan200)
        self.rif_list.append(self.egr_svi_rif)

        self.ingr_svi = [self.port24, self.port25]
        self.egr_svi = [self.port26, self.port27]

        self.ingr_svi_dev = [self.dev_port24, self.dev_port25]
        self.egr_svi_dev = [self.dev_port26, self.dev_port27]

        self.svi_nbor_ip = "10.10.30.1"
        self.svi_nbor_mac = "00:33:33:33:33:33"
        self.nat_ip_to_svi = "30.30.30.30"

        self.nat_svi_nhop = sai_thrift_create_next_hop(
            self.client,
            ip=sai_ipaddress(self.svi_nbor_ip),
            router_interface_id=self.egr_svi_rif,
            type=SAI_NEXT_HOP_TYPE_IP)
        self.nhop_list.append(self.nat_svi_nhop)

        self.nat_svi_nbor = sai_thrift_neighbor_entry_t(
            rif_id=self.egr_svi_rif,
            ip_address=sai_ipaddress(self.svi_nbor_ip))
        sai_thrift_create_neighbor_entry(self.client,
                                         self.nat_svi_nbor,
                                         dst_mac_address=self.svi_nbor_mac,
                                         no_host_route=True)
        self.nbor_list.append(self.nat_svi_nbor)

        self.nat_svi_route = sai_thrift_route_entry_t(
            vr_id=self.default_vrf,
            destination=sai_ipprefix(self.svi_nbor_ip + '/32'))
        sai_thrift_create_route_entry(
            self.client, self.nat_svi_route, next_hop_id=self.nat_svi_nhop)
        self.route_list.append(self.nat_svi_route)

        # no-NAT ACL configuration
        action_types = [SAI_ACL_ACTION_TYPE_NO_NAT]
        action_types_list = sai_thrift_s32_list_t(count=len(action_types),
                                                  int32list=action_types)

        acl_action = sai_thrift_acl_action_data_t(
            enable=True,
            parameter=sai_thrift_acl_action_parameter_t(booldata=True))

        bind_points = [SAI_ACL_BIND_POINT_TYPE_ROUTER_INTERFACE]
        bind_points_list = sai_thrift_s32_list_t(count=len(bind_points),
                                                 int32list=bind_points)

        self.ingr_acl_table = sai_thrift_create_acl_table(
            self.client,
            acl_stage=SAI_ACL_STAGE_INGRESS,
            acl_bind_point_type_list=bind_points_list,
            acl_action_type_list=action_types_list,
            field_dst_ip=True)
        self.acl_table_list.append(self.ingr_acl_table)

        self.ingr_acl_counter = sai_thrift_create_acl_counter(
            self.client,
            self.ingr_acl_table,
            enable_packet_count=True)
        self.acl_cntr_list.append(self.ingr_acl_counter)

        ingr_acl_cnt_action = sai_thrift_acl_action_data_t(
            enable=True,
            parameter=sai_thrift_acl_action_parameter_t(
                oid=self.ingr_acl_counter))

        port_nbor_ip_addr = sai_thrift_acl_field_data_t(
            data=sai_thrift_acl_field_data_data_t(ip4=self.port_nbor_ip),
            mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))

        self.ingr_acl_port_entry = sai_thrift_create_acl_entry(
            self.client,
            table_id=self.ingr_acl_table,
            action_no_nat=acl_action,
            action_counter=ingr_acl_cnt_action,
            field_dst_ip=port_nbor_ip_addr)
        self.acl_entry_list.append(self.ingr_acl_port_entry)

        lag_nbor_ip_addr = sai_thrift_acl_field_data_t(
            data=sai_thrift_acl_field_data_data_t(ip4=self.lag_nbor_ip),
            mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))

        self.ingr_acl_lag_entry = sai_thrift_create_acl_entry(
            self.client,
            table_id=self.ingr_acl_table,
            action_no_nat=acl_action,
            action_counter=ingr_acl_cnt_action,
            field_dst_ip=lag_nbor_ip_addr)
        self.acl_entry_list.append(self.ingr_acl_lag_entry)

        svi_nbor_ip_addr = sai_thrift_acl_field_data_t(
            data=sai_thrift_acl_field_data_data_t(ip4=self.svi_nbor_ip),
            mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))

        self.ingr_acl_svi_entry = sai_thrift_create_acl_entry(
            self.client,
            table_id=self.ingr_acl_table,
            action_no_nat=acl_action,
            action_counter=ingr_acl_cnt_action,
            field_dst_ip=svi_nbor_ip_addr)
        self.acl_entry_list.append(self.ingr_acl_svi_entry)

        self.egr_acl_table = sai_thrift_create_acl_table(
            self.client,
            acl_stage=SAI_ACL_STAGE_INGRESS,
            acl_bind_point_type_list=bind_points_list,
            acl_action_type_list=action_types_list,
            field_dst_ip=True)
        self.acl_table_list.append(self.egr_acl_table)

        self.egr_acl_counter = sai_thrift_create_acl_counter(
            self.client,
            self.egr_acl_table,
            enable_packet_count=True)
        self.acl_cntr_list.append(self.egr_acl_counter)

        egr_acl_cnt_action = sai_thrift_acl_action_data_t(
            enable=True,
            parameter=sai_thrift_acl_action_parameter_t(
                oid=self.egr_acl_counter))

        to_port_ip_addr = sai_thrift_acl_field_data_t(
            data=sai_thrift_acl_field_data_data_t(ip4=self.nat_ip_to_port),
            mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))

        self.egr_acl_port_entry = sai_thrift_create_acl_entry(
            self.client,
            table_id=self.egr_acl_table,
            action_no_nat=acl_action,
            action_counter=egr_acl_cnt_action,
            field_dst_ip=to_port_ip_addr)
        self.acl_entry_list.append(self.egr_acl_port_entry)

        to_lag_ip_addr = sai_thrift_acl_field_data_t(
            data=sai_thrift_acl_field_data_data_t(ip4=self.nat_ip_to_lag),
            mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))

        self.egr_acl_lag_entry = sai_thrift_create_acl_entry(
            self.client,
            table_id=self.egr_acl_table,
            action_no_nat=acl_action,
            action_counter=egr_acl_cnt_action,
            field_dst_ip=to_lag_ip_addr)
        self.acl_entry_list.append(self.egr_acl_lag_entry)

        to_svi_ip_addr = sai_thrift_acl_field_data_t(
            data=sai_thrift_acl_field_data_data_t(ip4=self.nat_ip_to_svi),
            mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))

        self.egr_acl_svi_entry = sai_thrift_create_acl_entry(
            self.client,
            table_id=self.egr_acl_table,
            action_no_nat=acl_action,
            action_counter=egr_acl_cnt_action,
            field_dst_ip=to_svi_ip_addr)
        self.acl_entry_list.append(self.egr_acl_svi_entry)

        # no-NAT route configuration
        no_nat_rif = self.port12_rif
        self.no_nat_eport = self.dev_port12

        no_nat_ip = "30.30.30.0"
        self.no_nat_nbor_mac = "00:33:33:33:33:33"

        self.no_nat_nhop = sai_thrift_create_next_hop(
            self.client,
            ip=sai_ipaddress(no_nat_ip),
            router_interface_id=no_nat_rif,
            type=SAI_NEXT_HOP_TYPE_IP)
        self.nhop_list.append(self.no_nat_nhop)

        self.no_nat_nbor = sai_thrift_neighbor_entry_t(
            rif_id=no_nat_rif,
            ip_address=sai_ipaddress(no_nat_ip))
        sai_thrift_create_neighbor_entry(self.client,
                                         self.no_nat_nbor,
                                         dst_mac_address=self.no_nat_nbor_mac,
                                         no_host_route=True)
        self.nbor_list.append(self.no_nat_nbor)

        self.no_nat_route = sai_thrift_route_entry_t(
            vr_id=self.default_vrf,
            destination=sai_ipprefix(no_nat_ip + '/24'))
        sai_thrift_create_route_entry(
            self.client, self.no_nat_route, next_hop_id=self.no_nat_nhop)
        self.route_list.append(self.no_nat_route)