master
go 66 lines 2.23 KB
Raw
1 // Unless explicitly stated otherwise all files in this repository are licensed
2 // under the Apache License Version 2.0.
3 // This product includes software developed at Datadog (https://www.datadoghq.com/).
4
5 package ddprofiledefinition
6
7 type TopologyKind string
8
9 const (
10 KindLldpLocPort TopologyKind = "lldp_loc_port"
11 KindLldpLocManAddr TopologyKind = "lldp_loc_man_addr"
12 KindLldpRem TopologyKind = "lldp_rem"
13 KindLldpRemManAddr TopologyKind = "lldp_rem_man_addr"
14 KindLldpRemManAddrCompat TopologyKind = "lldp_rem_man_addr_compat"
15 KindCdpCache TopologyKind = "cdp_cache"
16 KindIfName TopologyKind = "if_name"
17 KindIfStatus TopologyKind = "if_status"
18 KindIfDuplex TopologyKind = "if_duplex"
19 KindIpIfIndex TopologyKind = "ip_if_index"
20 KindBridgePortIfIndex TopologyKind = "bridge_port_if_index"
21 KindFdbEntry TopologyKind = "fdb_entry"
22 KindQbridgeFdbEntry TopologyKind = "qbridge_fdb_entry"
23 KindQbridgeVlanEntry TopologyKind = "qbridge_vlan_entry"
24 KindStpPort TopologyKind = "stp_port"
25 KindVtpVlan TopologyKind = "vtp_vlan"
26 KindArpEntry TopologyKind = "arp_entry"
27 KindArpLegacyEntry TopologyKind = "arp_legacy_entry"
28 )
29
30 var validTopologyKinds = map[TopologyKind]struct{}{
31 KindLldpLocPort: {},
32 KindLldpLocManAddr: {},
33 KindLldpRem: {},
34 KindLldpRemManAddr: {},
35 KindLldpRemManAddrCompat: {},
36 KindCdpCache: {},
37 KindIfName: {},
38 KindIfStatus: {},
39 KindIfDuplex: {},
40 KindIpIfIndex: {},
41 KindBridgePortIfIndex: {},
42 KindFdbEntry: {},
43 KindQbridgeFdbEntry: {},
44 KindQbridgeVlanEntry: {},
45 KindStpPort: {},
46 KindVtpVlan: {},
47 KindArpEntry: {},
48 KindArpLegacyEntry: {},
49 }
50
51 func IsValidTopologyKind(kind TopologyKind) bool {
52 _, ok := validTopologyKinds[kind]
53 return ok
54 }
55
56 type TopologyConfig struct {
57 Kind TopologyKind `yaml:"kind" json:"kind"`
58 MetricsConfig `yaml:",inline" json:",inline"`
59 }
60
61 func (c TopologyConfig) Clone() TopologyConfig {
62 return TopologyConfig{
63 Kind: c.Kind,
64 MetricsConfig: c.MetricsConfig.Clone(),
65 }
66 }