def priorityTaggingTest()

in ptf/saivlan.py [0:0]


    def priorityTaggingTest(self):
        """
        Verifies forwarding of priority tagged packets on port and LAG
        """
        print("\npriorityTaggingTest()")
        mac5 = '00:55:55:55:55:55'
        mac6 = '00:66:66:66:66:66'
        mac7 = '00:77:77:77:77:77'
        mac8 = '00:88:88:88:88:88'
        mac_action = SAI_PACKET_ACTION_FORWARD

        vlan_member1 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan20,
            bridge_port_id=self.port26_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_TAGGED)
        vlan_member2 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan20,
            bridge_port_id=self.port27_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)

        fdb_entry1 = sai_thrift_fdb_entry_t(
            switch_id=self.switch_id,
            mac_address=mac5,
            bv_id=self.vlan10)
        sai_thrift_create_fdb_entry(
            self.client,
            fdb_entry1,
            type=SAI_FDB_ENTRY_TYPE_STATIC,
            bridge_port_id=self.lag1_bp,
            packet_action=mac_action)
        fdb_entry2 = sai_thrift_fdb_entry_t(
            switch_id=self.switch_id,
            mac_address=mac6,
            bv_id=self.vlan20)
        sai_thrift_create_fdb_entry(
            self.client,
            fdb_entry2,
            type=SAI_FDB_ENTRY_TYPE_STATIC,
            bridge_port_id=self.lag2_bp,
            packet_action=mac_action)
        fdb_entry3 = sai_thrift_fdb_entry_t(
            switch_id=self.switch_id,
            mac_address=mac7,
            bv_id=self.vlan20)
        sai_thrift_create_fdb_entry(
            self.client,
            fdb_entry3,
            type=SAI_FDB_ENTRY_TYPE_STATIC,
            bridge_port_id=self.port26_bp,
            packet_action=mac_action)
        fdb_entry4 = sai_thrift_fdb_entry_t(
            switch_id=self.switch_id,
            mac_address=mac8,
            bv_id=self.vlan20)
        sai_thrift_create_fdb_entry(
            self.client,
            fdb_entry4,
            type=SAI_FDB_ENTRY_TYPE_STATIC,
            bridge_port_id=self.port27_bp,
            packet_action=mac_action)

        try:
            # access port testing
            pkt = simple_udp_packet(eth_dst='00:33:33:33:33:33',
                                    eth_src='00:11:11:11:11:11',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64,
                                    pktlen=104)
            exp_pkt = simple_udp_packet(eth_dst='00:33:33:33:33:33',
                                        eth_src='00:11:11:11:11:11',
                                        ip_ttl=64,
                                        pktlen=100)
            print("Sending priority tagged packet on access port %d -> "
                  "access port %d" % (self.dev_port0, self.dev_port24))
            send_packet(self, self.dev_port0, pkt)
            verify_packet(self, exp_pkt, self.dev_port24)
            self.i_pkt_count += 1
            self.e_pkt_count += 1

            pkt = simple_udp_packet(eth_dst='00:22:22:22:22:22',
                                    eth_src='00:11:11:11:11:11',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64)
            exp_pkt = simple_udp_packet(eth_dst='00:22:22:22:22:22',
                                        eth_src='00:11:11:11:11:11',
                                        dl_vlan_enable=True,
                                        vlan_vid=10,
                                        ip_ttl=64)
            print("Sending priority tagged packet on access port %d -> "
                  "trunk port %d" % (self.dev_port0, self.dev_port1))
            send_packet(self, self.dev_port0, pkt)
            verify_packet(self, exp_pkt, self.dev_port1)
            self.i_pkt_count += 1
            self.e_pkt_count += 1

            # access port testing LAG
            pkt = simple_udp_packet(eth_dst='00:33:33:33:33:33',
                                    eth_src='00:55:55:55:55:55',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64,
                                    pktlen=104)
            exp_pkt = simple_udp_packet(eth_dst='00:33:33:33:33:33',
                                        eth_src='00:55:55:55:55:55',
                                        ip_ttl=64,
                                        pktlen=100)
            print("Sending priority tagged packet on access lag1 -> "
                  "access port %d" % (self.dev_port24))
            send_packet(self, self.dev_port4, pkt)
            verify_packet(self, exp_pkt, self.dev_port24)
            self.i_pkt_count += 1
            self.e_pkt_count += 1

            pkt = simple_udp_packet(eth_dst='00:22:22:22:22:22',
                                    eth_src='00:55:55:55:55:55',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64)
            exp_pkt = simple_udp_packet(eth_dst='00:22:22:22:22:22',
                                        eth_src='00:55:55:55:55:55',
                                        dl_vlan_enable=True,
                                        vlan_vid=10,
                                        ip_ttl=64)
            print("Sending priority tagged packet on access lag1 -> "
                  "trunk port %d" % (self.dev_port1))
            send_packet(self, self.dev_port4, pkt)
            verify_packet(self, exp_pkt, self.dev_port1)
            self.i_pkt_count += 1
            self.e_pkt_count += 1

            # trunk port testing
            pkt = simple_udp_packet(eth_dst='00:44:44:44:44:44',
                                    eth_src='00:22:22:22:22:22',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64)
            print("Sending priority tagged packet on trunk port %d to trunk, "
                  "dropped" % (self.dev_port1))
            send_packet(self, self.dev_port1, pkt)
            verify_no_other_packets(self, timeout=1)

            pkt = simple_udp_packet(eth_dst='00:11:11:11:11:11',
                                    eth_src='00:22:22:22:22:22',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64)
            print("Sending priority tagged packet on trunk port %d to access, "
                  "dropped" % (self.dev_port1))
            send_packet(self, self.dev_port1, pkt)
            verify_no_other_packets(self, timeout=1)

            # trunk port testing LAG
            pkt = simple_udp_packet(eth_dst='00:44:44:44:44:44',
                                    eth_src='00:66:66:66:66:66',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64)
            print("Sending priority tagged packet on trunk lag2 to trunk, "
                  "dropped")
            send_packet(self, self.dev_port7, pkt)
            verify_no_other_packets(self, timeout=1)

            pkt = simple_udp_packet(eth_dst='00:11:11:11:11:11',
                                    eth_src='00:66:66:66:66:66',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64)
            print("Sending priority tagged packet on trunk lag2 to access, "
                  "dropped")
            send_packet(self, self.dev_port7, pkt)
            verify_no_other_packets(self, timeout=1)

            print("Update native vlan of trunk lag2 with vlan 20")
            sai_thrift_set_lag_attribute(
                self.client, self.lag2, port_vlan_id=20)

            print("Update native vlan of trunk port %d with vlan 10" % (
                self.dev_port1))
            sai_thrift_set_port_attribute(
                self.client, self.port1, port_vlan_id=10)

            pkt = simple_udp_packet(eth_dst='00:44:44:44:44:44',
                                    eth_src='00:22:22:22:22:22',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64)
            exp_pkt = simple_udp_packet(eth_dst='00:44:44:44:44:44',
                                        eth_src='00:22:22:22:22:22',
                                        dl_vlan_enable=True,
                                        vlan_vid=10,
                                        ip_ttl=64)
            print("Sending priority tagged packet on trunk port %d -> "
                  "trunk port %d" % (self.dev_port1, self.dev_port25))
            send_packet(self, self.dev_port1, pkt)
            verify_packet(self, exp_pkt, self.dev_port25)
            self.i_pkt_count += 1
            self.e_pkt_count += 1

            pkt = simple_udp_packet(eth_dst='00:77:77:77:77:77',
                                    eth_src='00:66:66:66:66:66',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64)
            exp_pkt = simple_udp_packet(eth_dst='00:77:77:77:77:77',
                                        eth_src='00:66:66:66:66:66',
                                        dl_vlan_enable=True,
                                        vlan_vid=20,
                                        ip_ttl=64)
            print("Sending priority tagged packet on trunk lag2 -> "
                  "trunk port %d" % (self.dev_port26))
            send_packet(self, self.dev_port7, pkt)
            verify_packet(self, exp_pkt, self.dev_port26)

            pkt = simple_udp_packet(eth_dst='00:11:11:11:11:11',
                                    eth_src='00:22:22:22:22:22',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64,
                                    pktlen=104)
            exp_pkt = simple_udp_packet(eth_dst='00:11:11:11:11:11',
                                        eth_src='00:22:22:22:22:22',
                                        ip_ttl=64,
                                        pktlen=100)
            print("Sending priority tagged packet on trunk port %d -> "
                  "access port %d" % (self.dev_port1, self.dev_port0))
            send_packet(self, self.dev_port1, pkt)
            verify_packet(self, exp_pkt, self.dev_port0)
            self.i_pkt_count += 1
            self.e_pkt_count += 1

            pkt = simple_udp_packet(eth_dst='00:88:88:88:88:88',
                                    eth_src='00:66:66:66:66:66',
                                    dl_vlan_enable=True,
                                    vlan_vid=0,
                                    ip_ttl=64,
                                    pktlen=104)
            exp_pkt = simple_udp_packet(eth_dst='00:88:88:88:88:88',
                                        eth_src='00:66:66:66:66:66',
                                        ip_ttl=64,
                                        pktlen=100)
            print("Sending priority tagged packet on trunk lag2 -> "
                  "access port %d" % (self.dev_port27))
            send_packet(self, self.dev_port7, pkt)
            verify_packet(self, exp_pkt, self.dev_port27)
        finally:
            sai_thrift_set_port_attribute(
                self.client, self.port1, port_vlan_id=1)
            sai_thrift_set_lag_attribute(
                self.client, self.lag2, port_vlan_id=1)

            sai_thrift_remove_fdb_entry(self.client, fdb_entry1)
            sai_thrift_remove_fdb_entry(self.client, fdb_entry2)
            sai_thrift_remove_fdb_entry(self.client, fdb_entry3)
            sai_thrift_remove_fdb_entry(self.client, fdb_entry4)

            sai_thrift_remove_vlan_member(self.client, vlan_member1)
            sai_thrift_remove_vlan_member(self.client, vlan_member2)