package dcxSwitchapi import ( "bytes" "encoding/json" "fmt" ) type ( MacAddressList struct { Items []MacAddressInfo `json:"items"` } MacAddressInfo struct { Vlan string `json:"vlan"` MacAddress string `json:"mac_address"` Type string `json:"type"` Ports []string `json:"ports"` } ) // Method to return a list of MAC Addresses from a switch func (s *Client) MacAddresses(swName string) (*MacAddressList, error) { body, err := s.get(fmt.Sprintf("%s/mac_addresses", swName)) if err != nil { return nil, err } payload := new(MacAddressList) err = json.NewDecoder(bytes.NewReader(*body)).Decode(payload) return payload, err } func (m *MacAddressList) GetAddress(macAddress string) []MacAddressInfo { r := make([]MacAddressInfo, 0) for _, x := range m.Items { if x.MacAddress == macAddress { r = append(r, x) } } return r } func (m *MacAddressList) GetAddressesByPort(portName string) []string { result := make([]string, 0) for _, mac := range m.Items { for _, p := range mac.Ports { if p == portName { result = append(result, mac.MacAddress) break } } } return result }