zbx_hashset_create(&active_hb_cache.queue, 100, ZBX_DEFAULT_UINT64_HASH_FUNC, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
#include "zbxavailability.h"
#include "zbx_availability_constants.h"
#include "zbxtimekeeper.h"
#include "zbxipcservice.h"
#define AVAILABILITY_MANAGER_PROXY_ACTIVE_AVAIL_DELAY_SEC (SEC_PER_MIN * 10)
zbx_active_avail_proxy_t;
static sigset_t orig_mask;
static int interface_availability_compare(const void *d1, const void *d2)
const zbx_interface_availability_t *ia1 = *(const zbx_interface_availability_t * const *)d1;
const zbx_interface_availability_t *ia2 = *(const zbx_interface_availability_t * const *)d2;
ZBX_RETURN_IF_NOT_EQUAL(ia1->interfaceid, ia2->interfaceid);
return ia1->id - ia2->id;
static void process_new_active_check_heartbeat(zbx_avail_active_hb_cache_t *cache,
zbx_host_active_avail_t *avail_new)
zbx_host_active_avail_t *avail_cached, *avail_queued;
if (NULL == (avail_cached = zbx_hashset_search(&cache->hosts, &avail_new->hostid)))
avail_new->active_status = ZBX_INTERFACE_AVAILABLE_TRUE;
zbx_hashset_insert(&cache->hosts, avail_new, sizeof(zbx_host_active_avail_t));
if (NULL == (avail_queued = zbx_hashset_search(&cache->queue, &avail_new->hostid)))
zbx_hashset_insert(&cache->queue, avail_new, sizeof(zbx_host_active_avail_t));