-
Notifications
You must be signed in to change notification settings - Fork 21
/
udm.go
206 lines (199 loc) · 9.97 KB
/
udm.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
package unifi
// UDM represents all the data from the Ubiquiti Controller for a Unifi Dream Machine.
// The UDM shares several structs/type-data with USW and USG.
type UDM struct {
site *Site
SourceName string `json:"-"`
SiteID string `json:"site_id"`
SiteName string `json:"-"`
Mac string `json:"mac"`
Adopted FlexBool `json:"adopted"`
Serial string `json:"serial"`
IP string `json:"ip"`
Uptime FlexInt `json:"uptime"`
Model string `json:"model"`
Version string `json:"version"`
Name string `json:"name"`
Default FlexBool `json:"default"`
Locating FlexBool `json:"locating"`
Type string `json:"type"`
Unsupported FlexBool `json:"unsupported"`
UnsupportedReason FlexInt `json:"unsupported_reason"`
DiscoveredVia string `json:"discovered_via"`
AdoptIP string `json:"adopt_ip"`
AdoptURL string `json:"adopt_url"`
State FlexInt `json:"state"`
AdoptStatus FlexInt `json:"adopt_status"`
UpgradeState FlexInt `json:"upgrade_state"`
LastSeen FlexInt `json:"last_seen"`
AdoptableWhenUpgraded FlexBool `json:"adoptable_when_upgraded"`
Cfgversion string `json:"cfgversion"`
ConfigNetwork *ConfigNetwork `json:"config_network"`
VwireTable []interface{} `json:"vwire_table"`
Dot1XPortctrlEnabled FlexBool `json:"dot1x_portctrl_enabled"`
JumboframeEnabled FlexBool `json:"jumboframe_enabled"`
FlowctrlEnabled FlexBool `json:"flowctrl_enabled"`
StpVersion string `json:"stp_version"`
StpPriority FlexInt `json:"stp_priority"`
PowerSourceCtrlEnabled FlexBool `json:"power_source_ctrl_enabled"`
LicenseState string `json:"license_state"`
ID string `json:"_id"`
DeviceID string `json:"device_id"`
AdoptState FlexInt `json:"adopt_state"`
AdoptTries FlexInt `json:"adopt_tries"`
AdoptManual FlexBool `json:"adopt_manual"`
InformURL string `json:"inform_url"`
InformIP string `json:"inform_ip"`
RequiredVersion string `json:"required_version"`
BoardRev FlexInt `json:"board_rev"`
EthernetTable []*EthernetTable `json:"ethernet_table"`
PortTable []Port `json:"port_table"`
EthernetOverrides []*EthernetOverrides `json:"ethernet_overrides"`
UsgCaps FlexInt `json:"usg_caps"`
HasSpeaker FlexBool `json:"has_speaker"`
HasEth1 FlexBool `json:"has_eth1"`
FwCaps FlexInt `json:"fw_caps"`
HwCaps FlexInt `json:"hw_caps"`
WifiCaps FlexInt `json:"wifi_caps"`
SwitchCaps struct {
MaxMirrorSessions FlexInt `json:"max_mirror_sessions"`
MaxAggregateSessions FlexInt `json:"max_aggregate_sessions"`
} `json:"switch_caps"`
HasFan FlexBool `json:"has_fan"`
Temperatures []Temperature `json:"temperatures,omitempty"`
RulesetInterfaces interface{} `json:"ruleset_interfaces"`
/* struct {
Br0 string `json:"br0"`
Eth0 string `json:"eth0"`
Eth1 string `json:"eth1"`
Eth2 string `json:"eth2"`
Eth3 string `json:"eth3"`
Eth4 string `json:"eth4"`
Eth5 string `json:"eth5"`
Eth6 string `json:"eth6"`
Eth7 string `json:"eth7"`
Eth8 string `json:"eth8"`
} */
KnownCfgversion string `json:"known_cfgversion"`
SysStats SysStats `json:"sys_stats"`
SystemStats SystemStats `json:"system-stats"`
GuestToken string `json:"guest_token"`
Overheating FlexBool `json:"overheating"`
SpeedtestStatus SpeedtestStatus `json:"speedtest-status"`
SpeedtestStatusSaved FlexBool `json:"speedtest-status-saved"`
Wan1 Wan `json:"wan1"`
Wan2 Wan `json:"wan2"`
Uplink Uplink `json:"uplink"`
ConnectRequestIP string `json:"connect_request_ip"`
ConnectRequestPort string `json:"connect_request_port"`
DownlinkTable []*DownlinkTable `json:"downlink_table"`
WlangroupIDNa string `json:"wlangroup_id_na"`
WlangroupIDNg string `json:"wlangroup_id_ng"`
BandsteeringMode string `json:"bandsteering_mode"`
RadioTable *RadioTable `json:"radio_table,omitempty"`
RadioTableStats *RadioTableStats `json:"radio_table_stats,omitempty"`
VapTable *VapTable `json:"vap_table"`
XInformAuthkey string `json:"x_inform_authkey"`
NetworkTable NetworkTable `json:"network_table"`
PortOverrides []struct {
PortIdx FlexInt `json:"port_idx"`
PortconfID string `json:"portconf_id"`
} `json:"port_overrides"`
Stat UDMStat `json:"stat"`
Storage []*Storage `json:"storage"`
TxBytes FlexInt `json:"tx_bytes"`
RxBytes FlexInt `json:"rx_bytes"`
Bytes FlexInt `json:"bytes"`
BytesD FlexInt `json:"bytes-d"`
TxBytesD FlexInt `json:"tx_bytes-d"`
RxBytesD FlexInt `json:"rx_bytes-d"`
BytesR FlexInt `json:"bytes-r"`
NumSta FlexInt `json:"num_sta"` // USG
WlanNumSta FlexInt `json:"wlan-num_sta"` // UAP
LanNumSta FlexInt `json:"lan-num_sta"` // USW
UserWlanNumSta FlexInt `json:"user-wlan-num_sta"` // UAP
UserLanNumSta FlexInt `json:"user-lan-num_sta"` // USW
UserNumSta FlexInt `json:"user-num_sta"` // USG
GuestWlanNumSta FlexInt `json:"guest-wlan-num_sta"` // UAP
GuestLanNumSta FlexInt `json:"guest-lan-num_sta"` // USW
GuestNumSta FlexInt `json:"guest-num_sta"` // USG
NumDesktop FlexInt `json:"num_desktop"` // USG
NumMobile FlexInt `json:"num_mobile"` // USG
NumHandheld FlexInt `json:"num_handheld"` // USG
}
type EthernetOverrides struct {
Ifname string `json:"ifname"`
Networkgroup string `json:"networkgroup"`
}
type EthernetTable struct {
Mac string `json:"mac"`
NumPort FlexInt `json:"num_port"`
Name string `json:"name"`
}
// NetworkTable is the list of networks on a gateway.
// Not all gateways have all features.
type NetworkTable []struct {
ID string `json:"_id"`
AttrNoDelete FlexBool `json:"attr_no_delete"`
AttrHiddenID string `json:"attr_hidden_id"`
Name string `json:"name"`
SiteID string `json:"site_id"`
VlanEnabled FlexBool `json:"vlan_enabled"`
Purpose string `json:"purpose"`
IPSubnet string `json:"ip_subnet"`
Ipv6InterfaceType string `json:"ipv6_interface_type"`
DomainName string `json:"domain_name"`
IsNat FlexBool `json:"is_nat"`
DhcpdEnabled FlexBool `json:"dhcpd_enabled"`
DhcpdStart string `json:"dhcpd_start"`
DhcpdStop string `json:"dhcpd_stop"`
Dhcpdv6Enabled FlexBool `json:"dhcpdv6_enabled"`
Ipv6RaEnabled FlexBool `json:"ipv6_ra_enabled"`
LteLanEnabled FlexBool `json:"lte_lan_enabled"`
AutoScaleEnabled FlexBool `json:"auto_scale_enabled"`
Networkgroup string `json:"networkgroup"`
DhcpdLeasetime FlexInt `json:"dhcpd_leasetime"`
DhcpdDNSEnabled FlexBool `json:"dhcpd_dns_enabled"`
DhcpdGatewayEnabled FlexBool `json:"dhcpd_gateway_enabled"`
DhcpdTimeOffsetEnabled FlexBool `json:"dhcpd_time_offset_enabled"`
Ipv6PdStart string `json:"ipv6_pd_start"`
Ipv6PdStop string `json:"ipv6_pd_stop"`
DhcpdDNS1 string `json:"dhcpd_dns_1"`
DhcpdDNS2 string `json:"dhcpd_dns_2"`
DhcpdDNS3 string `json:"dhcpd_dns_3"`
DhcpdDNS4 string `json:"dhcpd_dns_4"`
Enabled FlexBool `json:"enabled"`
DhcpRelayEnabled FlexBool `json:"dhcp_relay_enabled"`
Mac string `json:"mac"`
IsGuest FlexBool `json:"is_guest"`
IP string `json:"ip"`
Up FlexBool `json:"up"`
ActiveDhcpLeaseCount int `json:"active_dhcp_lease_count"`
GatewayInterfaceName string `json:"gateway_interface_name"`
DPIStatsTable *DPITable `json:"dpistats_table"`
NumSta FlexInt `json:"num_sta"`
RxBytes FlexInt `json:"rx_bytes"`
RxPackets FlexInt `json:"rx_packets"`
TxBytes FlexInt `json:"tx_bytes"`
TxPackets FlexInt `json:"tx_packets"`
}
// Storage is hard drive into for a device with storage.
type Storage struct {
MountPoint string `json:"mount_point"`
Name string `json:"name"`
Size FlexInt `json:"size"`
Type string `json:"type"`
Used FlexInt `json:"used"`
}
type Temperature struct {
Name string `json:"name"`
Type string `json:"type"`
Value float64 `json:"value"`
}
// UDMStat holds the "stat" data for a dream machine.
// A dream machine is a USG + USW + Controller.
type UDMStat struct {
*Gw `json:"gw"`
*Sw `json:"sw"`
*Ap `json:"ap,omitempty"`
}