core: add NMActivationStateFlags "is-master" and "is-slave"

This commit is contained in:
Thomas Haller
2017-09-26 13:45:25 +02:00
parent 817a45bfe6
commit e96df2c927
2 changed files with 26 additions and 0 deletions

View File

@@ -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__ */

View File

@@ -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