mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-13 20:44:43 +08:00
removed isdualstack references
This commit is contained in:
@@ -152,11 +152,6 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// if newNetwork.IsDualStack != currentNetwork.IsDualStack && newNetwork.IsDualStack == "no" {
|
|
||||||
// // Remove IPv6 address from network nodes
|
|
||||||
// RemoveNetworkNodeIPv6Addresses(currentNetwork.NetID)
|
|
||||||
// }
|
|
||||||
|
|
||||||
if rangeupdate {
|
if rangeupdate {
|
||||||
err = logic.UpdateNetworkNodeAddresses(network.NetID)
|
err = logic.UpdateNetworkNodeAddresses(network.NetID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@@ -408,7 +408,6 @@ func RemoveNetworkNodeIPv6Addresses(networkName string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if node.Network == networkName {
|
if node.Network == networkName {
|
||||||
node.IsDualStack = "no"
|
|
||||||
node.Address6 = ""
|
node.Address6 = ""
|
||||||
data, err := json.Marshal(&node)
|
data, err := json.Marshal(&node)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@@ -425,9 +425,7 @@ func SetNodeDefaults(node *models.Node) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// == Parent Network settings ==
|
// == Parent Network settings ==
|
||||||
if node.IsDualStack == "" {
|
|
||||||
node.IsDualStack = parentNetwork.IsDualStack
|
|
||||||
}
|
|
||||||
if node.MTU == 0 {
|
if node.MTU == 0 {
|
||||||
node.MTU = parentNetwork.DefaultMTU
|
node.MTU = parentNetwork.DefaultMTU
|
||||||
}
|
}
|
||||||
@@ -435,7 +433,6 @@ func SetNodeDefaults(node *models.Node) {
|
|||||||
node.SetIPForwardingDefault()
|
node.SetIPForwardingDefault()
|
||||||
node.SetDNSOnDefault()
|
node.SetDNSOnDefault()
|
||||||
node.SetIsLocalDefault()
|
node.SetIsLocalDefault()
|
||||||
node.SetIsDualStackDefault()
|
|
||||||
node.SetLastModified()
|
node.SetLastModified()
|
||||||
node.SetDefaultName()
|
node.SetDefaultName()
|
||||||
node.SetLastCheckIn()
|
node.SetLastCheckIn()
|
||||||
|
@@ -34,19 +34,19 @@ func GetHubPeer(networkName string) []models.Node {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// GetNodePeers - fetches peers for a given node
|
// GetNodePeers - fetches peers for a given node
|
||||||
func GetNodePeers(networkName, nodeid string, excludeRelayed bool, isP2S bool) ([]models.Node, error) {
|
func GetNodePeers(network *models.Network, nodeid string, excludeRelayed bool, isP2S bool) ([]models.Node, error) {
|
||||||
var peers []models.Node
|
var peers []models.Node
|
||||||
var networkNodes, egressNetworkNodes, err = getNetworkEgressAndNodes(networkName)
|
var networkNodes, egressNetworkNodes, err = getNetworkEgressAndNodes(network.NetID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return peers, nil
|
return peers, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
udppeers, errN := database.GetPeers(networkName)
|
udppeers, errN := database.GetPeers(network.NetID)
|
||||||
if errN != nil {
|
if errN != nil {
|
||||||
logger.Log(2, errN.Error())
|
logger.Log(2, errN.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
currentNetworkACLs, aclErr := nodeacls.FetchAllACLs(nodeacls.NetworkID(networkName))
|
currentNetworkACLs, aclErr := nodeacls.FetchAllACLs(nodeacls.NetworkID(network.NetID))
|
||||||
if aclErr != nil {
|
if aclErr != nil {
|
||||||
return peers, aclErr
|
return peers, aclErr
|
||||||
}
|
}
|
||||||
@@ -63,10 +63,9 @@ func GetNodePeers(networkName, nodeid string, excludeRelayed bool, isP2S bool) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
peer.IsIngressGateway = node.IsIngressGateway
|
peer.IsIngressGateway = node.IsIngressGateway
|
||||||
isDualStack := node.IsDualStack == "yes"
|
|
||||||
allow := node.IsRelayed != "yes" || !excludeRelayed
|
allow := node.IsRelayed != "yes" || !excludeRelayed
|
||||||
|
|
||||||
if node.Network == networkName && node.IsPending != "yes" && allow {
|
if node.Network == network.NetID && node.IsPending != "yes" && allow {
|
||||||
peer = setPeerInfo(&node)
|
peer = setPeerInfo(&node)
|
||||||
if node.UDPHolePunch == "yes" && errN == nil && CheckEndpoint(udppeers[node.PublicKey]) {
|
if node.UDPHolePunch == "yes" && errN == nil && CheckEndpoint(udppeers[node.PublicKey]) {
|
||||||
endpointstring := udppeers[node.PublicKey]
|
endpointstring := udppeers[node.PublicKey]
|
||||||
@@ -84,12 +83,7 @@ func GetNodePeers(networkName, nodeid string, excludeRelayed bool, isP2S bool) (
|
|||||||
peer.ListenPort = node.LocalListenPort
|
peer.ListenPort = node.LocalListenPort
|
||||||
}
|
}
|
||||||
if node.IsRelay == "yes" {
|
if node.IsRelay == "yes" {
|
||||||
network, err := GetNetwork(networkName)
|
|
||||||
if err == nil {
|
|
||||||
peer.AllowedIPs = append(peer.AllowedIPs, network.AddressRange)
|
peer.AllowedIPs = append(peer.AllowedIPs, network.AddressRange)
|
||||||
} else {
|
|
||||||
peer.AllowedIPs = append(peer.AllowedIPs, node.RelayAddrs...)
|
|
||||||
}
|
|
||||||
for _, egressNode := range egressNetworkNodes {
|
for _, egressNode := range egressNetworkNodes {
|
||||||
if egressNode.IsRelayed == "yes" && StringSliceContains(node.RelayAddrs, egressNode.Address) {
|
if egressNode.IsRelayed == "yes" && StringSliceContains(node.RelayAddrs, egressNode.Address) {
|
||||||
peer.AllowedIPs = append(peer.AllowedIPs, egressNode.EgressGatewayRanges...)
|
peer.AllowedIPs = append(peer.AllowedIPs, egressNode.EgressGatewayRanges...)
|
||||||
@@ -99,8 +93,10 @@ func GetNodePeers(networkName, nodeid string, excludeRelayed bool, isP2S bool) (
|
|||||||
if peer.IsIngressGateway == "yes" { // handle ingress stuff
|
if peer.IsIngressGateway == "yes" { // handle ingress stuff
|
||||||
if currentExtClients, err := GetExtPeersList(&node); err == nil {
|
if currentExtClients, err := GetExtPeersList(&node); err == nil {
|
||||||
for i := range currentExtClients {
|
for i := range currentExtClients {
|
||||||
|
if network.IsIPv4 == "yes" {
|
||||||
peer.AllowedIPs = append(peer.AllowedIPs, currentExtClients[i].Address)
|
peer.AllowedIPs = append(peer.AllowedIPs, currentExtClients[i].Address)
|
||||||
if isDualStack {
|
}
|
||||||
|
if network.IsIPv6 == "yes" {
|
||||||
peer.AllowedIPs = append(peer.AllowedIPs, currentExtClients[i].Address6)
|
peer.AllowedIPs = append(peer.AllowedIPs, currentExtClients[i].Address6)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -135,7 +131,7 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) {
|
|||||||
isP2S = true
|
isP2S = true
|
||||||
}
|
}
|
||||||
if relayedNodeAddr == "" {
|
if relayedNodeAddr == "" {
|
||||||
peers, err = GetNodePeers(networkName, refnode.ID, excludeRelayed, isP2S)
|
peers, err = GetNodePeers(&network, refnode.ID, excludeRelayed, isP2S)
|
||||||
} else {
|
} else {
|
||||||
var relayNode models.Node
|
var relayNode models.Node
|
||||||
relayNode, err = GetNodeRelay(networkName, relayedNodeAddr)
|
relayNode, err = GetNodeRelay(networkName, relayedNodeAddr)
|
||||||
@@ -155,7 +151,7 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) {
|
|||||||
} else {
|
} else {
|
||||||
peerNode.AllowedIPs = append(peerNode.AllowedIPs, peerNode.RelayAddrs...)
|
peerNode.AllowedIPs = append(peerNode.AllowedIPs, peerNode.RelayAddrs...)
|
||||||
}
|
}
|
||||||
nodepeers, err := GetNodePeers(networkName, refnode.ID, false, isP2S)
|
nodepeers, err := GetNodePeers(&network, refnode.ID, false, isP2S)
|
||||||
if err == nil && peerNode.UDPHolePunch == "yes" {
|
if err == nil && peerNode.UDPHolePunch == "yes" {
|
||||||
for _, nodepeer := range nodepeers {
|
for _, nodepeer := range nodepeers {
|
||||||
if nodepeer.Address == peerNode.Address {
|
if nodepeer.Address == peerNode.Address {
|
||||||
|
@@ -287,7 +287,7 @@ func GetServerPeers(serverNode *models.Node) ([]wgtypes.PeerConfig, bool, []stri
|
|||||||
}
|
}
|
||||||
ranges = nil
|
ranges = nil
|
||||||
}
|
}
|
||||||
if node.Address6 != "" && serverNode.IsDualStack == "yes" {
|
if node.Address6 != "" {
|
||||||
var addr6 = net.IPNet{
|
var addr6 = net.IPNet{
|
||||||
IP: net.ParseIP(node.Address6),
|
IP: net.ParseIP(node.Address6),
|
||||||
Mask: net.CIDRMask(128, 128),
|
Mask: net.CIDRMask(128, 128),
|
||||||
@@ -357,7 +357,7 @@ func GetServerExtPeers(serverNode *models.Node) ([]wgtypes.PeerConfig, error) {
|
|||||||
peeraddr,
|
peeraddr,
|
||||||
}
|
}
|
||||||
|
|
||||||
if extPeer.Address6 != "" && serverNode.IsDualStack == "yes" {
|
if extPeer.Address6 != "" {
|
||||||
var addr6 = net.IPNet{
|
var addr6 = net.IPNet{
|
||||||
IP: net.ParseIP(extPeer.Address6),
|
IP: net.ParseIP(extPeer.Address6),
|
||||||
Mask: net.CIDRMask(128, 128),
|
Mask: net.CIDRMask(128, 128),
|
||||||
|
@@ -50,9 +50,9 @@ func HasPeerConnected(node *models.Node) bool {
|
|||||||
func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool {
|
func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool {
|
||||||
// single comparison statements
|
// single comparison statements
|
||||||
if newNode.Endpoint != currentNode.Endpoint ||
|
if newNode.Endpoint != currentNode.Endpoint ||
|
||||||
newNode.LocalAddress != currentNode.LocalAddress ||
|
|
||||||
newNode.PublicKey != currentNode.PublicKey ||
|
newNode.PublicKey != currentNode.PublicKey ||
|
||||||
newNode.Address != currentNode.Address ||
|
newNode.Address != currentNode.Address ||
|
||||||
|
newNode.Address6 != currentNode.Address6 ||
|
||||||
newNode.IsEgressGateway != currentNode.IsEgressGateway ||
|
newNode.IsEgressGateway != currentNode.IsEgressGateway ||
|
||||||
newNode.IsIngressGateway != currentNode.IsIngressGateway ||
|
newNode.IsIngressGateway != currentNode.IsIngressGateway ||
|
||||||
newNode.IsRelay != currentNode.IsRelay ||
|
newNode.IsRelay != currentNode.IsRelay ||
|
||||||
@@ -67,12 +67,6 @@ func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// multi-comparison statements
|
// multi-comparison statements
|
||||||
if newNode.IsDualStack == "yes" {
|
|
||||||
if newNode.Address6 != currentNode.Address6 {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if newNode.IsEgressGateway == "yes" {
|
if newNode.IsEgressGateway == "yes" {
|
||||||
if len(currentNode.EgressGatewayRanges) != len(newNode.EgressGatewayRanges) {
|
if len(currentNode.EgressGatewayRanges) != len(newNode.EgressGatewayRanges) {
|
||||||
return true
|
return true
|
||||||
@@ -239,7 +233,7 @@ func initWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
|
|||||||
_, _ = ncutils.RunCmd(ipExec+" -4 route add "+gateway+" dev "+ifacename, true)
|
_, _ = ncutils.RunCmd(ipExec+" -4 route add "+gateway+" dev "+ifacename, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if node.Address6 != "" && node.IsDualStack == "yes" {
|
if node.Address6 != "" {
|
||||||
logger.Log(1, "adding address:", node.Address6)
|
logger.Log(1, "adding address:", node.Address6)
|
||||||
_, _ = ncutils.RunCmd(ipExec+" address add dev "+ifacename+" "+node.Address6+"/64", true)
|
_, _ = ncutils.RunCmd(ipExec+" address add dev "+ifacename+" "+node.Address6+"/64", true)
|
||||||
}
|
}
|
||||||
|
@@ -21,7 +21,6 @@ type Network struct {
|
|||||||
AccessKeys []AccessKey `json:"accesskeys" bson:"accesskeys"`
|
AccessKeys []AccessKey `json:"accesskeys" bson:"accesskeys"`
|
||||||
AllowManualSignUp string `json:"allowmanualsignup" bson:"allowmanualsignup" validate:"checkyesorno"`
|
AllowManualSignUp string `json:"allowmanualsignup" bson:"allowmanualsignup" validate:"checkyesorno"`
|
||||||
IsLocal string `json:"islocal" bson:"islocal" validate:"checkyesorno"`
|
IsLocal string `json:"islocal" bson:"islocal" validate:"checkyesorno"`
|
||||||
IsDualStack string `json:"isdualstack" bson:"isdualstack" validate:"checkyesorno"` // ** IsDualStack deprecated **
|
|
||||||
IsIPv4 string `json:"isipv4" bson:"isipv4" validate:"checkyesorno"`
|
IsIPv4 string `json:"isipv4" bson:"isipv4" validate:"checkyesorno"`
|
||||||
IsIPv6 string `json:"isipv6" bson:"isipv6" validate:"checkyesorno"`
|
IsIPv6 string `json:"isipv6" bson:"isipv6" validate:"checkyesorno"`
|
||||||
IsPointToSite string `json:"ispointtosite" bson:"ispointtosite" validate:"checkyesorno"`
|
IsPointToSite string `json:"ispointtosite" bson:"ispointtosite" validate:"checkyesorno"`
|
||||||
@@ -77,16 +76,6 @@ func (network *Network) SetDefaults() {
|
|||||||
if network.AllowManualSignUp == "" {
|
if network.AllowManualSignUp == "" {
|
||||||
network.AllowManualSignUp = "no"
|
network.AllowManualSignUp = "no"
|
||||||
}
|
}
|
||||||
if network.IsDualStack == "" {
|
|
||||||
network.IsDualStack = "no"
|
|
||||||
}
|
|
||||||
if network.IsDualStack == "yes" {
|
|
||||||
network.IsIPv6 = "yes"
|
|
||||||
network.IsIPv4 = "yes"
|
|
||||||
} else {
|
|
||||||
network.IsIPv6 = "no"
|
|
||||||
network.IsIPv4 = "yes"
|
|
||||||
}
|
|
||||||
|
|
||||||
if network.IsIPv4 == "" {
|
if network.IsIPv4 == "" {
|
||||||
network.IsIPv4 = "yes"
|
network.IsIPv4 = "yes"
|
||||||
|
@@ -37,10 +37,10 @@ type Node struct {
|
|||||||
Address string `json:"address" bson:"address" yaml:"address" validate:"omitempty,ipv4"`
|
Address string `json:"address" bson:"address" yaml:"address" validate:"omitempty,ipv4"`
|
||||||
Address6 string `json:"address6" bson:"address6" yaml:"address6" validate:"omitempty,ipv6"`
|
Address6 string `json:"address6" bson:"address6" yaml:"address6" validate:"omitempty,ipv6"`
|
||||||
LocalAddress string `json:"localaddress" bson:"localaddress" yaml:"localaddress" validate:"omitempty,ip"`
|
LocalAddress string `json:"localaddress" bson:"localaddress" yaml:"localaddress" validate:"omitempty,ip"`
|
||||||
LocalListenPort int32 `json:"locallistenport" bson:"locallistenport" yaml:"locallistenport" validate:"numeric,min=0,max=65535"`
|
|
||||||
Name string `json:"name" bson:"name" yaml:"name" validate:"omitempty,max=62,in_charset"`
|
Name string `json:"name" bson:"name" yaml:"name" validate:"omitempty,max=62,in_charset"`
|
||||||
NetworkSettings Network `json:"networksettings" bson:"networksettings" yaml:"networksettings" validate:"-"`
|
NetworkSettings Network `json:"networksettings" bson:"networksettings" yaml:"networksettings" validate:"-"`
|
||||||
ListenPort int32 `json:"listenport" bson:"listenport" yaml:"listenport" validate:"omitempty,numeric,min=1024,max=65535"`
|
ListenPort int32 `json:"listenport" bson:"listenport" yaml:"listenport" validate:"omitempty,numeric,min=1024,max=65535"`
|
||||||
|
LocalListenPort int32 `json:"locallistenport" bson:"locallistenport" yaml:"locallistenport" validate:"numeric,min=0,max=65535"`
|
||||||
PublicKey string `json:"publickey" bson:"publickey" yaml:"publickey" validate:"required,base64"`
|
PublicKey string `json:"publickey" bson:"publickey" yaml:"publickey" validate:"required,base64"`
|
||||||
Endpoint string `json:"endpoint" bson:"endpoint" yaml:"endpoint" validate:"required,ip"`
|
Endpoint string `json:"endpoint" bson:"endpoint" yaml:"endpoint" validate:"required,ip"`
|
||||||
PostUp string `json:"postup" bson:"postup" yaml:"postup"`
|
PostUp string `json:"postup" bson:"postup" yaml:"postup"`
|
||||||
@@ -69,10 +69,7 @@ type Node struct {
|
|||||||
IngressGatewayRange string `json:"ingressgatewayrange" bson:"ingressgatewayrange" yaml:"ingressgatewayrange"`
|
IngressGatewayRange string `json:"ingressgatewayrange" bson:"ingressgatewayrange" yaml:"ingressgatewayrange"`
|
||||||
IsStatic string `json:"isstatic" bson:"isstatic" yaml:"isstatic" validate:"checkyesorno"`
|
IsStatic string `json:"isstatic" bson:"isstatic" yaml:"isstatic" validate:"checkyesorno"`
|
||||||
UDPHolePunch string `json:"udpholepunch" bson:"udpholepunch" yaml:"udpholepunch" validate:"checkyesorno"`
|
UDPHolePunch string `json:"udpholepunch" bson:"udpholepunch" yaml:"udpholepunch" validate:"checkyesorno"`
|
||||||
//PullChanges string `json:"pullchanges" bson:"pullchanges" yaml:"pullchanges" validate:"checkyesorno"`
|
|
||||||
DNSOn string `json:"dnson" bson:"dnson" yaml:"dnson" validate:"checkyesorno"`
|
DNSOn string `json:"dnson" bson:"dnson" yaml:"dnson" validate:"checkyesorno"`
|
||||||
// ** IsDualStack deprecated **
|
|
||||||
IsDualStack string `json:"isdualstack" bson:"isdualstack" yaml:"isdualstack" validate:"checkyesorno"`
|
|
||||||
IsServer string `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`
|
IsServer string `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`
|
||||||
Action string `json:"action" bson:"action" yaml:"action"`
|
Action string `json:"action" bson:"action" yaml:"action"`
|
||||||
IsLocal string `json:"islocal" bson:"islocal" yaml:"islocal" validate:"checkyesorno"`
|
IsLocal string `json:"islocal" bson:"islocal" yaml:"islocal" validate:"checkyesorno"`
|
||||||
@@ -201,13 +198,6 @@ func (node *Node) SetDNSOnDefault() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Node.SetIsDualStackDefault - set is dual stack default status
|
|
||||||
func (node *Node) SetIsDualStackDefault() {
|
|
||||||
if node.IsDualStack == "" {
|
|
||||||
node.IsDualStack = "no"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Node.SetIsServerDefault - sets node isserver default
|
// Node.SetIsServerDefault - sets node isserver default
|
||||||
func (node *Node) SetIsServerDefault() {
|
func (node *Node) SetIsServerDefault() {
|
||||||
if node.IsServer != "yes" {
|
if node.IsServer != "yes" {
|
||||||
@@ -350,18 +340,12 @@ func (newNode *Node) Fill(currentNode *Node) {
|
|||||||
if newNode.DNSOn == "" {
|
if newNode.DNSOn == "" {
|
||||||
newNode.DNSOn = currentNode.DNSOn
|
newNode.DNSOn = currentNode.DNSOn
|
||||||
}
|
}
|
||||||
if newNode.IsDualStack == "" {
|
|
||||||
newNode.IsDualStack = currentNode.IsDualStack
|
|
||||||
}
|
|
||||||
if newNode.IsLocal == "" {
|
if newNode.IsLocal == "" {
|
||||||
newNode.IsLocal = currentNode.IsLocal
|
newNode.IsLocal = currentNode.IsLocal
|
||||||
}
|
}
|
||||||
if newNode.IPForwarding == "" {
|
if newNode.IPForwarding == "" {
|
||||||
newNode.IPForwarding = currentNode.IPForwarding
|
newNode.IPForwarding = currentNode.IPForwarding
|
||||||
}
|
}
|
||||||
//if newNode.Roaming == "" {
|
|
||||||
//newNode.Roaming = currentNode.Roaming
|
|
||||||
//}
|
|
||||||
if newNode.Action == "" {
|
if newNode.Action == "" {
|
||||||
newNode.Action = currentNode.Action
|
newNode.Action = currentNode.Action
|
||||||
}
|
}
|
||||||
|
@@ -144,12 +144,6 @@ func GetFlags(hostname string) []cli.Flag {
|
|||||||
Value: "",
|
Value: "",
|
||||||
Usage: "Sets endpoint to local address if 'yes'. Ignores if 'no'. Will retrieve from network if unset.",
|
Usage: "Sets endpoint to local address if 'yes'. Ignores if 'no'. Will retrieve from network if unset.",
|
||||||
},
|
},
|
||||||
&cli.StringFlag{
|
|
||||||
Name: "isdualstack",
|
|
||||||
EnvVars: []string{"NETCLIENT_IS_DUALSTACK"},
|
|
||||||
Value: "",
|
|
||||||
Usage: "Sets ipv6 address if 'yes'. Ignores if 'no'. Will retrieve from network if unset.",
|
|
||||||
},
|
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "udpholepunch",
|
Name: "udpholepunch",
|
||||||
EnvVars: []string{"NETCLIENT_UDP_HOLEPUNCH"},
|
EnvVars: []string{"NETCLIENT_UDP_HOLEPUNCH"},
|
||||||
|
@@ -237,7 +237,6 @@ func GetCLIConfig(c *cli.Context) (ClientConfig, string, error) {
|
|||||||
cfg.Node.DNSOn = c.String("dnson")
|
cfg.Node.DNSOn = c.String("dnson")
|
||||||
cfg.Node.IsLocal = c.String("islocal")
|
cfg.Node.IsLocal = c.String("islocal")
|
||||||
cfg.Node.IsStatic = c.String("isstatic")
|
cfg.Node.IsStatic = c.String("isstatic")
|
||||||
cfg.Node.IsDualStack = c.String("isdualstack")
|
|
||||||
cfg.Node.PostUp = c.String("postup")
|
cfg.Node.PostUp = c.String("postup")
|
||||||
cfg.Node.PostDown = c.String("postdown")
|
cfg.Node.PostDown = c.String("postdown")
|
||||||
cfg.Node.ListenPort = int32(c.Int("port"))
|
cfg.Node.ListenPort = int32(c.Int("port"))
|
||||||
|
@@ -10,9 +10,9 @@ import (
|
|||||||
func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool {
|
func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool {
|
||||||
// single comparison statements
|
// single comparison statements
|
||||||
if newNode.Endpoint != currentNode.Endpoint ||
|
if newNode.Endpoint != currentNode.Endpoint ||
|
||||||
newNode.LocalAddress != currentNode.LocalAddress ||
|
|
||||||
newNode.PublicKey != currentNode.PublicKey ||
|
newNode.PublicKey != currentNode.PublicKey ||
|
||||||
newNode.Address != currentNode.Address ||
|
newNode.Address != currentNode.Address ||
|
||||||
|
newNode.Address6 != currentNode.Address6 ||
|
||||||
newNode.IsEgressGateway != currentNode.IsEgressGateway ||
|
newNode.IsEgressGateway != currentNode.IsEgressGateway ||
|
||||||
newNode.IsIngressGateway != currentNode.IsIngressGateway ||
|
newNode.IsIngressGateway != currentNode.IsIngressGateway ||
|
||||||
newNode.IsRelay != currentNode.IsRelay ||
|
newNode.IsRelay != currentNode.IsRelay ||
|
||||||
@@ -27,12 +27,6 @@ func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// multi-comparison statements
|
// multi-comparison statements
|
||||||
if newNode.IsDualStack == "yes" {
|
|
||||||
if newNode.Address6 != currentNode.Address6 {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if newNode.IsEgressGateway == "yes" {
|
if newNode.IsEgressGateway == "yes" {
|
||||||
if len(currentNode.EgressGatewayRanges) != len(newNode.EgressGatewayRanges) {
|
if len(currentNode.EgressGatewayRanges) != len(newNode.EgressGatewayRanges) {
|
||||||
return true
|
return true
|
||||||
|
@@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/gravitl/netmaker/netclient/config"
|
"github.com/gravitl/netmaker/netclient/config"
|
||||||
"github.com/gravitl/netmaker/netclient/local"
|
"github.com/gravitl/netmaker/netclient/local"
|
||||||
"github.com/gravitl/netmaker/netclient/ncutils"
|
"github.com/gravitl/netmaker/netclient/ncutils"
|
||||||
|
"github.com/gravitl/netmaker/netclient/server"
|
||||||
"golang.zx2c4.com/wireguard/wgctrl"
|
"golang.zx2c4.com/wireguard/wgctrl"
|
||||||
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
||||||
"gopkg.in/ini.v1"
|
"gopkg.in/ini.v1"
|
||||||
@@ -229,6 +230,10 @@ func SetWGConfig(network string, peerupdate bool) error {
|
|||||||
servercfg := cfg.Server
|
servercfg := cfg.Server
|
||||||
nodecfg := cfg.Node
|
nodecfg := cfg.Node
|
||||||
|
|
||||||
|
peers, hasGateway, gateways, err := server.GetPeers(nodecfg.MacAddress, nodecfg.Network, servercfg.GRPCAddress, nodecfg.IsIngressGateway == "yes", nodecfg.IsServer == "yes")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
privkey, err := RetrievePrivKey(network)
|
privkey, err := RetrievePrivKey(network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@@ -88,9 +88,14 @@ func ApplyWithoutWGQuick(node *models.Node, ifacename string, confPath string) e
|
|||||||
runcmds := strings.Split(node.PostUp, "; ")
|
runcmds := strings.Split(node.PostUp, "; ")
|
||||||
_ = ncutils.RunCmds(runcmds, true)
|
_ = ncutils.RunCmds(runcmds, true)
|
||||||
}
|
}
|
||||||
if node.Address6 != "" && node.IsDualStack == "yes" {
|
if node.Address6 != "" {
|
||||||
logger.Log(1, "adding address: ", node.Address6)
|
logger.Log(1, "adding address: ", node.Address6)
|
||||||
_, _ = ncutils.RunCmd(ipExec+" address add dev "+ifacename+" "+node.Address6+"/64", true)
|
netmaskArr := strings.Split(node.NetworkSettings.AddressRange6, "/")
|
||||||
|
var netmask = "64"
|
||||||
|
if len(netmaskArr) == 2 {
|
||||||
|
netmask = netmaskArr[1]
|
||||||
|
}
|
||||||
|
ncutils.RunCmd(ipExec+" address add dev "+ifacename+" "+node.Address6+"/"+netmask, true)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user