Browse Source

pkg/mesh/mesh.go: iptables rules in encapsulation

Because of new naming conventions for locations, the CIDRs were not
being set within locations.
This lead to no iptables rules added for nodes in the same location.
leonnicolas 5 years ago
parent
commit
52d8d13047
1 changed files with 4 additions and 1 deletions
  1. 4 1
      pkg/mesh/mesh.go

+ 4 - 1
pkg/mesh/mesh.go

@@ -490,7 +490,10 @@ func (m *Mesh) applyTopology() {
 	if m.enc.Strategy() != encapsulation.Never && m.local {
 	if m.enc.Strategy() != encapsulation.Never && m.local {
 		var cidrs []*net.IPNet
 		var cidrs []*net.IPNet
 		for _, s := range t.segments {
 		for _, s := range t.segments {
-			if s.location == nodes[m.hostname].Location {
+			// If the location prefix is not logicalLocation, but nodeLocation,
+			// we don't need to set any extra rules for encapsulation anyways
+			// because traffic will go over WireGuard.
+			if s.location == logicalLocationPrefix+nodes[m.hostname].Location {
 				for i := range s.privateIPs {
 				for i := range s.privateIPs {
 					cidrs = append(cidrs, oneAddressCIDR(s.privateIPs[i]))
 					cidrs = append(cidrs, oneAddressCIDR(s.privateIPs[i]))
 				}
 				}