diff --git a/src/host/HostHook.cc b/src/host/HostHook.cc index df21500244..8265bcf37e 100644 --- a/src/host/HostHook.cc +++ b/src/host/HostHook.cc @@ -79,13 +79,26 @@ void HostStateMapHook::remove_host (int id) void merge_state(Host::HostState &state) { - if (state == Host::MONITORING_ERROR) + switch(state) { - state = Host::ERROR; - } - else if (state == Host::MONITORING_DISABLED) - { - state = Host::DISABLED; + case Host::INIT: + case Host::MONITORED: + case Host::ERROR: + case Host::DISABLED: + case Host::OFFLINE: + break; + case Host::MONITORING_ERROR: + state = Host::ERROR; + break; + case Host::MONITORING_DISABLED: + state = Host::DISABLED; + break; + case Host::MONITORING_MONITORED: + state = Host::MONITORED; + break; + case Host::MONITORING_INIT: + state = Host::INIT; + break; } } diff --git a/src/host/HostPool.cc b/src/host/HostPool.cc index 7d3f643190..e487f80125 100644 --- a/src/host/HostPool.cc +++ b/src/host/HostPool.cc @@ -128,6 +128,26 @@ HostPool::HostPool(SqlDB* db, add_hook(hook); + state_hook = true; + } + else if ( on == "OFFLINE" ) + { + HostStateHook * hook; + + hook = new HostStateHook(name, cmd, arg, remote, Host::OFFLINE); + + add_hook(hook); + + state_hook = true; + } + else if ( on == "ENABLE" ) + { + HostStateHook * hook; + + hook = new HostStateHook(name, cmd, arg, remote, Host::INIT); + + add_hook(hook); + state_hook = true; } }