mirror of https://github.com/jetkvm/kvm.git
fix: default route not set
This commit is contained in:
parent
49e28f218e
commit
df0f5efff3
|
|
@ -628,6 +628,8 @@ func (im *InterfaceManager) convertDHCPLeaseToIPv4Config(lease *types.DHCPLease)
|
||||||
Permanent: false,
|
Permanent: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
im.logger.Trace().Interface("ipv4Addr", ipv4Addr).Msg("converted DHCP lease to IPv4Config")
|
||||||
|
|
||||||
// Create IPv4Config
|
// Create IPv4Config
|
||||||
return &ipv4Addr
|
return &ipv4Addr
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -336,7 +336,13 @@ func (nm *NetlinkManager) RemoveDefaultRoute(family int) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (nm *NetlinkManager) ReconcileLinkAddrs(link *Link, expected []*types.IPAddress) error {
|
func (nm *NetlinkManager) ReconcileLinkAddrs(link *Link, expected []*types.IPAddress) error {
|
||||||
existingAddr := make(map[string]bool)
|
expectedAddrs := make(map[string]bool)
|
||||||
|
existingAddrs := make(map[string]bool)
|
||||||
|
|
||||||
|
for _, addr := range expected {
|
||||||
|
ipCidr := addr.Address.IP.String() + "/" + addr.Address.Mask.String()
|
||||||
|
expectedAddrs[ipCidr] = true
|
||||||
|
}
|
||||||
|
|
||||||
addrs, err := nm.AddrList(link, AfUnspec)
|
addrs, err := nm.AddrList(link, AfUnspec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -345,26 +351,36 @@ func (nm *NetlinkManager) ReconcileLinkAddrs(link *Link, expected []*types.IPAdd
|
||||||
|
|
||||||
for _, addr := range addrs {
|
for _, addr := range addrs {
|
||||||
ipCidr := addr.IP.String() + "/" + addr.IPNet.Mask.String()
|
ipCidr := addr.IP.String() + "/" + addr.IPNet.Mask.String()
|
||||||
existingAddr[ipCidr] = true
|
existingAddrs[ipCidr] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, addr := range expected {
|
for _, addr := range expected {
|
||||||
|
family := AfUnspec
|
||||||
|
if addr.Address.IP.To4() != nil {
|
||||||
|
family = AfInet
|
||||||
|
} else if addr.Address.IP.To16() != nil {
|
||||||
|
family = AfInet6
|
||||||
|
}
|
||||||
|
|
||||||
ipCidr := addr.Address.IP.String() + "/" + addr.Address.Mask.String()
|
ipCidr := addr.Address.IP.String() + "/" + addr.Address.Mask.String()
|
||||||
if ok := existingAddr[ipCidr]; ok {
|
if ok := existingAddrs[ipCidr]; !ok {
|
||||||
continue
|
ipNet := &net.IPNet{
|
||||||
|
IP: addr.Address.IP,
|
||||||
|
Mask: addr.Address.Mask,
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := nm.AddrAdd(link, &netlink.Addr{IPNet: ipNet}); err != nil {
|
||||||
|
return fmt.Errorf("failed to add address %s: %w", ipCidr, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
nm.logger.Info().Str("address", ipCidr).Msg("added address")
|
||||||
}
|
}
|
||||||
|
|
||||||
ipNet := &net.IPNet{
|
if addr.Gateway != nil {
|
||||||
IP: addr.Address.IP,
|
nm.logger.Trace().Str("address", ipCidr).Str("gateway", addr.Gateway.String()).Msg("adding default route for address")
|
||||||
Mask: addr.Address.Mask,
|
if err := nm.AddDefaultRoute(link, addr.Gateway, family); err != nil {
|
||||||
}
|
return fmt.Errorf("failed to add default route for address %s: %w", ipCidr, err)
|
||||||
|
}
|
||||||
addr := &netlink.Addr{
|
|
||||||
IPNet: ipNet,
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := nm.AddrAdd(link, addr); err != nil {
|
|
||||||
return fmt.Errorf("failed to add address %s: %w", ipCidr, err)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue