m/n/core/network: add netlink error callback

Add a callback which logs netlink subscription errors. This may be
useful for debugging.

Change-Id: I35c64ef68bfd098139f94e7d952174ff81acaac3
Reviewed-on: https://review.monogon.dev/c/monogon/+/3810
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/node/core/network/neigh.go b/metropolis/node/core/network/neigh.go
index c779d73..33cf564 100644
--- a/metropolis/node/core/network/neigh.go
+++ b/metropolis/node/core/network/neigh.go
@@ -28,7 +28,12 @@
 func (s *Service) runNeighborAnnounce(ctx context.Context) error {
 	l := supervisor.Logger(ctx)
 	linkUpdates := make(chan netlink.LinkUpdate, 10)
-	if err := netlink.LinkSubscribe(linkUpdates, ctx.Done()); err != nil {
+	options := netlink.LinkSubscribeOptions{
+		ErrorCallback: func(err error) {
+			l.Errorf("netlink subscription error: %v", err)
+		},
+	}
+	if err := netlink.LinkSubscribeWithOptions(linkUpdates, ctx.Done(), options); err != nil {
 		return fmt.Errorf("while subscribing to netlink link updates: %w", err)
 	}
 	lastIfState := make(map[string]bool)