Example #1
0
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;
}
Example #2
0
/*
 * 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;
}