示例#1
0
文件: naming.c 项目: gsanso/wicked
/*
 * Match modem devices
 */
static ni_bool_t
ni_objectmodel_modem_match_attr(const ni_dbus_object_t *object, const char *name, const char *match)
{
	ni_modem_t *modem;
	const char *value = NULL;

	if (!(modem = ni_objectmodel_unwrap_modem(object, NULL)))
		return FALSE;

	if (!strcmp(name, "equipment-id"))
		value = modem->identify.equipment;
	else if (!strcmp(name, "device"))
		value = modem->identify.device;
	else if (!strcmp(name, "manufacturer"))
		value = modem->identify.manufacturer;
	else if (!strcmp(name, "model"))
		value = modem->identify.model;
	else if (!strcmp(name, "version"))
		value = modem->identify.version;
	else {
		ni_warn("%s: unsupported query attribute %s", __func__, name);
		return FALSE;
	}

	ni_trace("%s(%s): match=\"%s\", value=\"%s\"", __func__, name, match, value);
	return ni_string_eq_nocase(match, value);
}
示例#2
0
文件: ppp.c 项目: mchf/wicked
/*
 * Support for PPP over serial
 */
static inline ni_netdev_t *
__ni_objectmodel_ppp_device_arg(const ni_dbus_variant_t *dict, DBusError *error)
{
	ni_netdev_t *ppp_dev;
	const char *device_path;
	ni_dbus_object_t *device_object;
	ni_ppp_t *ppp;
	ni_modem_t *modem;

	if (!(ppp_dev = ni_objectmodel_get_netif_argument(dict, NI_IFTYPE_PPP, &ni_objectmodel_ppp_service))) {
		dbus_set_error(error, DBUS_ERROR_INVALID_ARGS, "Error unwrapping PPP device configuration");
		return NULL;
	}

	ppp = ni_netdev_get_ppp(ppp_dev);
	if (!ni_ppp_check_config(ppp) || !(device_path = ppp->config->device.object_path)) {
		dbus_set_error(error, DBUS_ERROR_INVALID_ARGS, "No or incomplete PPP device configuration");
		return NULL;
	}

	device_object = ni_objectmodel_object_by_path(device_path);
	if (device_object == NULL) {
		dbus_set_error(error, DBUS_ERROR_INVALID_ARGS,
				"PPP device configuration references unknown object path \"%s\"", device_path);
		return NULL;
	}

	modem = ni_objectmodel_unwrap_modem(device_object, error);
	if (modem == NULL) {
		dbus_set_error(error, DBUS_ERROR_INVALID_ARGS,
				"PPP device configuration references incompatible object (expected a modem)");
		return NULL;
	}
	ppp->config->device.modem = ni_modem_hold(modem);
	ni_string_dup(&ppp->config->device.name, modem->device);

	return ppp_dev;
}