fix(bgp): отображать только подтверждённые показатели сессий

This commit is contained in:
Denozordec committed 2026-09-30 16:56:28 +07:00
1 parent 7046808429
commit 8fdc4b917b
13 files changed
+148 -169

No files matched your search

+4 -4
View File
@@ -1,11 +1,11 @@
import type { BgpSessionRow } from "@/lib/bgp/types"
export function fmtBgpNum(n: number): string {
export function fmtBgpNum(n: number | null): string {
if (n === null) return "—"
if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`
if (n >= 1_000) return `${(n / 1_000).toFixed(0)}k`
return String(n)
}
export function rscBgpSnippet(s: BgpSessionRow): string {
return `/routing bgp connection\nadd name=peer-as${s.remoteAs} remote.address=${s.peerIp}/32 \\\n remote.as=${s.remoteAs} local.role=${s.type === "eBGP" ? "ebgp" : "ibgp"} \\\n output.filter-chain=export-filter input.filter=import-filter \\\n routing-table=main`
export function sumBgpCounters(values: (number | null)[]): number | null {
return values.some(n => n === null) ? null : values.reduce<number>((sum, n) => sum + (n ?? 0), 0)
}
+3 -2
View File
@@ -7,8 +7,9 @@ export const bgpSessionSchema = z.object({
serverName: z.string(), serverSite: z.string(), serverCountry: z.string(),
name: z.string(), peerIp: z.string(), remoteAs: counter, localAs: counter,
localId: z.string(), remoteId: z.string(), state: z.string().trim().min(1), type: z.enum(["eBGP", "iBGP"]),
uptime: z.string().nullable(), holdTime: counter, keepalive: counter,
prefixesRx: counter, prefixesTx: counter, inputMessages: counter, outputMessages: counter,
uptime: z.string().nullable(), holdTime: counter.nullable(), keepalive: counter.nullable(),
prefixesRx: counter.nullable(), prefixesTx: counter.nullable(), inputMessages: counter.nullable(), outputMessages: counter.nullable(),
afi: z.string().nullable().optional(),
capabilities: z.array(z.string()), lastError: z.string().nullable(),
})
export const bgpCatalogSchema = z.object({
+8 -8
View File
@@ -14,15 +14,15 @@ export interface BgpSessionRow {
description: string
state: BgpState
type: BgpType
afi: BgpAfi
afi: string
uptime: string | null
holdTime: number
keepalive: number
prefixesRx: number
prefixesTx: number
prefixesActive: number
inputMessages: number
outputMessages: number
holdTime: number | null
keepalive: number | null
prefixesRx: number | null
prefixesTx: number | null
prefixesActive: number | null
inputMessages: number | null
outputMessages: number | null
capabilities: string[]
lastError: string | null
}