diff --git a/logic/extpeers.go b/logic/extpeers.go index 27d4d8fb..f13fcec4 100644 --- a/logic/extpeers.go +++ b/logic/extpeers.go @@ -402,6 +402,19 @@ func ToggleExtClientConnectivity(client *models.ExtClient, enable bool) (models. return newClient, nil } +func GetStaticNodeIps(node models.Node) (ips []net.IP) { + extclients := GetStaticNodesByNetwork(models.NetworkID(node.Network), false) + for _, extclient := range extclients { + if extclient.StaticNode.Address != "" { + ips = append(ips, extclient.StaticNode.AddressIPNet4().IP) + } + if extclient.StaticNode.Address6 != "" { + ips = append(ips, extclient.StaticNode.AddressIPNet6().IP) + } + } + return +} + func GetFwRulesOnIngressGateway(node models.Node) (rules []models.FwRule) { // fetch user access to static clients via policies extclients := GetStaticNodesByNetwork(models.NetworkID(node.Network), true) @@ -413,12 +426,14 @@ func GetFwRulesOnIngressGateway(node models.Node) (rules []models.FwRule) { rules = append(rules, models.FwRule{ SrcIp: userNodeI.StaticNode.AddressIPNet4().IP, DstIP: extclient.StaticNode.AddressIPNet4().IP, + Allow: true, }) } if userNodeI.StaticNode.Address6 != "" { rules = append(rules, models.FwRule{ SrcIp: userNodeI.StaticNode.AddressIPNet6().IP, DstIP: extclient.StaticNode.AddressIPNet6().IP, + Allow: true, }) } } diff --git a/logic/peers.go b/logic/peers.go index 485ba3d6..4456fbc1 100644 --- a/logic/peers.go +++ b/logic/peers.go @@ -294,9 +294,10 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N extPeers, extPeerIDAndAddrs, egressRoutes, extUserIps, err = GetExtPeers(&node, &node) if err == nil { hostPeerUpdate.FwUpdate.IngressInfo[node.ID.String()] = models.IngressInfo{ - IngressID: node.ID.String(), - UserIps: extUserIps, - Rules: GetFwRulesOnIngressGateway(node), + IngressID: node.ID.String(), + UserIps: extUserIps, + Rules: GetFwRulesOnIngressGateway(node), + StaticNodeIps: GetStaticNodeIps(node), } hostPeerUpdate.EgressRoutes = append(hostPeerUpdate.EgressRoutes, egressRoutes...) hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, extPeers...) diff --git a/models/mqtt.go b/models/mqtt.go index 028be475..2d978708 100644 --- a/models/mqtt.go +++ b/models/mqtt.go @@ -34,9 +34,10 @@ type FwRule struct { // IngressInfo - struct for ingress info type IngressInfo struct { - IngressID string `json:"ingress_id"` - UserIps []net.IP `json:"user_ips"` - Rules []FwRule `json:"rules"` + IngressID string `json:"ingress_id"` + UserIps []net.IP `json:"user_ips"` + StaticNodeIps []net.IP `json:"static_node_ips"` + Rules []FwRule `json:"rules"` } // EgressInfo - struct for egress info