Skip to content

Commit dfba062

Browse files
committed
Preserve unparsed bridge tc filters
1 parent 22b8648 commit dfba062

2 files changed

Lines changed: 10 additions & 5 deletions

File tree

lib/network/bridge_linux.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -950,15 +950,21 @@ func planOrphanedBridgeTC(liveTapIndexes map[int]bool, filters []bridgeFilter, c
950950
return nil, nil, false
951951
}
952952

953-
liveClassIDs := make(map[string]bool)
953+
protectedClassIDs := make(map[string]bool)
954954
staleFilters := make([]bridgeFilter, 0)
955955
for _, filter := range filters {
956956
if filter.handle == "" || filter.flowID == "" {
957957
continue
958958
}
959+
if filter.rtIif < 0 {
960+
if classID, ok := minorClassID(filter.flowID); ok {
961+
protectedClassIDs[classID] = true
962+
}
963+
continue
964+
}
959965
if liveTapIndexes[filter.rtIif] {
960966
if classID, ok := minorClassID(filter.flowID); ok {
961-
liveClassIDs[classID] = true
967+
protectedClassIDs[classID] = true
962968
}
963969
continue
964970
}
@@ -974,7 +980,7 @@ func planOrphanedBridgeTC(liveTapIndexes map[int]bool, filters []bridgeFilter, c
974980
if !ok {
975981
continue
976982
}
977-
if !liveClassIDs[classID] {
983+
if !protectedClassIDs[classID] {
978984
staleClasses = append(staleClasses, fullClassID)
979985
}
980986
}

lib/network/bridge_linux_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,8 @@ func TestPlanOrphanedBridgeTC(t *testing.T) {
5151
assert.True(t, safe)
5252
assert.Equal(t, []bridgeFilter{
5353
{handle: "0x2", flowID: "1:b001", rtIif: 57},
54-
{handle: "0x3", flowID: "1:000c", rtIif: -1},
5554
}, staleFilters)
56-
assert.Equal(t, []string{"1:b001", "1:000c", "1:9999"}, staleClasses)
55+
assert.Equal(t, []string{"1:b001", "1:9999"}, staleClasses)
5756
}
5857

5958
func TestPlanOrphanedBridgeTCBailsWhenNoRTIIFParses(t *testing.T) {

0 commit comments

Comments
 (0)