|
|
我用两台设备使用ad-hoc对连,认证方式一个设为open,一个设置为shared,居然可以连上!!??
无线网卡用的是ranlik,
驱动程序是:RT61_Linux_STA_Drv1.1.0.0
我在驱动的代码里追到下面:
if (Reason == MLME_SUCCESS)
{
// 1. joined an IBSS, we are pretty much done here
if (pAd->MlmeAux.BssType == BSS_ADHOC)
{
printk("%s(%d):This a Ad-hoc net!",__FUNCTION__,__LINE__);
LinkUp(pAd, BSS_ADHOC);
pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
DBGPRINT(RT_DEBUG_TRACE, "CNTL - join the IBSS = %02x:%02x:%02x:%02x:%02x:%02x ...",
pAd-> ortCfg.Bssid[0],pAd-> ortCfg.Bssid[1],pAd-> ortCfg.Bssid[2],
pAd-> ortCfg.Bssid[3],pAd-> ortCfg.Bssid[4],pAd-> ortCfg.Bssid[5]);
}
// 2. joined a new INFRA network, start from authentication
else
{
// either Ndis802_11AuthModeShared or Ndis802_11AuthModeAutoSwitch, try shared key first
if ((pAd-> ortCfg.AuthMode == Ndis802_11AuthModeShared) ||
(pAd-> ortCfg.AuthMode == Ndis802_11AuthModeAutoSwitch))
{
AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, Ndis802_11AuthModeShared);
}
else
{
AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, Ndis802_11AuthModeOpen);
}
MlmeEnqueue(pAd, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ,
sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq);
pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH;
}
}
else
{
// 3. failed, try next BSS
pAd->MlmeAux.BssIdx++;
IterateOnBssTab(pAd);
}
----------------------------
发现,在ad-hoc 模式下,根本没有进行认证。
不知道是作者疏忽,还是协议就这么规定的?????
请高手指点,
看上去,不像疏忽,但我又没有找到相关资料说ad-hoc不需要认证......... |
|