shared_ptr<VlanMap> ThriftConfigApplier::updateVlans() { auto origVlans = orig_->getVlans(); VlanMap::NodeContainer newVlans; bool changed = false; // Process all supplied VLAN configs size_t numExistingProcessed = 0; for (const auto& vlanCfg : cfg_->vlans) { VlanID id(vlanCfg.id); auto origVlan = origVlans->getVlanIf(id); shared_ptr<Vlan> newVlan; if (origVlan) { newVlan = updateVlan(origVlan, &vlanCfg); ++numExistingProcessed; } else { newVlan = createVlan(&vlanCfg); } changed |= updateMap(&newVlans, origVlan, newVlan); } if (numExistingProcessed != origVlans->size()) { // Some existing VLANs were removed. CHECK_LT(numExistingProcessed, origVlans->size()); changed = true; } if (!changed) { return nullptr; } return origVlans->clone(std::move(newVlans)); }
int set_wlan_basic(int radio) { int vap_enable; int radio_nvram_enable; int i; int vap_num; int wlan_mode = -1; nvram_get_radio_status(radio, &radio_nvram_enable); nvram_get_wlan_mode(radio, &wlan_mode); if(RADIO_DOWN == radio_nvram_enable) { //Kill all the security daemon first // if(WLAN_MODE_AP == wlan_mode) // { radio_up_down(radio, RADIO_DOWN, wlan_mode); kill_all_authentication_daemon(radio, wlan_mode); //wds for(i=0;i<WDS_VAP_NUM;i++) { set_ap_wds_down(radio, i); } // } // else if(WLAN_MODE_STA == wlan_mode) // { // kill_all_authentication_daemon(radio, wlan_mode); // radio_up_down(radio, RADIO_DOWN, wlan_mode); // } return T_SUCCESS; } // if(WLAN_MODE_AP == wlan_mode) // { //Down all the VAPs first radio_up_down(radio, RADIO_DOWN, wlan_mode); //wds for(i=0;i<WDS_VAP_NUM;i++) { set_ap_wds_down(radio, i); } //Kill all the security daemon first kill_all_authentication_daemon(radio, wlan_mode); // } // else if(WLAN_MODE_STA == wlan_mode) // { //Kill all the security daemon first // kill_all_authentication_daemon(radio, wlan_mode); //Down all the VAPs first // radio_up_down(radio, RADIO_DOWN, wlan_mode); // } /*net mode and channel*/ set_ap_wirelessmode_channel(radio); /*ap isolation*/ vap_num = nvram_get_vap_num(radio); //for(i=1; i < vap_num; i++) for(i=0; i < vap_num; i++) { nvram_get_vap_status(radio, i, &vap_enable); if(VAP_ENABLE == vap_enable) { set_ssid(radio, WLAN_MODE_AP, i);//add by frank set_acl(radio, i); //set_enable_ssid(radio, WLAN_MODE_AP, i); set_hidden_ssid(radio, WLAN_MODE_AP, i);//add by frank set_bss_isolation(radio, WLAN_MODE_AP, i);//add by frank set_ap_security(radio, i); #if defined(VLAN_ENABLE) //Deleted by Mario Huang //set_wlan_vlan(radio,i); //preserve 3 seconds for main VAP #endif if(0==i) { sleep(3); } } else if(VAP_DISABLE == vap_enable) { //set_disable_ssid(radio, WLAN_MODE_AP, i); //vap_up_down(radio, i, WLAN_MODE_AP, VAP_DOWN); } } set_ap_isolation(radio);//add by frank, impl on 2014-02-17 //Deleted by Mario Huang 2014-08-12 //set_ap_wmm(radio, 0); //Added by Mario Huang for VLAN test #if defined(VLAN_ENABLE) updateVlan(); #endif //wds for(i=0;i<WDS_VAP_NUM;i++) { set_ap_wds_up(radio, i); } return T_SUCCESS; }