chiark / gitweb /
networkd: explicitly enable/disable ipv6ll addresses
[elogind.git] / src / network / networkd-link.c
index 0b1cac1055ffaa055f010c2cc189c5ae3afa37b5..f716e8231a111d90e5a7f03a392d985dbcb1a17b 100644 (file)
@@ -728,12 +728,12 @@ int link_address_drop_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata)
         return 1;
 }
 
-static int link_set_bridge_fdb(const Link *const link) {
+static int link_set_bridge_fdb(Link *const link) {
         FdbEntry *fdb_entry;
         int r = 0;
 
         LIST_FOREACH(static_fdb_entries, fdb_entry, link->network->static_fdb_entries) {
-                r = fdb_entry_configure(link->manager->rtnl, fdb_entry, link->ifindex);
+                r = fdb_entry_configure(link, fdb_entry);
                 if(r < 0) {
                         log_link_error(link, "Failed to add MAC entry to static MAC table: %s", strerror(-r));
                         break;
@@ -1058,6 +1058,7 @@ static int link_up_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) {
 
 static int link_up(Link *link) {
         _cleanup_rtnl_message_unref_ sd_rtnl_message *req = NULL;
+        uint8_t ipv6ll_mode;
         int r;
 
         assert(link);
@@ -1109,12 +1110,11 @@ static int link_up(Link *link) {
                 return r;
         }
 
-        if (!link_ipv6ll_enabled(link)) {
-                r = sd_rtnl_message_append_u8(req, IFLA_INET6_ADDR_GEN_MODE, IN6_ADDR_GEN_MODE_NONE);
-                if (r < 0) {
-                        log_link_error(link, "Could not append IFLA_INET6_ADDR_GEN_MODE: %s", strerror(-r));
-                        return r;
-                }
+        ipv6ll_mode = link_ipv6ll_enabled(link) ? IN6_ADDR_GEN_MODE_EUI64 : IN6_ADDR_GEN_MODE_NONE;
+        r = sd_rtnl_message_append_u8(req, IFLA_INET6_ADDR_GEN_MODE, ipv6ll_mode);
+        if (r < 0) {
+                log_link_error(link, "Could not append IFLA_INET6_ADDR_GEN_MODE: %s", strerror(-r));
+                return r;
         }
 
         if (!in_addr_is_null(AF_INET6, &link->network->ipv6_token)) {