diff --git a/src/cntlr.c b/src/cntlr.c index ee04438ce808d6c0f7187bae3b46a8a014159bcb..4fa2428a31d9004f164ac48a4ca92221e2d63bb3 100644 --- a/src/cntlr.c +++ b/src/cntlr.c @@ -1521,20 +1521,31 @@ bool cntlr_check_config_diff(struct controller *c, uint8_t diff) /* send the policy config cmdu to the marked agent */ list_for_each_entry(n, &c->nodelist, list) { struct cmdu_buff *cmdu; - int num_bk = 1; - uint8_t bk_id[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - struct radio_policy *rp = NULL; + int num_bk = 0; + uint8_t bk_id[16 * 6] = {0}; uint8_t radio_id[MAX_NUM_RADIO * 6] = {0}; + struct netif_radio *r = NULL; int num_radio = 0; if ((diff & CONFIG_DIFF_AGENT_POLICY) && !n->np->is_policy_diff) continue; - list_for_each_entry(rp, &n->np->radiolist, list) { + list_for_each_entry(r, &n->radiolist, list) { + struct netif_iface *iface = NULL; + memcpy(&radio_id[num_radio * 6], - rp->macaddr, - 6); + r->radio_el->macaddr, 6); num_radio++; + + list_for_each_entry(iface, &r->iflist, list) { + if (!iface->bss->is_bbss) + continue; + + memcpy(&bk_id[num_bk * 6], + iface->bss->bssid, 6); + num_bk++; + } + } cmdu = cntlr_gen_policy_config_req(c, n->alid,