m/n/c/network: be more verbose about receiving new IP addresses and using interfaces

We never really logged these anywhere. This helps debugging.

Change-Id: Ifcddeb454ca317becc512b96b2daa6c069bce36f
Reviewed-on: https://review.monogon.dev/c/monogon/+/781
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/node/core/network/main.go b/metropolis/node/core/network/main.go
index 81a5bfd..45de6b2 100644
--- a/metropolis/node/core/network/main.go
+++ b/metropolis/node/core/network/main.go
@@ -152,7 +152,12 @@
 	}
 	s.dhcp.VendorClassIdentifier = "dev.monogon.metropolis.node.v1"
 	s.dhcp.RequestedOptions = []dhcpv4.OptionCode{dhcpv4.OptionRouter, dhcpv4.OptionDomainNameServer, dhcpv4.OptionClasslessStaticRoute}
-	s.dhcp.LeaseCallback = dhcpcb.Compose(dhcpcb.ManageIP(iface), dhcpcb.ManageRoutes(iface), s.statusCallback)
+	s.dhcp.LeaseCallback = dhcpcb.Compose(dhcpcb.ManageIP(iface), dhcpcb.ManageRoutes(iface), s.statusCallback, func(old, new *dhcp4c.Lease) error {
+		if old == nil || !old.AssignedIP.Equal(new.AssignedIP) {
+			supervisor.Logger(ctx).Infof("New DHCP address: %s", new.AssignedIP.String())
+		}
+		return nil
+	})
 	err = supervisor.Run(ctx, "dhcp", s.dhcp.Run)
 	if err != nil {
 		return err
@@ -281,6 +286,7 @@
 		if err := s.useInterface(ctx, link); err != nil {
 			return fmt.Errorf("failed to bring up link %s: %w", link.Attrs().Name, err)
 		}
+		logger.Infof("Network service using interface %s", link.Attrs().HardwareAddr.String())
 	}
 
 	supervisor.Signal(ctx, supervisor.SignalHealthy)