fix(bgp): отображать только подтверждённые показатели сессий
This commit is contained in:
1 parent
7046808429
commit
8fdc4b917b
13 files changed
+148
-169
No files matched your search
@@ -135,3 +135,33 @@ export function parseBgpSessions(server: ServerRow, raw: RosBgpSession[]): BgpSe
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/** Каталог не заменяет отсутствующие показатели значениями по умолчанию старого API. */
|
||||
export type BgpCatalogSessionRead = Omit<BgpSessionRead, "holdTime" | "keepalive" | "prefixesRx" | "prefixesTx" | "inputMessages" | "outputMessages"> & {
|
||||
holdTime: number | null; keepalive: number | null; prefixesRx: number | null; prefixesTx: number | null;
|
||||
inputMessages: number | null; outputMessages: number | null; afi: string | null;
|
||||
}
|
||||
function readCounter(value: string | undefined): number | null {
|
||||
if (value === undefined || !/^\d+$/.test(value.trim())) return null
|
||||
const parsed = Number(value)
|
||||
return Number.isSafeInteger(parsed) ? parsed : null
|
||||
}
|
||||
function readTimer(value: string | undefined): number | null {
|
||||
if (value === "0" || value === "infinity") return 0
|
||||
if (!value || !/^(?:\d+(?:w|d|h|ms|m|s))+$/.test(value)) return null
|
||||
return parseDuration(value)
|
||||
}
|
||||
export function parseBgpCatalogSessions(server: ServerRow, raw: RosBgpSession[]): BgpCatalogSessionRead[] {
|
||||
return parseBgpSessions(server, raw).map((session, index) => {
|
||||
const s = raw[index]
|
||||
return { ...session,
|
||||
state: s.established === "true" ? "Established" : s.state?.trim() ? detectState(s) : "Unknown",
|
||||
holdTime: readTimer(s["hold-time"]) ?? readCounter(s["active-holdtime"]),
|
||||
keepalive: readTimer(s["keepalive-time"]),
|
||||
prefixesRx: readCounter(s["prefix-count"]), prefixesTx: null,
|
||||
inputMessages: readCounter(s["remote.messages"] ?? s["total-messages-received"]),
|
||||
outputMessages: readCounter(s["local.messages"] ?? s["total-messages-sent"]),
|
||||
afi: s["remote.afi"]?.trim() || null,
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user