42e3c0c925
Made-with: Cursor
34 lines
916 B
Go
34 lines
916 B
Go
package scans
|
|
|
|
import "strconv"
|
|
|
|
// PortFDBLocationKey — ключ «где в FDB»: IP коммутатора, порт и VLAN (Q-BRIDGE).
|
|
func PortFDBLocationKey(ip string, ifIndex, bridgePort, vlan int) string {
|
|
return ip + "|" + strconv.Itoa(ifIndex) + "|" + strconv.Itoa(bridgePort) + "|" + strconv.Itoa(vlan)
|
|
}
|
|
|
|
// ClassifyPortKind по числу уникальных MAC на порту и порогам (ожидается accessMax < trunkMin).
|
|
func ClassifyPortKind(macsOnPort, accessMax, trunkMin int) string {
|
|
if macsOnPort <= accessMax {
|
|
return "access"
|
|
}
|
|
if macsOnPort >= trunkMin {
|
|
return "strong_transit"
|
|
}
|
|
return "ambiguous"
|
|
}
|
|
|
|
// PortKindRank для сортировки: access → ambiguous → strong_transit.
|
|
func PortKindRank(kind string) int {
|
|
switch kind {
|
|
case "access":
|
|
return 0
|
|
case "ambiguous":
|
|
return 1
|
|
case "strong_transit":
|
|
return 2
|
|
default:
|
|
return 9
|
|
}
|
|
}
|