📄 pap.c
字号:
/**---------------------版权 (c)----------------------------------------------------------***
*** 作者:颜章健 ***
*** 邮件:jenkinyan@163.com ***
*** ***
***---------------------File Info---------------------------------------------------------***
*** 创 建 人: 颜章健 ***
*** 创建日期: 2008-03-13 ***
*** 创建版本: ***
*** 文件描述: 口令验证协议 ***
***---------------------------------------------------------------------------------------***
*** 修 订 人: ***
*** 修订日期: ***
*** 修订版本: ***
*** 修订描述 ***
***---------------------------------------------------------------------------------------**/
#include "config.h"
NET_PKT PapData;
/********************************************************************************************
*** 函数名称:
*** 函数描述:
*** 入 口:
*** 出 口:
********************************************************************************************/
void PapPutFrame(uint8 Code)
{
uint16 Length = 0;
static uint8 Id = 0;
PAP_HEAD head;
NET_PKT PapPkt;
NET_PKT *p;
p = &PapData;
while(p != NULL)
{
Length += p->Length;
p = p->Next;
}
head.s.Code = Code;
head.s.Id = Id++;
Length = Length + 4;
head.b[3] = Length;
head.b[2] = Length >> 8;
PapPkt.Next = &PapData;
PapPkt.Data = head.b;
PapPkt.Length = 4;
LinkLayer.PutFrame(PPPF_PAP,&PapPkt);
}
/********************************************************************************************
*** 函数名称:
*** 函数描述: PAP主动发送用户名和密码
*** 入 口:
*** 出 口:
********************************************************************************************/
void PapRequest(void)
{
NET_PKT Password;
#ifdef DEBUG
_printf("发送用户名和密码\r\n");
#endif
PapData.Data = (uint8 *)LinkLayer.Config.Username;
PapData.Length = (uint8)LinkLayer.Config.Username[0] + 1;
PapData.Next = &Password;
Password.Data = (uint8 *)LinkLayer.Config.Password;
Password.Length = (uint8)LinkLayer.Config.Password[0] + 1;
Password.Next = NULL;
PapPutFrame(PAPF_REQ);
}
/********************************************************************************************
*** 函数名称:
*** 函数描述:
*** 入 口:
*** 出 口:
********************************************************************************************/
void PapProcess(void)
{
uint8 Code;
Code = *LinkLayer.Rxd;
LinkLayer.Rxd += 4;
LinkLayer.Rxl -= 4;
switch(Code)
{
case PAPF_ACK:
#ifdef DEBUG
_printf("PAP验证通过\r\n");
_printf("\r\n");
_printf("PPP进入网络配置阶段:");
#endif
LinkLayer.State = PPPS_NCP;
NcpRequest();
break;
case PAPF_NAK:
#ifdef DEBUG
_printf("用户名或密码错误\r\n");
#endif
break;
case PAPF_REQ:
#ifdef DEBUG
_printf("忽略请求\r\n");
#endif
break;
default:
#ifdef DEBUG
_printf("未知类型数据\r\n");
#endif
break;
}
}
/********************************************************************************************
*** 文件结束 ***
********************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -