diff options
Diffstat (limited to 'libnm-core/nm-setting-tc-config.c')
| -rw-r--r-- | libnm-core/nm-setting-tc-config.c | 77 |
1 files changed, 41 insertions, 36 deletions
diff --git a/libnm-core/nm-setting-tc-config.c b/libnm-core/nm-setting-tc-config.c index f50969fb..43015d37 100644 --- a/libnm-core/nm-setting-tc-config.c +++ b/libnm-core/nm-setting-tc-config.c @@ -820,23 +820,21 @@ enum { /** * NMSettingTCConfig: * - * Linux Traffic Contril Settings. + * Linux Traffic Control Settings. * * Since: 1.12 */ struct _NMSettingTCConfig { - NMSetting parent; + NMSetting parent; GPtrArray *qdiscs; GPtrArray *tfilters; }; struct _NMSettingTCConfigClass { - NMSettingClass parent; + NMSettingClass parent; }; -G_DEFINE_TYPE_WITH_CODE (NMSettingTCConfig, nm_setting_tc_config, NM_TYPE_SETTING, - _nm_register_setting (TC_CONFIG, NM_SETTING_PRIORITY_IP)) -NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_TC_CONFIG) +G_DEFINE_TYPE (NMSettingTCConfig, nm_setting_tc_config, NM_TYPE_SETTING) /** * nm_setting_tc_config_new: @@ -983,8 +981,10 @@ nm_setting_tc_config_clear_qdiscs (NMSettingTCConfig *self) { g_return_if_fail (NM_IS_SETTING_TC_CONFIG (self)); - g_ptr_array_set_size (self->qdiscs, 0); - g_object_notify (G_OBJECT (self), NM_SETTING_TC_CONFIG_QDISCS); + if (self->qdiscs->len != 0) { + g_ptr_array_set_size (self->qdiscs, 0); + g_object_notify (G_OBJECT (self), NM_SETTING_TC_CONFIG_QDISCS); + } } /*****************************************************************************/ @@ -1117,8 +1117,10 @@ nm_setting_tc_config_clear_tfilters (NMSettingTCConfig *self) { g_return_if_fail (NM_IS_SETTING_TC_CONFIG (self)); - g_ptr_array_set_size (self->tfilters, 0); - g_object_notify (G_OBJECT (self), NM_SETTING_TC_CONFIG_TFILTERS); + if (self->tfilters->len != 0) { + g_ptr_array_set_size (self->tfilters, 0); + g_object_notify (G_OBJECT (self), NM_SETTING_TC_CONFIG_TFILTERS); + } } /*****************************************************************************/ @@ -1239,7 +1241,7 @@ compare_property (NMSetting *setting, { NMSettingTCConfig *a_tc_config = NM_SETTING_TC_CONFIG (setting); NMSettingTCConfig *b_tc_config = NM_SETTING_TC_CONFIG (other); - NMSettingClass *parent_class; + NMSettingClass *setting_class; guint i; if (nm_streq (prop_spec->name, NM_SETTING_TC_CONFIG_QDISCS)) { @@ -1262,9 +1264,8 @@ compare_property (NMSetting *setting, return TRUE; } - /* Otherwise chain up to parent to handle generic compare */ - parent_class = NM_SETTING_CLASS (nm_setting_tc_config_parent_class); - return parent_class->compare_property (setting, other, prop_spec, flags); + setting_class = NM_SETTING_CLASS (nm_setting_tc_config_parent_class); + return setting_class->compare_property (setting, other, prop_spec, flags); } static void @@ -1586,28 +1587,27 @@ tc_tfilters_set (NMSetting *setting, } static void -nm_setting_tc_config_class_init (NMSettingTCConfigClass *setting_class) +nm_setting_tc_config_class_init (NMSettingTCConfigClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (setting_class); - NMSettingClass *parent_class = NM_SETTING_CLASS (setting_class); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + NMSettingClass *setting_class = NM_SETTING_CLASS (klass); + GArray *properties_override = _nm_sett_info_property_override_create_array (); - /* virtual methods */ object_class->set_property = set_property; object_class->get_property = get_property; object_class->finalize = finalize; - parent_class->compare_property = compare_property; - parent_class->verify = verify; - /* Properties */ + setting_class->compare_property = compare_property; + setting_class->verify = verify; /** * NMSettingTCConfig:qdiscs: (type GPtrArray(NMTCQdisc)) * - * Array of TC queuening disciplines. + * Array of TC queueing disciplines. **/ /* ---ifcfg-rh--- * property: qdiscs - * variable: QDISC1, QDISC2, ... + * variable: QDISC1(+), QDISC2(+), ... * description: Queueing disciplines * example: QDISC1=ingress, QDISC2="root handle 1234: fq_codel" * ---end--- @@ -1620,12 +1620,13 @@ nm_setting_tc_config_class_init (NMSettingTCConfigClass *setting_class) NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS)); - _nm_setting_class_override_property (parent_class, - NM_SETTING_TC_CONFIG_QDISCS, - G_VARIANT_TYPE ("aa{sv}"), - tc_qdiscs_get, - tc_qdiscs_set, - NULL); + _properties_override_add_override (properties_override, + g_object_class_find_property (G_OBJECT_CLASS (setting_class), + NM_SETTING_TC_CONFIG_QDISCS), + G_VARIANT_TYPE ("aa{sv}"), + tc_qdiscs_get, + tc_qdiscs_set, + NULL); /** * NMSettingTCConfig:tfilters: (type GPtrArray(NMTCTfilter)) @@ -1634,7 +1635,7 @@ nm_setting_tc_config_class_init (NMSettingTCConfigClass *setting_class) **/ /* ---ifcfg-rh--- * property: qdiscs - * variable: FILTER1, FILTER2, ... + * variable: FILTER1(+), FILTER2(+), ... * description: Traffic filters * example: FILTER1="parent ffff: matchall action simple sdata Input", ... * ---end--- @@ -1647,10 +1648,14 @@ nm_setting_tc_config_class_init (NMSettingTCConfigClass *setting_class) NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS)); - _nm_setting_class_override_property (parent_class, - NM_SETTING_TC_CONFIG_TFILTERS, - G_VARIANT_TYPE ("aa{sv}"), - tc_tfilters_get, - tc_tfilters_set, - NULL); + _properties_override_add_override (properties_override, + g_object_class_find_property (G_OBJECT_CLASS (setting_class), + NM_SETTING_TC_CONFIG_TFILTERS), + G_VARIANT_TYPE ("aa{sv}"), + tc_tfilters_get, + tc_tfilters_set, + NULL); + + _nm_setting_class_commit_full (setting_class, NM_META_SETTING_TYPE_TC_CONFIG, + NULL, properties_override); } |