From: Susant Sahani Date: Wed, 13 Jun 2018 13:52:34 +0000 (+0530) Subject: networkd: Don't try to close fd in sd_radv_stop if fd is closed. X-Git-Tag: v239~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6f8a8b84f28be7a6133bbde1479dee9abad6cee8;p=thirdparty%2Fsystemd.git networkd: Don't try to close fd in sd_radv_stop if fd is closed. sd_radv_stop is called from two places. if sd_radv_stop is alrady success then just don't try to close it . ``` systemd-networkd[604]: RADV: Stopping IPv6 Router Advertisement daemon systemd-networkd[604]: RADV: Unable to send last Router Advertisement with router lifetime set to zero: Bad file descriptor <==================HERE systemd-networkd[604]: RADV: Updated prefix 2a0a:*:*:fc::/64 preferred 1h valid 2h systemd-networkd[604]: RADV: Started IPv6 Router Advertisement daemon ``` Closes one of the issue #8960 --- diff --git a/src/libsystemd-network/sd-radv.c b/src/libsystemd-network/sd-radv.c index f349384e7ef..cf7fe0997b7 100644 --- a/src/libsystemd-network/sd-radv.c +++ b/src/libsystemd-network/sd-radv.c @@ -352,6 +352,9 @@ _public_ int sd_radv_stop(sd_radv *ra) { assert_return(ra, -EINVAL); + if (ra->state == SD_RADV_STATE_IDLE) + return 0; + log_radv("Stopping IPv6 Router Advertisement daemon"); /* RFC 4861, Section 6.2.5, send at least one Router Advertisement