diff options
| author | Michael Biebl <biebl@debian.org> | 2024-08-09 18:57:15 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2024-08-09 18:57:15 +0200 |
| commit | e96d74409128c6a977e31f24fad9b267d2feb9a1 (patch) | |
| tree | 12dad71135c6c291de457568cb973208ea8a0024 /src/libnm-platform/nm-linux-platform.c | |
| parent | 45a364c60a9d6d34e614c4f1f507c69336ad1e69 (diff) | |
New upstream version 1.48.8 upstream/1.48.8
Diffstat (limited to 'src/libnm-platform/nm-linux-platform.c')
| -rw-r--r-- | src/libnm-platform/nm-linux-platform.c | 218 |
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; |