diff --git a/internal/network/config.go b/internal/network/config.go index 8a28d51..da99496 100644 --- a/internal/network/config.go +++ b/internal/network/config.go @@ -56,13 +56,12 @@ type NetworkConfig struct { } func (c *NetworkConfig) GetMDNSMode() *mdns.MDNSListenOptions { - mode := c.MDNSMode.String listenOptions := &mdns.MDNSListenOptions{ - IPv4: true, - IPv6: true, + IPv4: c.IPv4Mode.String != "disabled", + IPv6: c.IPv6Mode.String != "disabled", } - switch mode { + switch c.MDNSMode.String { case "ipv4_only": listenOptions.IPv6 = false case "ipv6_only": diff --git a/internal/network/netif.go b/internal/network/netif.go index 5a8dab6..282f29b 100644 --- a/internal/network/netif.go +++ b/internal/network/netif.go @@ -239,6 +239,10 @@ func (s *NetworkInterfaceState) update() (DhcpTargetState, error) { ipv4Addresses = append(ipv4Addresses, addr.IP) ipv4AddressesString = append(ipv4AddressesString, addr.IPNet.String()) } else if addr.IP.To16() != nil { + if s.config.IPv6Mode.String == "disabled" { + continue + } + scopedLogger := s.l.With().Str("ipv6", addr.IP.String()).Logger() // check if it's a link local address if addr.IP.IsLinkLocalUnicast() { @@ -287,35 +291,37 @@ func (s *NetworkInterfaceState) update() (DhcpTargetState, error) { } s.ipv4Addresses = ipv4AddressesString - if ipv6LinkLocal != nil { - if s.ipv6LinkLocal == nil || s.ipv6LinkLocal.String() != ipv6LinkLocal.String() { - scopedLogger := s.l.With().Str("ipv6", ipv6LinkLocal.String()).Logger() - if s.ipv6LinkLocal != nil { - scopedLogger.Info(). - Str("old_ipv6", s.ipv6LinkLocal.String()). - Msg("IPv6 link local address changed") - } else { - scopedLogger.Info().Msg("IPv6 link local address found") + if s.config.IPv6Mode.String != "disabled" { + if ipv6LinkLocal != nil { + if s.ipv6LinkLocal == nil || s.ipv6LinkLocal.String() != ipv6LinkLocal.String() { + scopedLogger := s.l.With().Str("ipv6", ipv6LinkLocal.String()).Logger() + if s.ipv6LinkLocal != nil { + scopedLogger.Info(). + Str("old_ipv6", s.ipv6LinkLocal.String()). + Msg("IPv6 link local address changed") + } else { + scopedLogger.Info().Msg("IPv6 link local address found") + } + s.ipv6LinkLocal = ipv6LinkLocal + changed = true } - s.ipv6LinkLocal = ipv6LinkLocal - changed = true } - } - s.ipv6Addresses = ipv6Addresses + s.ipv6Addresses = ipv6Addresses - if len(ipv6Addresses) > 0 { - // compare the addresses to see if there's a change - if s.ipv6Addr == nil || s.ipv6Addr.String() != ipv6Addresses[0].Address.String() { - scopedLogger := s.l.With().Str("ipv6", ipv6Addresses[0].Address.String()).Logger() - if s.ipv6Addr != nil { - scopedLogger.Info(). - Str("old_ipv6", s.ipv6Addr.String()). - Msg("IPv6 address changed") - } else { - scopedLogger.Info().Msg("IPv6 address found") + if len(ipv6Addresses) > 0 { + // compare the addresses to see if there's a change + if s.ipv6Addr == nil || s.ipv6Addr.String() != ipv6Addresses[0].Address.String() { + scopedLogger := s.l.With().Str("ipv6", ipv6Addresses[0].Address.String()).Logger() + if s.ipv6Addr != nil { + scopedLogger.Info(). + Str("old_ipv6", s.ipv6Addr.String()). + Msg("IPv6 address changed") + } else { + scopedLogger.Info().Msg("IPv6 address found") + } + s.ipv6Addr = &ipv6Addresses[0].Address + changed = true } - s.ipv6Addr = &ipv6Addresses[0].Address - changed = true } } diff --git a/internal/network/rpc.go b/internal/network/rpc.go index 32f34f5..62f21be 100644 --- a/internal/network/rpc.go +++ b/internal/network/rpc.go @@ -65,7 +65,7 @@ func (s *NetworkInterfaceState) IPv6LinkLocalAddress() string { func (s *NetworkInterfaceState) RpcGetNetworkState() RpcNetworkState { ipv6Addresses := make([]RpcIPv6Address, 0) - if s.ipv6Addresses != nil { + if s.ipv6Addresses != nil && s.config.IPv6Mode.String != "disabled" { for _, addr := range s.ipv6Addresses { ipv6Addresses = append(ipv6Addresses, RpcIPv6Address{ Address: addr.Prefix.String(), diff --git a/mdns.go b/mdns.go index d7a3b55..4f9b49b 100644 --- a/mdns.go +++ b/mdns.go @@ -13,10 +13,7 @@ func initMdns() error { networkState.GetHostname(), networkState.GetFQDN(), }, - ListenOptions: &mdns.MDNSListenOptions{ - IPv4: true, - IPv6: true, - }, + ListenOptions: config.NetworkConfig.GetMDNSMode(), }) if err != nil { return err diff --git a/ui/src/components/Ipv6NetworkCard.tsx b/ui/src/components/Ipv6NetworkCard.tsx index a31b78e..0cfacc6 100644 --- a/ui/src/components/Ipv6NetworkCard.tsx +++ b/ui/src/components/Ipv6NetworkCard.tsx @@ -17,7 +17,7 @@ export default function Ipv6NetworkCard({