return 0;
}
+int ipv4ll_update_mac(Link *link) {
+ bool restart;
+ int r;
+
+ assert(link);
+
+ if (!link->ipv4ll)
+ return 0;
+
+ restart = sd_ipv4ll_is_running(link->ipv4ll) > 0;
+
+ if (restart) {
+ r = sd_ipv4ll_stop(link->ipv4ll);
+ if (r < 0)
+ return r;
+ }
+
+ r = sd_ipv4ll_set_mac(link->ipv4ll, &link->mac);
+ if (r < 0)
+ return r;
+
+ if (restart) {
+ r = sd_ipv4ll_start(link->ipv4ll);
+ if (r < 0)
+ return r;
+ }
+
+ return 0;
+}
+
int link_serialize_ipv4ll(Link *link, FILE *f) {
struct in_addr address;
int r;
typedef struct Link Link;
int ipv4ll_configure(Link *link);
+int ipv4ll_update_mac(Link *link);
int link_serialize_ipv4ll(Link *link, FILE *f);
int link_deserialize_ipv4ll(Link *link, const char *ipv4ll_address);
mac.ether_addr_octet[4],
mac.ether_addr_octet[5]);
- if (link->ipv4ll) {
- bool restart = sd_ipv4ll_is_running(link->ipv4ll) > 0;
-
- if (restart) {
- r = sd_ipv4ll_stop(link->ipv4ll);
- if (r < 0)
- return log_link_warning_errno(link, r, "Could not stop IPv4LL client: %m");
- }
-
- r = sd_ipv4ll_set_mac(link->ipv4ll, &link->mac);
- if (r < 0)
- return log_link_warning_errno(link, r, "Could not update MAC address in IPv4LL client: %m");
-
- if (restart) {
- r = sd_ipv4ll_start(link->ipv4ll);
- if (r < 0)
- return log_link_warning_errno(link, r, "Could not restart IPv4LL client: %m");
- }
- }
+ r = ipv4ll_update_mac(link);
+ if (r < 0)
+ return log_link_warning_errno(link, r, "Could not update MAC address in IPv4LL client: %m");
if (link->dhcp_client) {
r = sd_dhcp_client_set_mac(link->dhcp_client,