⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packet.h

📁 NDIS 实现pppoe例子
💻 H
字号:
/*
    MikroTik PPPoE - MikroTik PPP over Ethernet client for Windows
    Copyright (C),  2001  MikroTikls

    The contents of this program are subject to the Mozilla Public License 
    Version 1.1; you may not use this program except in compliance with the 
    License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ 

    
    http://www.mikrotik.com
    mt@mt.lv
*/


#ifndef _PPPOE_PACKET_H_
#define _PPPOE_PACKET_H_

#define PPPOE_DISCOVERY_PROTO 0x6388
#define PPPOE_CODE_PADI 0x09
#define PPPOE_CODE_PADO 0x07
#define PPPOE_CODE_PADR 0x19
#define PPPOE_CODE_PADS 0x65
#define PPPOE_CODE_PADT 0xa7

#define PPPOE_TAG_EOL         0x0000
#define PPPOE_TAG_SERVICENAME 0x0101
#define PPPOE_TAG_ACNAME      0x0102
#define PPPOE_TAG_HOSTUNIQ    0x0103
#define PPPOE_TAG_ACCOOKIE    0x0104

#define PPPOE_TAG_VENDORSPEC     0x0105
#define PPPOE_TAG_RELAYSESID     0x0110
#define PPPOE_TAG_SERVICENAMEERR 0x0201
#define PPPOE_TAG_ACSYSERR       0x0202
#define PPPOE_TAG_GENERICERR     0x0203

typedef struct _PPPOE_TAG {
	unsigned short type;
	unsigned short len;
	unsigned char *data;
} PPPOE_TAG;

#pragma pack(push, 1)

typedef struct _PPPOE_TAGHDR {
	unsigned short type;
	unsigned short len;
} PPPOE_TAGHDR;

typedef struct _PPPOE_PACKET {
	// ethernet header
	unsigned char dest[6];
	unsigned char source[6];
	unsigned short proto;

	// pppoe header
	unsigned char vertype;
	unsigned char code;
	unsigned short sessionid;
	unsigned short len;

	unsigned char data[1];
} PPPOE_PACKET;

#pragma pack(pop)

PPPOE_PACKET *PacketAllocate(unsigned len);
void PacketFree(PPPOE_PACKET *, unsigned len);

void PacketReset(PPPOE_PACKET *);

int PacketParseTags(PPPOE_PACKET *);
int PacketCheckHeader(PPPOE_PACKET *, unsigned len);
int PacketGetFirstTag(PPPOE_PACKET *, PPPOE_TAG *);
int PacketGetNextTag(PPPOE_PACKET *, PPPOE_TAG *);

int PacketAddTag(PPPOE_PACKET *, unsigned short type, unsigned char *data,
				 unsigned len);

int PacketLength(PPPOE_PACKET *);

#ifndef NTOHS
#define NTOHS(x) (((((unsigned short)(x)) >> 8) & 0xff) | ((((unsigned short)(x)) & 0xff) << 8))
#endif

#ifndef HTONS
#define HTONS NTOHS
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -