diff --git a/src/neigh.c b/src/neigh.c
index f72048f426f373ffd9a30817f8d01b269ed83cf1..8efb28eace7c0f5b9367506af7cc3e287661fb56 100644
--- a/src/neigh.c
+++ b/src/neigh.c
@@ -928,6 +928,19 @@ int neigh_set_1905(void *nq, uint8_t *macaddr, uint8_t val)
 	return 0;
 }
 
+int neigh_set_remote(void *q, uint8_t *macaddr, uint8_t val)
+{
+	struct neigh_entry *e = NULL;
+
+	e = neigh_lookup(q, macaddr);
+	if (!e)
+		return -1;
+
+	e->isremote = !!val;
+
+	return 0;
+}
+
 //TODO:
 int neigh_set_1905_linkaddr(void *nq, uint8_t *aladdr, uint8_t *linkaddr)
 {
diff --git a/src/neigh.h b/src/neigh.h
index 79517bc36e751c6c134fca00a07803d93db26e4a..858a530288b1d989d2c9ea1b037d6ad5eab1645f 100644
--- a/src/neigh.h
+++ b/src/neigh.h
@@ -186,6 +186,7 @@ void neigh_probe_unreachable(void *nq, const char *ifname);
 void neigh_mark_reachable(void *nq, uint8_t *macaddr, const char *ifname);
 
 int neigh_set_type(void *q, uint8_t *macaddr, enum neigh_type type);
+int neigh_set_remote(void *q, uint8_t *macaddr, uint8_t val);
 uint16_t neigh_get_brport(void *q, uint8_t *macaddr);
 int neigh_set_1905(void *q, uint8_t *macaddr, uint8_t val);
 int neigh_set_1905_slave(void *nq, uint8_t *macaddr, uint8_t *aladdr, uint8_t val);
diff --git a/src/ubus.c b/src/ubus.c
index 501ecfe7c8d3e1f8195543bc9072678f7043cfb8..edfb7a94435fac0c30d84c4eee651dd04f2beb6d 100644
--- a/src/ubus.c
+++ b/src/ubus.c
@@ -341,8 +341,12 @@ static void hostmngr_1905topology_cb(struct ubus_request *req, int type,
 			dbg("%s: Nbr " MACFMT "\n", __func__, MAC2STR(nbr_macaddr));
 			dbg("%s: Nif " MACFMT "\n", __func__, MAC2STR(nbr_viaaddr));
 
-			if (!memcmp(nbr_macaddr, priv->ieee1905id, 6))
+			if (!memcmp(nbr_macaddr, priv->ieee1905id, 6)) {
 				neigh_set_1905_linkaddr(&priv->neigh_q, node_aladdr, nbr_viaaddr);
+				neigh_set_remote(&priv->neigh_q, nbr_viaaddr, 0);
+			} else {
+				neigh_set_remote(&priv->neigh_q, nbr_viaaddr, 1);
+			}
 
 			iter++;
 		}