Beispiel #1
0
int radio_up_down(int radio, int up, int mode)
{
    int i;
    int vap_num;
    int vap_status;
 
    /*Get VAP num from wlv_rule_num*/
    vap_num = nvram_get_vap_num(radio); 
    printf("vap_num is %d\n",vap_num);

    if(up)
    {
        /*Up the VAP which is enable*/
        if(WLAN_MODE_AP == mode)
        {
            for(i = 0; i < vap_num; i++)
                {    
                    nvram_get_vap_status(radio, i, &vap_status);
                    if(VAP_UP == vap_status)
                    {
                        vap_up_down(radio, i, mode, VAP_UP);    
                    }
                }
			for(i = 0; i < WDS_VAP_NUM; i++) 
				{
					set_ap_wds_up(radio, i);
				}
        }
        else if(WLAN_MODE_STA == mode)
        {
            vap_up_down(radio, 0, mode, VAP_UP);    
        }
        //sleep(1);
    }
    else
    {
        /*Down all the VAPs, down main VAP at last*/
        if(WLAN_MODE_AP == mode)
        {
            for(i = vap_num - 1; i >= 0; i--)
                {    
                    vap_up_down(radio, i, mode, VAP_DOWN);    
                }
			for(i = 0; i < WDS_VAP_NUM; i++) 
				{
					set_ap_wds_down(radio, i);
				}
        }
        else if(WLAN_MODE_STA == mode)
        {
            vap_up_down(radio, 0, mode, VAP_DOWN);    
        }
        //sleep(1);
    }

    return T_SUCCESS;
}
Beispiel #2
0
/*
Get Radio status
1: Up
0:Down
*/
int get_radio_status(int radio, int *radio_status)
{
    int ret;
    int wlan_mode;
    int wifi_status;
    int vap_status;
    int vap_num = 0;
    int i;
    //If wifi0 or wifi1 is down, the radio is down
    get_wifi_status(radio, &wifi_status);   
    if(RADIO_DOWN == wifi_status)
    {
        *radio_status = RADIO_DOWN;
        return T_SUCCESS;
    }
    //Get wlan_mode from nvram first
    nvram_get_wlan_mode(radio, &wlan_mode);
    if(WLAN_MODE_AP == wlan_mode)
    {
        //Get VAP num of the Radio
        vap_num = nvram_get_vap_num(radio);
        //search for all the VAPs, radio is DOWN while all the VAPs are down, or radio is up.
        for(i=0; i < vap_num; i++)
        {
            ret = get_vap_status(radio, i, wlan_mode, &vap_status);
            if(T_FAILURE == ret)
                {
                    printf("ERROR:Get VAP Staus Failure!\n");
                    return T_FAILURE;
                }    
    
            if(VAP_UP == vap_status)
                {
                    *radio_status = RADIO_UP;
                    return T_SUCCESS;
                }
        }
           
        *radio_status = RADIO_DOWN;
    }
    else if(WLAN_MODE_STA == wlan_mode)
    {
        ret = get_vap_status(radio, 0, wlan_mode, &vap_status);
        if(T_FAILURE == ret)
            {
                printf("ERROR:Get VAP Staus Failure!\n");
                return T_FAILURE;
            }    

        if(VAP_UP == vap_status)
            {
                *radio_status = RADIO_UP;
                return T_SUCCESS;
            }
        else
            {
                *radio_status = RADIO_DOWN;
            }
    }

    return T_SUCCESS;
}
Beispiel #3
0
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;
}