From: Yu Watanabe Date: Sat, 20 Apr 2024 05:51:20 +0000 (+0900) Subject: sd-radv: use sd_radv_is_running() X-Git-Tag: v256-rc1~90^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1fea917a1bfd73829f9056deef67d9c9f22235e4;p=thirdparty%2Fsystemd.git sd-radv: use sd_radv_is_running() This also drops several unnecessary conditions for checking sd-radv is running or not in setting options, e.g. home agent or mac address. --- diff --git a/src/libsystemd-network/sd-radv.c b/src/libsystemd-network/sd-radv.c index f5f3c9656c8..f6f30ce3197 100644 --- a/src/libsystemd-network/sd-radv.c +++ b/src/libsystemd-network/sd-radv.c @@ -384,11 +384,8 @@ int sd_radv_send(sd_radv *ra) { int sd_radv_stop(sd_radv *ra) { int r; - if (!ra) - return 0; - - if (ra->state == RADV_STATE_IDLE) - return 0; + if (!sd_radv_is_running(ra)) + return 0; /* Already stopped. */ log_radv(ra, "Stopping IPv6 Router Advertisement daemon"); @@ -441,8 +438,8 @@ int sd_radv_start(sd_radv *ra) { assert_return(ra->event, -EINVAL); assert_return(ra->ifindex > 0, -EINVAL); - if (ra->state != RADV_STATE_IDLE) - return 0; + if (sd_radv_is_running(ra)) + return 0; /* Already started. */ r = radv_setup_recv_event(ra); if (r < 0) @@ -470,13 +467,10 @@ int sd_radv_start(sd_radv *ra) { int sd_radv_set_ifindex(sd_radv *ra, int ifindex) { assert_return(ra, -EINVAL); + assert_return(!sd_radv_is_running(ra), -EBUSY); assert_return(ifindex > 0, -EINVAL); - if (ra->state != RADV_STATE_IDLE) - return -EBUSY; - ra->ifindex = ifindex; - return 0; } @@ -520,9 +514,6 @@ int sd_radv_set_link_local_address(sd_radv *ra, const struct in6_addr *addr) { int sd_radv_set_mac(sd_radv *ra, const struct ether_addr *mac_addr) { assert_return(ra, -EINVAL); - if (ra->state != RADV_STATE_IDLE) - return -EBUSY; - if (mac_addr) ra->mac_addr = *mac_addr; else @@ -592,31 +583,20 @@ int sd_radv_set_preference(sd_radv *ra, uint8_t preference) { int sd_radv_set_home_agent_information(sd_radv *ra, int home_agent) { assert_return(ra, -EINVAL); - if (ra->state != RADV_STATE_IDLE) - return -EBUSY; - SET_FLAG(ra->flags, ND_RA_FLAG_HOME_AGENT, home_agent); - return 0; } int sd_radv_set_home_agent_preference(sd_radv *ra, uint16_t preference) { assert_return(ra, -EINVAL); - if (ra->state != RADV_STATE_IDLE) - return -EBUSY; - ra->home_agent.nd_opt_home_agent_info_preference = htobe16(preference); - return 0; } int sd_radv_set_home_agent_lifetime(sd_radv *ra, uint64_t lifetime_usec) { assert_return(ra, -EINVAL); - if (ra->state != RADV_STATE_IDLE) - return -EBUSY; - if (lifetime_usec > RADV_HOME_AGENT_MAX_LIFETIME_USEC) return -EINVAL; @@ -684,7 +664,7 @@ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) { log_radv(ra, "Added prefix %s", addr_p); } - if (ra->state == RADV_STATE_IDLE) + if (!sd_radv_is_running(ra)) return 0; if (ra->ra_sent == 0) @@ -780,7 +760,7 @@ int sd_radv_add_route_prefix(sd_radv *ra, sd_radv_route_prefix *p) { log_radv(ra, "Added route prefix %s", strna(addr_p)); } - if (ra->state == RADV_STATE_IDLE) + if (!sd_radv_is_running(ra)) return 0; if (ra->ra_sent == 0) @@ -852,7 +832,7 @@ int sd_radv_add_pref64_prefix(sd_radv *ra, sd_radv_pref64_prefix *p) { log_radv(ra, "Added PREF64 prefix %s", strna(addr_p)); } - if (ra->state == RADV_STATE_IDLE) + if (!sd_radv_is_running(ra)) return 0; if (ra->ra_sent == 0)