diff --git a/src/ubus.c b/src/ubus.c
index 6a5bfd040fceac4d050ca500c14ab5eea0761e36..1ac4266c5145f044421b2c7e4c67e1c05d02f1a2 100644
--- a/src/ubus.c
+++ b/src/ubus.c
@@ -753,7 +753,6 @@ int hostmngr_ubus_show_hosts(struct ubus_context *ctx, struct ubus_object *obj,
 			hwaddr_ntoa(e->macaddr, macstr);
 			blobmsg_add_string(&bb, "macaddr", macstr);
 			blobmsg_add_string(&bb, "hostname", e->hostname);
-			blobmsg_add_u8(&bb, "active", e->unreachable ? false : true);
 			blobmsg_add_u8(&bb, "local", e->isremote ? false : true);
 
 			t = gmtime(&e->lastchange);
@@ -789,6 +788,12 @@ int hostmngr_ubus_show_hosts(struct ubus_context *ctx, struct ubus_object *obj,
 
 			rtnl_neigh_state2str(e->state, statestr, sizeof(statestr));
 			blobmsg_add_string(&bb, "ndm_state", statestr);
+
+			if (!strcmp(statestr, "reachable"))
+				blobmsg_add_u8(&bb, "active", true);
+			else
+				blobmsg_add_u8(&bb, "active", false);
+
 			blobmsg_add_u32(&bb, "num_tcp", e->num_tcp);
 			blobmsg_add_u32(&bb, "num_udp", e->num_udp);
 			blobmsg_add_u64(&bb, "active_connections", e->num_tcp + e->num_udp);