summary refs log tree commit diff
path: root/src/libnm-platform/nm-linux-platform.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libnm-platform/nm-linux-platform.c')
-rw-r--r--src/libnm-platform/nm-linux-platform.c218
1 files changed, 115 insertions, 103 deletions
diff --git a/src/libnm-platform/nm-linux-platform.c b/src/libnm-platform/nm-linux-platform.c
index 5b595a9b..dd4be614 100644
--- a/src/libnm-platform/nm-linux-platform.c
+++ b/src/libnm-platform/nm-linux-platform.c
@@ -108,6 +108,9 @@ typedef enum _nm_packed {
 
 /*****************************************************************************/
 
+#define IFLA_INFO_PORT_KIND IFLA_INFO_SLAVE_KIND
+#define IFLA_INFO_PORT_DATA IFLA_INFO_SLAVE_DATA
+
 #ifndef IFLA_PROMISCUITY
 #define IFLA_PROMISCUITY 30
 #endif
@@ -161,6 +164,10 @@ typedef enum _nm_packed {
 #define __IFLA_TUN_MAX               10
 #define IFLA_TUN_MAX                 (__IFLA_TUN_MAX - 1)
 
+#define IFLA_CONTROLLER IFLA_MASTER
+
+#define BRIDGE_FLAGS_CONTROLLER BRIDGE_FLAGS_MASTER
+
 G_STATIC_ASSERT(RTA_MAX == (__RTA_MAX - 1));
 #define RTA_PREF 20
 #undef RTA_MAX
@@ -180,7 +187,10 @@ G_STATIC_ASSERT(RTA_MAX == (__RTA_MAX - 1));
 
 /*****************************************************************************/
 
-#define IFLA_BOND_SLAVE_PRIO 9
+#define IFLA_BOND_ACTIVE_PORT      IFLA_BOND_ACTIVE_SLAVE
+#define IFLA_BOND_PORT_PRIO        IFLA_BOND_SLAVE_PRIO
+#define IFLA_BOND_ALL_PORTS_ACTIVE IFLA_BOND_ALL_SLAVES_ACTIVE
+#define IFLA_BOND_PACKETS_PER_PORT IFLA_BOND_PACKETS_PER_SLAVE
 
 #define IFLA_BOND_PEER_NOTIF_DELAY 28
 #define IFLA_BOND_AD_LACP_ACTIVE   29
@@ -427,7 +437,7 @@ typedef enum _nm_packed {
     DELAYED_ACTION_TYPE_WAIT_FOR_RESPONSE_RTNL = 1 << 12,
     DELAYED_ACTION_TYPE_WAIT_FOR_RESPONSE_GENL = 1 << 13,
     DELAYED_ACTION_TYPE_REFRESH_LINK           = 1 << 14,
-    DELAYED_ACTION_TYPE_MASTER_CONNECTED       = 1 << 15,
+    DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED   = 1 << 15,
 
     __DELAYED_ACTION_TYPE_MAX,
 
@@ -554,7 +564,7 @@ typedef struct {
          * by type. */
         int refresh_all_in_progress[_REFRESH_ALL_TYPE_NUM];
 
-        GPtrArray *list_master_connected;
+        GPtrArray *list_controller_connected;
         GPtrArray *list_refresh_link;
         union {
             struct {
@@ -1618,7 +1628,7 @@ _parse_lnk_bond(const char *kind, struct nlattr *info_data)
 {
     static const struct nla_policy policy[] = {
         [IFLA_BOND_MODE]              = {.type = NLA_U8},
-        [IFLA_BOND_ACTIVE_SLAVE]      = {.type = NLA_U32},
+        [IFLA_BOND_ACTIVE_PORT]       = {.type = NLA_U32},
         [IFLA_BOND_MIIMON]            = {.type = NLA_U32},
         [IFLA_BOND_UPDELAY]           = {.type = NLA_U32},
         [IFLA_BOND_DOWNDELAY]         = {.type = NLA_U32},
@@ -1633,10 +1643,10 @@ _parse_lnk_bond(const char *kind, struct nlattr *info_data)
         [IFLA_BOND_XMIT_HASH_POLICY]  = {.type = NLA_U8},
         [IFLA_BOND_RESEND_IGMP]       = {.type = NLA_U32},
         [IFLA_BOND_NUM_PEER_NOTIF]    = {.type = NLA_U8},
-        [IFLA_BOND_ALL_SLAVES_ACTIVE] = {.type = NLA_U8},
+        [IFLA_BOND_ALL_PORTS_ACTIVE]  = {.type = NLA_U8},
         [IFLA_BOND_MIN_LINKS]         = {.type = NLA_U32},
         [IFLA_BOND_LP_INTERVAL]       = {.type = NLA_U32},
-        [IFLA_BOND_PACKETS_PER_SLAVE] = {.type = NLA_U32},
+        [IFLA_BOND_PACKETS_PER_PORT]  = {.type = NLA_U32},
         [IFLA_BOND_AD_LACP_RATE]      = {.type = NLA_U8},
         [IFLA_BOND_AD_SELECT]         = {.type = NLA_U8},
         [IFLA_BOND_AD_ACTOR_SYS_PRIO] = {.type = NLA_U16},
@@ -1732,16 +1742,16 @@ _parse_lnk_bond(const char *kind, struct nlattr *info_data)
     }
     if (tb[IFLA_BOND_NUM_PEER_NOTIF])
         props->num_grat_arp = nla_get_u8(tb[IFLA_BOND_NUM_PEER_NOTIF]);
-    if (tb[IFLA_BOND_ALL_SLAVES_ACTIVE])
-        props->all_ports_active = nla_get_u8(tb[IFLA_BOND_ALL_SLAVES_ACTIVE]);
+    if (tb[IFLA_BOND_ALL_PORTS_ACTIVE])
+        props->all_ports_active = nla_get_u8(tb[IFLA_BOND_ALL_PORTS_ACTIVE]);
     if (tb[IFLA_BOND_MISSED_MAX])
         props->arp_missed_max = nla_get_u8(tb[IFLA_BOND_MISSED_MAX]);
     if (tb[IFLA_BOND_MIN_LINKS])
         props->min_links = nla_get_u32(tb[IFLA_BOND_MIN_LINKS]);
     if (tb[IFLA_BOND_LP_INTERVAL])
         props->lp_interval = nla_get_u32(tb[IFLA_BOND_LP_INTERVAL]);
-    if (tb[IFLA_BOND_PACKETS_PER_SLAVE])
-        props->packets_per_port = nla_get_u32(tb[IFLA_BOND_PACKETS_PER_SLAVE]);
+    if (tb[IFLA_BOND_PACKETS_PER_PORT])
+        props->packets_per_port = nla_get_u32(tb[IFLA_BOND_PACKETS_PER_PORT]);
     if (tb[IFLA_BOND_AD_LACP_RATE])
         props->lacp_rate = nla_get_u8(tb[IFLA_BOND_AD_LACP_RATE]);
     if (tb[IFLA_BOND_AD_LACP_ACTIVE]) {
@@ -3372,7 +3382,7 @@ _new_from_nl_link(NMPlatform            *platform,
         [IFLA_GRO_MAX_SIZE]  = {.type = NLA_U32},
         [IFLA_LINK]          = {.type = NLA_U32},
         [IFLA_WEIGHT]        = {.type = NLA_U32},
-        [IFLA_MASTER]        = {.type = NLA_U32},
+        [IFLA_CONTROLLER]    = {.type = NLA_U32},
         [IFLA_OPERSTATE]     = {.type = NLA_U8},
         [IFLA_LINKMODE]      = {.type = NLA_U8},
         [IFLA_LINKINFO]      = {.type = NLA_NESTED},
@@ -3454,11 +3464,11 @@ _new_from_nl_link(NMPlatform            *platform,
 
     if (tb[IFLA_LINKINFO]) {
         static const struct nla_policy policy_link_info[] = {
-            [IFLA_INFO_KIND]       = {.type = NLA_STRING},
-            [IFLA_INFO_DATA]       = {.type = NLA_NESTED},
-            [IFLA_INFO_XSTATS]     = {.type = NLA_NESTED},
-            [IFLA_INFO_SLAVE_KIND] = {.type = NLA_STRING},
-            [IFLA_INFO_SLAVE_DATA] = {.type = NLA_NESTED},
+            [IFLA_INFO_KIND]      = {.type = NLA_STRING},
+            [IFLA_INFO_DATA]      = {.type = NLA_NESTED},
+            [IFLA_INFO_XSTATS]    = {.type = NLA_NESTED},
+            [IFLA_INFO_PORT_KIND] = {.type = NLA_STRING},
+            [IFLA_INFO_PORT_DATA] = {.type = NLA_NESTED},
         };
         struct nlattr *li[G_N_ELEMENTS(policy_link_info)];
 
@@ -3470,8 +3480,8 @@ _new_from_nl_link(NMPlatform            *platform,
 
         nl_info_data = li[IFLA_INFO_DATA];
 
-        if (li[IFLA_INFO_SLAVE_KIND]) {
-            const char *s = nla_get_string(li[IFLA_INFO_SLAVE_KIND]);
+        if (li[IFLA_INFO_PORT_KIND]) {
+            const char *s = nla_get_string(li[IFLA_INFO_PORT_KIND]);
 
             if (nm_streq(s, "bond"))
                 obj->link.port_kind = NM_PORT_KIND_BOND;
@@ -3479,10 +3489,10 @@ _new_from_nl_link(NMPlatform            *platform,
                 obj->link.port_kind = NM_PORT_KIND_BRIDGE;
         }
 
-        if (li[IFLA_INFO_SLAVE_DATA]) {
+        if (li[IFLA_INFO_PORT_DATA]) {
             static const struct nla_policy policy_bond_port[] = {
                 [IFLA_BOND_SLAVE_QUEUE_ID] = {.type = NLA_U16},
-                [IFLA_BOND_SLAVE_PRIO]     = {.type = NLA_S32},
+                [IFLA_BOND_PORT_PRIO]      = {.type = NLA_S32},
             };
             struct nlattr                 *bp[G_N_ELEMENTS(policy_bond_port)];
             static const struct nla_policy policy_bridge_port[] = {
@@ -3494,30 +3504,30 @@ _new_from_nl_link(NMPlatform            *platform,
 
             switch (obj->link.port_kind) {
             case NM_PORT_KIND_BOND:
-                if (nla_parse_nested_arr(bp, li[IFLA_INFO_SLAVE_DATA], policy_bond_port) < 0)
+                if (nla_parse_nested_arr(bp, li[IFLA_INFO_PORT_DATA], policy_bond_port) < 0)
                     return NULL;
 
                 if (bp[IFLA_BOND_SLAVE_QUEUE_ID])
                     obj->link.port_data.bond.queue_id = nla_get_u16(bp[IFLA_BOND_SLAVE_QUEUE_ID]);
 
-                if (bp[IFLA_BOND_SLAVE_PRIO]) {
-                    obj->link.port_data.bond.prio     = nla_get_s32(bp[IFLA_BOND_SLAVE_PRIO]);
+                if (bp[IFLA_BOND_PORT_PRIO]) {
+                    obj->link.port_data.bond.prio     = nla_get_s32(bp[IFLA_BOND_PORT_PRIO]);
                     obj->link.port_data.bond.prio_has = TRUE;
                     if (!_nm_platform_kernel_support_detected(
-                            NM_PLATFORM_KERNEL_SUPPORT_TYPE_IFLA_BOND_SLAVE_PRIO)) {
-                        /* support for IFLA_BOND_SLAVE_PRIO was added in 0a2ff7cc8ad48a86939a91bd3457f38e59e741a1,
+                            NM_PLATFORM_KERNEL_SUPPORT_TYPE_IFLA_BOND_PORT_PRIO)) {
+                        /* support for IFLA_BOND_PORT_PRIO was added in 0a2ff7cc8ad48a86939a91bd3457f38e59e741a1,
                          * kernel 6.0, 2 October 2022.
                          *
                          * We can only detect support if the attribute is present. A missing attribute
                          * is not conclusive. */
                         _nm_platform_kernel_support_init(
-                            NM_PLATFORM_KERNEL_SUPPORT_TYPE_IFLA_BOND_SLAVE_PRIO,
+                            NM_PLATFORM_KERNEL_SUPPORT_TYPE_IFLA_BOND_PORT_PRIO,
                             1);
                     }
                 }
                 break;
             case NM_PORT_KIND_BRIDGE:
-                if (nla_parse_nested_arr(brp, li[IFLA_INFO_SLAVE_DATA], policy_bridge_port) < 0)
+                if (nla_parse_nested_arr(brp, li[IFLA_INFO_PORT_DATA], policy_bridge_port) < 0)
                     return NULL;
 
                 if (brp[IFLA_BRPORT_COST])
@@ -3572,8 +3582,8 @@ _new_from_nl_link(NMPlatform            *platform,
                                         &link_cached,
                                         &obj->link.kind);
 
-    if (tb[IFLA_MASTER])
-        obj->link.master = nla_get_u32(tb[IFLA_MASTER]);
+    if (tb[IFLA_CONTROLLER])
+        obj->link.controller = nla_get_u32(tb[IFLA_CONTROLLER]);
 
     if (tb[IFLA_LINK]) {
         if (!tb[IFLA_LINK_NETNSID])
@@ -4937,7 +4947,7 @@ _nl_msg_new_link_set_linkinfo(struct nl_msg *msg, NMLinkType link_type, gconstpo
         if (props->min_links)
             NLA_PUT_U32(msg, IFLA_BOND_MIN_LINKS, props->min_links);
         if (props->packets_per_port)
-            NLA_PUT_U32(msg, IFLA_BOND_PACKETS_PER_SLAVE, props->packets_per_port);
+            NLA_PUT_U32(msg, IFLA_BOND_PACKETS_PER_PORT, props->packets_per_port);
         if (props->peer_notif_delay_has)
             NLA_PUT_U32(msg, IFLA_BOND_PEER_NOTIF_DELAY, props->peer_notif_delay);
         if (props->primary > 0)
@@ -4960,7 +4970,7 @@ _nl_msg_new_link_set_linkinfo(struct nl_msg *msg, NMLinkType link_type, gconstpo
         if (props->arp_missed_max)
             NLA_PUT_U8(msg, IFLA_BOND_MISSED_MAX, props->arp_missed_max);
 
-        NLA_PUT_U8(msg, IFLA_BOND_ALL_SLAVES_ACTIVE, props->all_ports_active);
+        NLA_PUT_U8(msg, IFLA_BOND_ALL_PORTS_ACTIVE, props->all_ports_active);
 
         if (props->fail_over_mac)
             NLA_PUT_U8(msg, IFLA_BOND_FAIL_OVER_MAC, props->fail_over_mac);
@@ -6769,7 +6779,7 @@ static NM_UTILS_LOOKUP_STR_DEFINE(
     NM_UTILS_LOOKUP_STR_ITEM(DELAYED_ACTION_TYPE_REFRESH_ALL_GENL_FAMILIES,
                              "refresh-all-genl-families"),
     NM_UTILS_LOOKUP_STR_ITEM(DELAYED_ACTION_TYPE_REFRESH_LINK, "refresh-link"),
-    NM_UTILS_LOOKUP_STR_ITEM(DELAYED_ACTION_TYPE_MASTER_CONNECTED, "master-connected"),
+    NM_UTILS_LOOKUP_STR_ITEM(DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED, "controller-connected"),
     NM_UTILS_LOOKUP_STR_ITEM(DELAYED_ACTION_TYPE_READ_RTNL, "read-rtnl"),
     NM_UTILS_LOOKUP_STR_ITEM(DELAYED_ACTION_TYPE_READ_GENL, "read-genl"),
     NM_UTILS_LOOKUP_STR_ITEM(DELAYED_ACTION_TYPE_WAIT_FOR_RESPONSE_RTNL, "wait-for-response-rtnl"),
@@ -6797,8 +6807,8 @@ delayed_action_to_string_full(DelayedActionType action_type,
     nm_strbuf_append_str(&buf, &buf_size, delayed_action_to_string(action_type));
 
     switch (action_type) {
-    case DELAYED_ACTION_TYPE_MASTER_CONNECTED:
-        nm_strbuf_append(&buf, &buf_size, " (master-ifindex %d)", GPOINTER_TO_INT(user_data));
+    case DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED:
+        nm_strbuf_append(&buf, &buf_size, " (controller-ifindex %d)", GPOINTER_TO_INT(user_data));
         break;
     case DELAYED_ACTION_TYPE_REFRESH_LINK:
         nm_strbuf_append(&buf, &buf_size, " (ifindex %d)", GPOINTER_TO_INT(user_data));
@@ -6979,16 +6989,16 @@ delayed_action_wait_for_nl_response_complete_all(NMPlatform             *platfor
 /*****************************************************************************/
 
 static void
-delayed_action_handle_MASTER_CONNECTED(NMPlatform *platform, int master_ifindex)
+delayed_action_handle_CONTROLLER_CONNECTED(NMPlatform *platform, int controller_ifindex)
 {
     nm_auto_nmpobj const NMPObject *obj_old = NULL;
     nm_auto_nmpobj const NMPObject *obj_new = NULL;
     NMPCacheOpsType                 cache_op;
 
-    cache_op = nmp_cache_update_link_master_connected(nm_platform_get_cache(platform),
-                                                      master_ifindex,
-                                                      &obj_old,
-                                                      &obj_new);
+    cache_op = nmp_cache_update_link_controller_connected(nm_platform_get_cache(platform),
+                                                          controller_ifindex,
+                                                          &obj_old,
+                                                          &obj_new);
     if (cache_op == NMP_CACHE_OPS_UNCHANGED)
         return;
     cache_on_change(platform, cache_op, obj_old, obj_new);
@@ -7030,27 +7040,27 @@ delayed_action_handle_one(NMPlatform *platform)
     if (priv->delayed_action.flags == DELAYED_ACTION_TYPE_NONE)
         return FALSE;
 
-    /* First process DELAYED_ACTION_TYPE_MASTER_CONNECTED actions.
+    /* First process DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED actions.
      * This type of action is entirely cache-internal and is here to resolve a
      * cache inconsistency. It should be fixed right away. */
-    if (NM_FLAGS_HAS(priv->delayed_action.flags, DELAYED_ACTION_TYPE_MASTER_CONNECTED)) {
-        nm_assert(priv->delayed_action.list_master_connected->len > 0);
+    if (NM_FLAGS_HAS(priv->delayed_action.flags, DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED)) {
+        nm_assert(priv->delayed_action.list_controller_connected->len > 0);
 
-        user_data = priv->delayed_action.list_master_connected->pdata[0];
-        g_ptr_array_remove_index_fast(priv->delayed_action.list_master_connected, 0);
-        if (priv->delayed_action.list_master_connected->len == 0)
-            priv->delayed_action.flags &= ~DELAYED_ACTION_TYPE_MASTER_CONNECTED;
+        user_data = priv->delayed_action.list_controller_connected->pdata[0];
+        g_ptr_array_remove_index_fast(priv->delayed_action.list_controller_connected, 0);
+        if (priv->delayed_action.list_controller_connected->len == 0)
+            priv->delayed_action.flags &= ~DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED;
         nm_assert(nm_utils_ptrarray_find_first(
-                      (gconstpointer *) priv->delayed_action.list_master_connected->pdata,
-                      priv->delayed_action.list_master_connected->len,
+                      (gconstpointer *) priv->delayed_action.list_controller_connected->pdata,
+                      priv->delayed_action.list_controller_connected->len,
                       user_data)
                   < 0);
 
-        _LOGt_delayed_action(DELAYED_ACTION_TYPE_MASTER_CONNECTED, user_data, "handle");
-        delayed_action_handle_MASTER_CONNECTED(platform, GPOINTER_TO_INT(user_data));
+        _LOGt_delayed_action(DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED, user_data, "handle");
+        delayed_action_handle_CONTROLLER_CONNECTED(platform, GPOINTER_TO_INT(user_data));
         return TRUE;
     }
-    nm_assert(priv->delayed_action.list_master_connected->len == 0);
+    nm_assert(priv->delayed_action.list_controller_connected->len == 0);
 
     /* Next we prefer read-genl/read-rtnl, because the buffer size is limited and we want to process events
      * from netlink early. */
@@ -7166,13 +7176,13 @@ delayed_action_schedule(NMPlatform *platform, DelayedActionType action_type, gpo
             < 0)
             g_ptr_array_add(priv->delayed_action.list_refresh_link, user_data);
         break;
-    case DELAYED_ACTION_TYPE_MASTER_CONNECTED:
+    case DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED:
         if (nm_utils_ptrarray_find_first(
-                (gconstpointer *) priv->delayed_action.list_master_connected->pdata,
-                priv->delayed_action.list_master_connected->len,
+                (gconstpointer *) priv->delayed_action.list_controller_connected->pdata,
+                priv->delayed_action.list_controller_connected->len,
                 user_data)
             < 0)
-            g_ptr_array_add(priv->delayed_action.list_master_connected, user_data);
+            g_ptr_array_add(priv->delayed_action.list_controller_connected, user_data);
         break;
     case DELAYED_ACTION_TYPE_WAIT_FOR_RESPONSE_RTNL:
         g_array_append_vals(priv->delayed_action.list_wait_for_response_rtnl, user_data, 1);
@@ -7186,7 +7196,7 @@ delayed_action_schedule(NMPlatform *platform, DelayedActionType action_type, gpo
         nm_assert(!user_data);
         nm_assert(!NM_FLAGS_ANY(action_type,
                                 DELAYED_ACTION_TYPE_REFRESH_LINK
-                                    | DELAYED_ACTION_TYPE_MASTER_CONNECTED
+                                    | DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED
                                     | DELAYED_ACTION_TYPE_WAIT_FOR_RESPONSE_RTNL
                                     | DELAYED_ACTION_TYPE_WAIT_FOR_RESPONSE_GENL));
         break;
@@ -7353,30 +7363,30 @@ cache_on_change(NMPlatform      *platform,
     switch (klass->obj_type) {
     case NMP_OBJECT_TYPE_LINK:
     {
-        /* check whether changing a slave link can cause a master link (bridge or bond) to go up/down */
+        /* check whether changing a port link can cause a controller link (bridge or bond) to go up/down */
         if (obj_old
             && nmp_cache_link_connected_needs_toggle_by_ifindex(cache,
-                                                                obj_old->link.master,
+                                                                obj_old->link.controller,
                                                                 obj_new,
                                                                 obj_old))
             delayed_action_schedule(platform,
-                                    DELAYED_ACTION_TYPE_MASTER_CONNECTED,
-                                    GINT_TO_POINTER(obj_old->link.master));
-        if (obj_new && (!obj_old || obj_old->link.master != obj_new->link.master)
+                                    DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED,
+                                    GINT_TO_POINTER(obj_old->link.controller));
+        if (obj_new && (!obj_old || obj_old->link.controller != obj_new->link.controller)
             && nmp_cache_link_connected_needs_toggle_by_ifindex(cache,
-                                                                obj_new->link.master,
+                                                                obj_new->link.controller,
                                                                 obj_new,
                                                                 obj_old))
             delayed_action_schedule(platform,
-                                    DELAYED_ACTION_TYPE_MASTER_CONNECTED,
-                                    GINT_TO_POINTER(obj_new->link.master));
+                                    DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED,
+                                    GINT_TO_POINTER(obj_new->link.controller));
     }
         {
-            /* check whether we are about to change a master link that needs toggling connected state. */
+            /* check whether we are about to change a controller link that needs toggling connected state. */
             if (obj_new /* <-- nonsensical, make coverity happy */
                 && nmp_cache_link_connected_needs_toggle(cache, obj_new, obj_new, obj_old))
                 delayed_action_schedule(platform,
-                                        DELAYED_ACTION_TYPE_MASTER_CONNECTED,
+                                        DELAYED_ACTION_TYPE_CONTROLLER_CONNECTED,
                                         GINT_TO_POINTER(obj_new->link.ifindex));
         }
         {
@@ -7515,16 +7525,16 @@ cache_on_change(NMPlatform      *platform,
             }
         }
         {
-            /* on enslave/release, we also refresh the master. */
+            /* on attach/release, we also refresh the controller. */
             int      ifindex1 = 0, ifindex2 = 0;
-            gboolean changed_master, changed_connected;
+            gboolean changed_controller, changed_connected;
 
-            changed_master =
-                (obj_new && obj_new->_link.netlink.is_in_netlink && obj_new->link.master > 0
-                     ? obj_new->link.master
+            changed_controller =
+                (obj_new && obj_new->_link.netlink.is_in_netlink && obj_new->link.controller > 0
+                     ? obj_new->link.controller
                      : 0)
-                != (obj_old && obj_old->_link.netlink.is_in_netlink && obj_old->link.master > 0
-                        ? obj_old->link.master
+                != (obj_old && obj_old->_link.netlink.is_in_netlink && obj_old->link.controller > 0
+                        ? obj_old->link.controller
                         : 0);
             changed_connected = (obj_new && obj_new->_link.netlink.is_in_netlink
                                      ? NM_FLAGS_HAS(obj_new->link.n_ifi_flags, IFF_LOWER_UP)
@@ -7533,15 +7543,15 @@ cache_on_change(NMPlatform      *platform,
                                         ? NM_FLAGS_HAS(obj_old->link.n_ifi_flags, IFF_LOWER_UP)
                                         : 2);
 
-            if (changed_master || changed_connected) {
-                ifindex1 =
-                    (obj_old && obj_old->_link.netlink.is_in_netlink && obj_old->link.master > 0)
-                        ? obj_old->link.master
-                        : 0;
-                ifindex2 =
-                    (obj_new && obj_new->_link.netlink.is_in_netlink && obj_new->link.master > 0)
-                        ? obj_new->link.master
-                        : 0;
+            if (changed_controller || changed_connected) {
+                ifindex1 = (obj_old && obj_old->_link.netlink.is_in_netlink
+                            && obj_old->link.controller > 0)
+                               ? obj_old->link.controller
+                               : 0;
+                ifindex2 = (obj_new && obj_new->_link.netlink.is_in_netlink
+                            && obj_new->link.controller > 0)
+                               ? obj_new->link.controller
+                               : 0;
 
                 if (ifindex1 > 0)
                     delayed_action_schedule(platform,
@@ -8564,13 +8574,13 @@ link_add(NMPlatform            *platform,
 
     if (type == NM_LINK_TYPE_BOND) {
         /* When the kernel loads the bond module, either via explicit modprobe
-         * or automatically in response to creating a bond master, it will also
+         * or automatically in response to creating a bond controller, it will also
          * create a 'bond0' interface.  Since the bond we're about to create may
          * or may not be named 'bond0' prevent potential confusion about a bond
          * that the user didn't want by telling the bonding module not to create
          * bond0 automatically.
          */
-        if (!g_file_test("/sys/class/net/bonding_masters", G_FILE_TEST_EXISTS))
+        if (!g_file_test("/sys/class/net/bonding_controllers", G_FILE_TEST_EXISTS))
             (void) nmp_utils_modprobe(NULL, TRUE, "bonding", "max_bonds=0", NULL);
     }
 
@@ -8646,15 +8656,15 @@ link_change(NMPlatform                   *platform,
             goto nla_put_failure;
 
         nm_assert(nm_streq0("bond", nm_link_type_to_rtnl_type_string(NM_LINK_TYPE_BOND)));
-        NLA_PUT_STRING(nlmsg, IFLA_INFO_SLAVE_KIND, "bond");
+        NLA_PUT_STRING(nlmsg, IFLA_INFO_PORT_KIND, "bond");
 
-        if (!(nl_port_data = nla_nest_start(nlmsg, IFLA_INFO_SLAVE_DATA)))
+        if (!(nl_port_data = nla_nest_start(nlmsg, IFLA_INFO_PORT_DATA)))
             goto nla_put_failure;
 
         NLA_PUT_U16(nlmsg, IFLA_BOND_SLAVE_QUEUE_ID, port_data->bond.queue_id);
 
         if (port_data->bond.prio_has)
-            NLA_PUT_S32(nlmsg, IFLA_BOND_SLAVE_PRIO, port_data->bond.prio);
+            NLA_PUT_S32(nlmsg, IFLA_BOND_PORT_PRIO, port_data->bond.prio);
 
         nla_nest_end(nlmsg, nl_port_data);
         nla_nest_end(nlmsg, nl_info);
@@ -8667,9 +8677,9 @@ link_change(NMPlatform                   *platform,
             goto nla_put_failure;
 
         nm_assert(nm_streq0("bridge", nm_link_type_to_rtnl_type_string(NM_LINK_TYPE_BRIDGE)));
-        NLA_PUT_STRING(nlmsg, IFLA_INFO_SLAVE_KIND, "bridge");
+        NLA_PUT_STRING(nlmsg, IFLA_INFO_PORT_KIND, "bridge");
 
-        if (!(nl_port_data = nla_nest_start(nlmsg, IFLA_INFO_SLAVE_DATA)))
+        if (!(nl_port_data = nla_nest_start(nlmsg, IFLA_INFO_PORT_DATA)))
             goto nla_put_failure;
 
         NLA_PUT_U32(nlmsg, IFLA_BRPORT_COST, port_data->bridge.path_cost);
@@ -9394,7 +9404,7 @@ nla_put_failure:
 static gboolean
 link_set_bridge_vlans(NMPlatform                        *platform,
                       int                                ifindex,
-                      gboolean                           on_master,
+                      gboolean                           on_controller,
                       const NMPlatformBridgeVlan *const *vlans)
 {
     nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
@@ -9416,7 +9426,9 @@ link_set_bridge_vlans(NMPlatform                        *platform,
     if (!(list = nla_nest_start(nlmsg, IFLA_AF_SPEC)))
         goto nla_put_failure;
 
-    NLA_PUT_U16(nlmsg, IFLA_BRIDGE_FLAGS, on_master ? BRIDGE_FLAGS_MASTER : BRIDGE_FLAGS_SELF);
+    NLA_PUT_U16(nlmsg,
+                IFLA_BRIDGE_FLAGS,
+                on_controller ? BRIDGE_FLAGS_CONTROLLER : BRIDGE_FLAGS_SELF);
 
     if (vlans) {
         /* Add VLANs */
@@ -9721,16 +9733,16 @@ link_vlan_change(NMPlatform             *platform,
 }
 
 static gboolean
-link_enslave(NMPlatform *platform, int master, int slave)
+link_attach_port(NMPlatform *platform, int controller, int port)
 {
     nm_auto_nlmsg struct nl_msg *nlmsg   = NULL;
-    int                          ifindex = slave;
+    int                          ifindex = port;
 
     nlmsg = _nl_msg_new_link(RTM_NEWLINK, 0, ifindex, NULL);
     if (!nlmsg)
         return FALSE;
 
-    NLA_PUT_U32(nlmsg, IFLA_MASTER, master);
+    NLA_PUT_U32(nlmsg, IFLA_CONTROLLER, controller);
 
     return (do_change_link(platform, CHANGE_LINK_TYPE_UNSPEC, ifindex, nlmsg, NULL) >= 0);
 nla_put_failure:
@@ -9738,9 +9750,9 @@ nla_put_failure:
 }
 
 static gboolean
-link_release(NMPlatform *platform, int master, int slave)
+link_release_port(NMPlatform *platform, int controller, int port)
 {
-    return link_enslave(platform, 0, slave);
+    return link_attach_port(platform, 0, port);
 }
 
 /*****************************************************************************/
@@ -9970,7 +9982,7 @@ link_can_assume(NMPlatform *platform, int ifindex)
     if (!NM_FLAGS_HAS(link->link.n_ifi_flags, IFF_UP))
         return FALSE;
 
-    if (link->link.master > 0)
+    if (link->link.controller > 0)
         return TRUE;
 
     nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP4_ADDRESS, ifindex);
@@ -11505,8 +11517,8 @@ nm_linux_platform_init(NMLinuxPlatform *self)
     c_list_init(&priv->sysctl_clear_cache_lst);
     c_list_init(&priv->sysctl_list);
 
-    priv->delayed_action.list_master_connected = g_ptr_array_new();
-    priv->delayed_action.list_refresh_link     = g_ptr_array_new();
+    priv->delayed_action.list_controller_connected = g_ptr_array_new();
+    priv->delayed_action.list_refresh_link         = g_ptr_array_new();
     priv->delayed_action.list_wait_for_response_rtnl =
         g_array_new(FALSE, TRUE, sizeof(DelayedActionWaitForNlResponseData));
     priv->delayed_action.list_wait_for_response_genl =
@@ -11719,7 +11731,7 @@ dispose(GObject *object)
                                                      WAIT_FOR_NL_RESPONSE_RESULT_FAILED_DISPOSING);
 
     priv->delayed_action.flags = DELAYED_ACTION_TYPE_NONE;
-    g_ptr_array_set_size(priv->delayed_action.list_master_connected, 0);
+    g_ptr_array_set_size(priv->delayed_action.list_controller_connected, 0);
     g_ptr_array_set_size(priv->delayed_action.list_refresh_link, 0);
 
     G_OBJECT_CLASS(nm_linux_platform_parent_class)->dispose(object);
@@ -11730,7 +11742,7 @@ finalize(GObject *object)
 {
     NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE(object);
 
-    g_ptr_array_unref(priv->delayed_action.list_master_connected);
+    g_ptr_array_unref(priv->delayed_action.list_controller_connected);
     g_ptr_array_unref(priv->delayed_action.list_refresh_link);
     g_array_unref(priv->delayed_action.list_wait_for_response_rtnl);
     g_array_unref(priv->delayed_action.list_wait_for_response_genl);
@@ -11808,8 +11820,8 @@ nm_linux_platform_class_init(NMLinuxPlatformClass *klass)
     platform_class->link_supports_vlans          = link_supports_vlans;
     platform_class->link_supports_sriov          = link_supports_sriov;
 
-    platform_class->link_enslave = link_enslave;
-    platform_class->link_release = link_release;
+    platform_class->link_attach_port  = link_attach_port;
+    platform_class->link_release_port = link_release_port;
 
     platform_class->link_can_assume = link_can_assume;