@@ -937,27 +937,6 @@ bool mesh_model_rx(struct mesh_node *node, bool szmict, uint32_t seq0,
if (!num_ele || IS_UNASSIGNED(addr))
goto done;
- /*
- * In case of fixed group addresses check if the
- * corresponding mode is enabled.
- */
- if (dst == PROXIES_ADDRESS &&
- (node_proxy_mode_get(node) != MESH_MODE_ENABLED))
- goto done;
-
- if (dst == FRIENDS_ADDRESS &&
- (node_friend_mode_get(node) != MESH_MODE_ENABLED))
- goto done;
-
- if (dst == RELAYS_ADDRESS) {
- uint8_t cnt;
- uint16_t interval;
-
- if (node_relay_mode_get(node, &cnt, &interval) !=
- MESH_MODE_ENABLED)
- goto done;
- }
-
is_subscription = !(IS_UNICAST(dst));
for (i = 0; i < num_ele; i++) {
@@ -1658,6 +1658,15 @@ static bool msg_rxed(struct mesh_net *net, bool frnd, uint32_t iv_index,
}
not_for_friend:
+ if (dst == FRIENDS_ADDRESS && !net->friend_enable)
+ return false;
+
+ if (dst == RELAYS_ADDRESS && !net->relay.enable)
+ return false;
+
+ if (dst == PROXIES_ADDRESS && !net->proxy_enable)
+ return false;
+
return mesh_model_rx(net->node, szmic, seqAuth, seq, iv_index, net_idx,
src, dst, key_aid, data, size);
}