Skip to content

Commit e4af737

Browse files
committed
Merge branch 'NET-1786' of https://github.com/gravitl/netmaker into NET-1786
2 parents 125f8a6 + 6bb4462 commit e4af737

File tree

2 files changed

+36
-15
lines changed

2 files changed

+36
-15
lines changed

logic/peers.go

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,24 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
8585
HostNetworkInfo: models.HostInfoMap{},
8686
EndpointDetection: servercfg.IsEndpointDetectionEnabled(),
8787
}
88+
defer func() {
89+
if !hostPeerUpdate.FwUpdate.AllowAll {
90+
aclRule := models.AclRule{
91+
ID: "allowed-network-rules",
92+
AllowedProtocol: models.ALL,
93+
Direction: models.TrafficDirectionBi,
94+
Allowed: true,
95+
}
96+
for _, allowedNet := range hostPeerUpdate.FwUpdate.AllowedNetworks {
97+
if allowedNet.IP.To4() != nil {
98+
aclRule.IPList = append(aclRule.IPList, allowedNet)
99+
} else {
100+
aclRule.IP6List = append(aclRule.IP6List, allowedNet)
101+
}
102+
}
103+
hostPeerUpdate.FwUpdate.AclRules["allowed-network-rules"] = aclRule
104+
}
105+
}()
88106

89107
slog.Debug("peer update for host", "hostId", host.ID.String())
90108
peerIndexMap := make(map[string]int)
@@ -158,17 +176,20 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
158176
}
159177
defaultUserPolicy, _ := GetDefaultPolicy(models.NetworkID(node.Network), models.UserPolicy)
160178
defaultDevicePolicy, _ := GetDefaultPolicy(models.NetworkID(node.Network), models.DevicePolicy)
161-
if node.NetworkRange.IP != nil {
162-
hostPeerUpdate.FwUpdate.Networks = append(hostPeerUpdate.FwUpdate.Networks, node.NetworkRange)
163-
}
164-
if node.NetworkRange6.IP != nil {
165-
hostPeerUpdate.FwUpdate.Networks = append(hostPeerUpdate.FwUpdate.Networks, node.NetworkRange6)
166-
}
167179

168-
if !defaultDevicePolicy.Enabled || !defaultUserPolicy.Enabled {
180+
if defaultDevicePolicy.Enabled && defaultUserPolicy.Enabled {
181+
if node.NetworkRange.IP != nil {
182+
hostPeerUpdate.FwUpdate.AllowedNetworks = append(hostPeerUpdate.FwUpdate.AllowedNetworks, node.NetworkRange)
183+
}
184+
if node.NetworkRange6.IP != nil {
185+
hostPeerUpdate.FwUpdate.AllowedNetworks = append(hostPeerUpdate.FwUpdate.AllowedNetworks, node.NetworkRange6)
186+
}
187+
188+
} else {
169189
hostPeerUpdate.FwUpdate.AllowAll = false
190+
hostPeerUpdate.FwUpdate.AclRules = GetAclRulesForNode(&node)
170191
}
171-
hostPeerUpdate.FwUpdate.AclRules = GetAclRulesForNode(&node)
192+
172193
currentPeers := GetNetworkNodesMemory(allNodes, node.Network)
173194
for _, peer := range currentPeers {
174195
peer := peer

models/mqtt.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,13 @@ type KeyUpdate struct {
9494

9595
// FwUpdate - struct for firewall updates
9696
type FwUpdate struct {
97-
AllowAll bool `json:"allow_all"`
98-
Networks []net.IPNet `json:"networks"`
99-
IsEgressGw bool `json:"is_egress_gw"`
100-
IsIngressGw bool `json:"is_ingress_gw"`
101-
EgressInfo map[string]EgressInfo `json:"egress_info"`
102-
IngressInfo map[string]IngressInfo `json:"ingress_info"`
103-
AclRules map[string]AclRule `json:"acl_rules"`
97+
AllowAll bool `json:"allow_all"`
98+
AllowedNetworks []net.IPNet `json:"networks"`
99+
IsEgressGw bool `json:"is_egress_gw"`
100+
IsIngressGw bool `json:"is_ingress_gw"`
101+
EgressInfo map[string]EgressInfo `json:"egress_info"`
102+
IngressInfo map[string]IngressInfo `json:"ingress_info"`
103+
AclRules map[string]AclRule `json:"acl_rules"`
104104
}
105105

106106
// FailOverMeReq - struct for failover req

0 commit comments

Comments
 (0)