📄 packet.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 + -