mirror of https://github.com/jetkvm/kvm.git
fix netmask calculation
This commit is contained in:
parent
3c83bcfe69
commit
78f0479b6b
|
|
@ -163,6 +163,14 @@ func (im *InterfaceManager) GetIPv4Addresses() []string {
|
|||
return im.state.IPv4Addresses
|
||||
}
|
||||
|
||||
func (im *InterfaceManager) GetIPv4Address() string {
|
||||
return im.state.IPv4Address
|
||||
}
|
||||
|
||||
func (im *InterfaceManager) GetIPv6Address() string {
|
||||
return im.state.IPv6Address
|
||||
}
|
||||
|
||||
func (im *InterfaceManager) GetIPv6Addresses() []string {
|
||||
addresses := []string{}
|
||||
for _, addr := range im.state.IPv6Addresses {
|
||||
|
|
@ -585,7 +593,7 @@ func (im *InterfaceManager) updateInterfaceState() error {
|
|||
im.logger.Error().Err(err).Msg("failed to update IP addresses")
|
||||
}
|
||||
|
||||
// im.state.LastUpdated = time.Now() // TODO: remove this
|
||||
im.state.LastUpdated = time.Now()
|
||||
|
||||
// Notify callback if state changed
|
||||
if stateChanged && im.onStateChange != nil {
|
||||
|
|
@ -604,10 +612,13 @@ func (im *InterfaceManager) updateIPAddresses(nl *link.Link) error {
|
|||
return fmt.Errorf("failed to get addresses: %w", err)
|
||||
}
|
||||
|
||||
var ipv4Addresses []string
|
||||
var ipv6Addresses []types.IPv6Address
|
||||
var ipv4Addr, ipv6Addr string
|
||||
var ipv6LinkLocal string
|
||||
var (
|
||||
ipv4Addresses []string
|
||||
ipv6Addresses []types.IPv6Address
|
||||
ipv4Addr, ipv6Addr string
|
||||
ipv6LinkLocal string
|
||||
ipv4Ready, ipv6Ready = false, false
|
||||
)
|
||||
|
||||
for _, addr := range addrs {
|
||||
im.logger.Debug().Str("address", addr.IP.String()).Msg("checking address")
|
||||
|
|
@ -616,6 +627,7 @@ func (im *InterfaceManager) updateIPAddresses(nl *link.Link) error {
|
|||
ipv4Addresses = append(ipv4Addresses, addr.IPNet.String())
|
||||
if ipv4Addr == "" {
|
||||
ipv4Addr = addr.IP.String()
|
||||
ipv4Ready = true
|
||||
}
|
||||
} else if addr.IP.To16() != nil {
|
||||
// IPv6 address
|
||||
|
|
@ -629,6 +641,7 @@ func (im *InterfaceManager) updateIPAddresses(nl *link.Link) error {
|
|||
})
|
||||
if ipv6Addr == "" {
|
||||
ipv6Addr = addr.IP.String()
|
||||
ipv6Ready = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -637,6 +650,10 @@ func (im *InterfaceManager) updateIPAddresses(nl *link.Link) error {
|
|||
im.state.IPv4Addresses = ipv4Addresses
|
||||
im.state.IPv6Addresses = ipv6Addresses
|
||||
im.state.IPv6LinkLocal = ipv6LinkLocal
|
||||
im.state.IPv4Address = ipv4Addr
|
||||
im.state.IPv6Address = ipv6Addr
|
||||
im.state.IPv4Ready = ipv4Ready
|
||||
im.state.IPv6Ready = ipv6Ready
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
@ -677,10 +694,12 @@ func (im *InterfaceManager) applyDHCPLease(lease *types.DHCPLease) error {
|
|||
|
||||
// convertDHCPLeaseToIPv4Config converts a DHCP lease to IPv4Config
|
||||
func (im *InterfaceManager) convertDHCPLeaseToIPv4Config(lease *types.DHCPLease) *types.IPAddress {
|
||||
mask := lease.Netmask
|
||||
|
||||
// Create IPNet from IP and netmask
|
||||
ipNet := &net.IPNet{
|
||||
IP: lease.IPAddress,
|
||||
Mask: net.IPMask(lease.Netmask),
|
||||
Mask: net.IPv4Mask(mask[12], mask[13], mask[14], mask[15]),
|
||||
}
|
||||
|
||||
// Create IPv4Address
|
||||
|
|
@ -691,7 +710,10 @@ func (im *InterfaceManager) convertDHCPLeaseToIPv4Config(lease *types.DHCPLease)
|
|||
Permanent: false,
|
||||
}
|
||||
|
||||
im.logger.Trace().Interface("ipv4Addr", ipv4Addr).Msg("converted DHCP lease to IPv4Config")
|
||||
im.logger.Trace().
|
||||
Interface("ipv4Addr", ipv4Addr).
|
||||
Interface("lease", lease).
|
||||
Msg("converted DHCP lease to IPv4Config")
|
||||
|
||||
// Create IPv4Config
|
||||
return &ipv4Addr
|
||||
|
|
|
|||
|
|
@ -419,6 +419,7 @@ func (nm *NetlinkManager) ReconcileLinkAddrs(link *Link, expected []*types.IPAdd
|
|||
|
||||
for _, addr := range expected {
|
||||
ipCidr := addr.Address.IP.String() + "/" + addr.Address.Mask.String()
|
||||
nm.logger.Trace().Str("address", ipCidr).Msg("adding expected address")
|
||||
expectedAddrs[ipCidr] = true
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,6 +46,20 @@ func (nm *NetworkManager) GetIPv4Addresses() []string {
|
|||
return []string{}
|
||||
}
|
||||
|
||||
func (nm *NetworkManager) GetIPv4Address() string {
|
||||
for _, iface := range nm.interfaces {
|
||||
return iface.GetIPv4Address()
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (nm *NetworkManager) GetIPv6Address() string {
|
||||
for _, iface := range nm.interfaces {
|
||||
return iface.GetIPv6Address()
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (nm *NetworkManager) GetIPv6Addresses() []string {
|
||||
for _, iface := range nm.interfaces {
|
||||
return iface.GetIPv6Addresses()
|
||||
|
|
@ -61,19 +75,11 @@ func (nm *NetworkManager) GetMACAddress() string {
|
|||
}
|
||||
|
||||
func (nm *NetworkManager) IPv4String() string {
|
||||
l := nm.GetIPv4Addresses()
|
||||
if len(l) == 0 {
|
||||
return ""
|
||||
}
|
||||
return l[0]
|
||||
return nm.GetIPv4Address()
|
||||
}
|
||||
|
||||
func (nm *NetworkManager) IPv6String() string {
|
||||
l := nm.GetIPv6Addresses()
|
||||
if len(l) == 0 {
|
||||
return ""
|
||||
}
|
||||
return l[0]
|
||||
return nm.GetIPv6Address()
|
||||
}
|
||||
|
||||
func (nm *NetworkManager) MACString() string {
|
||||
|
|
|
|||
|
|
@ -79,7 +79,9 @@ func (l *Lease) SetLeaseExpiry() (time.Time, error) {
|
|||
}
|
||||
|
||||
// UnmarshalDHCPCLease unmarshals a lease from a string.
|
||||
func UnmarshalDHCPCLease(lease *Lease, str string) error {
|
||||
func UnmarshalDHCPCLease(obj *Lease, str string) error {
|
||||
lease := &obj.DHCPLease
|
||||
|
||||
// parse the lease file as a map
|
||||
data := make(map[string]string)
|
||||
for line := range strings.SplitSeq(str, "\n") {
|
||||
|
|
@ -161,7 +163,7 @@ func UnmarshalDHCPCLease(lease *Lease, str string) error {
|
|||
valuesParsed[key] = true
|
||||
}
|
||||
|
||||
lease.setIsEmpty(valuesParsed)
|
||||
obj.setIsEmpty(valuesParsed)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue