亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品美女久久久久久久久| 欧美午夜免费电影| 久久久久久免费| 国产精品影视在线观看| 国产精品网站在线播放| 成人国产在线观看| 精品夜夜嗨av一区二区三区| 日韩精品专区在线| 国产激情视频一区二区在线观看 | 99久久精品情趣| 亚洲男人的天堂在线观看| 欧美视频精品在线| 精品在线观看视频| 自拍偷拍亚洲综合| 欧美一级欧美三级在线观看| 国产综合色视频| 亚洲欧美日韩综合aⅴ视频| 欧美日本国产一区| 国产成人精品1024| 一个色妞综合视频在线观看| 日韩一级完整毛片| jlzzjlzz亚洲日本少妇| 亚洲综合色噜噜狠狠| 精品sm在线观看| 色偷偷一区二区三区| 美女网站色91| 亚洲美女视频在线观看| 精品国产91洋老外米糕| 欧美亚洲动漫制服丝袜| 国产真实乱子伦精品视频| 亚洲精品中文在线| 久久这里只有精品首页| 欧美性生交片4| 风流少妇一区二区| 午夜精品福利一区二区三区av| 自拍偷拍亚洲综合| 欧美精品一区二区蜜臀亚洲| 日本精品视频一区二区三区| 国产毛片精品一区| 视频一区二区三区在线| 最新高清无码专区| 2023国产精品视频| 91精品国产91久久综合桃花| 91视频一区二区| 国产精品99久久久久久有的能看| 一区二区三区 在线观看视频| 久久久99精品久久| 日韩欧美国产麻豆| 欧美色综合天天久久综合精品| 丁香婷婷综合激情五月色| 青青草伊人久久| 伊人色综合久久天天| 国产欧美一区二区精品忘忧草| 欧美日韩国产在线播放网站| 97久久超碰国产精品电影| 国产精品一二三四区| 日本三级亚洲精品| 亚洲国产精品综合小说图片区| 中文字幕不卡在线播放| 欧美精品一区二区三区在线播放| 在线区一区二视频| 91猫先生在线| aa级大片欧美| 成人深夜视频在线观看| 国产精品一区二区不卡| 国产一区二区电影| 国产一区二区电影| 国产麻豆精品在线观看| 狠狠狠色丁香婷婷综合久久五月| 视频一区在线播放| 亚洲午夜影视影院在线观看| 一区二区三区精品在线| 一区二区国产视频| 亚洲午夜激情网站| 亚洲与欧洲av电影| 亚洲综合视频在线| 亚洲一区国产视频| 一区二区三区精品在线| 亚洲综合丁香婷婷六月香| 亚洲一区二区三区影院| 夜夜精品视频一区二区| 亚洲一区二区三区爽爽爽爽爽 | 久久久亚洲午夜电影| 精品国产成人系列| 日韩欧美综合在线| 欧美精品一区二区三区很污很色的| 日韩欧美视频在线| 久久综合成人精品亚洲另类欧美| 精品入口麻豆88视频| 国产欧美1区2区3区| 中文字幕一区二区三区蜜月| 一区二区三区国产精华| 天堂影院一区二区| 国内精品国产三级国产a久久| 国模一区二区三区白浆| 国产91在线|亚洲| 97se狠狠狠综合亚洲狠狠| 在线观看网站黄不卡| 欧美一区午夜视频在线观看 | 国产综合色视频| 成人av在线网站| 在线观看91精品国产入口| 在线观看91av| 国产亚洲精品aa| 一区二区三区产品免费精品久久75| 天天色综合成人网| 韩国一区二区在线观看| 99视频一区二区| 欧美一区二区三区四区久久| 国产色一区二区| 亚洲一区免费观看| 极品销魂美女一区二区三区| 成人av在线看| 欧美va在线播放| 自拍偷拍国产亚洲| 蜜桃久久久久久| 91啪在线观看| 精品福利在线导航| 亚洲一区中文日韩| 国产精品一区二区视频| 欧美日韩电影在线| 国产精品免费视频观看| 日本午夜一本久久久综合| 99免费精品视频| 精品久久久久久久久久久久包黑料| 中文字幕综合网| 极品美女销魂一区二区三区免费| 色屁屁一区二区| 2024国产精品| 日日嗨av一区二区三区四区| 成人午夜视频免费看| 91麻豆精品国产91久久久久| 国产精品成人午夜| 日本欧美加勒比视频| 在线视频国内一区二区| 国产亲近乱来精品视频 | 激情综合色播激情啊| 欧美日韩一区二区在线观看视频| 日本一区二区三区四区在线视频| 日韩极品在线观看| 欧美性大战久久| 综合分类小说区另类春色亚洲小说欧美| 久久99这里只有精品| 欧美日韩视频在线观看一区二区三区 | 亚洲一区免费在线观看| 91最新地址在线播放| 欧美激情艳妇裸体舞| 狠狠狠色丁香婷婷综合激情| 欧美一区二区福利视频| 亚洲一区二区高清| 色欧美日韩亚洲| 国产精品三级在线观看| 国产乱码字幕精品高清av| 日韩欧美不卡在线观看视频| 午夜精品福利一区二区三区av| 91网站在线播放| 国产精品色一区二区三区| 国产福利一区在线| 久久久精品日韩欧美| 激情深爱一区二区| 欧美成人乱码一区二区三区| 日韩精品免费视频人成| 欧美日韩一二三| 天天爽夜夜爽夜夜爽精品视频| 99久久精品国产网站| 综合亚洲深深色噜噜狠狠网站| 色综合天天综合网天天狠天天| 中文字幕一区二区三区视频| 91一区二区三区在线播放| 亚洲欧美激情视频在线观看一区二区三区 | 7777精品伊人久久久大香线蕉经典版下载 | 精品一区二区三区在线播放视频| 日韩欧美卡一卡二| 久久国内精品自在自线400部| 日韩午夜小视频| 国模大尺度一区二区三区| 久久综合色天天久久综合图片| 国产一区二区三区高清播放| 中文幕一区二区三区久久蜜桃| voyeur盗摄精品| 亚洲综合在线观看视频| 欧美日韩免费观看一区三区| 日韩国产一区二| 久久亚洲私人国产精品va媚药| 国产福利精品一区| 亚洲欧美一区二区三区国产精品| 在线观看日韩电影| 九一九一国产精品| 国产欧美精品一区| 欧美亚洲一区二区在线观看| 三级一区在线视频先锋| 精品久久久影院| av高清不卡在线| 日韩精品福利网| 欧美激情一二三区| 欧美日韩小视频| 国产精品456露脸| 一区二区三区在线观看视频| 日韩亚洲欧美高清| 9i在线看片成人免费|