全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1100
推到 Plurk!
推到 Facebook!

實作PPPoE上的問題(欄位,AC沒有回應)

尚未結案
victor-plus
一般會員


發表:4
回覆:2
積分:1
註冊:2008-09-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-14 00:32:39 IP:122.116.xxx.xxx 訂閱
我要在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 之類的東西..
如果大大們有看到的話麻煩提供一下謝謝︿︿
編輯記錄
victor-plus 重新編輯於 2009-07-14 00:42:04, 註解 無‧
victor-plus 重新編輯於 2009-07-14 00:43:56, 註解 無‧
系統時間:2024-05-02 12:54:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!