實作PPPoE上的問題(欄位,AC沒有回應) |
尚未結案
|
victor-plus
一般會員 發表:4 回覆:2 積分:1 註冊:2008-09-21 發送簡訊給我 |
我要在51的板子上面實作PPPoE的功能
前四個步驟是 1.PADI 2.PADO 3.PADR 4.PADS 狀況是這樣我發一個PADI的Frame過去給AC 他有回傳一個PADO的Frame給我 當我再送PADR,Frame回去時 卻沒有回傳PADS的Frame回來.. 以下的code 是當我收到一個AC傳回來的PADO後 我要回傳一個PADR的frame給AC 然後AC應該要傳一個 PADS的frame回來才對.... [code cpp] void PPPoE_PADR()//PPPoED Active Discovery Request (PADR) { uchar i,j; if (RxdNetBuff.EtherFrame.DestMacId[0]==0x5254 && RxdNetBuff.EtherFrame.DestMacId[1]==0x4c19 && RxdNetBuff.EtherFrame.DestMacId[2]==0xf823) { Printf_String("PPPoE_PADR IN"); Printf_String("\r\n"); TxdNetBuff.EtherFrame.DestMacId[0]=RxdNetBuff.EtherFrame.SourceMacId[0]; TxdNetBuff.EtherFrame.DestMacId[1]=RxdNetBuff.EtherFrame.SourceMacId[1]; TxdNetBuff.EtherFrame.DestMacId[2]=RxdNetBuff.EtherFrame.SourceMacId[2]; TxdNetBuff.EtherFrame.SourceMacId[0]=RxdNetBuff.EtherFrame.DestMacId[0]; TxdNetBuff.EtherFrame.SourceMacId[1]=RxdNetBuff.EtherFrame.DestMacId[1]; TxdNetBuff.EtherFrame.SourceMacId[2]=RxdNetBuff.EtherFrame.DestMacId[2];//將自己的MAC放入乙太封包 TxdNetBuff.EtherFrame.NextProtocal=0x8863;//Type: PPPoE Discovery (0x8863) TxdNetBuff.PPPoEFrame.Ver_Type=0x11; TxdNetBuff.PPPoEFrame.Code=0x19;//Code: Active Discovery Request (PADR) (0x19) TxdNetBuff.PPPoEFrame.Session_ID=RxdNetBuff.PPPoEFrame.Session_ID; TxdNetBuff.PPPoEFrame.Length=RxdNetBuff.PPPoEFrame.Length; TxdNetBuff.PPPoEFrame.Tags[0]=0x01; //未知的4byte*************************** TxdNetBuff.PPPoEFrame.Tags[1]=0x01; TxdNetBuff.PPPoEFrame.Tags[2]=0x00; TxdNetBuff.PPPoEFrame.Tags[3]=0x00; TxdNetBuff.PPPoEFrame.Tags[4]=0x01; //tag-type TxdNetBuff.PPPoEFrame.Tags[5]=0x03; TxdNetBuff.PPPoEFrame.Tags[6]=0x00; //tag-length TxdNetBuff.PPPoEFrame.Tags[7]=0x08; TxdNetBuff.PPPoEFrame.Tags[8]=0x05; //Host-uniq 8byte TxdNetBuff.PPPoEFrame.Tags[9]=0x00; TxdNetBuff.PPPoEFrame.Tags[10]=0x00; TxdNetBuff.PPPoEFrame.Tags[11]=0x00; TxdNetBuff.PPPoEFrame.Tags[12]=0x06; TxdNetBuff.PPPoEFrame.Tags[13]=0x00; TxdNetBuff.PPPoEFrame.Tags[14]=0x00; TxdNetBuff.PPPoEFrame.Tags[15]=0x00; for(i=0;i<=RxdNetBuff.PPPoEFrame.Length;i ) //copy ac-cookie { if(RxdNetBuff.PPPoEFrame.Tags[i]==0x01 && RxdNetBuff.PPPoEFrame.Tags[i 1]==0x04) { for(j=0x00;j<=(RxdNetBuff.PPPoEFrame.Tags[i 3]) 4;j ) { TxdNetBuff.PPPoEFrame.Tags[16 j]=RxdNetBuff.PPPoEFrame.Tags[i j]; } } } Printf_String("PPPoE_PADR OUT"); Printf_String("\r\n"); Send_Packet(&TxdNetBuff,56); } } [/code] 還有兩個欄位的問題是 1.還有其中有一個欄位是Host-Uniq ,請問一下這個欄位的值是由我們自定嗎? 我在在網路上搜尋之後好像並沒有對於這個欄位作特別的定義.. 2. 程式碼中有一個我寫未知的欄位,看RFC2516中並沒有提到這部份,但是我使用電腦直接PPPOE連線時 在wireshark中有看到這4個data,但是他卻沒有把它解析出來,因此我完全不知道這4個byte是做什麼的.. 麻煩大大們協助小弟解決這個問題,謝謝︿︿ 還有小弟google不太到跟PPPoE相關的code 之類的東西.. 如果大大們有看到的話麻煩提供一下謝謝︿︿ 編輯記錄
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |