Browse Source

handle autoassigned gw peer in the update

abhishek9686 6 days ago
parent
commit
88be61fe61
3 changed files with 41 additions and 49 deletions
  1. 2 5
      logic/peers.go
  2. 21 26
      models/mqtt.go
  3. 18 18
      models/structs.go

+ 2 - 5
logic/peers.go

@@ -163,7 +163,7 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
 		ServerConfig:    GetServerInfo(),
 		DnsNameservers:  GetNameserversForHost(host),
 		AutoRelayNodes:  make(map[models.NetworkID][]models.Node),
-		GwNodes:         make(map[models.NetworkID][]models.HostNode),
+		GwNodes:         make(map[models.NetworkID][]models.Node),
 	}
 	if host.DNS == "no" {
 		hostPeerUpdate.ManageDNS = false
@@ -339,10 +339,7 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
 				}
 				if node.AutoAssignGateway && peer.IsGw {
 					hostPeerUpdate.GwNodes[models.NetworkID(peer.Network)] = append(hostPeerUpdate.GwNodes[models.NetworkID(peer.Network)],
-						models.HostNode{
-							Node: peer,
-							Host: *peerHost,
-						})
+						peer)
 				}
 			}
 			shouldCheckRelayed := true

+ 21 - 26
models/mqtt.go

@@ -12,36 +12,31 @@ type HostPeerInfo struct {
 
 // HostPeerUpdate - struct for host peer updates
 type HostPeerUpdate struct {
-	Host              Host                     `json:"host"`
-	Nodes             []Node                   `json:"nodes"`
-	ChangeDefaultGw   bool                     `json:"change_default_gw"`
-	DefaultGwIp       net.IP                   `json:"default_gw_ip"`
-	IsInternetGw      bool                     `json:"is_inet_gw"`
-	NodeAddrs         []net.IPNet              `json:"nodes_addrs"`
-	Server            string                   `json:"server"`
-	ServerVersion     string                   `json:"serverversion"`
-	ServerAddrs       []ServerAddr             `json:"serveraddrs"`
-	NodePeers         []wgtypes.PeerConfig     `json:"node_peers"`
-	Peers             []wgtypes.PeerConfig     `json:"host_peers"`
-	PeerIDs           PeerMap                  `json:"peerids"`
-	HostNetworkInfo   HostInfoMap              `json:"host_network_info,omitempty"`
-	EgressRoutes      []EgressNetworkRoutes    `json:"egress_network_routes"`
-	FwUpdate          FwUpdate                 `json:"fw_update"`
-	ReplacePeers      bool                     `json:"replace_peers"`
-	NameServers       []string                 `json:"name_servers"`
-	DnsNameservers    []Nameserver             `json:"dns_nameservers"`
-	EgressWithDomains []EgressDomain           `json:"egress_with_domains"`
-	AutoRelayNodes    map[NetworkID][]Node     `json:"auto_relay_nodes"`
-	GwNodes           map[NetworkID][]HostNode `json:"gw_nodes"`
+	Host              Host                  `json:"host"`
+	Nodes             []Node                `json:"nodes"`
+	ChangeDefaultGw   bool                  `json:"change_default_gw"`
+	DefaultGwIp       net.IP                `json:"default_gw_ip"`
+	IsInternetGw      bool                  `json:"is_inet_gw"`
+	NodeAddrs         []net.IPNet           `json:"nodes_addrs"`
+	Server            string                `json:"server"`
+	ServerVersion     string                `json:"serverversion"`
+	ServerAddrs       []ServerAddr          `json:"serveraddrs"`
+	NodePeers         []wgtypes.PeerConfig  `json:"node_peers"`
+	Peers             []wgtypes.PeerConfig  `json:"host_peers"`
+	PeerIDs           PeerMap               `json:"peerids"`
+	HostNetworkInfo   HostInfoMap           `json:"host_network_info,omitempty"`
+	EgressRoutes      []EgressNetworkRoutes `json:"egress_network_routes"`
+	FwUpdate          FwUpdate              `json:"fw_update"`
+	ReplacePeers      bool                  `json:"replace_peers"`
+	NameServers       []string              `json:"name_servers"`
+	DnsNameservers    []Nameserver          `json:"dns_nameservers"`
+	EgressWithDomains []EgressDomain        `json:"egress_with_domains"`
+	AutoRelayNodes    map[NetworkID][]Node  `json:"auto_relay_nodes"`
+	GwNodes           map[NetworkID][]Node  `json:"gw_nodes"`
 	ServerConfig
 	OldPeerUpdateFields
 }
 
-type HostNode struct {
-	Host Host `json:"host"`
-	Node Node `json:"node"`
-}
-
 type EgressDomain struct {
 	ID     string `json:"id"`
 	Node   Node   `json:"node"`

+ 18 - 18
models/structs.go

@@ -252,24 +252,24 @@ type TrafficKeys struct {
 
 // HostPull - response of a host's pull
 type HostPull struct {
-	Host              Host                     `json:"host" yaml:"host"`
-	Nodes             []Node                   `json:"nodes" yaml:"nodes"`
-	Peers             []wgtypes.PeerConfig     `json:"peers" yaml:"peers"`
-	ServerConfig      ServerConfig             `json:"server_config" yaml:"server_config"`
-	PeerIDs           PeerMap                  `json:"peer_ids,omitempty" yaml:"peer_ids,omitempty"`
-	HostNetworkInfo   HostInfoMap              `json:"host_network_info,omitempty"  yaml:"host_network_info,omitempty"`
-	EgressRoutes      []EgressNetworkRoutes    `json:"egress_network_routes"`
-	FwUpdate          FwUpdate                 `json:"fw_update"`
-	ChangeDefaultGw   bool                     `json:"change_default_gw"`
-	DefaultGwIp       net.IP                   `json:"default_gw_ip"`
-	IsInternetGw      bool                     `json:"is_inet_gw"`
-	EndpointDetection bool                     `json:"endpoint_detection"`
-	NameServers       []string                 `json:"name_servers"`
-	EgressWithDomains []EgressDomain           `json:"egress_with_domains"`
-	DnsNameservers    []Nameserver             `json:"dns_nameservers"`
-	AutoRelayNodes    map[NetworkID][]Node     `json:"auto_relay_nodes"`
-	GwNodes           map[NetworkID][]HostNode `json:"gw_nodes"`
-	ReplacePeers      bool                     `json:"replace_peers"`
+	Host              Host                  `json:"host" yaml:"host"`
+	Nodes             []Node                `json:"nodes" yaml:"nodes"`
+	Peers             []wgtypes.PeerConfig  `json:"peers" yaml:"peers"`
+	ServerConfig      ServerConfig          `json:"server_config" yaml:"server_config"`
+	PeerIDs           PeerMap               `json:"peer_ids,omitempty" yaml:"peer_ids,omitempty"`
+	HostNetworkInfo   HostInfoMap           `json:"host_network_info,omitempty"  yaml:"host_network_info,omitempty"`
+	EgressRoutes      []EgressNetworkRoutes `json:"egress_network_routes"`
+	FwUpdate          FwUpdate              `json:"fw_update"`
+	ChangeDefaultGw   bool                  `json:"change_default_gw"`
+	DefaultGwIp       net.IP                `json:"default_gw_ip"`
+	IsInternetGw      bool                  `json:"is_inet_gw"`
+	EndpointDetection bool                  `json:"endpoint_detection"`
+	NameServers       []string              `json:"name_servers"`
+	EgressWithDomains []EgressDomain        `json:"egress_with_domains"`
+	DnsNameservers    []Nameserver          `json:"dns_nameservers"`
+	AutoRelayNodes    map[NetworkID][]Node  `json:"auto_relay_nodes"`
+	GwNodes           map[NetworkID][]Node  `json:"gw_nodes"`
+	ReplacePeers      bool                  `json:"replace_peers"`
 }
 
 type DefaultGwInfo struct {