master
go 52 lines 1.16 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package l2topology
4
5 import (
6 "strconv"
7 "strings"
8 )
9
10 func bridgePortObservationKey(port bridgePortRef) string {
11 base := bridgePortObservationBaseKey(port)
12 if base == "" {
13 return ""
14 }
15 return base + keySep + "vlan:"
16 }
17
18 func bridgePortObservationVLANKey(port bridgePortRef) string {
19 base := bridgePortObservationBaseKey(port)
20 if base == "" {
21 return ""
22 }
23 return base + keySep + "vlan:" + strings.ToLower(strings.TrimSpace(port.vlanID))
24 }
25
26 func bridgePortObservationBaseKey(port bridgePortRef) string {
27 deviceID := strings.TrimSpace(port.deviceID)
28 if deviceID == "" {
29 return ""
30 }
31 if port.ifIndex > 0 {
32 return deviceID + keySep + "if:" + strconv.Itoa(port.ifIndex)
33 }
34 name := firstNonEmpty(port.ifName, port.bridgePort)
35 name = normalizeInterfaceNameForLookup(name)
36 if name == "" {
37 return ""
38 }
39 return deviceID + keySep + "name:" + name
40 }
41
42 func addBridgePortObservationKeys(set map[string]struct{}, port bridgePortRef) {
43 if set == nil {
44 return
45 }
46 if key := bridgePortObservationKey(port); key != "" {
47 set[key] = struct{}{}
48 }
49 if key := bridgePortObservationVLANKey(port); key != "" {
50 set[key] = struct{}{}
51 }
52 }