| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | package logicimport (	"encoding/json"	"github.com/gravitl/netmaker/database"	"github.com/gravitl/netmaker/models")// GetExtPeersList - gets the ext peers listsfunc GetExtPeersList(macaddress string, networkName string) ([]models.ExtPeersResponse, error) {	var peers []models.ExtPeersResponse	records, err := database.FetchRecords(database.EXT_CLIENT_TABLE_NAME)	if err != nil {		return peers, err	}	for _, value := range records {		var peer models.ExtPeersResponse		var extClient models.ExtClient		err = json.Unmarshal([]byte(value), &peer)		if err != nil {			Log("failed to unmarshal peer when getting ext peer list", 2)			continue		}		err = json.Unmarshal([]byte(value), &extClient)		if err != nil {			Log("failed to unmarshal ext client", 2)			continue		}		if extClient.Network == networkName && extClient.IngressGatewayID == macaddress {			peers = append(peers, peer)		}	}	return peers, err}// ExtClient.GetEgressRangesOnNetwork - returns the egress ranges on network of ext clientfunc GetEgressRangesOnNetwork(client *models.ExtClient) ([]string, error) {	var result []string	nodesData, err := database.FetchRecords(database.NODES_TABLE_NAME)	if err != nil {		return []string{}, err	}	for _, nodeData := range nodesData {		var currentNode models.Node		if err = json.Unmarshal([]byte(nodeData), ¤tNode); err != nil {			continue		}		if currentNode.Network != client.Network {			continue		}		if currentNode.IsEgressGateway == "yes" { // add the egress gateway range(s) to the result			if len(currentNode.EgressGatewayRanges) > 0 {				result = append(result, currentNode.EgressGatewayRanges...)			}		}	}	return result, nil}
 |