]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-radv: use sd_radv_is_running()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 20 Apr 2024 05:51:20 +0000 (14:51 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 20 Apr 2024 05:59:27 +0000 (14:59 +0900)
This also drops several unnecessary conditions for checking sd-radv is running
or not in setting options, e.g. home agent or mac address.

src/libsystemd-network/sd-radv.c

index f5f3c9656c8148d7b18af570ba193aea1c5233dc..f6f30ce3197764f74e521d4135de82d4fa808246 100644 (file)
@@ -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)