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); }
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); }
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); }