Exemple #1
0
unsigned int
ni_bridge_waittime_from_xml(const xml_node_t *brnode)
{
	unsigned int waittime = 0;
	ni_bridge_t bridge;
	xml_node_t *child;

	if (xml_node_is_empty(brnode))
		return waittime;

	__ni_bridge_init(&bridge);
	for (child = brnode->children; child; child = child->next) {
		if (ni_string_eq(child->name, "stp")) {
			if (ni_parse_boolean(child->cdata, &bridge.stp))
				continue;
		} else
		if (ni_string_eq(child->name, "forward-delay")) {
			if (ni_parse_double(child->cdata, &bridge.forward_delay))
				continue;

			if (bridge.forward_delay > NI_BRIDGE_FORWARD_DELAY_MAX)
				bridge.forward_delay = NI_BRIDGE_FORWARD_DELAY_MAX;
			else
			if (bridge.forward_delay < NI_BRIDGE_FORWARD_DELAY_MIN)
				bridge.forward_delay = NI_BRIDGE_FORWARD_DELAY_MIN;
		} else
		if (ni_string_eq(child->name, "max-age")) {
			if (ni_parse_double(child->cdata, &bridge.max_age))
				continue;

			if (bridge.max_age > NI_BRIDGE_MAX_AGE_MAX)
				bridge.max_age = NI_BRIDGE_MAX_AGE_MAX;
			else
			if (bridge.max_age < NI_BRIDGE_MAX_AGE_MIN)
				bridge.max_age = NI_BRIDGE_MAX_AGE_MIN;
		}
	}

	waittime = ni_bridge_waittime(&bridge);
	return waittime;
}
Exemple #2
0
ni_bool_t
xml_node_get_attr_double(const xml_node_t *node, const char *name, double *valp)
{
	const char *value;

	if (!valp || !(value = xml_node_get_attr(node, name)))
		return FALSE;

	if (ni_parse_double(value, valp) < 0)
		return FALSE;

	return TRUE;
}
Exemple #3
0
ni_json_t *
ni_json_new_number(const char *string)
{
	if (ni_string_contains(string, ".")) {
		double value = 0.0;

		if (ni_parse_double(string, &value) < 0)
			return NULL;

		return ni_json_new_double(value);
	} else {
		int64_t value = 0;

		if (ni_parse_int64(string, &value, 10) < 0)
			return NULL;

		return ni_json_new_int64(value);
	}
}