Ignore error when we try to delete an address that's already gone.
authorflorian <florian@openbsd.org>
Thu, 15 Sep 2022 07:59:59 +0000 (07:59 +0000)
committerflorian <florian@openbsd.org>
Thu, 15 Sep 2022 07:59:59 +0000 (07:59 +0000)
This will happen when an address expires because the vltime drops to
zero. The kernel then deletes the address and slaacd tries to do so,
too. The correct fix is to track in slaacd that the kernel already
deleted the address for us, but that's too much work shortly before a
release so just hide the ugly warning for now, it's harmless.
Problem reported by semarie some time ago.
OK deraadt, benno

sbin/slaacd/slaacd.c

index e149479..4326492 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: slaacd.c,v 1.65 2022/07/12 16:54:59 florian Exp $     */
+/*     $OpenBSD: slaacd.c,v 1.66 2022/09/15 07:59:59 florian Exp $     */
 
 /*
  * Copyright (c) 2017 Florian Obser <florian@openbsd.org>
@@ -687,7 +687,8 @@ delete_address(struct imsg_configure_address *address)
 
        log_debug("%s: %s", __func__, if_name);
 
-       if (ioctl(ioctl_sock, SIOCDIFADDR_IN6, &in6_ridreq) == -1)
+       if (ioctl(ioctl_sock, SIOCDIFADDR_IN6, &in6_ridreq) == -1 &&
+           errno != EADDRNOTAVAIL)
                log_warn("%s: cannot remove address", __func__);
 
 }