Merge pull request #29 from golift/dn2_udm
Re-do structs to support UDM w/ UAP.
This commit is contained in:
commit
9d5baf6a82
|
|
@ -11,5 +11,5 @@ before_install:
|
|||
install:
|
||||
- dep ensure
|
||||
script:
|
||||
- golangci-lint run --enable-all -e G402 -e dupl
|
||||
- golangci-lint run --enable-all -e G402
|
||||
- go test ./...
|
||||
|
|
|
|||
|
|
@ -0,0 +1,564 @@
|
|||
package unifi
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
)
|
||||
|
||||
// UAP represents all the data from the Ubiquiti Controller for a Unifi Access Point.
|
||||
type UAP struct {
|
||||
/* This was auto generated and then slowly edited by hand
|
||||
to get all the data types right and graphable.
|
||||
*/
|
||||
ID string `json:"_id"`
|
||||
Adopted FlexBool `json:"adopted"`
|
||||
AntennaTable []struct {
|
||||
Default FlexBool `json:"default"`
|
||||
ID FlexInt `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Wifi0Gain FlexInt `json:"wifi0_gain"`
|
||||
Wifi1Gain FlexInt `json:"wifi1_gain"`
|
||||
} `json:"antenna_table"`
|
||||
BandsteeringMode string `json:"bandsteering_mode,omitempty"`
|
||||
BoardRev int `json:"board_rev"`
|
||||
Cfgversion string `json:"cfgversion"`
|
||||
ConfigNetwork struct {
|
||||
Type string `json:"type"`
|
||||
IP string `json:"ip"`
|
||||
} `json:"config_network"`
|
||||
CountrycodeTable []int `json:"countrycode_table"`
|
||||
EthernetTable []struct {
|
||||
Mac string `json:"mac"`
|
||||
NumPort FlexInt `json:"num_port"`
|
||||
Name string `json:"name"`
|
||||
} `json:"ethernet_table"`
|
||||
FwCaps int `json:"fw_caps"`
|
||||
HasEth1 FlexBool `json:"has_eth1"`
|
||||
HasSpeaker FlexBool `json:"has_speaker"`
|
||||
InformIP string `json:"inform_ip"`
|
||||
InformURL string `json:"inform_url"`
|
||||
IP string `json:"ip"`
|
||||
LedOverride string `json:"led_override"`
|
||||
Mac string `json:"mac"`
|
||||
MeshStaVapEnabled FlexBool `json:"mesh_sta_vap_enabled"`
|
||||
Model string `json:"model"`
|
||||
Name string `json:"name"`
|
||||
OutdoorModeOverride string `json:"outdoor_mode_override"`
|
||||
PortTable []Port `json:"port_table"`
|
||||
RadioTable RadioTable `json:"radio_table"`
|
||||
ScanRadioTable []interface{} `json:"scan_radio_table"`
|
||||
Serial string `json:"serial"`
|
||||
SiteID string `json:"site_id"`
|
||||
SiteName string `json:"-"`
|
||||
Type string `json:"type"`
|
||||
Version string `json:"version"`
|
||||
VwireTable []interface{} `json:"vwire_table"`
|
||||
WifiCaps int `json:"wifi_caps"`
|
||||
WlangroupIDNa string `json:"wlangroup_id_na"`
|
||||
WlangroupIDNg string `json:"wlangroup_id_ng"`
|
||||
RequiredVersion string `json:"required_version"`
|
||||
HwCaps int `json:"hw_caps"`
|
||||
Unsupported FlexBool `json:"unsupported"`
|
||||
UnsupportedReason FlexInt `json:"unsupported_reason"`
|
||||
SysErrorCaps int `json:"sys_error_caps"`
|
||||
HasFan FlexBool `json:"has_fan"`
|
||||
HasTemperature FlexBool `json:"has_temperature"`
|
||||
DeviceID string `json:"device_id"`
|
||||
State int `json:"state"`
|
||||
LastSeen FlexInt `json:"last_seen"`
|
||||
Upgradable FlexBool `json:"upgradable"`
|
||||
AdoptableWhenUpgraded FlexBool `json:"adoptable_when_upgraded"`
|
||||
Rollupgrade FlexBool `json:"rollupgrade"`
|
||||
KnownCfgversion string `json:"known_cfgversion"`
|
||||
Uptime FlexInt `json:"uptime"`
|
||||
UUptime FlexInt `json:"_uptime"`
|
||||
Locating FlexBool `json:"locating"`
|
||||
ConnectRequestIP string `json:"connect_request_ip"`
|
||||
ConnectRequestPort string `json:"connect_request_port"`
|
||||
SysStats SysStats `json:"sys_stats"`
|
||||
SystemStats SystemStats `json:"system-stats"`
|
||||
SSHSessionTable []interface{} `json:"ssh_session_table"`
|
||||
Scanning FlexBool `json:"scanning"`
|
||||
SpectrumScanning FlexBool `json:"spectrum_scanning"`
|
||||
GuestToken string `json:"guest_token"`
|
||||
Meshv3PeerMac string `json:"meshv3_peer_mac"`
|
||||
Satisfaction FlexInt `json:"satisfaction"`
|
||||
Isolated FlexBool `json:"isolated"`
|
||||
RadioTableStats RadioTableStats `json:"radio_table_stats"`
|
||||
Uplink struct {
|
||||
FullDuplex FlexBool `json:"full_duplex"`
|
||||
IP string `json:"ip"`
|
||||
Mac string `json:"mac"`
|
||||
MaxVlan int `json:"max_vlan"`
|
||||
Name string `json:"name"`
|
||||
Netmask string `json:"netmask"`
|
||||
NumPort int `json:"num_port"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
RxDropped FlexInt `json:"rx_dropped"`
|
||||
RxErrors FlexInt `json:"rx_errors"`
|
||||
RxMulticast FlexInt `json:"rx_multicast"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
Speed FlexInt `json:"speed"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
TxDropped FlexInt `json:"tx_dropped"`
|
||||
TxErrors FlexInt `json:"tx_errors"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
Up FlexBool `json:"up"`
|
||||
MaxSpeed FlexInt `json:"max_speed"`
|
||||
Type string `json:"type"`
|
||||
TxBytesR FlexInt `json:"tx_bytes-r"`
|
||||
RxBytesR FlexInt `json:"rx_bytes-r"`
|
||||
UplinkMac string `json:"uplink_mac"`
|
||||
UplinkRemotePort int `json:"uplink_remote_port"`
|
||||
} `json:"uplink"`
|
||||
VapTable VapTable `json:"vap_table"`
|
||||
DownlinkTable []struct {
|
||||
PortIdx int `json:"port_idx"`
|
||||
Speed int `json:"speed"`
|
||||
FullDuplex bool `json:"full_duplex"`
|
||||
Mac string `json:"mac"`
|
||||
} `json:"downlink_table,omitempty"`
|
||||
VwireVapTable []interface{} `json:"vwire_vap_table"`
|
||||
BytesD FlexInt `json:"bytes-d"`
|
||||
TxBytesD FlexInt `json:"tx_bytes-d"`
|
||||
RxBytesD FlexInt `json:"rx_bytes-d"`
|
||||
BytesR FlexInt `json:"bytes-r"`
|
||||
LastUplink struct {
|
||||
UplinkMac string `json:"uplink_mac"`
|
||||
UplinkRemotePort int `json:"uplink_remote_port"`
|
||||
} `json:"last_uplink"`
|
||||
Stat UAPStat `json:"stat"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
VwireEnabled FlexBool `json:"vwireEnabled"`
|
||||
UplinkTable []interface{} `json:"uplink_table"`
|
||||
NumSta int `json:"num_sta"`
|
||||
UserNumSta int `json:"user-num_sta"`
|
||||
GuestNumSta int `json:"guest-num_sta"`
|
||||
TwoPhaseAdopt FlexBool `json:"two_phase_adopt,omitempty"`
|
||||
}
|
||||
|
||||
// UAPStat holds the "stat" data for an access point.
|
||||
// This is split out because of a JSON data format change from 5.10 to 5.11.
|
||||
type UAPStat struct {
|
||||
*Ap
|
||||
}
|
||||
|
||||
// Ap is a subtype of UAPStat to make unmarshalling of different controller versions possible.
|
||||
type Ap struct {
|
||||
SiteID string `json:"site_id"`
|
||||
O string `json:"o"`
|
||||
Oid string `json:"oid"`
|
||||
Ap string `json:"ap"`
|
||||
Time FlexInt `json:"time"`
|
||||
Datetime time.Time `json:"datetime"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
Duration FlexInt `json:"duration"`
|
||||
WifiTxDropped FlexInt `json:"wifi_tx_dropped"`
|
||||
RxErrors FlexInt `json:"rx_errors"`
|
||||
RxDropped FlexInt `json:"rx_dropped"`
|
||||
RxFrags FlexInt `json:"rx_frags"`
|
||||
RxCrypts FlexInt `json:"rx_crypts"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
TxErrors FlexInt `json:"tx_errors"`
|
||||
TxDropped FlexInt `json:"tx_dropped"`
|
||||
TxRetries FlexInt `json:"tx_retries"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
UserRxDropped FlexInt `json:"user-rx_dropped"`
|
||||
GuestRxDropped FlexInt `json:"guest-rx_dropped"`
|
||||
UserRxErrors FlexInt `json:"user-rx_errors"`
|
||||
GuestRxErrors FlexInt `json:"guest-rx_errors"`
|
||||
UserRxPackets FlexInt `json:"user-rx_packets"`
|
||||
GuestRxPackets FlexInt `json:"guest-rx_packets"`
|
||||
UserRxBytes FlexInt `json:"user-rx_bytes"`
|
||||
GuestRxBytes FlexInt `json:"guest-rx_bytes"`
|
||||
UserRxCrypts FlexInt `json:"user-rx_crypts"`
|
||||
GuestRxCrypts FlexInt `json:"guest-rx_crypts"`
|
||||
UserRxFrags FlexInt `json:"user-rx_frags"`
|
||||
GuestRxFrags FlexInt `json:"guest-rx_frags"`
|
||||
UserTxPackets FlexInt `json:"user-tx_packets"`
|
||||
GuestTxPackets FlexInt `json:"guest-tx_packets"`
|
||||
UserTxBytes FlexInt `json:"user-tx_bytes"`
|
||||
GuestTxBytes FlexInt `json:"guest-tx_bytes"`
|
||||
UserTxErrors FlexInt `json:"user-tx_errors"`
|
||||
GuestTxErrors FlexInt `json:"guest-tx_errors"`
|
||||
UserTxDropped FlexInt `json:"user-tx_dropped"`
|
||||
GuestTxDropped FlexInt `json:"guest-tx_dropped"`
|
||||
UserTxRetries FlexInt `json:"user-tx_retries"`
|
||||
GuestTxRetries FlexInt `json:"guest-tx_retries"`
|
||||
MacFilterRejections FlexInt `json:"mac_filter_rejections"`
|
||||
UserMacFilterRejections FlexInt `json:"user-mac_filter_rejections"`
|
||||
GuestMacFilterRejections FlexInt `json:"guest-mac_filter_rejections"`
|
||||
WifiTxAttempts FlexInt `json:"wifi_tx_attempts"`
|
||||
UserWifiTxDropped FlexInt `json:"user-wifi_tx_dropped"`
|
||||
GuestWifiTxDropped FlexInt `json:"guest-wifi_tx_dropped"`
|
||||
UserWifiTxAttempts FlexInt `json:"user-wifi_tx_attempts"`
|
||||
GuestWifiTxAttempts FlexInt `json:"guest-wifi_tx_attempts"`
|
||||
|
||||
// UAP-AC-PRO names, others may differ.
|
||||
/* These are all in VAP TABLE */
|
||||
/*
|
||||
GuestWifi0RxPackets FlexInt `json:"guest-wifi0-rx_packets"`
|
||||
GuestWifi1RxPackets FlexInt `json:"guest-wifi1-rx_packets"`
|
||||
UserWifi1RxPackets FlexInt `json:"user-wifi1-rx_packets"`
|
||||
UserWifi0RxPackets FlexInt `json:"user-wifi0-rx_packets"`
|
||||
Wifi0RxPackets FlexInt `json:"wifi0-rx_packets"`
|
||||
Wifi1RxPackets FlexInt `json:"wifi1-rx_packets"`
|
||||
GuestWifi0RxBytes FlexInt `json:"guest-wifi0-rx_bytes"`
|
||||
GuestWifi1RxBytes FlexInt `json:"guest-wifi1-rx_bytes"`
|
||||
UserWifi1RxBytes FlexInt `json:"user-wifi1-rx_bytes"`
|
||||
UserWifi0RxBytes FlexInt `json:"user-wifi0-rx_bytes"`
|
||||
Wifi0RxBytes FlexInt `json:"wifi0-rx_bytes"`
|
||||
Wifi1RxBytes FlexInt `json:"wifi1-rx_bytes"`
|
||||
GuestWifi0RxErrors FlexInt `json:"guest-wifi0-rx_errors"`
|
||||
GuestWifi1RxErrors FlexInt `json:"guest-wifi1-rx_errors"`
|
||||
UserWifi1RxErrors FlexInt `json:"user-wifi1-rx_errors"`
|
||||
UserWifi0RxErrors FlexInt `json:"user-wifi0-rx_errors"`
|
||||
Wifi0RxErrors FlexInt `json:"wifi0-rx_errors"`
|
||||
Wifi1RxErrors FlexInt `json:"wifi1-rx_errors"`
|
||||
GuestWifi0RxDropped FlexInt `json:"guest-wifi0-rx_dropped"`
|
||||
GuestWifi1RxDropped FlexInt `json:"guest-wifi1-rx_dropped"`
|
||||
UserWifi1RxDropped FlexInt `json:"user-wifi1-rx_dropped"`
|
||||
UserWifi0RxDropped FlexInt `json:"user-wifi0-rx_dropped"`
|
||||
Wifi0RxDropped FlexInt `json:"wifi0-rx_dropped"`
|
||||
Wifi1RxDropped FlexInt `json:"wifi1-rx_dropped"`
|
||||
GuestWifi0RxCrypts FlexInt `json:"guest-wifi0-rx_crypts"`
|
||||
GuestWifi1RxCrypts FlexInt `json:"guest-wifi1-rx_crypts"`
|
||||
UserWifi1RxCrypts FlexInt `json:"user-wifi1-rx_crypts"`
|
||||
UserWifi0RxCrypts FlexInt `json:"user-wifi0-rx_crypts"`
|
||||
Wifi0RxCrypts FlexInt `json:"wifi0-rx_crypts"`
|
||||
Wifi1RxCrypts FlexInt `json:"wifi1-rx_crypts"`
|
||||
GuestWifi0RxFrags FlexInt `json:"guest-wifi0-rx_frags"`
|
||||
GuestWifi1RxFrags FlexInt `json:"guest-wifi1-rx_frags"`
|
||||
UserWifi1RxFrags FlexInt `json:"user-wifi1-rx_frags"`
|
||||
UserWifi0RxFrags FlexInt `json:"user-wifi0-rx_frags"`
|
||||
Wifi0RxFrags FlexInt `json:"wifi0-rx_frags"`
|
||||
Wifi1RxFrags FlexInt `json:"wifi1-rx_frags"`
|
||||
GuestWifi0TxPackets FlexInt `json:"guest-wifi0-tx_packets"`
|
||||
GuestWifi1TxPackets FlexInt `json:"guest-wifi1-tx_packets"`
|
||||
UserWifi1TxPackets FlexInt `json:"user-wifi1-tx_packets"`
|
||||
UserWifi0TxPackets FlexInt `json:"user-wifi0-tx_packets"`
|
||||
Wifi0TxPackets FlexInt `json:"wifi0-tx_packets"`
|
||||
Wifi1TxPackets FlexInt `json:"wifi1-tx_packets"`
|
||||
GuestWifi0TxBytes FlexInt `json:"guest-wifi0-tx_bytes"`
|
||||
GuestWifi1TxBytes FlexInt `json:"guest-wifi1-tx_bytes"`
|
||||
UserWifi1TxBytes FlexInt `json:"user-wifi1-tx_bytes"`
|
||||
UserWifi0TxBytes FlexInt `json:"user-wifi0-tx_bytes"`
|
||||
Wifi0TxBytes FlexInt `json:"wifi0-tx_bytes"`
|
||||
Wifi1TxBytes FlexInt `json:"wifi1-tx_bytes"`
|
||||
GuestWifi0TxErrors FlexInt `json:"guest-wifi0-tx_errors"`
|
||||
GuestWifi1TxErrors FlexInt `json:"guest-wifi1-tx_errors"`
|
||||
UserWifi1TxErrors FlexInt `json:"user-wifi1-tx_errors"`
|
||||
UserWifi0TxErrors FlexInt `json:"user-wifi0-tx_errors"`
|
||||
Wifi0TxErrors FlexInt `json:"wifi0-tx_errors"`
|
||||
Wifi1TxErrors FlexInt `json:"wifi1-tx_errors"`
|
||||
GuestWifi0TxDropped FlexInt `json:"guest-wifi0-tx_dropped"`
|
||||
GuestWifi1TxDropped FlexInt `json:"guest-wifi1-tx_dropped"`
|
||||
UserWifi1TxDropped FlexInt `json:"user-wifi1-tx_dropped"`
|
||||
UserWifi0TxDropped FlexInt `json:"user-wifi0-tx_dropped"`
|
||||
Wifi0TxDropped FlexInt `json:"wifi0-tx_dropped"`
|
||||
Wifi1TxDropped FlexInt `json:"wifi1-tx_dropped"`
|
||||
GuestWifi0TxRetries FlexInt `json:"guest-wifi0-tx_retries"`
|
||||
GuestWifi1TxRetries FlexInt `json:"guest-wifi1-tx_retries"`
|
||||
UserWifi1TxRetries FlexInt `json:"user-wifi1-tx_retries"`
|
||||
UserWifi0TxRetries FlexInt `json:"user-wifi0-tx_retries"`
|
||||
Wifi0TxRetries FlexInt `json:"wifi0-tx_retries"`
|
||||
Wifi1TxRetries FlexInt `json:"wifi1-tx_retries"`
|
||||
GuestWifi0MacFilterRejections FlexInt `json:"guest-wifi0-mac_filter_rejections"`
|
||||
GuestWifi1MacFilterRejections FlexInt `json:"guest-wifi1-mac_filter_rejections"`
|
||||
UserWifi1MacFilterRejections FlexInt `json:"user-wifi1-mac_filter_rejections"`
|
||||
UserWifi0MacFilterRejections FlexInt `json:"user-wifi0-mac_filter_rejections"`
|
||||
Wifi0MacFilterRejections FlexInt `json:"wifi0-mac_filter_rejections"`
|
||||
Wifi1MacFilterRejections FlexInt `json:"wifi1-mac_filter_rejections"`
|
||||
GuestWifi0WifiTxAttempts FlexInt `json:"guest-wifi0-wifi_tx_attempts"`
|
||||
GuestWifi1WifiTxAttempts FlexInt `json:"guest-wifi1-wifi_tx_attempts"`
|
||||
UserWifi1WifiTxAttempts FlexInt `json:"user-wifi1-wifi_tx_attempts"`
|
||||
UserWifi0WifiTxAttempts FlexInt `json:"user-wifi0-wifi_tx_attempts"`
|
||||
Wifi0WifiTxAttempts FlexInt `json:"wifi0-wifi_tx_attempts"`
|
||||
Wifi1WifiTxAttempts FlexInt `json:"wifi1-wifi_tx_attempts"`
|
||||
GuestWifi0WifiTxDropped FlexInt `json:"guest-wifi0-wifi_tx_dropped"`
|
||||
GuestWifi1WifiTxDropped FlexInt `json:"guest-wifi1-wifi_tx_dropped"`
|
||||
UserWifi1WifiTxDropped FlexInt `json:"user-wifi1-wifi_tx_dropped"`
|
||||
UserWifi0WifiTxDropped FlexInt `json:"user-wifi0-wifi_tx_dropped"`
|
||||
Wifi0WifiTxDropped FlexInt `json:"wifi0-wifi_tx_dropped"`
|
||||
Wifi1WifiTxDropped FlexInt `json:"wifi1-wifi_tx_dropped"`
|
||||
// UDM Names
|
||||
GuestRa0RxPackets FlexInt `json:"guest-ra0-rx_packets"`
|
||||
UserRa0RxPackets FlexInt `json:"user-ra0-rx_packets"`
|
||||
Ra0RxPackets FlexInt `json:"ra0-rx_packets"`
|
||||
GuestRa0RxBytes FlexInt `json:"guest-ra0-rx_bytes"`
|
||||
UserRa0RxBytes FlexInt `json:"user-ra0-rx_bytes"`
|
||||
Ra0RxBytes FlexInt `json:"ra0-rx_bytes"`
|
||||
GuestRa0RxErrors FlexInt `json:"guest-ra0-rx_errors"`
|
||||
UserRa0RxErrors FlexInt `json:"user-ra0-rx_errors"`
|
||||
Ra0RxErrors FlexInt `json:"ra0-rx_errors"`
|
||||
GuestRa0RxDropped FlexInt `json:"guest-ra0-rx_dropped"`
|
||||
UserRa0RxDropped FlexInt `json:"user-ra0-rx_dropped"`
|
||||
Ra0RxDropped FlexInt `json:"ra0-rx_dropped"`
|
||||
GuestRa0RxCrypts FlexInt `json:"guest-ra0-rx_crypts"`
|
||||
UserRa0RxCrypts FlexInt `json:"user-ra0-rx_crypts"`
|
||||
Ra0RxCrypts FlexInt `json:"ra0-rx_crypts"`
|
||||
GuestRa0RxFrags FlexInt `json:"guest-ra0-rx_frags"`
|
||||
UserRa0RxFrags FlexInt `json:"user-ra0-rx_frags"`
|
||||
Ra0RxFrags FlexInt `json:"ra0-rx_frags"`
|
||||
GuestRa0TxPackets FlexInt `json:"guest-ra0-tx_packets"`
|
||||
UserRa0TxPackets FlexInt `json:"user-ra0-tx_packets"`
|
||||
Ra0TxPackets FlexInt `json:"ra0-tx_packets"`
|
||||
GuestRa0TxBytes FlexInt `json:"guest-ra0-tx_bytes"`
|
||||
UserRa0TxBytes FlexInt `json:"user-ra0-tx_bytes"`
|
||||
Ra0TxBytes FlexInt `json:"ra0-tx_bytes"`
|
||||
GuestRa0TxErrors FlexInt `json:"guest-ra0-tx_errors"`
|
||||
UserRa0TxErrors FlexInt `json:"user-ra0-tx_errors"`
|
||||
Ra0TxErrors FlexInt `json:"ra0-tx_errors"`
|
||||
GuestRa0TxDropped FlexInt `json:"guest-ra0-tx_dropped"`
|
||||
UserRa0TxDropped FlexInt `json:"user-ra0-tx_dropped"`
|
||||
Ra0TxDropped FlexInt `json:"ra0-tx_dropped"`
|
||||
GuestRa0TxRetries FlexInt `json:"guest-ra0-tx_retries"`
|
||||
UserRa0TxRetries FlexInt `json:"user-ra0-tx_retries"`
|
||||
Ra0TxRetries FlexInt `json:"ra0-tx_retries"`
|
||||
GuestRa0MacFilterRejections FlexInt `json:"guest-ra0-mac_filter_rejections"`
|
||||
UserRa0MacFilterRejections FlexInt `json:"user-ra0-mac_filter_rejections"`
|
||||
Ra0MacFilterRejections FlexInt `json:"ra0-mac_filter_rejections"`
|
||||
GuestRa0WifiTxAttempts FlexInt `json:"guest-ra0-wifi_tx_attempts"`
|
||||
UserRa0WifiTxAttempts FlexInt `json:"user-ra0-wifi_tx_attempts"`
|
||||
Ra0WifiTxAttempts FlexInt `json:"ra0-wifi_tx_attempts"`
|
||||
GuestRa0WifiTxDropped FlexInt `json:"guest-ra0-wifi_tx_dropped"`
|
||||
UserRa0WifiTxDropped FlexInt `json:"user-ra0-wifi_tx_dropped"`
|
||||
Ra0WifiTxDropped FlexInt `json:"ra0-wifi_tx_dropped"`
|
||||
GuestRai0RxPackets FlexInt `json:"guest-rai0-rx_packets"`
|
||||
UserRai0RxPackets FlexInt `json:"user-rai0-rx_packets"`
|
||||
Rai0RxPackets FlexInt `json:"rai0-rx_packets"`
|
||||
GuestRai0RxBytes FlexInt `json:"guest-rai0-rx_bytes"`
|
||||
UserRai0RxBytes FlexInt `json:"user-rai0-rx_bytes"`
|
||||
Rai0RxBytes FlexInt `json:"rai0-rx_bytes"`
|
||||
GuestRai0RxErrors FlexInt `json:"guest-rai0-rx_errors"`
|
||||
UserRai0RxErrors FlexInt `json:"user-rai0-rx_errors"`
|
||||
Rai0RxErrors FlexInt `json:"rai0-rx_errors"`
|
||||
GuestRai0RxDropped FlexInt `json:"guest-rai0-rx_dropped"`
|
||||
UserRai0RxDropped FlexInt `json:"user-rai0-rx_dropped"`
|
||||
Rai0RxDropped FlexInt `json:"rai0-rx_dropped"`
|
||||
GuestRai0RxCrypts FlexInt `json:"guest-rai0-rx_crypts"`
|
||||
UserRai0RxCrypts FlexInt `json:"user-rai0-rx_crypts"`
|
||||
Rai0RxCrypts FlexInt `json:"rai0-rx_crypts"`
|
||||
GuestRai0RxFrags FlexInt `json:"guest-rai0-rx_frags"`
|
||||
UserRai0RxFrags FlexInt `json:"user-rai0-rx_frags"`
|
||||
Rai0RxFrags FlexInt `json:"rai0-rx_frags"`
|
||||
GuestRai0TxPackets FlexInt `json:"guest-rai0-tx_packets"`
|
||||
UserRai0TxPackets FlexInt `json:"user-rai0-tx_packets"`
|
||||
Rai0TxPackets FlexInt `json:"rai0-tx_packets"`
|
||||
GuestRai0TxBytes FlexInt `json:"guest-rai0-tx_bytes"`
|
||||
UserRai0TxBytes FlexInt `json:"user-rai0-tx_bytes"`
|
||||
Rai0TxBytes FlexInt `json:"rai0-tx_bytes"`
|
||||
GuestRai0TxErrors FlexInt `json:"guest-rai0-tx_errors"`
|
||||
UserRai0TxErrors FlexInt `json:"user-rai0-tx_errors"`
|
||||
Rai0TxErrors FlexInt `json:"rai0-tx_errors"`
|
||||
GuestRai0TxDropped FlexInt `json:"guest-rai0-tx_dropped"`
|
||||
UserRai0TxDropped FlexInt `json:"user-rai0-tx_dropped"`
|
||||
Rai0TxDropped FlexInt `json:"rai0-tx_dropped"`
|
||||
GuestRai0TxRetries FlexInt `json:"guest-rai0-tx_retries"`
|
||||
UserRai0TxRetries FlexInt `json:"user-rai0-tx_retries"`
|
||||
Rai0TxRetries FlexInt `json:"rai0-tx_retries"`
|
||||
GuestRai0MacFilterRejections FlexInt `json:"guest-rai0-mac_filter_rejections"`
|
||||
UserRai0MacFilterRejections FlexInt `json:"user-rai0-mac_filter_rejections"`
|
||||
Rai0MacFilterRejections FlexInt `json:"rai0-mac_filter_rejections"`
|
||||
GuestRai0WifiTxAttempts FlexInt `json:"guest-rai0-wifi_tx_attempts"`
|
||||
UserRai0WifiTxAttempts FlexInt `json:"user-rai0-wifi_tx_attempts"`
|
||||
Rai0WifiTxAttempts FlexInt `json:"rai0-wifi_tx_attempts"`
|
||||
GuestRai0WifiTxDropped FlexInt `json:"guest-rai0-wifi_tx_dropped"`
|
||||
UserRai0WifiTxDropped FlexInt `json:"user-rai0-wifi_tx_dropped"`
|
||||
Rai0WifiTxDropped FlexInt `json:"rai0-wifi_tx_dropped"`
|
||||
*/
|
||||
}
|
||||
|
||||
// RadioTable is part of the data for UAPs and UDMs.
|
||||
type RadioTable []struct {
|
||||
AntennaGain FlexInt `json:"antenna_gain"`
|
||||
BuiltinAntGain FlexInt `json:"builtin_ant_gain"`
|
||||
BuiltinAntenna FlexBool `json:"builtin_antenna"`
|
||||
Channel FlexInt `json:"channel"`
|
||||
CurrentAntennaGain FlexInt `json:"current_antenna_gain"`
|
||||
HasDfs FlexBool `json:"has_dfs"`
|
||||
HasFccdfs FlexBool `json:"has_fccdfs"`
|
||||
HasHt160 FlexBool `json:"has_ht160"`
|
||||
Ht string `json:"ht"`
|
||||
Is11Ac FlexBool `json:"is_11ac"`
|
||||
MaxTxpower FlexInt `json:"max_txpower"`
|
||||
MinRssi FlexInt `json:"min_rssi,omitempty"`
|
||||
MinRssiEnabled FlexBool `json:"min_rssi_enabled"`
|
||||
MinTxpower FlexInt `json:"min_txpower"`
|
||||
Name string `json:"name"`
|
||||
Nss FlexInt `json:"nss"`
|
||||
Radio string `json:"radio"`
|
||||
RadioCaps FlexInt `json:"radio_caps"`
|
||||
SensLevelEnabled FlexBool `json:"sens_level_enabled"`
|
||||
TxPower FlexInt `json:"tx_power"`
|
||||
TxPowerMode string `json:"tx_power_mode"`
|
||||
VwireEnabled FlexBool `json:"vwire_enabled"`
|
||||
WlangroupID string `json:"wlangroup_id"`
|
||||
}
|
||||
|
||||
// RadioTableStats is part of the data shared between UAP and UDM
|
||||
type RadioTableStats []struct {
|
||||
Name string `json:"name"`
|
||||
Channel FlexInt `json:"channel"`
|
||||
Radio string `json:"radio"`
|
||||
AstTxto interface{} `json:"ast_txto"`
|
||||
AstCst interface{} `json:"ast_cst"`
|
||||
AstBeXmit FlexInt `json:"ast_be_xmit"`
|
||||
CuTotal FlexInt `json:"cu_total"`
|
||||
CuSelfRx FlexInt `json:"cu_self_rx"`
|
||||
CuSelfTx FlexInt `json:"cu_self_tx"`
|
||||
Gain FlexInt `json:"gain"`
|
||||
Satisfaction FlexInt `json:"satisfaction"`
|
||||
State string `json:"state"`
|
||||
Extchannel FlexInt `json:"extchannel"`
|
||||
TxPower FlexInt `json:"tx_power"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
TxRetries FlexInt `json:"tx_retries"`
|
||||
NumSta FlexInt `json:"num_sta"`
|
||||
GuestNumSta FlexInt `json:"guest-num_sta"`
|
||||
UserNumSta FlexInt `json:"user-num_sta"`
|
||||
}
|
||||
|
||||
// VapTable holds much of the UAP wireless data. Shared by UDM.
|
||||
type VapTable []struct {
|
||||
AnomaliesBarChart struct {
|
||||
HighDNSLatency FlexInt `json:"high_dns_latency"`
|
||||
HighTCPLatency FlexInt `json:"high_tcp_latency"`
|
||||
HighTCPPacketLoss FlexInt `json:"high_tcp_packet_loss"`
|
||||
HighWifiLatency FlexInt `json:"high_wifi_latency"`
|
||||
HighWifiRetries FlexInt `json:"high_wifi_retries"`
|
||||
LowPhyRate FlexInt `json:"low_phy_rate"`
|
||||
PoorStreamEff FlexInt `json:"poor_stream_eff"`
|
||||
SleepyClient FlexInt `json:"sleepy_client"`
|
||||
StaArpTimeout FlexInt `json:"sta_arp_timeout"`
|
||||
StaDNSTimeout FlexInt `json:"sta_dns_timeout"`
|
||||
StaIPTimeout FlexInt `json:"sta_ip_timeout"`
|
||||
WeakSignal FlexInt `json:"weak_signal"`
|
||||
} `json:"anomalies_bar_chart"`
|
||||
AnomaliesBarChartNow struct {
|
||||
HighDNSLatency FlexInt `json:"high_dns_latency"`
|
||||
HighTCPLatency FlexInt `json:"high_tcp_latency"`
|
||||
HighTCPPacketLoss FlexInt `json:"high_tcp_packet_loss"`
|
||||
HighWifiLatency FlexInt `json:"high_wifi_latency"`
|
||||
HighWifiRetries FlexInt `json:"high_wifi_retries"`
|
||||
LowPhyRate FlexInt `json:"low_phy_rate"`
|
||||
PoorStreamEff FlexInt `json:"poor_stream_eff"`
|
||||
SleepyClient FlexInt `json:"sleepy_client"`
|
||||
StaArpTimeout FlexInt `json:"sta_arp_timeout"`
|
||||
StaDNSTimeout FlexInt `json:"sta_dns_timeout"`
|
||||
StaIPTimeout FlexInt `json:"sta_ip_timeout"`
|
||||
WeakSignal FlexInt `json:"weak_signal"`
|
||||
} `json:"anomalies_bar_chart_now"`
|
||||
ReasonsBarChart struct {
|
||||
PhyRate FlexInt `json:"phy_rate"`
|
||||
Signal FlexInt `json:"signal"`
|
||||
SleepyClient FlexInt `json:"sleepy_client"`
|
||||
StaArpTimeout FlexInt `json:"sta_arp_timeout"`
|
||||
StaDNSLatency FlexInt `json:"sta_dns_latency"`
|
||||
StaDNSTimeout FlexInt `json:"sta_dns_timeout"`
|
||||
StaIPTimeout FlexInt `json:"sta_ip_timeout"`
|
||||
StreamEff FlexInt `json:"stream_eff"`
|
||||
TCPLatency FlexInt `json:"tcp_latency"`
|
||||
TCPPacketLoss FlexInt `json:"tcp_packet_loss"`
|
||||
WifiLatency FlexInt `json:"wifi_latency"`
|
||||
WifiRetries FlexInt `json:"wifi_retries"`
|
||||
} `json:"reasons_bar_chart"`
|
||||
ReasonsBarChartNow struct {
|
||||
PhyRate FlexInt `json:"phy_rate"`
|
||||
Signal FlexInt `json:"signal"`
|
||||
SleepyClient FlexInt `json:"sleepy_client"`
|
||||
StaArpTimeout FlexInt `json:"sta_arp_timeout"`
|
||||
StaDNSLatency FlexInt `json:"sta_dns_latency"`
|
||||
StaDNSTimeout FlexInt `json:"sta_dns_timeout"`
|
||||
StaIPTimeout FlexInt `json:"sta_ip_timeout"`
|
||||
StreamEff FlexInt `json:"stream_eff"`
|
||||
TCPLatency FlexInt `json:"tcp_latency"`
|
||||
TCPPacketLoss FlexInt `json:"tcp_packet_loss"`
|
||||
WifiLatency FlexInt `json:"wifi_latency"`
|
||||
WifiRetries FlexInt `json:"wifi_retries"`
|
||||
} `json:"reasons_bar_chart_now"`
|
||||
RxTCPStats struct {
|
||||
Goodbytes FlexInt `json:"goodbytes"`
|
||||
LatAvg FlexInt `json:"lat_avg"`
|
||||
LatMax FlexInt `json:"lat_max"`
|
||||
LatMin FlexInt `json:"lat_min"`
|
||||
Stalls FlexInt `json:"stalls"`
|
||||
} `json:"rx_tcp_stats"`
|
||||
TxTCPStats struct {
|
||||
Goodbytes FlexInt `json:"goodbytes"`
|
||||
LatAvg FlexInt `json:"lat_avg"`
|
||||
LatMax FlexInt `json:"lat_max"`
|
||||
LatMin FlexInt `json:"lat_min"`
|
||||
Stalls FlexInt `json:"stalls"`
|
||||
} `json:"tx_tcp_stats"`
|
||||
WifiTxLatencyMov struct {
|
||||
Avg FlexInt `json:"avg"`
|
||||
Max FlexInt `json:"max"`
|
||||
Min FlexInt `json:"min"`
|
||||
Total FlexInt `json:"total"`
|
||||
TotalCount FlexInt `json:"total_count"`
|
||||
} `json:"wifi_tx_latency_mov"`
|
||||
ApMac string `json:"ap_mac"`
|
||||
AvgClientSignal FlexInt `json:"avg_client_signal"`
|
||||
Bssid string `json:"bssid"`
|
||||
Ccq int `json:"ccq"`
|
||||
Channel int `json:"channel"`
|
||||
DNSAvgLatency FlexInt `json:"dns_avg_latency"`
|
||||
Essid string `json:"essid"`
|
||||
Extchannel int `json:"extchannel"`
|
||||
ID string `json:"id"`
|
||||
IsGuest FlexBool `json:"is_guest"`
|
||||
IsWep FlexBool `json:"is_wep"`
|
||||
MacFilterRejections int `json:"mac_filter_rejections"`
|
||||
MapID interface{} `json:"map_id"`
|
||||
Name string `json:"name"`
|
||||
NumSatisfactionSta FlexInt `json:"num_satisfaction_sta"`
|
||||
NumSta int `json:"num_sta"`
|
||||
Radio string `json:"radio"`
|
||||
RadioName string `json:"radio_name"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
RxCrypts FlexInt `json:"rx_crypts"`
|
||||
RxDropped FlexInt `json:"rx_dropped"`
|
||||
RxErrors FlexInt `json:"rx_errors"`
|
||||
RxFrags FlexInt `json:"rx_frags"`
|
||||
RxNwids FlexInt `json:"rx_nwids"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
Satisfaction FlexInt `json:"satisfaction"`
|
||||
SatisfactionNow FlexInt `json:"satisfaction_now"`
|
||||
SiteID string `json:"site_id"`
|
||||
State string `json:"state"`
|
||||
T string `json:"t"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
TxCombinedRetries FlexInt `json:"tx_combined_retries"`
|
||||
TxDataMpduBytes FlexInt `json:"tx_data_mpdu_bytes"`
|
||||
TxDropped FlexInt `json:"tx_dropped"`
|
||||
TxErrors FlexInt `json:"tx_errors"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
TxPower FlexInt `json:"tx_power"`
|
||||
TxRetries FlexInt `json:"tx_retries"`
|
||||
TxRtsRetries FlexInt `json:"tx_rts_retries"`
|
||||
TxSuccess FlexInt `json:"tx_success"`
|
||||
TxTotal FlexInt `json:"tx_total"`
|
||||
Up FlexBool `json:"up"`
|
||||
Usage string `json:"usage"`
|
||||
WifiTxAttempts FlexInt `json:"wifi_tx_attempts"`
|
||||
WifiTxDropped FlexInt `json:"wifi_tx_dropped"`
|
||||
WlanconfID string `json:"wlanconf_id"`
|
||||
}
|
||||
|
||||
// UnmarshalJSON unmarshalls 5.10 or 5.11 formatted Access Point Stat data.
|
||||
func (v *UAPStat) UnmarshalJSON(data []byte) error {
|
||||
var n struct {
|
||||
Ap `json:"ap"`
|
||||
}
|
||||
v.Ap = &n.Ap
|
||||
err := json.Unmarshal(data, v.Ap) // controller version 5.10.
|
||||
if err != nil {
|
||||
return json.Unmarshal(data, &n) // controller version 5.11.
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
@ -1,449 +0,0 @@
|
|||
package unifi
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
)
|
||||
|
||||
// UAP represents all the data from the Ubiquiti Controller for a Unifi Access Point.
|
||||
type UAP struct {
|
||||
/* This was auto generated and then slowly edited by hand
|
||||
to get all the data types right and graphable.
|
||||
*/
|
||||
ID string `json:"_id"`
|
||||
Adopted FlexBool `json:"adopted"`
|
||||
AntennaTable []struct {
|
||||
Default FlexBool `json:"default"`
|
||||
ID FlexInt `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Wifi0Gain FlexInt `json:"wifi0_gain"`
|
||||
Wifi1Gain FlexInt `json:"wifi1_gain"`
|
||||
} `json:"antenna_table"`
|
||||
BandsteeringMode string `json:"bandsteering_mode,omitempty"`
|
||||
BoardRev int `json:"board_rev"`
|
||||
Cfgversion string `json:"cfgversion"`
|
||||
ConfigNetwork struct {
|
||||
Type string `json:"type"`
|
||||
IP string `json:"ip"`
|
||||
} `json:"config_network"`
|
||||
CountrycodeTable []int `json:"countrycode_table"`
|
||||
EthernetTable []struct {
|
||||
Mac string `json:"mac"`
|
||||
NumPort FlexInt `json:"num_port"`
|
||||
Name string `json:"name"`
|
||||
} `json:"ethernet_table"`
|
||||
FwCaps int `json:"fw_caps"`
|
||||
HasEth1 FlexBool `json:"has_eth1"`
|
||||
HasSpeaker FlexBool `json:"has_speaker"`
|
||||
InformIP string `json:"inform_ip"`
|
||||
InformURL string `json:"inform_url"`
|
||||
IP string `json:"ip"`
|
||||
LedOverride string `json:"led_override"`
|
||||
Mac string `json:"mac"`
|
||||
MeshStaVapEnabled FlexBool `json:"mesh_sta_vap_enabled"`
|
||||
Model string `json:"model"`
|
||||
Name string `json:"name"`
|
||||
OutdoorModeOverride string `json:"outdoor_mode_override"`
|
||||
PortTable []Port `json:"port_table"`
|
||||
RadioTable []struct {
|
||||
Radio string `json:"radio"`
|
||||
Name string `json:"name"`
|
||||
Channel FlexInt `json:"channel"`
|
||||
Ht string `json:"ht"`
|
||||
TxPowerMode string `json:"tx_power_mode"`
|
||||
TxPower FlexInt `json:"tx_power"`
|
||||
MaxTxpower FlexInt `json:"max_txpower"`
|
||||
MinTxpower FlexInt `json:"min_txpower"`
|
||||
Nss FlexInt `json:"nss"`
|
||||
MinRssiEnabled FlexBool `json:"min_rssi_enabled"`
|
||||
BuiltinAntenna FlexBool `json:"builtin_antenna"`
|
||||
BuiltinAntGain FlexInt `json:"builtin_ant_gain"`
|
||||
CurrentAntennaGain FlexInt `json:"current_antenna_gain"`
|
||||
RadioCaps FlexInt `json:"radio_caps"`
|
||||
WlangroupID string `json:"wlangroup_id"`
|
||||
Is11Ac FlexBool `json:"is_11ac,omitempty"`
|
||||
HasDfs FlexBool `json:"has_dfs,omitempty"`
|
||||
HasFccdfs FlexBool `json:"has_fccdfs,omitempty"`
|
||||
} `json:"radio_table"`
|
||||
ScanRadioTable []interface{} `json:"scan_radio_table"`
|
||||
Serial string `json:"serial"`
|
||||
SiteID string `json:"site_id"`
|
||||
SiteName string `json:"-"`
|
||||
Type string `json:"type"`
|
||||
Version string `json:"version"`
|
||||
VwireTable []interface{} `json:"vwire_table"`
|
||||
WifiCaps int `json:"wifi_caps"`
|
||||
WlangroupIDNa string `json:"wlangroup_id_na"`
|
||||
WlangroupIDNg string `json:"wlangroup_id_ng"`
|
||||
RequiredVersion string `json:"required_version"`
|
||||
HwCaps int `json:"hw_caps"`
|
||||
Unsupported FlexBool `json:"unsupported"`
|
||||
UnsupportedReason FlexInt `json:"unsupported_reason"`
|
||||
SysErrorCaps int `json:"sys_error_caps"`
|
||||
HasFan FlexBool `json:"has_fan"`
|
||||
HasTemperature FlexBool `json:"has_temperature"`
|
||||
DeviceID string `json:"device_id"`
|
||||
State int `json:"state"`
|
||||
LastSeen FlexInt `json:"last_seen"`
|
||||
Upgradable FlexBool `json:"upgradable"`
|
||||
AdoptableWhenUpgraded FlexBool `json:"adoptable_when_upgraded"`
|
||||
Rollupgrade FlexBool `json:"rollupgrade"`
|
||||
KnownCfgversion string `json:"known_cfgversion"`
|
||||
Uptime FlexInt `json:"uptime"`
|
||||
UUptime FlexInt `json:"_uptime"`
|
||||
Locating FlexBool `json:"locating"`
|
||||
ConnectRequestIP string `json:"connect_request_ip"`
|
||||
ConnectRequestPort string `json:"connect_request_port"`
|
||||
SysStats SysStats `json:"sys_stats"`
|
||||
SystemStats SystemStats `json:"system-stats"`
|
||||
SSHSessionTable []interface{} `json:"ssh_session_table"`
|
||||
Scanning FlexBool `json:"scanning"`
|
||||
SpectrumScanning FlexBool `json:"spectrum_scanning"`
|
||||
GuestToken string `json:"guest_token"`
|
||||
Meshv3PeerMac string `json:"meshv3_peer_mac"`
|
||||
Satisfaction FlexInt `json:"satisfaction"`
|
||||
Isolated FlexBool `json:"isolated"`
|
||||
RadioTableStats []struct {
|
||||
Name string `json:"name"`
|
||||
Channel FlexInt `json:"channel"`
|
||||
Radio string `json:"radio"`
|
||||
AstTxto interface{} `json:"ast_txto"`
|
||||
AstCst interface{} `json:"ast_cst"`
|
||||
AstBeXmit FlexInt `json:"ast_be_xmit"`
|
||||
CuTotal FlexInt `json:"cu_total"`
|
||||
CuSelfRx FlexInt `json:"cu_self_rx"`
|
||||
CuSelfTx FlexInt `json:"cu_self_tx"`
|
||||
Gain FlexInt `json:"gain"`
|
||||
State string `json:"state"`
|
||||
Extchannel FlexInt `json:"extchannel"`
|
||||
TxPower FlexInt `json:"tx_power"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
TxRetries FlexInt `json:"tx_retries"`
|
||||
NumSta FlexInt `json:"num_sta"`
|
||||
GuestNumSta FlexInt `json:"guest-num_sta"`
|
||||
UserNumSta FlexInt `json:"user-num_sta"`
|
||||
} `json:"radio_table_stats"`
|
||||
Uplink struct {
|
||||
FullDuplex FlexBool `json:"full_duplex"`
|
||||
IP string `json:"ip"`
|
||||
Mac string `json:"mac"`
|
||||
MaxVlan int `json:"max_vlan"`
|
||||
Name string `json:"name"`
|
||||
Netmask string `json:"netmask"`
|
||||
NumPort int `json:"num_port"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
RxDropped FlexInt `json:"rx_dropped"`
|
||||
RxErrors FlexInt `json:"rx_errors"`
|
||||
RxMulticast FlexInt `json:"rx_multicast"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
Speed FlexInt `json:"speed"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
TxDropped FlexInt `json:"tx_dropped"`
|
||||
TxErrors FlexInt `json:"tx_errors"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
Up FlexBool `json:"up"`
|
||||
MaxSpeed FlexInt `json:"max_speed"`
|
||||
Type string `json:"type"`
|
||||
TxBytesR FlexInt `json:"tx_bytes-r"`
|
||||
RxBytesR FlexInt `json:"rx_bytes-r"`
|
||||
UplinkMac string `json:"uplink_mac"`
|
||||
UplinkRemotePort int `json:"uplink_remote_port"`
|
||||
} `json:"uplink"`
|
||||
VapTable []struct {
|
||||
AnomaliesBarChart struct {
|
||||
HighTCPLatency FlexInt `json:"high_tcp_latency"`
|
||||
HighTCPPacketLoss FlexInt `json:"high_tcp_packet_loss"`
|
||||
HighWifiLatency FlexInt `json:"high_wifi_latency"`
|
||||
HighWifiRetries FlexInt `json:"high_wifi_retries"`
|
||||
LowPhyRate FlexInt `json:"low_phy_rate"`
|
||||
PoorStreamEff FlexInt `json:"poor_stream_eff"`
|
||||
SleepyClient FlexInt `json:"sleepy_client"`
|
||||
StaArpTimeout FlexInt `json:"sta_arp_timeout"`
|
||||
StaDNSTimeout FlexInt `json:"sta_dns_timeout"`
|
||||
StaIPTimeout FlexInt `json:"sta_ip_timeout"`
|
||||
WeakSignal FlexInt `json:"weak_signal"`
|
||||
} `json:"anomalies_bar_chart"`
|
||||
AnomaliesBarChartNow struct {
|
||||
HighTCPLatency FlexInt `json:"high_tcp_latency"`
|
||||
HighTCPPacketLoss FlexInt `json:"high_tcp_packet_loss"`
|
||||
HighWifiLatency FlexInt `json:"high_wifi_latency"`
|
||||
HighWifiRetries FlexInt `json:"high_wifi_retries"`
|
||||
LowPhyRate FlexInt `json:"low_phy_rate"`
|
||||
PoorStreamEff FlexInt `json:"poor_stream_eff"`
|
||||
SleepyClient FlexInt `json:"sleepy_client"`
|
||||
StaArpTimeout FlexInt `json:"sta_arp_timeout"`
|
||||
StaDNSTimeout FlexInt `json:"sta_dns_timeout"`
|
||||
StaIPTimeout FlexInt `json:"sta_ip_timeout"`
|
||||
WeakSignal FlexInt `json:"weak_signal"`
|
||||
} `json:"anomalies_bar_chart_now"`
|
||||
AvgClientSignal FlexInt `json:"avg_client_signal"`
|
||||
Bssid string `json:"bssid"`
|
||||
Ccq int `json:"ccq"`
|
||||
Channel int `json:"channel"`
|
||||
Essid string `json:"essid"`
|
||||
Extchannel int `json:"extchannel"`
|
||||
ID string `json:"id"`
|
||||
MacFilterRejections int `json:"mac_filter_rejections"`
|
||||
Name string `json:"name"`
|
||||
NumSatisfactionSta FlexInt `json:"num_satisfaction_sta"`
|
||||
NumSta int `json:"num_sta"`
|
||||
Radio string `json:"radio"`
|
||||
RadioName string `json:"radio_name"`
|
||||
ReasonsBarChart struct {
|
||||
PhyRate FlexInt `json:"phy_rate"`
|
||||
Signal FlexInt `json:"signal"`
|
||||
SleepyClient FlexInt `json:"sleepy_client"`
|
||||
StaArpTimeout FlexInt `json:"sta_arp_timeout"`
|
||||
StaDNSTimeout FlexInt `json:"sta_dns_timeout"`
|
||||
StaIPTimeout FlexInt `json:"sta_ip_timeout"`
|
||||
StreamEff FlexInt `json:"stream_eff"`
|
||||
TCPLatency FlexInt `json:"tcp_latency"`
|
||||
TCPPacketLoss FlexInt `json:"tcp_packet_loss"`
|
||||
WifiLatency FlexInt `json:"wifi_latency"`
|
||||
WifiRetries FlexInt `json:"wifi_retries"`
|
||||
} `json:"reasons_bar_chart"`
|
||||
ReasonsBarChartNow struct {
|
||||
PhyRate FlexInt `json:"phy_rate"`
|
||||
Signal FlexInt `json:"signal"`
|
||||
SleepyClient FlexInt `json:"sleepy_client"`
|
||||
StaArpTimeout FlexInt `json:"sta_arp_timeout"`
|
||||
StaDNSTimeout FlexInt `json:"sta_dns_timeout"`
|
||||
StaIPTimeout FlexInt `json:"sta_ip_timeout"`
|
||||
StreamEff FlexInt `json:"stream_eff"`
|
||||
TCPLatency FlexInt `json:"tcp_latency"`
|
||||
TCPPacketLoss FlexInt `json:"tcp_packet_loss"`
|
||||
WifiLatency FlexInt `json:"wifi_latency"`
|
||||
WifiRetries FlexInt `json:"wifi_retries"`
|
||||
} `json:"reasons_bar_chart_now"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
RxCrypts FlexInt `json:"rx_crypts"`
|
||||
RxDropped FlexInt `json:"rx_dropped"`
|
||||
RxErrors FlexInt `json:"rx_errors"`
|
||||
RxFrags FlexInt `json:"rx_frags"`
|
||||
RxNwids FlexInt `json:"rx_nwids"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
RxTCPStats struct {
|
||||
Goodbytes FlexInt `json:"goodbytes"`
|
||||
LatAvg FlexInt `json:"lat_avg"`
|
||||
LatMax FlexInt `json:"lat_max"`
|
||||
LatMin FlexInt `json:"lat_min"`
|
||||
Stalls FlexInt `json:"stalls"`
|
||||
} `json:"rx_tcp_stats"`
|
||||
Satisfaction FlexInt `json:"satisfaction"`
|
||||
SatisfactionNow FlexInt `json:"satisfaction_now"`
|
||||
State string `json:"state"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
TxCombinedRetries FlexInt `json:"tx_combined_retries"`
|
||||
TxDataMpduBytes FlexInt `json:"tx_data_mpdu_bytes"`
|
||||
TxDropped FlexInt `json:"tx_dropped"`
|
||||
TxErrors FlexInt `json:"tx_errors"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
TxPower FlexInt `json:"tx_power"`
|
||||
TxRetries FlexInt `json:"tx_retries"`
|
||||
TxRtsRetries FlexInt `json:"tx_rts_retries"`
|
||||
TxSuccess FlexInt `json:"tx_success"`
|
||||
TxTCPStats struct {
|
||||
Goodbytes FlexInt `json:"goodbytes"`
|
||||
LatAvg FlexInt `json:"lat_avg"`
|
||||
LatMax FlexInt `json:"lat_max"`
|
||||
LatMin FlexInt `json:"lat_min"`
|
||||
Stalls FlexInt `json:"stalls"`
|
||||
} `json:"tx_tcp_stats"`
|
||||
TxTotal FlexInt `json:"tx_total"`
|
||||
Up FlexBool `json:"up"`
|
||||
Usage string `json:"usage"`
|
||||
WifiTxAttempts FlexInt `json:"wifi_tx_attempts"`
|
||||
WifiTxDropped FlexInt `json:"wifi_tx_dropped"`
|
||||
WifiTxLatencyMov struct {
|
||||
Avg FlexInt `json:"avg"`
|
||||
Max FlexInt `json:"max"`
|
||||
Min FlexInt `json:"min"`
|
||||
Total FlexInt `json:"total"`
|
||||
TotalCount FlexInt `json:"total_count"`
|
||||
} `json:"wifi_tx_latency_mov"`
|
||||
T string `json:"t"`
|
||||
WlanconfID string `json:"wlanconf_id"`
|
||||
IsGuest FlexBool `json:"is_guest"`
|
||||
IsWep FlexBool `json:"is_wep"`
|
||||
ApMac string `json:"ap_mac"`
|
||||
MapID interface{} `json:"map_id"`
|
||||
SiteID string `json:"site_id"`
|
||||
} `json:"vap_table"`
|
||||
DownlinkTable []interface{} `json:"downlink_table"`
|
||||
VwireVapTable []interface{} `json:"vwire_vap_table"`
|
||||
BytesD FlexInt `json:"bytes-d"`
|
||||
TxBytesD FlexInt `json:"tx_bytes-d"`
|
||||
RxBytesD FlexInt `json:"rx_bytes-d"`
|
||||
BytesR FlexInt `json:"bytes-r"`
|
||||
LastUplink struct {
|
||||
UplinkMac string `json:"uplink_mac"`
|
||||
UplinkRemotePort int `json:"uplink_remote_port"`
|
||||
} `json:"last_uplink"`
|
||||
Stat UAPStat `json:"stat"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
VwireEnabled FlexBool `json:"vwireEnabled"`
|
||||
UplinkTable []interface{} `json:"uplink_table"`
|
||||
NumSta int `json:"num_sta"`
|
||||
UserNumSta int `json:"user-num_sta"`
|
||||
GuestNumSta int `json:"guest-num_sta"`
|
||||
TwoPhaseAdopt FlexBool `json:"two_phase_adopt,omitempty"`
|
||||
}
|
||||
|
||||
// UAPStat holds the "stat" data for an access point.
|
||||
// This is split out because of a JSON data format change from 5.10 to 5.11.
|
||||
type UAPStat struct {
|
||||
*Ap
|
||||
}
|
||||
|
||||
// Ap is a subtype of UAPStat to make unmarshalling of different controller versions possible.
|
||||
type Ap struct {
|
||||
SiteID string `json:"site_id"`
|
||||
O string `json:"o"`
|
||||
Oid string `json:"oid"`
|
||||
Ap string `json:"ap"`
|
||||
Time FlexInt `json:"time"`
|
||||
Datetime time.Time `json:"datetime"`
|
||||
GuestWifi0RxPackets FlexInt `json:"guest-wifi0-rx_packets"`
|
||||
GuestWifi1RxPackets FlexInt `json:"guest-wifi1-rx_packets"`
|
||||
UserWifi1RxPackets FlexInt `json:"user-wifi1-rx_packets"`
|
||||
UserWifi0RxPackets FlexInt `json:"user-wifi0-rx_packets"`
|
||||
UserRxPackets FlexInt `json:"user-rx_packets"`
|
||||
GuestRxPackets FlexInt `json:"guest-rx_packets"`
|
||||
Wifi0RxPackets FlexInt `json:"wifi0-rx_packets"`
|
||||
Wifi1RxPackets FlexInt `json:"wifi1-rx_packets"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
GuestWifi0RxBytes FlexInt `json:"guest-wifi0-rx_bytes"`
|
||||
GuestWifi1RxBytes FlexInt `json:"guest-wifi1-rx_bytes"`
|
||||
UserWifi1RxBytes FlexInt `json:"user-wifi1-rx_bytes"`
|
||||
UserWifi0RxBytes FlexInt `json:"user-wifi0-rx_bytes"`
|
||||
UserRxBytes FlexInt `json:"user-rx_bytes"`
|
||||
GuestRxBytes FlexInt `json:"guest-rx_bytes"`
|
||||
Wifi0RxBytes FlexInt `json:"wifi0-rx_bytes"`
|
||||
Wifi1RxBytes FlexInt `json:"wifi1-rx_bytes"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
GuestWifi0RxErrors FlexInt `json:"guest-wifi0-rx_errors"`
|
||||
GuestWifi1RxErrors FlexInt `json:"guest-wifi1-rx_errors"`
|
||||
UserWifi1RxErrors FlexInt `json:"user-wifi1-rx_errors"`
|
||||
UserWifi0RxErrors FlexInt `json:"user-wifi0-rx_errors"`
|
||||
UserRxErrors FlexInt `json:"user-rx_errors"`
|
||||
GuestRxErrors FlexInt `json:"guest-rx_errors"`
|
||||
Wifi0RxErrors FlexInt `json:"wifi0-rx_errors"`
|
||||
Wifi1RxErrors FlexInt `json:"wifi1-rx_errors"`
|
||||
RxErrors FlexInt `json:"rx_errors"`
|
||||
GuestWifi0RxDropped FlexInt `json:"guest-wifi0-rx_dropped"`
|
||||
GuestWifi1RxDropped FlexInt `json:"guest-wifi1-rx_dropped"`
|
||||
UserWifi1RxDropped FlexInt `json:"user-wifi1-rx_dropped"`
|
||||
UserWifi0RxDropped FlexInt `json:"user-wifi0-rx_dropped"`
|
||||
UserRxDropped FlexInt `json:"user-rx_dropped"`
|
||||
GuestRxDropped FlexInt `json:"guest-rx_dropped"`
|
||||
Wifi0RxDropped FlexInt `json:"wifi0-rx_dropped"`
|
||||
Wifi1RxDropped FlexInt `json:"wifi1-rx_dropped"`
|
||||
RxDropped FlexInt `json:"rx_dropped"`
|
||||
GuestWifi0RxCrypts FlexInt `json:"guest-wifi0-rx_crypts"`
|
||||
GuestWifi1RxCrypts FlexInt `json:"guest-wifi1-rx_crypts"`
|
||||
UserWifi1RxCrypts FlexInt `json:"user-wifi1-rx_crypts"`
|
||||
UserWifi0RxCrypts FlexInt `json:"user-wifi0-rx_crypts"`
|
||||
UserRxCrypts FlexInt `json:"user-rx_crypts"`
|
||||
GuestRxCrypts FlexInt `json:"guest-rx_crypts"`
|
||||
Wifi0RxCrypts FlexInt `json:"wifi0-rx_crypts"`
|
||||
Wifi1RxCrypts FlexInt `json:"wifi1-rx_crypts"`
|
||||
RxCrypts FlexInt `json:"rx_crypts"`
|
||||
GuestWifi0RxFrags FlexInt `json:"guest-wifi0-rx_frags"`
|
||||
GuestWifi1RxFrags FlexInt `json:"guest-wifi1-rx_frags"`
|
||||
UserWifi1RxFrags FlexInt `json:"user-wifi1-rx_frags"`
|
||||
UserWifi0RxFrags FlexInt `json:"user-wifi0-rx_frags"`
|
||||
UserRxFrags FlexInt `json:"user-rx_frags"`
|
||||
GuestRxFrags FlexInt `json:"guest-rx_frags"`
|
||||
Wifi0RxFrags FlexInt `json:"wifi0-rx_frags"`
|
||||
Wifi1RxFrags FlexInt `json:"wifi1-rx_frags"`
|
||||
RxFrags FlexInt `json:"rx_frags"`
|
||||
GuestWifi0TxPackets FlexInt `json:"guest-wifi0-tx_packets"`
|
||||
GuestWifi1TxPackets FlexInt `json:"guest-wifi1-tx_packets"`
|
||||
UserWifi1TxPackets FlexInt `json:"user-wifi1-tx_packets"`
|
||||
UserWifi0TxPackets FlexInt `json:"user-wifi0-tx_packets"`
|
||||
UserTxPackets FlexInt `json:"user-tx_packets"`
|
||||
GuestTxPackets FlexInt `json:"guest-tx_packets"`
|
||||
Wifi0TxPackets FlexInt `json:"wifi0-tx_packets"`
|
||||
Wifi1TxPackets FlexInt `json:"wifi1-tx_packets"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
GuestWifi0TxBytes FlexInt `json:"guest-wifi0-tx_bytes"`
|
||||
GuestWifi1TxBytes FlexInt `json:"guest-wifi1-tx_bytes"`
|
||||
UserWifi1TxBytes FlexInt `json:"user-wifi1-tx_bytes"`
|
||||
UserWifi0TxBytes FlexInt `json:"user-wifi0-tx_bytes"`
|
||||
UserTxBytes FlexInt `json:"user-tx_bytes"`
|
||||
GuestTxBytes FlexInt `json:"guest-tx_bytes"`
|
||||
Wifi0TxBytes FlexInt `json:"wifi0-tx_bytes"`
|
||||
Wifi1TxBytes FlexInt `json:"wifi1-tx_bytes"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
GuestWifi0TxErrors FlexInt `json:"guest-wifi0-tx_errors"`
|
||||
GuestWifi1TxErrors FlexInt `json:"guest-wifi1-tx_errors"`
|
||||
UserWifi1TxErrors FlexInt `json:"user-wifi1-tx_errors"`
|
||||
UserWifi0TxErrors FlexInt `json:"user-wifi0-tx_errors"`
|
||||
UserTxErrors FlexInt `json:"user-tx_errors"`
|
||||
GuestTxErrors FlexInt `json:"guest-tx_errors"`
|
||||
Wifi0TxErrors FlexInt `json:"wifi0-tx_errors"`
|
||||
Wifi1TxErrors FlexInt `json:"wifi1-tx_errors"`
|
||||
TxErrors FlexInt `json:"tx_errors"`
|
||||
GuestWifi0TxDropped FlexInt `json:"guest-wifi0-tx_dropped"`
|
||||
GuestWifi1TxDropped FlexInt `json:"guest-wifi1-tx_dropped"`
|
||||
UserWifi1TxDropped FlexInt `json:"user-wifi1-tx_dropped"`
|
||||
UserWifi0TxDropped FlexInt `json:"user-wifi0-tx_dropped"`
|
||||
UserTxDropped FlexInt `json:"user-tx_dropped"`
|
||||
GuestTxDropped FlexInt `json:"guest-tx_dropped"`
|
||||
Wifi0TxDropped FlexInt `json:"wifi0-tx_dropped"`
|
||||
Wifi1TxDropped FlexInt `json:"wifi1-tx_dropped"`
|
||||
TxDropped FlexInt `json:"tx_dropped"`
|
||||
GuestWifi0TxRetries FlexInt `json:"guest-wifi0-tx_retries"`
|
||||
GuestWifi1TxRetries FlexInt `json:"guest-wifi1-tx_retries"`
|
||||
UserWifi1TxRetries FlexInt `json:"user-wifi1-tx_retries"`
|
||||
UserWifi0TxRetries FlexInt `json:"user-wifi0-tx_retries"`
|
||||
UserTxRetries FlexInt `json:"user-tx_retries"`
|
||||
GuestTxRetries FlexInt `json:"guest-tx_retries"`
|
||||
Wifi0TxRetries FlexInt `json:"wifi0-tx_retries"`
|
||||
Wifi1TxRetries FlexInt `json:"wifi1-tx_retries"`
|
||||
TxRetries FlexInt `json:"tx_retries"`
|
||||
GuestWifi0MacFilterRejections FlexInt `json:"guest-wifi0-mac_filter_rejections"`
|
||||
GuestWifi1MacFilterRejections FlexInt `json:"guest-wifi1-mac_filter_rejections"`
|
||||
UserWifi1MacFilterRejections FlexInt `json:"user-wifi1-mac_filter_rejections"`
|
||||
UserWifi0MacFilterRejections FlexInt `json:"user-wifi0-mac_filter_rejections"`
|
||||
UserMacFilterRejections FlexInt `json:"user-mac_filter_rejections"`
|
||||
GuestMacFilterRejections FlexInt `json:"guest-mac_filter_rejections"`
|
||||
Wifi0MacFilterRejections FlexInt `json:"wifi0-mac_filter_rejections"`
|
||||
Wifi1MacFilterRejections FlexInt `json:"wifi1-mac_filter_rejections"`
|
||||
MacFilterRejections FlexInt `json:"mac_filter_rejections"`
|
||||
GuestWifi0WifiTxAttempts FlexInt `json:"guest-wifi0-wifi_tx_attempts"`
|
||||
GuestWifi1WifiTxAttempts FlexInt `json:"guest-wifi1-wifi_tx_attempts"`
|
||||
UserWifi1WifiTxAttempts FlexInt `json:"user-wifi1-wifi_tx_attempts"`
|
||||
UserWifi0WifiTxAttempts FlexInt `json:"user-wifi0-wifi_tx_attempts"`
|
||||
UserWifiTxAttempts FlexInt `json:"user-wifi_tx_attempts"`
|
||||
GuestWifiTxAttempts FlexInt `json:"guest-wifi_tx_attempts"`
|
||||
Wifi0WifiTxAttempts FlexInt `json:"wifi0-wifi_tx_attempts"`
|
||||
Wifi1WifiTxAttempts FlexInt `json:"wifi1-wifi_tx_attempts"`
|
||||
WifiTxAttempts FlexInt `json:"wifi_tx_attempts"`
|
||||
GuestWifi0WifiTxDropped FlexInt `json:"guest-wifi0-wifi_tx_dropped"`
|
||||
GuestWifi1WifiTxDropped FlexInt `json:"guest-wifi1-wifi_tx_dropped"`
|
||||
UserWifi1WifiTxDropped FlexInt `json:"user-wifi1-wifi_tx_dropped"`
|
||||
UserWifi0WifiTxDropped FlexInt `json:"user-wifi0-wifi_tx_dropped"`
|
||||
UserWifiTxDropped FlexInt `json:"user-wifi_tx_dropped"`
|
||||
GuestWifiTxDropped FlexInt `json:"guest-wifi_tx_dropped"`
|
||||
Wifi0WifiTxDropped FlexInt `json:"wifi0-wifi_tx_dropped"`
|
||||
Wifi1WifiTxDropped FlexInt `json:"wifi1-wifi_tx_dropped"`
|
||||
WifiTxDropped FlexInt `json:"wifi_tx_dropped"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
Duration FlexInt `json:"duration"`
|
||||
}
|
||||
|
||||
// UnmarshalJSON unmarshalls 5.10 or 5.11 formatted Access Point Stat data.
|
||||
func (v *UAPStat) UnmarshalJSON(data []byte) error {
|
||||
var n struct {
|
||||
Ap `json:"ap"`
|
||||
}
|
||||
v.Ap = &n.Ap
|
||||
err := json.Unmarshal(data, v.Ap) // controller version 5.10.
|
||||
if err != nil {
|
||||
return json.Unmarshal(data, &n) // controller version 5.11.
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
@ -0,0 +1,208 @@
|
|||
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 {
|
||||
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 struct {
|
||||
Type string `json:"type"`
|
||||
IP string `json:"ip"`
|
||||
} `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 string `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 []struct {
|
||||
Mac string `json:"mac"`
|
||||
NumPort FlexInt `json:"num_port"`
|
||||
Name string `json:"name"`
|
||||
} `json:"ethernet_table"`
|
||||
PortTable []Port `json:"port_table"`
|
||||
EthernetOverrides []struct {
|
||||
Ifname string `json:"ifname"`
|
||||
Networkgroup string `json:"networkgroup"`
|
||||
} `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"`
|
||||
HasTemperature FlexBool `json:"has_temperature"`
|
||||
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 []interface{} `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"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
NumSta FlexInt `json:"num_sta"`
|
||||
WlanNumSta FlexInt `json:"wlan-num_sta"`
|
||||
LanNumSta FlexInt `json:"lan-num_sta"`
|
||||
UserWlanNumSta FlexInt `json:"user-wlan-num_sta"`
|
||||
UserLanNumSta FlexInt `json:"user-lan-num_sta"`
|
||||
UserNumSta FlexInt `json:"user-num_sta"`
|
||||
GuestWlanNumSta FlexInt `json:"guest-wlan-num_sta"`
|
||||
GuestLanNumSta FlexInt `json:"guest-lan-num_sta"`
|
||||
GuestNumSta FlexInt `json:"guest-num_sta"`
|
||||
NumDesktop FlexInt `json:"num_desktop"`
|
||||
NumMobile FlexInt `json:"num_mobile"`
|
||||
NumHandheld FlexInt `json:"num_handheld"`
|
||||
}
|
||||
|
||||
// NetworkTable is the list of networks on a gateway.
|
||||
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"`
|
||||
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"`
|
||||
DPIStatsTable DPIStatsTable `json:"dpistats_table,omitempty"`
|
||||
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"`
|
||||
}
|
||||
|
||||
// DPIStatsTable is the Deep Packet Inspection data for each "network"
|
||||
type DPIStatsTable struct {
|
||||
LastUpdated FlexInt `json:"last_updated"`
|
||||
ByCat []struct {
|
||||
Cat FlexInt `json:"cat"`
|
||||
Apps []FlexInt `json:"apps"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
} `json:"by_cat"`
|
||||
ByApp []struct {
|
||||
App FlexInt `json:"app"`
|
||||
Cat FlexInt `json:"cat"`
|
||||
Clients []struct {
|
||||
Mac string `json:"mac"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
} `json:"clients"`
|
||||
KnownClients FlexInt `json:"known_clients"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
} `json:"by_app"`
|
||||
}
|
||||
|
||||
// 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"`
|
||||
}
|
||||
|
|
@ -1,185 +0,0 @@
|
|||
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 {
|
||||
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 struct {
|
||||
Type string `json:"type"`
|
||||
IP string `json:"ip"`
|
||||
} `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 string `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 []struct {
|
||||
Mac string `json:"mac"`
|
||||
NumPort FlexInt `json:"num_port"`
|
||||
Name string `json:"name"`
|
||||
} `json:"ethernet_table"`
|
||||
PortTable []Port `json:"port_table"`
|
||||
EthernetOverrides []struct {
|
||||
Ifname string `json:"ifname"`
|
||||
Networkgroup string `json:"networkgroup"`
|
||||
} `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"`
|
||||
SwitchCaps struct {
|
||||
MaxMirrorSessions FlexInt `json:"max_mirror_sessions"`
|
||||
MaxAggregateSessions FlexInt `json:"max_aggregate_sessions"`
|
||||
} `json:"switch_caps"`
|
||||
HasFan FlexBool `json:"has_fan"`
|
||||
HasTemperature FlexBool `json:"has_temperature"`
|
||||
RulesetInterfaces struct {
|
||||
Br0 string `json:"br0"`
|
||||
Eth8 string `json:"eth8"`
|
||||
Eth9 string `json:"eth9"`
|
||||
} `json:"ruleset_interfaces"`
|
||||
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 []interface{} `json:"downlink_table"`
|
||||
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"`
|
||||
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"`
|
||||
DpistatsTable struct {
|
||||
LastUpdated FlexInt `json:"last_updated"`
|
||||
ByCat []struct {
|
||||
Cat FlexInt `json:"cat"`
|
||||
Apps []FlexInt `json:"apps"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
} `json:"by_cat"`
|
||||
ByApp []struct {
|
||||
App FlexInt `json:"app"`
|
||||
Cat FlexInt `json:"cat"`
|
||||
Clients []struct {
|
||||
Mac string `json:"mac"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
} `json:"clients"`
|
||||
KnownClients FlexInt `json:"known_clients"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
} `json:"by_app"`
|
||||
} `json:"dpistats_table,omitempty"`
|
||||
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"`
|
||||
} `json:"network_table"`
|
||||
PortOverrides []struct {
|
||||
PortIdx FlexInt `json:"port_idx"`
|
||||
PortconfID string `json:"portconf_id"`
|
||||
} `json:"port_overrides"`
|
||||
Stat UDMStat `json:"stat"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
NumSta FlexInt `json:"num_sta"`
|
||||
WlanNumSta FlexInt `json:"wlan-num_sta"`
|
||||
LanNumSta FlexInt `json:"lan-num_sta"`
|
||||
UserWlanNumSta FlexInt `json:"user-wlan-num_sta"`
|
||||
UserLanNumSta FlexInt `json:"user-lan-num_sta"`
|
||||
UserNumSta FlexInt `json:"user-num_sta"`
|
||||
GuestWlanNumSta FlexInt `json:"guest-wlan-num_sta"`
|
||||
GuestLanNumSta FlexInt `json:"guest-lan-num_sta"`
|
||||
GuestNumSta FlexInt `json:"guest-num_sta"`
|
||||
NumDesktop FlexInt `json:"num_desktop"`
|
||||
NumMobile FlexInt `json:"num_mobile"`
|
||||
NumHandheld FlexInt `json:"num_handheld"`
|
||||
}
|
||||
|
||||
// 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"`
|
||||
}
|
||||
|
|
@ -84,58 +84,18 @@ type USG struct {
|
|||
DNS []string `json:"dns,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
} `json:"port_table"`
|
||||
NetworkTable []struct {
|
||||
ID string `json:"_id"`
|
||||
IsNat FlexBool `json:"is_nat"`
|
||||
DhcpdDNSEnabled FlexBool `json:"dhcpd_dns_enabled"`
|
||||
Purpose string `json:"purpose"`
|
||||
DhcpdLeasetime FlexInt `json:"dhcpd_leasetime"`
|
||||
IgmpSnooping FlexBool `json:"igmp_snooping"`
|
||||
DhcpguardEnabled FlexBool `json:"dhcpguard_enabled,omitempty"`
|
||||
DhcpdStart string `json:"dhcpd_start"`
|
||||
Enabled FlexBool `json:"enabled"`
|
||||
DhcpdStop string `json:"dhcpd_stop"`
|
||||
DhcpdWinsEnabled FlexBool `json:"dhcpd_wins_enabled,omitempty"`
|
||||
DomainName string `json:"domain_name"`
|
||||
DhcpdEnabled FlexBool `json:"dhcpd_enabled"`
|
||||
IPSubnet string `json:"ip_subnet"`
|
||||
Vlan FlexInt `json:"vlan,omitempty"`
|
||||
Networkgroup string `json:"networkgroup"`
|
||||
Name string `json:"name"`
|
||||
SiteID string `json:"site_id"`
|
||||
DhcpdIP1 string `json:"dhcpd_ip_1,omitempty"`
|
||||
VlanEnabled FlexBool `json:"vlan_enabled"`
|
||||
DhcpdGatewayEnabled FlexBool `json:"dhcpd_gateway_enabled"`
|
||||
DhcpdTimeOffsetEnabled FlexBool `json:"dhcpd_time_offset_enabled"`
|
||||
Ipv6InterfaceType string `json:"ipv6_interface_type"`
|
||||
DhcpRelayEnabled FlexBool `json:"dhcp_relay_enabled"`
|
||||
Mac string `json:"mac"`
|
||||
IsGuest FlexBool `json:"is_guest"`
|
||||
IP string `json:"ip"`
|
||||
Up FlexBool `json:"up"`
|
||||
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"`
|
||||
DhcpdNtp1 string `json:"dhcpd_ntp_1,omitempty"`
|
||||
DhcpdNtpEnabled FlexBool `json:"dhcpd_ntp_enabled,omitempty"`
|
||||
DhcpdUnifiController string `json:"dhcpd_unifi_controller,omitempty"`
|
||||
UpnpLanEnabled FlexBool `json:"upnp_lan_enabled,omitempty"`
|
||||
AttrNoDelete FlexBool `json:"attr_no_delete,omitempty"`
|
||||
AttrHiddenID string `json:"attr_hidden_id,omitempty"`
|
||||
} `json:"network_table"`
|
||||
Uplink Uplink `json:"uplink"`
|
||||
Stat USGStat `json:"stat"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
NumSta FlexInt `json:"num_sta"`
|
||||
UserNumSta FlexInt `json:"user-num_sta"`
|
||||
GuestNumSta FlexInt `json:"guest-num_sta"`
|
||||
NumDesktop FlexInt `json:"num_desktop"`
|
||||
NumMobile FlexInt `json:"num_mobile"`
|
||||
NumHandheld FlexInt `json:"num_handheld"`
|
||||
NetworkTable NetworkTable `json:"network_table"`
|
||||
Uplink Uplink `json:"uplink"`
|
||||
Stat USGStat `json:"stat"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
NumSta FlexInt `json:"num_sta"`
|
||||
UserNumSta FlexInt `json:"user-num_sta"`
|
||||
GuestNumSta FlexInt `json:"guest-num_sta"`
|
||||
NumDesktop FlexInt `json:"num_desktop"`
|
||||
NumMobile FlexInt `json:"num_mobile"`
|
||||
NumHandheld FlexInt `json:"num_handheld"`
|
||||
}
|
||||
|
||||
// Uplink is the Internet connection (or uplink) on a UniFi device.
|
||||
|
|
@ -0,0 +1,373 @@
|
|||
package unifi
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
)
|
||||
|
||||
// USW represents all the data from the Ubiquiti Controller for a Unifi Switch.
|
||||
type USW struct {
|
||||
SiteName string `json:"-"`
|
||||
ID string `json:"_id"`
|
||||
Adopted FlexBool `json:"adopted"`
|
||||
BoardRev FlexInt `json:"board_rev"`
|
||||
Cfgversion string `json:"cfgversion"`
|
||||
ConfigNetwork struct {
|
||||
Type string `json:"type"`
|
||||
IP string `json:"ip"`
|
||||
} `json:"config_network"`
|
||||
Dot1XPortctrlEnabled FlexBool `json:"dot1x_portctrl_enabled"`
|
||||
EthernetTable []struct {
|
||||
Mac string `json:"mac"`
|
||||
NumPort FlexInt `json:"num_port,omitempty"`
|
||||
Name string `json:"name"`
|
||||
} `json:"ethernet_table"`
|
||||
FlowctrlEnabled FlexBool `json:"flowctrl_enabled"`
|
||||
FwCaps FlexInt `json:"fw_caps"`
|
||||
HasFan FlexBool `json:"has_fan"`
|
||||
HasTemperature FlexBool `json:"has_temperature"`
|
||||
InformIP string `json:"inform_ip"`
|
||||
InformURL string `json:"inform_url"`
|
||||
IP string `json:"ip"`
|
||||
JumboframeEnabled FlexBool `json:"jumboframe_enabled"`
|
||||
LedOverride string `json:"led_override"`
|
||||
LicenseState string `json:"license_state"`
|
||||
Mac string `json:"mac"`
|
||||
Model string `json:"model"`
|
||||
Name string `json:"name"`
|
||||
OutdoorModeOverride string `json:"outdoor_mode_override"`
|
||||
PortOverrides []struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
PoeMode string `json:"poe_mode,omitempty"`
|
||||
PortIdx FlexInt `json:"port_idx"`
|
||||
PortconfID string `json:"portconf_id"`
|
||||
} `json:"port_overrides"`
|
||||
PortTable []Port `json:"port_table"`
|
||||
Serial string `json:"serial"`
|
||||
SiteID string `json:"site_id"`
|
||||
StpPriority string `json:"stp_priority"`
|
||||
StpVersion string `json:"stp_version"`
|
||||
Type string `json:"type"`
|
||||
Version string `json:"version"`
|
||||
RequiredVersion string `json:"required_version"`
|
||||
SwitchCaps struct {
|
||||
FeatureCaps FlexInt `json:"feature_caps"`
|
||||
MaxMirrorSessions FlexInt `json:"max_mirror_sessions"`
|
||||
MaxAggregateSessions FlexInt `json:"max_aggregate_sessions"`
|
||||
} `json:"switch_caps"`
|
||||
HwCaps FlexInt `json:"hw_caps"`
|
||||
Unsupported FlexBool `json:"unsupported"`
|
||||
UnsupportedReason FlexInt `json:"unsupported_reason"`
|
||||
SysErrorCaps FlexInt `json:"sys_error_caps"`
|
||||
DeviceID string `json:"device_id"`
|
||||
State FlexInt `json:"state"`
|
||||
LastSeen FlexInt `json:"last_seen"`
|
||||
Upgradable FlexBool `json:"upgradable,omitempty"`
|
||||
AdoptableWhenUpgraded FlexBool `json:"adoptable_when_upgraded,omitempty"`
|
||||
Rollupgrade FlexBool `json:"rollupgrade,omitempty"`
|
||||
KnownCfgversion string `json:"known_cfgversion"`
|
||||
Uptime FlexInt `json:"uptime"`
|
||||
Locating FlexBool `json:"locating"`
|
||||
ConnectRequestIP string `json:"connect_request_ip"`
|
||||
ConnectRequestPort string `json:"connect_request_port"`
|
||||
SysStats SysStats `json:"sys_stats"`
|
||||
SystemStats SystemStats `json:"system-stats"`
|
||||
FanLevel FlexInt `json:"fan_level"`
|
||||
GeneralTemperature FlexInt `json:"general_temperature"`
|
||||
Overheating FlexBool `json:"overheating"`
|
||||
TotalMaxPower FlexInt `json:"total_max_power"`
|
||||
DownlinkTable []struct {
|
||||
PortIdx FlexInt `json:"port_idx"`
|
||||
Speed FlexInt `json:"speed"`
|
||||
FullDuplex FlexBool `json:"full_duplex"`
|
||||
Mac string `json:"mac"`
|
||||
} `json:"downlink_table"`
|
||||
Uplink Uplink `json:"uplink"`
|
||||
LastUplink struct {
|
||||
UplinkMac string `json:"uplink_mac"`
|
||||
} `json:"last_uplink"`
|
||||
UplinkDepth FlexInt `json:"uplink_depth"`
|
||||
Stat USWStat `json:"stat"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
NumSta FlexInt `json:"num_sta"`
|
||||
UserNumSta FlexInt `json:"user-num_sta"`
|
||||
GuestNumSta FlexInt `json:"guest-num_sta"`
|
||||
}
|
||||
|
||||
// Port is a physical connection on a USW or UDM.
|
||||
type Port struct {
|
||||
AggregatedBy FlexBool `json:"aggregated_by"`
|
||||
Autoneg FlexBool `json:"autoneg,omitempty"`
|
||||
BytesR FlexInt `json:"bytes-r"`
|
||||
DNS []string `json:"dns,omitempty"`
|
||||
Dot1XMode string `json:"dot1x_mode"`
|
||||
Dot1XStatus string `json:"dot1x_status"`
|
||||
Enable FlexBool `json:"enable"`
|
||||
FlowctrlRx FlexBool `json:"flowctrl_rx"`
|
||||
FlowctrlTx FlexBool `json:"flowctrl_tx"`
|
||||
FullDuplex FlexBool `json:"full_duplex"`
|
||||
IP string `json:"ip,omitempty"`
|
||||
Ifname string `json:"ifname,omitempty"`
|
||||
IsUplink FlexBool `json:"is_uplink"`
|
||||
Mac string `json:"mac,omitempty"`
|
||||
Jumbo FlexBool `json:"jumbo,omitempty"`
|
||||
Masked FlexBool `json:"masked"`
|
||||
Media string `json:"media"`
|
||||
Name string `json:"name"`
|
||||
NetworkName string `json:"network_name,omitempty"`
|
||||
NumPort int `json:"num_port,omitempty"`
|
||||
OpMode string `json:"op_mode"`
|
||||
PoeCaps FlexInt `json:"poe_caps"`
|
||||
PoeClass string `json:"poe_class,omitempty"`
|
||||
PoeCurrent FlexInt `json:"poe_current,omitempty"`
|
||||
PoeEnable FlexBool `json:"poe_enable,omitempty"`
|
||||
PoeGood FlexBool `json:"poe_good,omitempty"`
|
||||
PoeMode string `json:"poe_mode,omitempty"`
|
||||
PoePower FlexInt `json:"poe_power,omitempty"`
|
||||
PoeVoltage FlexInt `json:"poe_voltage,omitempty"`
|
||||
PortDelta struct {
|
||||
TimeDelta int64 `json:"time_delta"`
|
||||
} `json:"port_delta,omitempty"`
|
||||
PortIdx FlexInt `json:"port_idx"`
|
||||
PortPoe FlexBool `json:"port_poe"`
|
||||
PortconfID string `json:"portconf_id"`
|
||||
RxBroadcast FlexInt `json:"rx_broadcast"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
RxBytesR FlexInt `json:"rx_bytes-r"`
|
||||
RxDropped FlexInt `json:"rx_dropped"`
|
||||
RxErrors FlexInt `json:"rx_errors"`
|
||||
RxMulticast FlexInt `json:"rx_multicast"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
Satisfaction FlexInt `json:"satisfaction,omitempty"`
|
||||
SfpFound FlexBool `json:"sfp_found,omitempty"`
|
||||
Speed FlexInt `json:"speed"`
|
||||
SpeedCaps FlexInt `json:"speed_caps"`
|
||||
StpPathcost FlexInt `json:"stp_pathcost"`
|
||||
StpState string `json:"stp_state"`
|
||||
TxBroadcast FlexInt `json:"tx_broadcast"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
TxBytesR FlexInt `json:"tx_bytes-r"`
|
||||
TxDropped FlexInt `json:"tx_dropped"`
|
||||
TxErrors FlexInt `json:"tx_errors"`
|
||||
TxMulticast FlexInt `json:"tx_multicast"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Up FlexBool `json:"up"`
|
||||
}
|
||||
|
||||
// USWStat holds the "stat" data for a switch.
|
||||
// This is split out because of a JSON data format change from 5.10 to 5.11.
|
||||
type USWStat struct {
|
||||
*Sw
|
||||
}
|
||||
|
||||
// Sw is a subtype of USWStat to make unmarshalling of different controller versions possible.
|
||||
type Sw struct {
|
||||
SiteID string `json:"site_id"`
|
||||
O string `json:"o"`
|
||||
Oid string `json:"oid"`
|
||||
Sw string `json:"sw"`
|
||||
Time FlexInt `json:"time"`
|
||||
Datetime time.Time `json:"datetime"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
RxErrors FlexInt `json:"rx_errors"`
|
||||
RxDropped FlexInt `json:"rx_dropped"`
|
||||
RxCrypts FlexInt `json:"rx_crypts"`
|
||||
RxFrags FlexInt `json:"rx_frags"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
TxErrors FlexInt `json:"tx_errors"`
|
||||
TxDropped FlexInt `json:"tx_dropped"`
|
||||
TxRetries FlexInt `json:"tx_retries"`
|
||||
RxMulticast FlexInt `json:"rx_multicast"`
|
||||
RxBroadcast FlexInt `json:"rx_broadcast"`
|
||||
TxMulticast FlexInt `json:"tx_multicast"`
|
||||
TxBroadcast FlexInt `json:"tx_broadcast"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
Duration FlexInt `json:"duration"`
|
||||
/* These are all in port table */
|
||||
/*
|
||||
Port1RxPackets FlexInt `json:"port_1-rx_packets,omitempty"`
|
||||
Port1RxBytes FlexInt `json:"port_1-rx_bytes,omitempty"`
|
||||
Port1TxPackets FlexInt `json:"port_1-tx_packets,omitempty"`
|
||||
Port1TxBytes FlexInt `json:"port_1-tx_bytes,omitempty"`
|
||||
Port1TxMulticast FlexInt `json:"port_1-tx_multicast"`
|
||||
Port1TxBroadcast FlexInt `json:"port_1-tx_broadcast"`
|
||||
Port3RxPackets FlexInt `json:"port_3-rx_packets,omitempty"`
|
||||
Port3RxBytes FlexInt `json:"port_3-rx_bytes,omitempty"`
|
||||
Port3TxPackets FlexInt `json:"port_3-tx_packets,omitempty"`
|
||||
Port3TxBytes FlexInt `json:"port_3-tx_bytes,omitempty"`
|
||||
Port3RxBroadcast FlexInt `json:"port_3-rx_broadcast"`
|
||||
Port3TxMulticast FlexInt `json:"port_3-tx_multicast"`
|
||||
Port3TxBroadcast FlexInt `json:"port_3-tx_broadcast"`
|
||||
Port6RxPackets FlexInt `json:"port_6-rx_packets,omitempty"`
|
||||
Port6RxBytes FlexInt `json:"port_6-rx_bytes,omitempty"`
|
||||
Port6TxPackets FlexInt `json:"port_6-tx_packets,omitempty"`
|
||||
Port6TxBytes FlexInt `json:"port_6-tx_bytes,omitempty"`
|
||||
Port6RxMulticast FlexInt `json:"port_6-rx_multicast"`
|
||||
Port6TxMulticast FlexInt `json:"port_6-tx_multicast"`
|
||||
Port6TxBroadcast FlexInt `json:"port_6-tx_broadcast"`
|
||||
Port7RxPackets FlexInt `json:"port_7-rx_packets,omitempty"`
|
||||
Port7RxBytes FlexInt `json:"port_7-rx_bytes,omitempty"`
|
||||
Port7TxPackets FlexInt `json:"port_7-tx_packets,omitempty"`
|
||||
Port7TxBytes FlexInt `json:"port_7-tx_bytes,omitempty"`
|
||||
Port7TxMulticast FlexInt `json:"port_7-tx_multicast"`
|
||||
Port7TxBroadcast FlexInt `json:"port_7-tx_broadcast"`
|
||||
Port9RxPackets FlexInt `json:"port_9-rx_packets,omitempty"`
|
||||
Port9RxBytes FlexInt `json:"port_9-rx_bytes,omitempty"`
|
||||
Port9TxPackets FlexInt `json:"port_9-tx_packets,omitempty"`
|
||||
Port9TxBytes FlexInt `json:"port_9-tx_bytes,omitempty"`
|
||||
Port9TxMulticast FlexInt `json:"port_9-tx_multicast"`
|
||||
Port9TxBroadcast FlexInt `json:"port_9-tx_broadcast"`
|
||||
Port10RxPackets FlexInt `json:"port_10-rx_packets,omitempty"`
|
||||
Port10RxBytes FlexInt `json:"port_10-rx_bytes,omitempty"`
|
||||
Port10TxPackets FlexInt `json:"port_10-tx_packets,omitempty"`
|
||||
Port10TxBytes FlexInt `json:"port_10-tx_bytes,omitempty"`
|
||||
Port10RxMulticast FlexInt `json:"port_10-rx_multicast"`
|
||||
Port10TxMulticast FlexInt `json:"port_10-tx_multicast"`
|
||||
Port10TxBroadcast FlexInt `json:"port_10-tx_broadcast"`
|
||||
Port11RxPackets FlexInt `json:"port_11-rx_packets,omitempty"`
|
||||
Port11RxBytes FlexInt `json:"port_11-rx_bytes,omitempty"`
|
||||
Port11TxPackets FlexInt `json:"port_11-tx_packets,omitempty"`
|
||||
Port11TxBytes FlexInt `json:"port_11-tx_bytes,omitempty"`
|
||||
Port11TxMulticast FlexInt `json:"port_11-tx_multicast"`
|
||||
Port11TxBroadcast FlexInt `json:"port_11-tx_broadcast"`
|
||||
Port12RxPackets FlexInt `json:"port_12-rx_packets,omitempty"`
|
||||
Port12RxBytes FlexInt `json:"port_12-rx_bytes,omitempty"`
|
||||
Port12TxPackets FlexInt `json:"port_12-tx_packets,omitempty"`
|
||||
Port12TxBytes FlexInt `json:"port_12-tx_bytes,omitempty"`
|
||||
Port12TxMulticast FlexInt `json:"port_12-tx_multicast"`
|
||||
Port12TxBroadcast FlexInt `json:"port_12-tx_broadcast"`
|
||||
Port13RxPackets FlexInt `json:"port_13-rx_packets,omitempty"`
|
||||
Port13RxBytes FlexInt `json:"port_13-rx_bytes,omitempty"`
|
||||
Port13TxPackets FlexInt `json:"port_13-tx_packets,omitempty"`
|
||||
Port13TxBytes FlexInt `json:"port_13-tx_bytes,omitempty"`
|
||||
Port13RxMulticast FlexInt `json:"port_13-rx_multicast"`
|
||||
Port13RxBroadcast FlexInt `json:"port_13-rx_broadcast"`
|
||||
Port13TxMulticast FlexInt `json:"port_13-tx_multicast"`
|
||||
Port13TxBroadcast FlexInt `json:"port_13-tx_broadcast"`
|
||||
Port15RxPackets FlexInt `json:"port_15-rx_packets,omitempty"`
|
||||
Port15RxBytes FlexInt `json:"port_15-rx_bytes,omitempty"`
|
||||
Port15TxPackets FlexInt `json:"port_15-tx_packets,omitempty"`
|
||||
Port15TxBytes FlexInt `json:"port_15-tx_bytes,omitempty"`
|
||||
Port15RxBroadcast FlexInt `json:"port_15-rx_broadcast"`
|
||||
Port15TxMulticast FlexInt `json:"port_15-tx_multicast"`
|
||||
Port15TxBroadcast FlexInt `json:"port_15-tx_broadcast"`
|
||||
Port16RxPackets FlexInt `json:"port_16-rx_packets,omitempty"`
|
||||
Port16RxBytes FlexInt `json:"port_16-rx_bytes,omitempty"`
|
||||
Port16TxPackets FlexInt `json:"port_16-tx_packets,omitempty"`
|
||||
Port16TxBytes FlexInt `json:"port_16-tx_bytes,omitempty"`
|
||||
Port16TxMulticast FlexInt `json:"port_16-tx_multicast"`
|
||||
Port16TxBroadcast FlexInt `json:"port_16-tx_broadcast"`
|
||||
Port17RxPackets FlexInt `json:"port_17-rx_packets,omitempty"`
|
||||
Port17RxBytes FlexInt `json:"port_17-rx_bytes,omitempty"`
|
||||
Port17TxPackets FlexInt `json:"port_17-tx_packets,omitempty"`
|
||||
Port17TxBytes FlexInt `json:"port_17-tx_bytes,omitempty"`
|
||||
Port17TxMulticast FlexInt `json:"port_17-tx_multicast"`
|
||||
Port17TxBroadcast FlexInt `json:"port_17-tx_broadcast"`
|
||||
Port18RxPackets FlexInt `json:"port_18-rx_packets,omitempty"`
|
||||
Port18RxBytes FlexInt `json:"port_18-rx_bytes,omitempty"`
|
||||
Port18TxPackets FlexInt `json:"port_18-tx_packets,omitempty"`
|
||||
Port18TxBytes FlexInt `json:"port_18-tx_bytes,omitempty"`
|
||||
Port18RxMulticast FlexInt `json:"port_18-rx_multicast"`
|
||||
Port18TxMulticast FlexInt `json:"port_18-tx_multicast"`
|
||||
Port18TxBroadcast FlexInt `json:"port_18-tx_broadcast"`
|
||||
Port19RxPackets FlexInt `json:"port_19-rx_packets,omitempty"`
|
||||
Port19RxBytes FlexInt `json:"port_19-rx_bytes,omitempty"`
|
||||
Port19TxPackets FlexInt `json:"port_19-tx_packets,omitempty"`
|
||||
Port19TxBytes FlexInt `json:"port_19-tx_bytes,omitempty"`
|
||||
Port19TxMulticast FlexInt `json:"port_19-tx_multicast"`
|
||||
Port19TxBroadcast FlexInt `json:"port_19-tx_broadcast"`
|
||||
Port21RxPackets FlexInt `json:"port_21-rx_packets,omitempty"`
|
||||
Port21RxBytes FlexInt `json:"port_21-rx_bytes,omitempty"`
|
||||
Port21TxPackets FlexInt `json:"port_21-tx_packets,omitempty"`
|
||||
Port21TxBytes FlexInt `json:"port_21-tx_bytes,omitempty"`
|
||||
Port21RxBroadcast FlexInt `json:"port_21-rx_broadcast"`
|
||||
Port21TxMulticast FlexInt `json:"port_21-tx_multicast"`
|
||||
Port21TxBroadcast FlexInt `json:"port_21-tx_broadcast"`
|
||||
Port22RxPackets FlexInt `json:"port_22-rx_packets,omitempty"`
|
||||
Port22RxBytes FlexInt `json:"port_22-rx_bytes,omitempty"`
|
||||
Port22TxPackets FlexInt `json:"port_22-tx_packets,omitempty"`
|
||||
Port22TxBytes FlexInt `json:"port_22-tx_bytes,omitempty"`
|
||||
Port22RxMulticast FlexInt `json:"port_22-rx_multicast"`
|
||||
Port22TxMulticast FlexInt `json:"port_22-tx_multicast"`
|
||||
Port22TxBroadcast FlexInt `json:"port_22-tx_broadcast"`
|
||||
Port23RxPackets FlexInt `json:"port_23-rx_packets,omitempty"`
|
||||
Port23RxBytes FlexInt `json:"port_23-rx_bytes,omitempty"`
|
||||
Port23RxDropped FlexInt `json:"port_23-rx_dropped"`
|
||||
Port23TxPackets FlexInt `json:"port_23-tx_packets,omitempty"`
|
||||
Port23TxBytes FlexInt `json:"port_23-tx_bytes,omitempty"`
|
||||
Port23RxMulticast FlexInt `json:"port_23-rx_multicast"`
|
||||
Port23RxBroadcast FlexInt `json:"port_23-rx_broadcast"`
|
||||
Port23TxMulticast FlexInt `json:"port_23-tx_multicast"`
|
||||
Port23TxBroadcast FlexInt `json:"port_23-tx_broadcast"`
|
||||
Port24RxPackets FlexInt `json:"port_24-rx_packets,omitempty"`
|
||||
Port24RxBytes FlexInt `json:"port_24-rx_bytes,omitempty"`
|
||||
Port24TxPackets FlexInt `json:"port_24-tx_packets,omitempty"`
|
||||
Port24TxBytes FlexInt `json:"port_24-tx_bytes,omitempty"`
|
||||
Port24RxMulticast FlexInt `json:"port_24-rx_multicast"`
|
||||
Port24TxMulticast FlexInt `json:"port_24-tx_multicast"`
|
||||
Port24TxBroadcast FlexInt `json:"port_24-tx_broadcast"`
|
||||
Port1RxMulticast FlexInt `json:"port_1-rx_multicast"`
|
||||
Port3RxDropped FlexInt `json:"port_3-rx_dropped"`
|
||||
Port3RxMulticast FlexInt `json:"port_3-rx_multicast"`
|
||||
Port6RxDropped FlexInt `json:"port_6-rx_dropped"`
|
||||
Port7RxDropped FlexInt `json:"port_7-rx_dropped"`
|
||||
Port7RxMulticast FlexInt `json:"port_7-rx_multicast"`
|
||||
Port9RxDropped FlexInt `json:"port_9-rx_dropped"`
|
||||
Port9RxMulticast FlexInt `json:"port_9-rx_multicast"`
|
||||
Port9RxBroadcast FlexInt `json:"port_9-rx_broadcast"`
|
||||
Port10RxBroadcast FlexInt `json:"port_10-rx_broadcast"`
|
||||
Port12RxDropped FlexInt `json:"port_12-rx_dropped"`
|
||||
Port12RxMulticast FlexInt `json:"port_12-rx_multicast"`
|
||||
Port13RxDropped FlexInt `json:"port_13-rx_dropped"`
|
||||
Port17RxDropped FlexInt `json:"port_17-rx_dropped"`
|
||||
Port17RxMulticast FlexInt `json:"port_17-rx_multicast"`
|
||||
Port17RxBroadcast FlexInt `json:"port_17-rx_broadcast"`
|
||||
Port19RxDropped FlexInt `json:"port_19-rx_dropped"`
|
||||
Port19RxMulticast FlexInt `json:"port_19-rx_multicast"`
|
||||
Port19RxBroadcast FlexInt `json:"port_19-rx_broadcast"`
|
||||
Port21RxDropped FlexInt `json:"port_21-rx_dropped"`
|
||||
Port21RxMulticast FlexInt `json:"port_21-rx_multicast"`
|
||||
Port7RxBroadcast FlexInt `json:"port_7-rx_broadcast"`
|
||||
Port18RxBroadcast FlexInt `json:"port_18-rx_broadcast"`
|
||||
Port16RxMulticast FlexInt `json:"port_16-rx_multicast"`
|
||||
Port15RxDropped FlexInt `json:"port_15-rx_dropped"`
|
||||
Port15RxMulticast FlexInt `json:"port_15-rx_multicast"`
|
||||
Port16RxBroadcast FlexInt `json:"port_16-rx_broadcast"`
|
||||
Port11RxBroadcast FlexInt `json:"port_11-rx_broadcast"`
|
||||
Port12RxBroadcast FlexInt `json:"port_12-rx_broadcast"`
|
||||
Port6RxBroadcast FlexInt `json:"port_6-rx_broadcast"`
|
||||
Port24RxBroadcast FlexInt `json:"port_24-rx_broadcast"`
|
||||
Port22RxBroadcast FlexInt `json:"port_22-rx_broadcast"`
|
||||
Port10TxDropped FlexInt `json:"port_10-tx_dropped"`
|
||||
Port16TxDropped FlexInt `json:"port_16-tx_dropped"`
|
||||
Port1RxBroadcast FlexInt `json:"port_1-rx_broadcast"`
|
||||
Port4RxPackets FlexInt `json:"port_4-rx_packets,omitempty"`
|
||||
Port4RxBytes FlexInt `json:"port_4-rx_bytes,omitempty"`
|
||||
Port4RxDropped FlexInt `json:"port_4-rx_dropped"`
|
||||
Port4TxPackets FlexInt `json:"port_4-tx_packets,omitempty"`
|
||||
Port4TxBytes FlexInt `json:"port_4-tx_bytes,omitempty"`
|
||||
Port4TxDropped FlexInt `json:"port_4-tx_dropped"`
|
||||
Port4RxMulticast FlexInt `json:"port_4-rx_multicast"`
|
||||
Port4RxBroadcast FlexInt `json:"port_4-rx_broadcast"`
|
||||
Port4TxMulticast FlexInt `json:"port_4-tx_multicast"`
|
||||
Port4TxBroadcast FlexInt `json:"port_4-tx_broadcast"`
|
||||
*/
|
||||
}
|
||||
|
||||
// UnmarshalJSON unmarshalls 5.10 or 5.11 formatted Switch Stat data.
|
||||
func (v *USWStat) UnmarshalJSON(data []byte) error {
|
||||
var n struct {
|
||||
Sw `json:"sw"`
|
||||
}
|
||||
v.Sw = &n.Sw
|
||||
err := json.Unmarshal(data, v.Sw) // controller version 5.10.
|
||||
if err != nil {
|
||||
return json.Unmarshal(data, &n) // controller version 5.11.
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
@ -1,370 +0,0 @@
|
|||
package unifi
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
)
|
||||
|
||||
// USW represents all the data from the Ubiquiti Controller for a Unifi Switch.
|
||||
type USW struct {
|
||||
SiteName string `json:"-"`
|
||||
ID string `json:"_id"`
|
||||
Adopted FlexBool `json:"adopted"`
|
||||
BoardRev FlexInt `json:"board_rev"`
|
||||
Cfgversion string `json:"cfgversion"`
|
||||
ConfigNetwork struct {
|
||||
Type string `json:"type"`
|
||||
IP string `json:"ip"`
|
||||
} `json:"config_network"`
|
||||
Dot1XPortctrlEnabled FlexBool `json:"dot1x_portctrl_enabled"`
|
||||
EthernetTable []struct {
|
||||
Mac string `json:"mac"`
|
||||
NumPort FlexInt `json:"num_port,omitempty"`
|
||||
Name string `json:"name"`
|
||||
} `json:"ethernet_table"`
|
||||
FlowctrlEnabled FlexBool `json:"flowctrl_enabled"`
|
||||
FwCaps FlexInt `json:"fw_caps"`
|
||||
HasFan FlexBool `json:"has_fan"`
|
||||
HasTemperature FlexBool `json:"has_temperature"`
|
||||
InformIP string `json:"inform_ip"`
|
||||
InformURL string `json:"inform_url"`
|
||||
IP string `json:"ip"`
|
||||
JumboframeEnabled FlexBool `json:"jumboframe_enabled"`
|
||||
LedOverride string `json:"led_override"`
|
||||
LicenseState string `json:"license_state"`
|
||||
Mac string `json:"mac"`
|
||||
Model string `json:"model"`
|
||||
Name string `json:"name"`
|
||||
OutdoorModeOverride string `json:"outdoor_mode_override"`
|
||||
PortOverrides []struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
PoeMode string `json:"poe_mode,omitempty"`
|
||||
PortIdx FlexInt `json:"port_idx"`
|
||||
PortconfID string `json:"portconf_id"`
|
||||
} `json:"port_overrides"`
|
||||
PortTable []Port `json:"port_table"`
|
||||
Serial string `json:"serial"`
|
||||
SiteID string `json:"site_id"`
|
||||
StpPriority string `json:"stp_priority"`
|
||||
StpVersion string `json:"stp_version"`
|
||||
Type string `json:"type"`
|
||||
Version string `json:"version"`
|
||||
RequiredVersion string `json:"required_version"`
|
||||
SwitchCaps struct {
|
||||
FeatureCaps FlexInt `json:"feature_caps"`
|
||||
MaxMirrorSessions FlexInt `json:"max_mirror_sessions"`
|
||||
MaxAggregateSessions FlexInt `json:"max_aggregate_sessions"`
|
||||
} `json:"switch_caps"`
|
||||
HwCaps FlexInt `json:"hw_caps"`
|
||||
Unsupported FlexBool `json:"unsupported"`
|
||||
UnsupportedReason FlexInt `json:"unsupported_reason"`
|
||||
SysErrorCaps FlexInt `json:"sys_error_caps"`
|
||||
DeviceID string `json:"device_id"`
|
||||
State FlexInt `json:"state"`
|
||||
LastSeen FlexInt `json:"last_seen"`
|
||||
Upgradable FlexBool `json:"upgradable,omitempty"`
|
||||
AdoptableWhenUpgraded FlexBool `json:"adoptable_when_upgraded,omitempty"`
|
||||
Rollupgrade FlexBool `json:"rollupgrade,omitempty"`
|
||||
KnownCfgversion string `json:"known_cfgversion"`
|
||||
Uptime FlexInt `json:"uptime"`
|
||||
Locating FlexBool `json:"locating"`
|
||||
ConnectRequestIP string `json:"connect_request_ip"`
|
||||
ConnectRequestPort string `json:"connect_request_port"`
|
||||
SysStats SysStats `json:"sys_stats"`
|
||||
SystemStats SystemStats `json:"system-stats"`
|
||||
FanLevel FlexInt `json:"fan_level"`
|
||||
GeneralTemperature FlexInt `json:"general_temperature"`
|
||||
Overheating FlexBool `json:"overheating"`
|
||||
TotalMaxPower FlexInt `json:"total_max_power"`
|
||||
DownlinkTable []struct {
|
||||
PortIdx FlexInt `json:"port_idx"`
|
||||
Speed FlexInt `json:"speed"`
|
||||
FullDuplex FlexBool `json:"full_duplex"`
|
||||
Mac string `json:"mac"`
|
||||
} `json:"downlink_table"`
|
||||
Uplink Uplink `json:"uplink"`
|
||||
LastUplink struct {
|
||||
UplinkMac string `json:"uplink_mac"`
|
||||
} `json:"last_uplink"`
|
||||
UplinkDepth FlexInt `json:"uplink_depth"`
|
||||
Stat USWStat `json:"stat"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
NumSta FlexInt `json:"num_sta"`
|
||||
UserNumSta FlexInt `json:"user-num_sta"`
|
||||
GuestNumSta FlexInt `json:"guest-num_sta"`
|
||||
}
|
||||
|
||||
// Port is a physical connection on a USW or UDM.
|
||||
type Port struct {
|
||||
AggregatedBy FlexBool `json:"aggregated_by"`
|
||||
Autoneg FlexBool `json:"autoneg,omitempty"`
|
||||
BytesR FlexInt `json:"bytes-r"`
|
||||
DNS []string `json:"dns,omitempty"`
|
||||
Dot1XMode string `json:"dot1x_mode"`
|
||||
Dot1XStatus string `json:"dot1x_status"`
|
||||
Enable FlexBool `json:"enable"`
|
||||
FlowctrlRx FlexBool `json:"flowctrl_rx"`
|
||||
FlowctrlTx FlexBool `json:"flowctrl_tx"`
|
||||
FullDuplex FlexBool `json:"full_duplex"`
|
||||
IP string `json:"ip,omitempty"`
|
||||
Ifname string `json:"ifname,omitempty"`
|
||||
IsUplink FlexBool `json:"is_uplink"`
|
||||
Mac string `json:"mac,omitempty"`
|
||||
Jumbo FlexBool `json:"jumbo,omitempty"`
|
||||
Masked FlexBool `json:"masked"`
|
||||
Media string `json:"media"`
|
||||
Name string `json:"name"`
|
||||
NetworkName string `json:"network_name,omitempty"`
|
||||
NumPort int `json:"num_port,omitempty"`
|
||||
OpMode string `json:"op_mode"`
|
||||
PoeCaps FlexInt `json:"poe_caps"`
|
||||
PoeClass string `json:"poe_class,omitempty"`
|
||||
PoeCurrent FlexInt `json:"poe_current,omitempty"`
|
||||
PoeEnable FlexBool `json:"poe_enable,omitempty"`
|
||||
PoeGood FlexBool `json:"poe_good,omitempty"`
|
||||
PoeMode string `json:"poe_mode,omitempty"`
|
||||
PoePower FlexInt `json:"poe_power,omitempty"`
|
||||
PoeVoltage FlexInt `json:"poe_voltage,omitempty"`
|
||||
PortDelta struct {
|
||||
TimeDelta int64 `json:"time_delta"`
|
||||
} `json:"port_delta,omitempty"`
|
||||
PortIdx FlexInt `json:"port_idx"`
|
||||
PortPoe FlexBool `json:"port_poe"`
|
||||
PortconfID string `json:"portconf_id"`
|
||||
RxBroadcast FlexInt `json:"rx_broadcast"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
RxBytesR FlexInt `json:"rx_bytes-r"`
|
||||
RxDropped FlexInt `json:"rx_dropped"`
|
||||
RxErrors FlexInt `json:"rx_errors"`
|
||||
RxMulticast FlexInt `json:"rx_multicast"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
Satisfaction FlexInt `json:"satisfaction,omitempty"`
|
||||
SfpFound FlexBool `json:"sfp_found,omitempty"`
|
||||
Speed FlexInt `json:"speed"`
|
||||
SpeedCaps FlexInt `json:"speed_caps"`
|
||||
StpPathcost FlexInt `json:"stp_pathcost"`
|
||||
StpState string `json:"stp_state"`
|
||||
TxBroadcast FlexInt `json:"tx_broadcast"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
TxBytesR FlexInt `json:"tx_bytes-r"`
|
||||
TxDropped FlexInt `json:"tx_dropped"`
|
||||
TxErrors FlexInt `json:"tx_errors"`
|
||||
TxMulticast FlexInt `json:"tx_multicast"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Up FlexBool `json:"up"`
|
||||
}
|
||||
|
||||
// USWStat holds the "stat" data for a switch.
|
||||
// This is split out because of a JSON data format change from 5.10 to 5.11.
|
||||
type USWStat struct {
|
||||
*Sw
|
||||
}
|
||||
|
||||
// Sw is a subtype of USWStat to make unmarshalling of different controller versions possible.
|
||||
type Sw struct {
|
||||
SiteID string `json:"site_id"`
|
||||
O string `json:"o"`
|
||||
Oid string `json:"oid"`
|
||||
Sw string `json:"sw"`
|
||||
Time FlexInt `json:"time"`
|
||||
Datetime time.Time `json:"datetime"`
|
||||
RxPackets FlexInt `json:"rx_packets"`
|
||||
RxBytes FlexInt `json:"rx_bytes"`
|
||||
RxErrors FlexInt `json:"rx_errors"`
|
||||
RxDropped FlexInt `json:"rx_dropped"`
|
||||
RxCrypts FlexInt `json:"rx_crypts"`
|
||||
RxFrags FlexInt `json:"rx_frags"`
|
||||
TxPackets FlexInt `json:"tx_packets"`
|
||||
TxBytes FlexInt `json:"tx_bytes"`
|
||||
TxErrors FlexInt `json:"tx_errors"`
|
||||
TxDropped FlexInt `json:"tx_dropped"`
|
||||
TxRetries FlexInt `json:"tx_retries"`
|
||||
RxMulticast FlexInt `json:"rx_multicast"`
|
||||
RxBroadcast FlexInt `json:"rx_broadcast"`
|
||||
TxMulticast FlexInt `json:"tx_multicast"`
|
||||
TxBroadcast FlexInt `json:"tx_broadcast"`
|
||||
Bytes FlexInt `json:"bytes"`
|
||||
Duration FlexInt `json:"duration"`
|
||||
Port1RxPackets FlexInt `json:"port_1-rx_packets,omitempty"`
|
||||
Port1RxBytes FlexInt `json:"port_1-rx_bytes,omitempty"`
|
||||
Port1TxPackets FlexInt `json:"port_1-tx_packets,omitempty"`
|
||||
Port1TxBytes FlexInt `json:"port_1-tx_bytes,omitempty"`
|
||||
Port1TxMulticast FlexInt `json:"port_1-tx_multicast"`
|
||||
Port1TxBroadcast FlexInt `json:"port_1-tx_broadcast"`
|
||||
Port3RxPackets FlexInt `json:"port_3-rx_packets,omitempty"`
|
||||
Port3RxBytes FlexInt `json:"port_3-rx_bytes,omitempty"`
|
||||
Port3TxPackets FlexInt `json:"port_3-tx_packets,omitempty"`
|
||||
Port3TxBytes FlexInt `json:"port_3-tx_bytes,omitempty"`
|
||||
Port3RxBroadcast FlexInt `json:"port_3-rx_broadcast"`
|
||||
Port3TxMulticast FlexInt `json:"port_3-tx_multicast"`
|
||||
Port3TxBroadcast FlexInt `json:"port_3-tx_broadcast"`
|
||||
Port6RxPackets FlexInt `json:"port_6-rx_packets,omitempty"`
|
||||
Port6RxBytes FlexInt `json:"port_6-rx_bytes,omitempty"`
|
||||
Port6TxPackets FlexInt `json:"port_6-tx_packets,omitempty"`
|
||||
Port6TxBytes FlexInt `json:"port_6-tx_bytes,omitempty"`
|
||||
Port6RxMulticast FlexInt `json:"port_6-rx_multicast"`
|
||||
Port6TxMulticast FlexInt `json:"port_6-tx_multicast"`
|
||||
Port6TxBroadcast FlexInt `json:"port_6-tx_broadcast"`
|
||||
Port7RxPackets FlexInt `json:"port_7-rx_packets,omitempty"`
|
||||
Port7RxBytes FlexInt `json:"port_7-rx_bytes,omitempty"`
|
||||
Port7TxPackets FlexInt `json:"port_7-tx_packets,omitempty"`
|
||||
Port7TxBytes FlexInt `json:"port_7-tx_bytes,omitempty"`
|
||||
Port7TxMulticast FlexInt `json:"port_7-tx_multicast"`
|
||||
Port7TxBroadcast FlexInt `json:"port_7-tx_broadcast"`
|
||||
Port9RxPackets FlexInt `json:"port_9-rx_packets,omitempty"`
|
||||
Port9RxBytes FlexInt `json:"port_9-rx_bytes,omitempty"`
|
||||
Port9TxPackets FlexInt `json:"port_9-tx_packets,omitempty"`
|
||||
Port9TxBytes FlexInt `json:"port_9-tx_bytes,omitempty"`
|
||||
Port9TxMulticast FlexInt `json:"port_9-tx_multicast"`
|
||||
Port9TxBroadcast FlexInt `json:"port_9-tx_broadcast"`
|
||||
Port10RxPackets FlexInt `json:"port_10-rx_packets,omitempty"`
|
||||
Port10RxBytes FlexInt `json:"port_10-rx_bytes,omitempty"`
|
||||
Port10TxPackets FlexInt `json:"port_10-tx_packets,omitempty"`
|
||||
Port10TxBytes FlexInt `json:"port_10-tx_bytes,omitempty"`
|
||||
Port10RxMulticast FlexInt `json:"port_10-rx_multicast"`
|
||||
Port10TxMulticast FlexInt `json:"port_10-tx_multicast"`
|
||||
Port10TxBroadcast FlexInt `json:"port_10-tx_broadcast"`
|
||||
Port11RxPackets FlexInt `json:"port_11-rx_packets,omitempty"`
|
||||
Port11RxBytes FlexInt `json:"port_11-rx_bytes,omitempty"`
|
||||
Port11TxPackets FlexInt `json:"port_11-tx_packets,omitempty"`
|
||||
Port11TxBytes FlexInt `json:"port_11-tx_bytes,omitempty"`
|
||||
Port11TxMulticast FlexInt `json:"port_11-tx_multicast"`
|
||||
Port11TxBroadcast FlexInt `json:"port_11-tx_broadcast"`
|
||||
Port12RxPackets FlexInt `json:"port_12-rx_packets,omitempty"`
|
||||
Port12RxBytes FlexInt `json:"port_12-rx_bytes,omitempty"`
|
||||
Port12TxPackets FlexInt `json:"port_12-tx_packets,omitempty"`
|
||||
Port12TxBytes FlexInt `json:"port_12-tx_bytes,omitempty"`
|
||||
Port12TxMulticast FlexInt `json:"port_12-tx_multicast"`
|
||||
Port12TxBroadcast FlexInt `json:"port_12-tx_broadcast"`
|
||||
Port13RxPackets FlexInt `json:"port_13-rx_packets,omitempty"`
|
||||
Port13RxBytes FlexInt `json:"port_13-rx_bytes,omitempty"`
|
||||
Port13TxPackets FlexInt `json:"port_13-tx_packets,omitempty"`
|
||||
Port13TxBytes FlexInt `json:"port_13-tx_bytes,omitempty"`
|
||||
Port13RxMulticast FlexInt `json:"port_13-rx_multicast"`
|
||||
Port13RxBroadcast FlexInt `json:"port_13-rx_broadcast"`
|
||||
Port13TxMulticast FlexInt `json:"port_13-tx_multicast"`
|
||||
Port13TxBroadcast FlexInt `json:"port_13-tx_broadcast"`
|
||||
Port15RxPackets FlexInt `json:"port_15-rx_packets,omitempty"`
|
||||
Port15RxBytes FlexInt `json:"port_15-rx_bytes,omitempty"`
|
||||
Port15TxPackets FlexInt `json:"port_15-tx_packets,omitempty"`
|
||||
Port15TxBytes FlexInt `json:"port_15-tx_bytes,omitempty"`
|
||||
Port15RxBroadcast FlexInt `json:"port_15-rx_broadcast"`
|
||||
Port15TxMulticast FlexInt `json:"port_15-tx_multicast"`
|
||||
Port15TxBroadcast FlexInt `json:"port_15-tx_broadcast"`
|
||||
Port16RxPackets FlexInt `json:"port_16-rx_packets,omitempty"`
|
||||
Port16RxBytes FlexInt `json:"port_16-rx_bytes,omitempty"`
|
||||
Port16TxPackets FlexInt `json:"port_16-tx_packets,omitempty"`
|
||||
Port16TxBytes FlexInt `json:"port_16-tx_bytes,omitempty"`
|
||||
Port16TxMulticast FlexInt `json:"port_16-tx_multicast"`
|
||||
Port16TxBroadcast FlexInt `json:"port_16-tx_broadcast"`
|
||||
Port17RxPackets FlexInt `json:"port_17-rx_packets,omitempty"`
|
||||
Port17RxBytes FlexInt `json:"port_17-rx_bytes,omitempty"`
|
||||
Port17TxPackets FlexInt `json:"port_17-tx_packets,omitempty"`
|
||||
Port17TxBytes FlexInt `json:"port_17-tx_bytes,omitempty"`
|
||||
Port17TxMulticast FlexInt `json:"port_17-tx_multicast"`
|
||||
Port17TxBroadcast FlexInt `json:"port_17-tx_broadcast"`
|
||||
Port18RxPackets FlexInt `json:"port_18-rx_packets,omitempty"`
|
||||
Port18RxBytes FlexInt `json:"port_18-rx_bytes,omitempty"`
|
||||
Port18TxPackets FlexInt `json:"port_18-tx_packets,omitempty"`
|
||||
Port18TxBytes FlexInt `json:"port_18-tx_bytes,omitempty"`
|
||||
Port18RxMulticast FlexInt `json:"port_18-rx_multicast"`
|
||||
Port18TxMulticast FlexInt `json:"port_18-tx_multicast"`
|
||||
Port18TxBroadcast FlexInt `json:"port_18-tx_broadcast"`
|
||||
Port19RxPackets FlexInt `json:"port_19-rx_packets,omitempty"`
|
||||
Port19RxBytes FlexInt `json:"port_19-rx_bytes,omitempty"`
|
||||
Port19TxPackets FlexInt `json:"port_19-tx_packets,omitempty"`
|
||||
Port19TxBytes FlexInt `json:"port_19-tx_bytes,omitempty"`
|
||||
Port19TxMulticast FlexInt `json:"port_19-tx_multicast"`
|
||||
Port19TxBroadcast FlexInt `json:"port_19-tx_broadcast"`
|
||||
Port21RxPackets FlexInt `json:"port_21-rx_packets,omitempty"`
|
||||
Port21RxBytes FlexInt `json:"port_21-rx_bytes,omitempty"`
|
||||
Port21TxPackets FlexInt `json:"port_21-tx_packets,omitempty"`
|
||||
Port21TxBytes FlexInt `json:"port_21-tx_bytes,omitempty"`
|
||||
Port21RxBroadcast FlexInt `json:"port_21-rx_broadcast"`
|
||||
Port21TxMulticast FlexInt `json:"port_21-tx_multicast"`
|
||||
Port21TxBroadcast FlexInt `json:"port_21-tx_broadcast"`
|
||||
Port22RxPackets FlexInt `json:"port_22-rx_packets,omitempty"`
|
||||
Port22RxBytes FlexInt `json:"port_22-rx_bytes,omitempty"`
|
||||
Port22TxPackets FlexInt `json:"port_22-tx_packets,omitempty"`
|
||||
Port22TxBytes FlexInt `json:"port_22-tx_bytes,omitempty"`
|
||||
Port22RxMulticast FlexInt `json:"port_22-rx_multicast"`
|
||||
Port22TxMulticast FlexInt `json:"port_22-tx_multicast"`
|
||||
Port22TxBroadcast FlexInt `json:"port_22-tx_broadcast"`
|
||||
Port23RxPackets FlexInt `json:"port_23-rx_packets,omitempty"`
|
||||
Port23RxBytes FlexInt `json:"port_23-rx_bytes,omitempty"`
|
||||
Port23RxDropped FlexInt `json:"port_23-rx_dropped"`
|
||||
Port23TxPackets FlexInt `json:"port_23-tx_packets,omitempty"`
|
||||
Port23TxBytes FlexInt `json:"port_23-tx_bytes,omitempty"`
|
||||
Port23RxMulticast FlexInt `json:"port_23-rx_multicast"`
|
||||
Port23RxBroadcast FlexInt `json:"port_23-rx_broadcast"`
|
||||
Port23TxMulticast FlexInt `json:"port_23-tx_multicast"`
|
||||
Port23TxBroadcast FlexInt `json:"port_23-tx_broadcast"`
|
||||
Port24RxPackets FlexInt `json:"port_24-rx_packets,omitempty"`
|
||||
Port24RxBytes FlexInt `json:"port_24-rx_bytes,omitempty"`
|
||||
Port24TxPackets FlexInt `json:"port_24-tx_packets,omitempty"`
|
||||
Port24TxBytes FlexInt `json:"port_24-tx_bytes,omitempty"`
|
||||
Port24RxMulticast FlexInt `json:"port_24-rx_multicast"`
|
||||
Port24TxMulticast FlexInt `json:"port_24-tx_multicast"`
|
||||
Port24TxBroadcast FlexInt `json:"port_24-tx_broadcast"`
|
||||
Port1RxMulticast FlexInt `json:"port_1-rx_multicast"`
|
||||
Port3RxDropped FlexInt `json:"port_3-rx_dropped"`
|
||||
Port3RxMulticast FlexInt `json:"port_3-rx_multicast"`
|
||||
Port6RxDropped FlexInt `json:"port_6-rx_dropped"`
|
||||
Port7RxDropped FlexInt `json:"port_7-rx_dropped"`
|
||||
Port7RxMulticast FlexInt `json:"port_7-rx_multicast"`
|
||||
Port9RxDropped FlexInt `json:"port_9-rx_dropped"`
|
||||
Port9RxMulticast FlexInt `json:"port_9-rx_multicast"`
|
||||
Port9RxBroadcast FlexInt `json:"port_9-rx_broadcast"`
|
||||
Port10RxBroadcast FlexInt `json:"port_10-rx_broadcast"`
|
||||
Port12RxDropped FlexInt `json:"port_12-rx_dropped"`
|
||||
Port12RxMulticast FlexInt `json:"port_12-rx_multicast"`
|
||||
Port13RxDropped FlexInt `json:"port_13-rx_dropped"`
|
||||
Port17RxDropped FlexInt `json:"port_17-rx_dropped"`
|
||||
Port17RxMulticast FlexInt `json:"port_17-rx_multicast"`
|
||||
Port17RxBroadcast FlexInt `json:"port_17-rx_broadcast"`
|
||||
Port19RxDropped FlexInt `json:"port_19-rx_dropped"`
|
||||
Port19RxMulticast FlexInt `json:"port_19-rx_multicast"`
|
||||
Port19RxBroadcast FlexInt `json:"port_19-rx_broadcast"`
|
||||
Port21RxDropped FlexInt `json:"port_21-rx_dropped"`
|
||||
Port21RxMulticast FlexInt `json:"port_21-rx_multicast"`
|
||||
Port7RxBroadcast FlexInt `json:"port_7-rx_broadcast"`
|
||||
Port18RxBroadcast FlexInt `json:"port_18-rx_broadcast"`
|
||||
Port16RxMulticast FlexInt `json:"port_16-rx_multicast"`
|
||||
Port15RxDropped FlexInt `json:"port_15-rx_dropped"`
|
||||
Port15RxMulticast FlexInt `json:"port_15-rx_multicast"`
|
||||
Port16RxBroadcast FlexInt `json:"port_16-rx_broadcast"`
|
||||
Port11RxBroadcast FlexInt `json:"port_11-rx_broadcast"`
|
||||
Port12RxBroadcast FlexInt `json:"port_12-rx_broadcast"`
|
||||
Port6RxBroadcast FlexInt `json:"port_6-rx_broadcast"`
|
||||
Port24RxBroadcast FlexInt `json:"port_24-rx_broadcast"`
|
||||
Port22RxBroadcast FlexInt `json:"port_22-rx_broadcast"`
|
||||
Port10TxDropped FlexInt `json:"port_10-tx_dropped"`
|
||||
Port16TxDropped FlexInt `json:"port_16-tx_dropped"`
|
||||
Port1RxBroadcast FlexInt `json:"port_1-rx_broadcast"`
|
||||
Port4RxPackets FlexInt `json:"port_4-rx_packets,omitempty"`
|
||||
Port4RxBytes FlexInt `json:"port_4-rx_bytes,omitempty"`
|
||||
Port4RxDropped FlexInt `json:"port_4-rx_dropped"`
|
||||
Port4TxPackets FlexInt `json:"port_4-tx_packets,omitempty"`
|
||||
Port4TxBytes FlexInt `json:"port_4-tx_bytes,omitempty"`
|
||||
Port4TxDropped FlexInt `json:"port_4-tx_dropped"`
|
||||
Port4RxMulticast FlexInt `json:"port_4-rx_multicast"`
|
||||
Port4RxBroadcast FlexInt `json:"port_4-rx_broadcast"`
|
||||
Port4TxMulticast FlexInt `json:"port_4-tx_multicast"`
|
||||
Port4TxBroadcast FlexInt `json:"port_4-tx_broadcast"`
|
||||
}
|
||||
|
||||
// UnmarshalJSON unmarshalls 5.10 or 5.11 formatted Switch Stat data.
|
||||
func (v *USWStat) UnmarshalJSON(data []byte) error {
|
||||
var n struct {
|
||||
Sw `json:"sw"`
|
||||
}
|
||||
v.Sw = &n.Sw
|
||||
err := json.Unmarshal(data, v.Sw) // controller version 5.10.
|
||||
if err != nil {
|
||||
return json.Unmarshal(data, &n) // controller version 5.11.
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Loading…
Reference in New Issue