static dbus_bool_t ni_objectmodel_ethtool_link_adv_fec_modes_into_dict(ni_dbus_variant_t *dict, ni_bitfield_t *bitfield) { ni_string_array_t tmp = NI_STRING_ARRAY_INIT; ni_dbus_variant_t *ent; if (!dict || !ni_bitfield_words(bitfield)) return FALSE; if (!ni_objectmodel_ethtool_link_adv_bitfield_into_array(&tmp, bitfield, ni_ethtool_link_adv_fec_name)) return FALSE; if (!(ent = ni_dbus_dict_add(dict, "fec-modes"))) { ni_string_array_destroy(&tmp); return FALSE; } ni_dbus_variant_set_string_array(ent, (const char **)tmp.data, tmp.count); ni_string_array_destroy(&tmp); return TRUE; }
/* * Get/set ARP monitoring info */ static dbus_bool_t __ni_objectmodel_bonding_get_arpmon(const ni_dbus_object_t *object, const ni_dbus_property_t *property, ni_dbus_variant_t *result, DBusError *error) { const ni_bonding_t *bond; ni_dbus_variant_t *var; if (!(bond = __ni_objectmodel_bonding_read_handle(object, error))) return FALSE; if (bond->monitoring != NI_BOND_MONITOR_ARP) return ni_dbus_error_property_not_present(error, object->path, property->name); ni_dbus_dict_add_uint32(result, "interval", bond->arpmon.interval); ni_dbus_dict_add_uint32(result, "validate", bond->arpmon.validate); var = ni_dbus_dict_add(result, "targets"); ni_dbus_variant_set_string_array(var, (const char **) bond->arpmon.targets.data, bond->arpmon.targets.count); return TRUE; }