master
go 81 lines 2.22 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package panos
4
5 import (
6 "regexp"
7 "strings"
8 )
9
10 func systemLabelValues(info systemInfo) []string {
11 return []string{
12 labelValue(firstNonEmpty(info.Hostname, info.DeviceName), "unknown"),
13 labelValue(info.Model, "unknown"),
14 labelValue(info.Serial, "unknown"),
15 labelValue(info.SWVersion, "unknown"),
16 }
17 }
18
19 func environmentLabelValues(sensorType string, entry environmentEntry) []string {
20 return []string{
21 labelValue(sensorType, "unknown"),
22 labelValue(firstNonEmpty(entry.Slot, "unknown"), "unknown"),
23 labelValue(environmentSensorName(entry), "unknown"),
24 }
25 }
26
27 func licenseLabelValues(entry licenseEntry) []string {
28 return []string{
29 labelValue(firstNonEmpty(entry.Feature, "unknown"), "unknown"),
30 labelValue(entry.Description, "unknown"),
31 }
32 }
33
34 func ipsecTunnelLabelValues(tunnel ipsecTunnel) []string {
35 return []string{
36 labelValue(firstNonEmpty(tunnel.Name, "unknown"), "unknown"),
37 labelValue(tunnel.Gateway, "unknown"),
38 labelValue(tunnel.Remote, "unknown"),
39 labelValue(firstNonEmpty(tunnel.TID, tunnel.ISPI, tunnel.OSPI), "unknown"),
40 labelValue(tunnel.Protocol, "unknown"),
41 labelValue(tunnel.Encryption, "unknown"),
42 }
43 }
44
45 func peerLabelValues(peer bgpPeer) []string {
46 return []string{
47 labelValue(firstNonEmpty(peer.VR, "default"), "default"),
48 labelValue(peer.PeerAddress, "unknown"),
49 labelValue(peer.LocalAddress, "unknown"),
50 labelValue(peer.RemoteAS, "unknown_as"),
51 labelValue(peer.PeerGroup, "unknown_group"),
52 }
53 }
54
55 func prefixLabelValues(peer bgpPeer, counter bgpPrefixCounter) []string {
56 values := append([]string(nil), peerLabelValues(peer)...)
57 values = append(values, labelValue(counter.AFI, "unknown"), labelValue(counter.SAFI, "unknown"))
58 return values
59 }
60
61 func labelValue(value, fallback string) string {
62 value = strings.TrimSpace(value)
63 if value == "" {
64 return fallback
65 }
66 return value
67 }
68
69 var invalidIDChars = regexp.MustCompile(`[^a-zA-Z0-9_]+`)
70
71 func cleanID(value string) string {
72 value = strings.ToLower(strings.TrimSpace(value))
73 value = strings.ReplaceAll(value, ".", "_")
74 value = strings.ReplaceAll(value, ":", "_")
75 value = invalidIDChars.ReplaceAllString(value, "_")
76 value = strings.Trim(value, "_")
77 if value == "" {
78 return "unknown"
79 }
80 return value
81 }