亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? auth.c

?? RT73_Linux_STA_Drv1.0.3.6 linux系統下
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
 ***************************************************************************
 * Ralink Tech Inc.
 * 4F, No. 2 Technology 5th Rd.
 * Science-based Industrial Park
 * Hsin-chu, Taiwan, R.O.C.
 *
 * (c) Copyright 2002-2006, Ralink Technology, Inc.
 *
 * This program is free software; you can redistribute it and/or modify  * 
 * it under the terms of the GNU General Public License as published by  * 
 * the Free Software Foundation; either version 2 of the License, or     * 
 * (at your option) any later version.                                   * 
 *                                                                       * 
 * This program is distributed in the hope that it will be useful,       * 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of        * 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         * 
 * GNU General Public License for more details.                          * 
 *                                                                       * 
 * You should have received a copy of the GNU General Public License     * 
 * along with this program; if not, write to the                         * 
 * Free Software Foundation, Inc.,                                       * 
 * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
 *                                                                       * 
 ************************************************************************

	Module Name:
	auth.c

	Abstract:

	Revision History:
	Who			When			What
	--------	----------		----------------------------------------------
	John		2004-9-3		porting from RT2500
*/
#include "rt_config.h"

/*
    ==========================================================================
    Description:
        authenticate state machine init, including state transition and timer init
    Parameters:
        Sm - pointer to the auth state machine
    Note:
        The state machine looks like this
        
                        AUTH_REQ_IDLE           AUTH_WAIT_SEQ2                   AUTH_WAIT_SEQ4
    MT2_MLME_AUTH_REQ   mlme_auth_req_action    invalid_state_when_auth          invalid_state_when_auth
    MT2_MLME_DEAUTH_REQ mlme_deauth_req_action  mlme_deauth_req_action           mlme_deauth_req_action
    MT2_CLS2ERR         cls2err_action          cls2err_action                   cls2err_action
    MT2_PEER_AUTH_EVEN  drop                    peer_auth_even_at_seq2_action    peer_auth_even_at_seq4_action
    MT2_AUTH_TIMEOUT    Drop                    auth_timeout_action              auth_timeout_action
    ==========================================================================
 */

VOID AuthStateMachineInit(
    IN PRTMP_ADAPTER pAd, 
    IN PSTATE_MACHINE Sm, 
    OUT STATE_MACHINE_FUNC Trans[]) 
{
    StateMachineInit(Sm, (STATE_MACHINE_FUNC*)Trans, MAX_AUTH_STATE, MAX_AUTH_MSG, (STATE_MACHINE_FUNC)Drop, AUTH_REQ_IDLE, AUTH_MACHINE_BASE);
     
    // the first column
    StateMachineSetAction(Sm, AUTH_REQ_IDLE, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)MlmeAuthReqAction);

    // the second column
    StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAuth);
    StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_PEER_AUTH_EVEN, (STATE_MACHINE_FUNC)PeerAuthRspAtSeq2Action);
    StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_AUTH_TIMEOUT, (STATE_MACHINE_FUNC)AuthTimeoutAction);
    
    // the third column
    StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAuth);
    StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_PEER_AUTH_EVEN, (STATE_MACHINE_FUNC)PeerAuthRspAtSeq4Action);
    StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_AUTH_TIMEOUT, (STATE_MACHINE_FUNC)AuthTimeoutAction);

    // timer init
    RTMPInitTimer(pAd, &pAd->MlmeAux.AuthTimer, &AuthTimeout);

}

/*
    ==========================================================================
    Description:
        function to be executed at timer thread when auth timer expires
    ==========================================================================
 */
VOID AuthTimeout(
    IN	unsigned long data)
{
    RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data;
    
    DBGPRINT(RT_DEBUG_TRACE,"AUTH - AuthTimeout\n");
    MlmeEnqueue(pAd, AUTH_STATE_MACHINE, MT2_AUTH_TIMEOUT, 0, NULL);
    RTUSBMlmeUp(pAd);
}

/*
    ==========================================================================
    Description:
    ==========================================================================
 */
VOID MlmeAuthReqAction(
    IN PRTMP_ADAPTER pAd, 
    IN MLME_QUEUE_ELEM *Elem) 
{
    UCHAR               Addr[MAC_ADDR_LEN];
    USHORT              Alg, Seq, Status;
    ULONG               Timeout;
    HEADER_802_11       AuthHdr; 
    PUCHAR              pOutBuffer = NULL;
    ULONG               FrameLen = 0;
    USHORT              NStatus;
    
    // Block all authentication request durning WPA block period
    if (pAd->PortCfg.bBlockAssoc == TRUE)
    {
        DBGPRINT(RT_DEBUG_TRACE, "AUTH - Block Auth request durning WPA block period!\n");
        pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
        Status = MLME_STATE_MACHINE_REJECT;
        MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status);
    }
    else if(MlmeAuthReqSanity(pAd, Elem->Msg, Elem->MsgLen, Addr, &Timeout, &Alg))
    {
        // reset timer
		RTMPCancelTimer(&pAd->MlmeAux.AuthTimer);
		
        COPY_MAC_ADDR(pAd->MlmeAux.Bssid, Addr);
        pAd->MlmeAux.Alg  = Alg;
  
        Seq = 1;
        Status = MLME_SUCCESS;

        // allocate and send out AuthReq frame
        NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory
        if (NStatus != NDIS_STATUS_SUCCESS)
        {
            DBGPRINT(RT_DEBUG_TRACE, "AUTH - MlmeAuthReqAction() allocate memory failed\n");
            pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
            Status = MLME_FAIL_NO_RESOURCE;
            MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status);
	        return;
        }
        
        DBGPRINT(RT_DEBUG_TRACE, "AUTH - Send AUTH request seq#1 (Alg=%d)  %d...\n", Alg, pAd->LatchRfRegs.Channel);
        MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, Addr, pAd->MlmeAux.Bssid);

        MakeOutgoingFrame(pOutBuffer,           &FrameLen, 
                          sizeof(HEADER_802_11),&AuthHdr, 
                          2,                    &Alg, 
                          2,                    &Seq, 
                          2,                    &Status, 
                          END_OF_ARGS);
        
        MiniportMMRequest(pAd, pOutBuffer, FrameLen);
        
        RTMPSetTimer(pAd, &pAd->MlmeAux.AuthTimer, AUTH_TIMEOUT);
        
        pAd->Mlme.AuthMachine.CurrState = AUTH_WAIT_SEQ2;
    } 
    else 
    {
        DBGPRINT(RT_DEBUG_ERROR, "AUTH - MlmeAuthReqAction() sanity check failed. BUG!!!!!\n");
        pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
        Status = MLME_INVALID_FORMAT;
        MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status);
    }
}

/*
    ==========================================================================
    Description:
    ==========================================================================
 */
VOID PeerAuthRspAtSeq2Action(
    IN PRTMP_ADAPTER pAd, 
    IN MLME_QUEUE_ELEM *Elem) 
{
    UCHAR           Addr2[MAC_ADDR_LEN];
    USHORT          Seq, Status, RemoteStatus, Alg;
    UCHAR           ChlgText[CIPHER_TEXT_LEN];
    UCHAR           CyperChlgText[CIPHER_TEXT_LEN + 8 + 8];
    UCHAR           Element[2];
    HEADER_802_11   AuthHdr;
    PUCHAR          pOutBuffer = NULL;
    ULONG           FrameLen = 0;
    USHORT          Status2;
    USHORT          NStatus;
    
    if (PeerAuthSanity(pAd, Elem->Msg, Elem->MsgLen, Addr2, &Alg, &Seq, &Status, ChlgText))
    {
        if (MAC_ADDR_EQUAL(&pAd->MlmeAux.Bssid, Addr2) && Seq == 2) 
        {
            DBGPRINT(RT_DEBUG_TRACE, "AUTH - Receive AUTH_RSP seq#2 to me (Alg=%d, Status=%d)\n", Alg, Status);
		    RTMPCancelTimer(&pAd->MlmeAux.AuthTimer);
            
            if (Status == MLME_SUCCESS) 
            {
                if (pAd->MlmeAux.Alg == Ndis802_11AuthModeOpen) 
                {
                    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
                    MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status);
                } 
                else
                {
                    // 2. shared key, need to be challenged
                    Seq++;
                    RemoteStatus = MLME_SUCCESS;
                    // allocate and send out AuthRsp frame
                    NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory
                    if (NStatus != NDIS_STATUS_SUCCESS)
                    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲伦理在线免费看| 一色屋精品亚洲香蕉网站| 色综合久久久久综合99| 丰满白嫩尤物一区二区| 国产高清精品网站| 国产一区二区在线影院| 麻豆国产一区二区| 加勒比av一区二区| 国产一区二区三区久久久| 国内精品视频666| 国产成人在线色| av高清久久久| 色噜噜狠狠成人网p站| 欧美在线播放高清精品| 欧美视频自拍偷拍| 欧美嫩在线观看| 欧美一级久久久| 久久久五月婷婷| 亚洲欧美在线另类| 亚洲国产成人va在线观看天堂| 亚洲高清在线精品| 久久精品国产亚洲aⅴ| 国产精品自拍在线| 91麻豆精品秘密| 欧美夫妻性生活| 久久综合久久鬼色中文字| 国产精品人人做人人爽人人添| 亚洲特黄一级片| 视频在线在亚洲| 国产伦精品一区二区三区视频青涩| 国产成人精品一区二区三区网站观看| 99久久精品国产一区二区三区| 在线观看91精品国产入口| 精品动漫一区二区三区在线观看| 国产精品久久久久久亚洲毛片 | 国产精品18久久久久久久久 | 亚洲国产精品综合小说图片区| 日韩 欧美一区二区三区| 国产成人夜色高潮福利影视| 91老司机福利 在线| 日韩免费观看高清完整版在线观看 | 国产.欧美.日韩| 欧美日韩视频在线一区二区 | 91麻豆国产香蕉久久精品| 制服丝袜中文字幕一区| 国产精品美女久久久久久久久| 亚洲国产日韩在线一区模特| 国产精品资源网| 欧美一区二区三区男人的天堂| 国产欧美精品一区二区色综合朱莉 | 国产欧美一区二区精品仙草咪| 洋洋av久久久久久久一区| 国产精品一区二区果冻传媒| 欧美精品99久久久**| 中文字幕日本乱码精品影院| 国产专区欧美精品| 在线播放视频一区| 亚洲精品久久7777| 99视频热这里只有精品免费| 久久免费精品国产久精品久久久久| 亚洲一区在线观看免费| 成人成人成人在线视频| 精品处破学生在线二十三| 日韩电影在线免费观看| 欧美天堂一区二区三区| 国产精品每日更新在线播放网址| 久久精品99国产精品| 欧美日精品一区视频| 亚洲免费观看高清完整版在线 | 最好看的中文字幕久久| 韩国在线一区二区| 精品国产污网站| 国内欧美视频一区二区| 亚洲精品在线免费观看视频| 久久精品国产久精国产爱| 日韩欧美国产精品一区| 另类专区欧美蜜桃臀第一页| 日韩欧美国产系列| 国内精品视频666| 精品不卡在线视频| 国产很黄免费观看久久| 国产日韩欧美制服另类| 成人免费视频网站在线观看| 欧美激情一区二区三区在线| 成人性生交大合| 久久精品一区二区三区不卡 | 不卡的av电影在线观看| 欧美激情在线一区二区三区| 丁香桃色午夜亚洲一区二区三区| 欧美国产97人人爽人人喊| 国产成人在线视频免费播放| 国产精品久久久久久福利一牛影视| 国产成人精品一区二区三区四区 | 日韩一区二区三区在线视频| 日本女人一区二区三区| 精品毛片乱码1区2区3区| 国产福利一区在线| 中文字幕中文字幕中文字幕亚洲无线 | 韩国成人福利片在线播放| 欧美国产1区2区| 在线亚洲高清视频| 久久av资源站| 亚洲欧美综合网| 欧美一级欧美三级| 国产成人免费av在线| 亚洲色欲色欲www| 91精品国产一区二区三区蜜臀| 国产精品自拍网站| 亚洲va天堂va国产va久| 精品福利在线导航| 日本黄色一区二区| 精品一区二区三区蜜桃| 国产精品电影院| 日韩欧美一区二区三区在线| av电影天堂一区二区在线| 日韩av在线免费观看不卡| 1024精品合集| 精品奇米国产一区二区三区| 99re66热这里只有精品3直播| 奇米一区二区三区av| 中文字幕一区二区三区蜜月| 日韩视频在线你懂得| 在线一区二区三区四区五区| 精品系列免费在线观看| 亚洲成av人片观看| 中文字幕精品综合| 精品粉嫩超白一线天av| 欧美日韩中文字幕一区| av激情成人网| 成人一区二区三区视频| 蜜桃一区二区三区在线| 午夜影视日本亚洲欧洲精品| 国产精品欧美一区二区三区| 精品国免费一区二区三区| 欧美肥大bbwbbw高潮| 91蜜桃免费观看视频| 福利电影一区二区| 国产福利91精品一区| 久久精品国产亚洲高清剧情介绍| 同产精品九九九| 亚洲午夜久久久| 一区二区三区四区在线播放 | 国精品**一区二区三区在线蜜桃| 香蕉久久夜色精品国产使用方法| 亚洲免费观看高清完整| 亚洲欧美综合色| 亚洲欧美日韩电影| 亚洲欧美日韩在线不卡| 中文字幕久久午夜不卡| 国产清纯美女被跳蛋高潮一区二区久久w| 日韩一级精品视频在线观看| 欧美精品在欧美一区二区少妇| 欧美日韩情趣电影| 欧美少妇一区二区| 8v天堂国产在线一区二区| 555www色欧美视频| 91精品国产入口在线| 日韩亚洲电影在线| 精品少妇一区二区三区视频免付费 | 美女爽到高潮91| 久久精品免费观看| 韩国精品免费视频| 国产成人精品www牛牛影视| 成人午夜激情视频| 91亚洲国产成人精品一区二区三 | 国产精品久久看| 亚洲欧美日韩一区二区| 亚洲一区二区欧美激情| 日韩成人一区二区三区在线观看| 日本不卡一二三| 国产精品亚洲第一区在线暖暖韩国| 国产精品亚洲第一| 91久久香蕉国产日韩欧美9色| 欧美影院精品一区| 精品国产乱码久久| 最近日韩中文字幕| 青青草国产精品亚洲专区无| 国产精品一二三在| 91麻豆精东视频| 日韩免费高清电影| 国产精品成人在线观看| 一区二区三区中文免费| 免费成人av资源网| a级精品国产片在线观看| 欧美日免费三级在线| 精品国产乱码久久久久久图片| 国产精品美女久久久久久久| 午夜久久久久久| 国产成a人亚洲精| 欧美在线不卡视频| 国产亚洲欧美激情| 视频一区二区中文字幕| 成人免费毛片a| 日韩免费一区二区| 一区二区三区四区不卡视频| 国产一区二区不卡老阿姨| 日本黄色一区二区| 中文字幕av一区二区三区免费看 | 亚洲综合色视频| 高清不卡一区二区在线|