From e96df2c927e0641d0da29831f44eb6e26e04ca2c Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 26 Sep 2017 13:45:25 +0200 Subject: [PATCH] core: add NMActivationStateFlags "is-master" and "is-slave" --- libnm-core/nm-dbus-interface.h | 5 +++++ src/nm-active-connection.c | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/libnm-core/nm-dbus-interface.h b/libnm-core/nm-dbus-interface.h index e5125f569..632f14a81 100644 --- a/libnm-core/nm-dbus-interface.h +++ b/libnm-core/nm-dbus-interface.h @@ -880,6 +880,8 @@ typedef enum { /** * NMActivationStateFlags: * @NM_ACTIVATION_STATE_FLAG_NONE: an alias for numeric zero, no flags set. + * @NM_ACTIVATION_STATE_FLAG_IS_MASTER: the device is a master. + * @NM_ACTIVATION_STATE_FLAG_IS_SLAVE: the device is a slave. * * Flags describing the current activation state. * @@ -887,6 +889,9 @@ typedef enum { **/ typedef enum { /*< flags >*/ NM_ACTIVATION_STATE_FLAG_NONE = 0, + + NM_ACTIVATION_STATE_FLAG_IS_MASTER = (1LL << 0), + NM_ACTIVATION_STATE_FLAG_IS_SLAVE = (1LL << 1), } NMActivationStateFlags; #endif /* __NM_DBUS_INTERFACE_H__ */ diff --git a/src/nm-active-connection.c b/src/nm-active-connection.c index 61917156d..234469d14 100644 --- a/src/nm-active-connection.c +++ b/src/nm-active-connection.c @@ -148,6 +148,8 @@ NM_UTILS_LOOKUP_STR_DEFINE_STATIC (_state_to_string, NMActiveConnectionState, NM_UTILS_FLAGS2STR_DEFINE_STATIC (_state_flags_to_string, NMActivationStateFlags, NM_UTILS_FLAGS2STR (NM_ACTIVATION_STATE_FLAG_NONE, "none"), + NM_UTILS_FLAGS2STR (NM_ACTIVATION_STATE_FLAG_IS_MASTER, "is-master"), + NM_UTILS_FLAGS2STR (NM_ACTIVATION_STATE_FLAG_IS_SLAVE, "is-slave"), ); /*****************************************************************************/ @@ -369,6 +371,8 @@ _set_applied_connection_take (NMActiveConnection *self, NMConnection *applied_connection) { NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (self); + NMSettingConnection *s_con; + NMActivationStateFlags flags_val = 0; nm_assert (NM_IS_CONNECTION (applied_connection)); nm_assert (!priv->applied_connection); @@ -376,6 +380,23 @@ _set_applied_connection_take (NMActiveConnection *self, /* we take ownership of @applied_connection. Ensure to pass in a reference. */ priv->applied_connection = applied_connection; nm_connection_clear_secrets (priv->applied_connection); + + /* we determine whether the connection is a master/slave, based solely + * on the connection properties itself. */ + s_con = nm_connection_get_setting_connection (priv->applied_connection); + if (nm_setting_connection_get_master (s_con)) + flags_val |= NM_ACTIVATION_STATE_FLAG_IS_SLAVE; + + if (NM_IN_STRSET (nm_setting_connection_get_connection_type (s_con), + NM_SETTING_BOND_SETTING_NAME, + NM_SETTING_BRIDGE_SETTING_NAME, + NM_SETTING_TEAM_SETTING_NAME)) + flags_val |= NM_ACTIVATION_STATE_FLAG_IS_MASTER; + + nm_active_connection_set_state_flags_full (self, + flags_val, + NM_ACTIVATION_STATE_FLAG_IS_MASTER + | NM_ACTIVATION_STATE_FLAG_IS_SLAVE); } void