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,
|
||||
}
|
||||
|
||||
im.logger.Trace().Interface("ipv4Addr", ipv4Addr).Msg("converted DHCP lease to IPv4Config")
|
||||
|
||||
// Create IPv4Config
|
||||
return &ipv4Addr
|
||||
}
|
||||
|
|
|
|||
|
|
@ -336,7 +336,13 @@ func (nm *NetlinkManager) RemoveDefaultRoute(family int) 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)
|
||||
if err != nil {
|
||||
|
|
@ -345,26 +351,36 @@ func (nm *NetlinkManager) ReconcileLinkAddrs(link *Link, expected []*types.IPAdd
|
|||
|
||||
for _, addr := range addrs {
|
||||
ipCidr := addr.IP.String() + "/" + addr.IPNet.Mask.String()
|
||||
existingAddr[ipCidr] = true
|
||||
existingAddrs[ipCidr] = true
|
||||
}
|
||||
|
||||
for _, addr := range expected {
|
||||
ipCidr := addr.Address.IP.String() + "/" + addr.Address.Mask.String()
|
||||
if ok := existingAddr[ipCidr]; ok {
|
||||
continue
|
||||
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()
|
||||
if ok := existingAddrs[ipCidr]; !ok {
|
||||
ipNet := &net.IPNet{
|
||||
IP: addr.Address.IP,
|
||||
Mask: addr.Address.Mask,
|
||||
}
|
||||
|
||||
addr := &netlink.Addr{
|
||||
IPNet: ipNet,
|
||||
if err := nm.AddrAdd(link, &netlink.Addr{IPNet: ipNet}); err != nil {
|
||||
return fmt.Errorf("failed to add address %s: %w", ipCidr, err)
|
||||
}
|
||||
|
||||
if err := nm.AddrAdd(link, addr); err != nil {
|
||||
return fmt.Errorf("failed to add address %s: %w", ipCidr, err)
|
||||
nm.logger.Info().Str("address", ipCidr).Msg("added address")
|
||||
}
|
||||
|
||||
if addr.Gateway != nil {
|
||||
nm.logger.Trace().Str("address", ipCidr).Str("gateway", addr.Gateway.String()).Msg("adding default route for address")
|
||||
if err := nm.AddDefaultRoute(link, addr.Gateway, family); err != nil {
|
||||
return fmt.Errorf("failed to add default route for address %s: %w", ipCidr, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue