@@ -864,6 +864,12 @@ func BuildTransitVRFs(t *testing.T, dut *ondatra.DUTDevice, ctx context.Context,
864864 gSession .Close (t )
865865}
866866
867+ // Currently not all vendors support repair reencap into multiple tunnels.
868+ // This condition should be removed once all vendors support it.
869+ func repairReencapIntoMultipleBackupTunnels (dut * ondatra.DUTDevice ) bool {
870+ return dut .Vendor () != ondatra .NOKIA
871+ }
872+
867873// BuildRepairVRF generates NH/NHG/IPv4 entries for REPAIR_VRF.
868874func BuildRepairVRF (t * testing.T , dut * ondatra.DUTDevice , ctx context.Context , defaultVRF string , s2NHG uint64 , params ScaleParams ) {
869875 t .Helper ()
@@ -872,15 +878,17 @@ func BuildRepairVRF(t *testing.T, dut *ondatra.DUTDevice, ctx context.Context, d
872878 t .Fatalf ("BuildRepairVRF: generate tunnel dsts: %v" , err )
873879 }
874880
875- nhNhgEntries := []fluent.GRIBIEntry {}
881+ var nhNhgEntries []fluent.GRIBIEntry
876882 nhIdx := uint64 (0 )
877883 for i := 0 ; i < params .NumRepairNHG ; i ++ {
878- if i < params .NumRepairNHG / 2 {
884+ if i < params .NumRepairNHG / 2 || ! repairReencapIntoMultipleBackupTunnels (dut ) {
885+ // Repair NHG points to a single NH.
879886 nhEntry , _ := gribi .NHEntry (NHBaseRepair + nhIdx , "DecapEncap" , defaultVRF , fluent .InstalledInFIB , & gribi.NHOptions {Src : IPv4OuterSrc222 , Dest : tunnelDsts [nhIdx ], VrfName : TransitVRF222Str })
880887 nhgEntry , _ := gribi .NHGEntry (NHGBaseRepair + uint64 (i ), map [uint64 ]uint64 {NHBaseRepair + nhIdx : 1 }, defaultVRF , fluent .InstalledInFIB , & gribi.NHGOptions {BackupNHG : s2NHG })
881888 nhNhgEntries = append (nhNhgEntries , nhEntry , nhgEntry )
882889 nhIdx ++
883890 } else {
891+ // Repair NHG points to two NHs.
884892 nh0 , _ := gribi .NHEntry (NHBaseRepair + nhIdx , "DecapEncap" , defaultVRF , fluent .InstalledInFIB , & gribi.NHOptions {Src : IPv4OuterSrc222 , Dest : tunnelDsts [nhIdx ], VrfName : TransitVRF222Str })
885893 nh1 , _ := gribi .NHEntry (NHBaseRepair + nhIdx + 1 , "DecapEncap" , defaultVRF , fluent .InstalledInFIB , & gribi.NHOptions {Src : IPv4OuterSrc222 , Dest : tunnelDsts [nhIdx + 1 ], VrfName : TransitVRF222Str })
886894 nhgEntry , _ := gribi .NHGEntry (NHGBaseRepair + uint64 (i ), map [uint64 ]uint64 {NHBaseRepair + nhIdx : 1 , NHBaseRepair + nhIdx + 1 : 1 }, defaultVRF , fluent .InstalledInFIB , & gribi.NHGOptions {BackupNHG : s2NHG })
0 commit comments