fix(snmp): OCTET STRING из 6 байт показывать как MAC (aa:bb:...), не 0x...

Made-with: Cursor
This commit is contained in:
Луценко Андрей Анатольевич
2026-04-10 14:58:17 +10:00
parent 1df5ddf67a
commit 29bd136cea
+11 -3
View File
@@ -203,8 +203,8 @@ func probeSNMPAndLLDP(ip, community string, checkedAt time.Time, timeoutMS int)
return out, probeLLDP(client, ip, checkedAt)
}
func snmpValueToString(v any) string {
if b, ok := v.([]byte); ok {
// snmpBytesToDisplay строка для OCTET STRING SNMP: UTF-8 текст, иначе MAC (6 байт) или 0x+hex.
func snmpBytesToDisplay(b []byte) string {
if len(b) == 0 {
return ""
}
@@ -214,8 +214,16 @@ func snmpValueToString(v any) string {
return s
}
}
// Chassis ID / port ID в LLDP часто приходят как OCTET STRING (MAC и т.д.) — не UTF-8
// LLDP chassis/port id часто — MAC из 6 байт (не UTF-8).
if len(b) == 6 {
return fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x", b[0], b[1], b[2], b[3], b[4], b[5])
}
return "0x" + hex.EncodeToString(b)
}
func snmpValueToString(v any) string {
if b, ok := v.([]byte); ok {
return snmpBytesToDisplay(b)
}
return strings.TrimSpace(fmt.Sprint(v))
}