int zbx_macro_script_params_field_resolv(zbx_macro_resolv_data_t *p, va_list args, char **replace_to, char **data,
#include "zbxcacheconfig.h"
#include "zbx_expression_constants.h"
#include "zbxinterface.h"
static int common_resolv(zbx_macro_resolv_data_t *p, zbx_uint64_t hostid, const char *host, const char *name,
const zbx_dc_interface_t *interface, zbx_uint64_t itemid, char **replace_to)
if (0 == strcmp(p->macro, MVAR_HOST_HOST) || 0 == strcmp(p->macro, MVAR_HOSTNAME))
*replace_to = zbx_strdup(*replace_to, host);
else if (0 == strcmp(p->macro, MVAR_HOST_NAME))
*replace_to = zbx_strdup(*replace_to, name);
else if (0 == strcmp(p->macro, MVAR_HOST_IP) || 0 == strcmp(p->macro, MVAR_IPADDRESS))
if (INTERFACE_TYPE_UNKNOWN != interface->type)
if ('\0' != *interface->ip_orig && FAIL == zbx_is_ip(interface->ip_orig))
*replace_to = zbx_strdup(*replace_to, interface->ip_orig);
ret = zbx_dc_get_interface_value(hostid, itemid, replace_to, ZBX_DC_REQUEST_HOST_IP);
else if (0 == strcmp(p->macro, MVAR_HOST_DNS))
if (INTERFACE_TYPE_UNKNOWN != interface->type)
if ('\0' != *interface->dns_orig && FAIL == zbx_is_ip(interface->dns_orig) &&
FAIL == zbx_validate_hostname(interface->dns_orig))
*replace_to = zbx_strdup(*replace_to, interface->dns_orig);