@@ -552,3 +552,203 @@ TEST(Meta, meta_validate_stats)
552
552
553
553
EXPECT_EQ (SAI_STATUS_INVALID_PARAMETER, m.call_meta_validate_stats (SAI_OBJECT_TYPE_VIRTUAL_ROUTER, vrId, 2 , counter_ids, counters, SAI_STATS_MODE_READ));
554
554
}
555
+
556
+ TEST (Meta, quad_my_sid_entry)
557
+ {
558
+ Meta m (std::make_shared<MetaTestSaiInterface>());
559
+
560
+ sai_object_id_t switchId = 0 ;
561
+
562
+ sai_attribute_t attr;
563
+
564
+ attr.id = SAI_SWITCH_ATTR_INIT_SWITCH;
565
+ attr.value .booldata = true ;
566
+
567
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.create (SAI_OBJECT_TYPE_SWITCH, &switchId, SAI_NULL_OBJECT_ID, 1 , &attr));
568
+
569
+ sai_object_id_t vlanId = 0 ;
570
+
571
+ attr.id = SAI_VLAN_ATTR_VLAN_ID;
572
+ attr.value .u16 = 2 ;
573
+
574
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.create (SAI_OBJECT_TYPE_VLAN, &vlanId, switchId, 1 , &attr));
575
+
576
+ sai_object_id_t vrId = 0 ;
577
+
578
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.create (SAI_OBJECT_TYPE_VIRTUAL_ROUTER, &vrId, switchId, 0 , &attr));
579
+
580
+ sai_attribute_t attrs[2 ];
581
+
582
+ attrs[0 ].id = SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR;
583
+ attrs[0 ].value .s32 = SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E;
584
+
585
+ sai_my_sid_entry_t e;
586
+
587
+ memset (&e, 0 , sizeof (e));
588
+
589
+ e.switch_id = switchId;
590
+ e.vr_id = vrId;
591
+
592
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.create (&e, 1 , attrs));
593
+
594
+ attr.id = SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR;
595
+ attr.value .s32 = SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X;
596
+
597
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.set (&e, &attr));
598
+
599
+ attr.id = SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID;
600
+
601
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.get (&e, 1 , &attr));
602
+
603
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.remove (&e));
604
+ }
605
+
606
+ TEST (Meta, quad_bulk_route_entry)
607
+ {
608
+ Meta m (std::make_shared<MetaTestSaiInterface>());
609
+
610
+ sai_object_id_t switchId = 0 ;
611
+
612
+ sai_attribute_t attr;
613
+
614
+ attr.id = SAI_SWITCH_ATTR_INIT_SWITCH;
615
+ attr.value .booldata = true ;
616
+
617
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.create (SAI_OBJECT_TYPE_SWITCH, &switchId, SAI_NULL_OBJECT_ID, 1 , &attr));
618
+
619
+ sai_object_id_t vlanId = 0 ;
620
+
621
+ attr.id = SAI_VLAN_ATTR_VLAN_ID;
622
+ attr.value .u16 = 2 ;
623
+
624
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.create (SAI_OBJECT_TYPE_VLAN, &vlanId, switchId, 1 , &attr));
625
+
626
+ sai_object_id_t vrId = 0 ;
627
+
628
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.create (SAI_OBJECT_TYPE_VIRTUAL_ROUTER, &vrId, switchId, 0 , &attr));
629
+
630
+ // create
631
+
632
+ sai_route_entry_t e[2 ];
633
+
634
+ memset (e, 0 , sizeof (e));
635
+
636
+ e[0 ].switch_id = switchId;
637
+ e[1 ].switch_id = switchId;
638
+
639
+ e[0 ].vr_id = vrId;
640
+ e[1 ].vr_id = vrId;
641
+
642
+ e[0 ].destination .addr .ip4 = 1 ;
643
+ e[1 ].destination .addr .ip4 = 2 ;
644
+
645
+ uint32_t attr_count[2 ];
646
+
647
+ attr_count[0 ] = 0 ;
648
+ attr_count[1 ] = 0 ;
649
+
650
+ sai_attribute_t list1[2 ];
651
+ sai_attribute_t list2[2 ];
652
+
653
+ std::vector<const sai_attribute_t *> alist;
654
+
655
+ alist.push_back (list1);
656
+ alist.push_back (list2);
657
+
658
+ const sai_attribute_t **attr_list = alist.data ();
659
+
660
+ sai_status_t statuses[2 ];
661
+
662
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.bulkCreate (2 , e, attr_count, attr_list, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
663
+
664
+ // set
665
+
666
+ sai_attribute_t setlist[2 ];
667
+
668
+ setlist[0 ].id = SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION;
669
+ setlist[0 ].value .s32 = SAI_PACKET_ACTION_DROP;
670
+
671
+ setlist[1 ].id = SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION;
672
+ setlist[1 ].value .s32 = SAI_PACKET_ACTION_DROP;
673
+
674
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.bulkSet (2 , e, setlist, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
675
+
676
+ // remove
677
+
678
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.bulkRemove (2 , e, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
679
+ }
680
+
681
+ TEST (Meta, quad_bulk_nat_entry)
682
+ {
683
+ Meta m (std::make_shared<MetaTestSaiInterface>());
684
+
685
+ sai_object_id_t switchId = 0 ;
686
+
687
+ sai_attribute_t attr;
688
+
689
+ attr.id = SAI_SWITCH_ATTR_INIT_SWITCH;
690
+ attr.value .booldata = true ;
691
+
692
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.create (SAI_OBJECT_TYPE_SWITCH, &switchId, SAI_NULL_OBJECT_ID, 1 , &attr));
693
+
694
+ sai_object_id_t vlanId = 0 ;
695
+
696
+ attr.id = SAI_VLAN_ATTR_VLAN_ID;
697
+ attr.value .u16 = 2 ;
698
+
699
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.create (SAI_OBJECT_TYPE_VLAN, &vlanId, switchId, 1 , &attr));
700
+
701
+ sai_object_id_t vrId = 0 ;
702
+
703
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.create (SAI_OBJECT_TYPE_VIRTUAL_ROUTER, &vrId, switchId, 0 , &attr));
704
+
705
+ // create
706
+
707
+ sai_nat_entry_t e[2 ];
708
+
709
+ memset (e, 0 , sizeof (e));
710
+
711
+ e[0 ].switch_id = switchId;
712
+ e[1 ].switch_id = switchId;
713
+
714
+ e[0 ].vr_id = vrId;
715
+ e[1 ].vr_id = vrId;
716
+
717
+ e[0 ].nat_type = SAI_NAT_TYPE_SOURCE_NAT;
718
+ e[1 ].nat_type = SAI_NAT_TYPE_DESTINATION_NAT;
719
+
720
+ uint32_t attr_count[2 ];
721
+
722
+ attr_count[0 ] = 0 ;
723
+ attr_count[1 ] = 0 ;
724
+
725
+ sai_attribute_t list1[2 ];
726
+ sai_attribute_t list2[2 ];
727
+
728
+ std::vector<const sai_attribute_t *> alist;
729
+
730
+ alist.push_back (list1);
731
+ alist.push_back (list2);
732
+
733
+ const sai_attribute_t **attr_list = alist.data ();
734
+
735
+ sai_status_t statuses[2 ];
736
+
737
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.bulkCreate (2 , e, attr_count, attr_list, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
738
+
739
+ // set
740
+
741
+ sai_attribute_t setlist[2 ];
742
+
743
+ setlist[0 ].id = SAI_NAT_ENTRY_ATTR_NAT_TYPE;
744
+ setlist[0 ].value .s32 = SAI_NAT_TYPE_NONE;
745
+
746
+ setlist[1 ].id = SAI_NAT_ENTRY_ATTR_NAT_TYPE;
747
+ setlist[1 ].value .s32 = SAI_NAT_TYPE_NONE;
748
+
749
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.bulkSet (2 , e, setlist, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
750
+
751
+ // remove
752
+
753
+ EXPECT_EQ (SAI_STATUS_SUCCESS, m.bulkRemove (2 , e, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
754
+ }
0 commit comments