Skip to content

Commit

Permalink
Peer interface address should match server's prefix length (#177)
Browse files Browse the repository at this point in the history
  • Loading branch information
ReeseWang authored Oct 19, 2023
1 parent 40cfcd6 commit 4c061a1
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 5 deletions.
2 changes: 1 addition & 1 deletion internal/app/wireguard/wireguard_interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -644,7 +644,7 @@ func (m Manager) importPeer(ctx context.Context, in *domain.Interface, p *domain
peer.InterfaceIdentifier = in.Identifier
peer.EndpointPublicKey = domain.StringConfigOption{Value: in.PublicKey, Overridable: true}
peer.AllowedIPsStr = domain.StringConfigOption{Value: in.PeerDefAllowedIPsStr, Overridable: true}
peer.Interface.Addresses = p.AllowedIPs // use allowed IP's as the peer IP's
peer.Interface.Addresses = p.AllowedIPs // use allowed IP's as the peer IP's TODO: Should this also match server interface address' prefix length?
peer.Interface.DnsStr = domain.StringConfigOption{Value: in.PeerDefDnsStr, Overridable: true}
peer.Interface.DnsSearchStr = domain.StringConfigOption{Value: in.PeerDefDnsSearchStr, Overridable: true}
peer.Interface.Mtu = domain.IntConfigOption{Value: in.PeerDefMtu, Overridable: true}
Expand Down
5 changes: 3 additions & 2 deletions internal/app/wireguard/wireguard_peers.go
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,9 @@ func (m Manager) getFreshPeerIpConfig(ctx context.Context, iface *domain.Interfa
for {
ipConflict := false
for _, usedIp := range existingIps[network] {
if usedIp == ip {
if usedIp.Addr == ip.Addr {
ipConflict = true
break
}
}

Expand All @@ -326,7 +327,7 @@ func (m Manager) getFreshPeerIpConfig(ctx context.Context, iface *domain.Interfa
}
}

ips = append(ips, ip.HostAddr())
ips = append(ips, ip)
}

return
Expand Down
4 changes: 3 additions & 1 deletion internal/domain/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,9 @@ func (i *Interface) GetAllowedIPs(peers []Peer) []Cidr {
var allowedCidrs []Cidr

for _, peer := range peers {
allowedCidrs = append(allowedCidrs, peer.Interface.Addresses...)
for _, ip := range peer.Interface.Addresses {
allowedCidrs = append(allowedCidrs, ip.HostAddr())
}
if peer.ExtraAllowedIPsStr != "" {
extraIPs, err := CidrsFromString(peer.ExtraAllowedIPsStr)
if err == nil {
Expand Down
5 changes: 4 additions & 1 deletion internal/domain/peer.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,10 @@ func MergeToPhysicalPeer(pp *PhysicalPeer, p *Peer) {
extraAllowedIPs, _ := CidrsFromString(p.ExtraAllowedIPsStr)
pp.AllowedIPs = append(allowedIPs, extraAllowedIPs...)
} else {
allowedIPs := p.Interface.Addresses
allowedIPs := make([]Cidr, len(p.Interface.Addresses))
for i, ip := range p.Interface.Addresses {
allowedIPs[i] = ip.HostAddr()
}
extraAllowedIPs, _ := CidrsFromString(p.ExtraAllowedIPsStr)
pp.AllowedIPs = append(allowedIPs, extraAllowedIPs...)
}
Expand Down

0 comments on commit 4c061a1

Please sign in to comment.