feat: MAC lookup in scan FDB (API mac-locations, UI table, index)
Made-with: Cursor
This commit is contained in:
@@ -364,48 +364,8 @@ func snmpNumericString(v any) string {
|
||||
}
|
||||
}
|
||||
|
||||
// normalizeMACKey приводит MAC к виду aa:bb:cc:dd:ee:ff для сопоставления FDB и ARP.
|
||||
func normalizeMACKey(s string) string {
|
||||
s = strings.ToLower(strings.TrimSpace(s))
|
||||
if s == "" {
|
||||
return ""
|
||||
}
|
||||
s = strings.ReplaceAll(s, "-", ":")
|
||||
if strings.Count(s, ":") == 5 {
|
||||
parts := strings.Split(s, ":")
|
||||
if len(parts) != 6 {
|
||||
return ""
|
||||
}
|
||||
var b [6]byte
|
||||
for i, p := range parts {
|
||||
n, err := strconv.ParseUint(strings.TrimSpace(p), 16, 8)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
b[i] = byte(n)
|
||||
}
|
||||
return fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x", b[0], b[1], b[2], b[3], b[4], b[5])
|
||||
}
|
||||
if strings.HasPrefix(s, "0x") {
|
||||
h := strings.TrimPrefix(s, "0x")
|
||||
h = strings.ReplaceAll(h, ":", "")
|
||||
if len(h) != 12 {
|
||||
return ""
|
||||
}
|
||||
raw, err := hex.DecodeString(h)
|
||||
if err != nil || len(raw) != 6 {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x", raw[0], raw[1], raw[2], raw[3], raw[4], raw[5])
|
||||
}
|
||||
if len(s) == 12 {
|
||||
raw, err := hex.DecodeString(s)
|
||||
if err != nil || len(raw) != 6 {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x", raw[0], raw[1], raw[2], raw[3], raw[4], raw[5])
|
||||
}
|
||||
return ""
|
||||
return NormalizeMAC(s)
|
||||
}
|
||||
|
||||
func dottedDecimalToMACTail(s string) string {
|
||||
|
||||
Reference in New Issue
Block a user