示例#1
0
static char* unimrcp_client_ip_address_get(unimrcp_client_loader_t *loader, const apr_xml_elem *elem, const char *default_ip)
{
	const apr_xml_attr *attr = NULL;
	for(attr = elem->attr; attr; attr = attr->next) {
		if(strcasecmp(attr->name,"type") == 0) {
			break;
		}
	}

	if(attr && strcasecmp(attr->value,"auto") == 0) {
		/* implicitly detect ip address, if not already detected */
		if(!loader->auto_ip) {
			char *auto_addr = DEFAULT_IP_ADDRESS;
			apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Detecting IP Address");
			apt_ip_get(&auto_addr,loader->pool);
			loader->auto_ip = auto_addr;
		}
		return apr_pstrdup(loader->pool,loader->auto_ip);
	}

	if(is_cdata_valid(elem)) {
		/* use specified ip address */
		return cdata_copy(elem,loader->pool);
	}

	/* use default ip address */
	return apr_pstrdup(loader->pool,loader->ip);
}
示例#2
0
static char* ip_addr_get(const char *value, apr_pool_t *pool)
{
    if(!value || strcasecmp(value,"auto") == 0) {
        char *addr = DEFAULT_IP_ADDRESS;
        apt_ip_get(&addr,pool);
        return addr;
    }
    return apr_pstrdup(pool,value);
}
示例#3
0
static char* unimrcp_client_ip_address_get(unimrcp_client_loader_t *loader, const apr_xml_elem *elem, const char *default_ip)
{
	const apr_xml_attr *attr = NULL;
	for(attr = elem->attr; attr; attr = attr->next) {
		if(strcasecmp(attr->name,"type") == 0) {
			break;
		}
	}

	if(attr && strcasecmp(attr->value,"auto") == 0) {
		/* implicitly detect IP address, if not already detected */
		if(!loader->auto_ip) {
			char *auto_addr = DEFAULT_IP_ADDRESS;
			apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Detecting IP Address");
			apt_ip_get(&auto_addr,loader->pool);
			loader->auto_ip = auto_addr;
		}
		return apr_pstrdup(loader->pool,loader->auto_ip);
	}
	else if(attr && strcasecmp(attr->value,"iface") == 0) {
		/* get IP address by network interface name */
		char *ip_addr = DEFAULT_IP_ADDRESS;
		if(is_cdata_valid(elem) == TRUE) {
			const char *iface_name = cdata_text_get(elem);
			apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Get IP Address by Interface [%s]", iface_name);
			apt_ip_get_by_iface(iface_name,&ip_addr,loader->pool);
		}
		return ip_addr;
	}

	if(is_cdata_valid(elem)) {
		/* use specified IP address */
		return cdata_copy(elem,loader->pool);
	}

	/* use default IP address */
	return apr_pstrdup(loader->pool,loader->ip);
}