github.com/dim13/unifi@v0.0.0-20230308161331-9b04946f5e93/network.go (about) 1 // Copyright (c) 2014 The unifi Authors. All rights reserved. 2 // Use of this source code is governed by ISC-style license 3 // that can be found in the LICENSE file. 4 5 package unifi 6 7 // A map of UniFi Networks with a given attribute as key 8 type NetworkMap map[string]Network 9 10 // UniFi Network object 11 type Network struct { 12 ID string `json:"_id"` 13 AttrHiddenID string `json:"attr_hidden_id"` 14 AttrNoDelete bool `json:"attr_no_delete"` 15 DhcpdEnabled bool `json:"dhcpd_enabled"` 16 DhcpdStart string `json:"dhcpd_start"` 17 DhcpdStop string `json:"dhcpd_stop"` 18 Dhcpdv6Enabled bool `json:"dhcpdv6_enabled"` 19 DomainName string `json:"domain_name"` 20 IPSubnet string `json:"ip_subnet"` 21 Ipv6InterfaceType string `json:"ipv6_interface_type"` 22 Ipv6RaEnabled bool `json:"ipv6_ra_enabled"` 23 IsNat bool `json:"is_nat"` 24 Name string `json:"name"` 25 Networkgroup string `json:"networkgroup"` 26 Purpose string `json:"purpose"` 27 SiteID string `json:"site_id"` 28 VlanEnabled bool `json:"vlan_enabled"` 29 } 30 31 // Networks Returns a slice of known networks 32 func (u *Unifi) Networks(site *Site) ([]Network, error) { 33 var response struct { 34 Data []Network 35 Meta meta 36 } 37 err := u.parse(site, "rest/networkconf", nil, &response) 38 return response.Data, err 39 } 40 41 // NetworkMap Returns a map of networkconfigs of a given site with ID as key 42 func (u *Unifi) NetworkMap(site *Site) (NetworkMap, error) { 43 networks, err := u.Networks(site) 44 if err != nil { 45 return nil, err 46 } 47 m := make(NetworkMap) 48 for _, n := range networks { 49 m[n.ID] = n 50 } 51 return m, nil 52 }