if (r < 0)
return log_link_warning_errno(link, r, "Could not update MAC address in DHCPv6 client: %m");
- if (link->radv) {
- bool restart = sd_radv_is_running(link->radv);
-
- if (restart) {
- r = sd_radv_stop(link->radv);
- if (r < 0)
- return log_link_warning_errno(link, r, "Could not stop Router Advertisement: %m");
- }
-
- r = sd_radv_set_mac(link->radv, &link->mac);
- if (r < 0)
- return log_link_warning_errno(link, r, "Could not update MAC for Router Advertisement: %m");
-
- if (restart) {
- r = sd_radv_start(link->radv);
- if (r < 0)
- return log_link_warning_errno(link, r, "Could not restart Router Advertisement: %m");
- }
- }
+ r = dhcp6_update_mac(link);
+ if (r < 0)
+ return log_link_warning_errno(link, r, "Could not update MAC address for Router Advertisement: %m");
if (link->ndisc) {
r = sd_ndisc_set_mac(link->ndisc, &link->mac);
return 0;
}
+int radv_update_mac(Link *link) {
+ bool restart;
+ int r;
+
+ assert(link);
+
+ if (!link->radv)
+ return 0;
+
+ restart = sd_radv_is_running(link->radv);
+
+ if (restart) {
+ r = sd_radv_stop(link->radv);
+ if (r < 0)
+ return r;
+ }
+
+ r = sd_radv_set_mac(link->radv, &link->mac);
+ if (r < 0)
+ return r;
+
+ if (restart) {
+ r = sd_radv_start(link->radv);
+ if (r < 0)
+ return r;
+ }
+
+ return 0;
+}
+
int radv_add_prefix(
Link *link,
const struct in6_addr *prefix,
int radv_emit_dns(Link *link);
int radv_configure(Link *link);
+int radv_update_mac(Link *link);
int radv_add_prefix(Link *link, const struct in6_addr *prefix, uint8_t prefix_len,
uint32_t lifetime_preferred, uint32_t lifetime_valid);