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

📄 tether.h

📁 VIA VT6656 USB linux source code.
💻 H
字号:
/* * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. * All rights reserved. * * This software is copyrighted by and is the sole property of * VIA Networking Technologies, Inc. This software may only be used * in accordance with the corresponding license agreement. Any unauthorized * use, duplication, transmission, distribution, or disclosure of this * software is expressly forbidden. * * This software is provided by VIA Networking Technologies, Inc. "as is" * and any express or implied warranties, including, but not limited to, the * implied warranties of merchantability and fitness for a particular purpose * are disclaimed. In no event shall VIA Networking Technologies, Inc. * be liable for any direct, indirect, incidental, special, exemplary, or * consequential damages. * * File: tether.h * * Purpose:  * * Author: Tevin Chen * * Date: Jan. 28, 1997 * */ #ifndef __TETHER_H__#define __TETHER_H__#if !defined(__TTYPE_H__)#include "ttype.h"#endif/*---------------------  Export Definitions -------------------------*///// constants//#define U_ETHER_ADDR_LEN    6           // Ethernet address length#define U_TYPE_LEN          2           //#define U_CRC_LEN           4           //#define U_HEADER_LEN        (U_ETHER_ADDR_LEN * 2 + U_TYPE_LEN)#define U_ETHER_ADDR_STR_LEN (U_ETHER_ADDR_LEN * 2 + 1)                                        // Ethernet address string length#define MIN_DATA_LEN        46          // min data length#define MAX_DATA_LEN        1500        // max data length#define MIN_PACKET_LEN      (MIN_DATA_LEN + U_HEADER_LEN)                                        // 60                                        // min total packet length (tx)#define MAX_PACKET_LEN      (MAX_DATA_LEN + U_HEADER_LEN)                                        // 1514                                        // max total packet length (tx)#define MAX_LOOKAHEAD_SIZE  MAX_PACKET_LEN#define U_MULTI_ADDR_LEN    8           // multicast address length#ifdef __BIG_ENDIAN#define TYPE_PKT_IP         0x0800      //#define TYPE_PKT_ARP        0x0806      //#define TYPE_PKT_RARP       0x8035      //#define TYPE_PKT_IPX	    0x8137	    //#define TYPE_PKT_802_1x     0x888e
#define TYPE_PKT_PreAuth    0x88C7#define TYPE_PKT_PING_M_REQ 0x8011      // master reguest#define TYPE_PKT_PING_S_GNT 0x8022      // slave grant#define TYPE_PKT_PING_M     0x8077      // pingpong master packet#define TYPE_PKT_PING_S     0x8088      // pingpong slave packet#define TYPE_PKT_WOL_M_REQ  0x8033      // WOL waker request#define TYPE_PKT_WOL_S_GNT  0x8044      // WOL sleeper grant#define TYPE_MGMT_PROBE_RSP 0x5000#define TYPE_PKT_VNT_DIAG   0x8011      // Diag Pkt
#define TYPE_PKT_VNT_PER    0x8888      // Diag PER Pkt//// wFrameCtl field in the S802_11Header//// NOTE....//   in network byte order, high byte is going first#define FC_TODS             0x0001#define FC_FROMDS           0x0002#define FC_MOREFRAG         0x0004#define FC_RETRY            0x0008#define FC_POWERMGT         0x0010#define FC_MOREDATA         0x0020#define FC_WEP              0x0040#define TYPE_802_11_ATIM    0x9000#define TYPE_802_11_DATA    0x0800#define TYPE_802_11_CTL     0x0400#define TYPE_802_11_MGMT    0x0000#define TYPE_802_11_MASK    0x0C00#define TYPE_SUBTYPE_MASK   0xFC00#define TYPE_802_11_NODATA  0x4000#define TYPE_DATE_NULL      0x4800#define TYPE_CTL_PSPOLL     0xa400#define TYPE_CTL_RTS        0xb400#define TYPE_CTL_CTS        0xc400#define TYPE_CTL_ACK        0xd400//#define WEP_IV_MASK         0xFFFFFF00#else //if LITTLE_ENDIAN//// wType field in the SEthernetHeader //// NOTE....//   in network byte order, high byte is going first#define TYPE_PKT_IP         0x0008      //#define TYPE_PKT_ARP        0x0608      //#define TYPE_PKT_RARP       0x3580      //#define TYPE_PKT_IPX	    0x3781	    //
#define TYPE_PKT_802_1x     0x8e88
#define TYPE_PKT_PreAuth    0xC788#define TYPE_PKT_PING_M_REQ 0x1180      // master reguest#define TYPE_PKT_PING_S_GNT 0x2280      // slave grant#define TYPE_PKT_PING_M     0x7780      // pingpong master packet#define TYPE_PKT_PING_S     0x8880      // pingpong slave packet#define TYPE_PKT_WOL_M_REQ  0x3380      // WOL waker request#define TYPE_PKT_WOL_S_GNT  0x4480      // WOL sleeper grant#define TYPE_MGMT_PROBE_RSP 0x0050#define TYPE_PKT_VNT_DIAG   0x1180      // Diag Pkt
#define TYPE_PKT_VNT_PER    0x8888      // Diag PER Pkt//// wFrameCtl field in the S802_11Header//// NOTE....//   in network byte order, high byte is going first#define FC_TODS             0x0100#define FC_FROMDS           0x0200#define FC_MOREFRAG         0x0400#define FC_RETRY            0x0800#define FC_POWERMGT         0x1000#define FC_MOREDATA         0x2000#define FC_WEP              0x4000#define TYPE_802_11_ATIM    0x0090#define TYPE_802_11_DATA    0x0008#define TYPE_802_11_CTL     0x0004#define TYPE_802_11_MGMT    0x0000#define TYPE_802_11_MASK    0x000C#define TYPE_SUBTYPE_MASK   0x00FC#define TYPE_802_11_NODATA  0x0040#define TYPE_DATE_NULL      0x0048#define TYPE_CTL_PSPOLL     0x00a4#define TYPE_CTL_RTS        0x00b4#define TYPE_CTL_CTS        0x00c4#define TYPE_CTL_ACK        0x00d4//#define WEP_IV_MASK         0x00FFFFFF#endif //#ifdef __BIG_ENDIAN#define WEP_IV_MASK         0x00FFFFFF/*---------------------  Export Types  ------------------------------*///// Ethernet packet//typedef struct tagSEthernetHeader {    BYTE    abyDstAddr[U_ETHER_ADDR_LEN];    BYTE    abySrcAddr[U_ETHER_ADDR_LEN];    WORD    wType;}__attribute__ ((__packed__))SEthernetHeader, DEF* PSEthernetHeader;//// 802_3 packet//typedef struct tagS802_3Header {    BYTE    abyDstAddr[U_ETHER_ADDR_LEN];    BYTE    abySrcAddr[U_ETHER_ADDR_LEN];    WORD    wLen;}__attribute__ ((__packed__))S802_3Header, DEF* PS802_3Header;//// 802_11 packet//typedef struct tagS802_11Header {    WORD    wFrameCtl;    WORD    wDurationID;    BYTE    abyAddr1[U_ETHER_ADDR_LEN];    BYTE    abyAddr2[U_ETHER_ADDR_LEN];    BYTE    abyAddr3[U_ETHER_ADDR_LEN];    WORD    wSeqCtl;    BYTE    abyAddr4[U_ETHER_ADDR_LEN];}__attribute__ ((__packed__))S802_11Header, DEF* PS802_11Header;/*---------------------  Export Macros ------------------------------*/// Frame type macro#define IS_MULTICAST_ADDRESS(pbyEtherAddr)          \    ((*(PBYTE)(pbyEtherAddr) & 0x01) == 1)                                                    #define IS_BROADCAST_ADDRESS(pbyEtherAddr) (        \    (*(PDWORD)(pbyEtherAddr) == 0xFFFFFFFFL) &&     \    (*(PWORD)((PBYTE)(pbyEtherAddr) + 4) == 0xFFFF) \)#define IS_NULL_ADDRESS(pbyEtherAddr) (             \    (*(PDWORD)(pbyEtherAddr) == 0L) &&              \    (*(PWORD)((PBYTE)(pbyEtherAddr) + 4) == 0)      \)#define IS_ETH_ADDRESS_EQUAL(pbyAddr1, pbyAddr2) (  \    (*(PDWORD)(pbyAddr1) == *(PDWORD)(pbyAddr2)) && \    (*(PWORD)((PBYTE)(pbyAddr1) + 4) ==             \    *(PWORD)((PBYTE)(pbyAddr2) + 4))                \)/*---------------------  Export Classes  ----------------------------*//*---------------------  Export Variables  --------------------------*/                                        /*---------------------  Export Functions  --------------------------*/#ifdef __cplusplusextern "C" {                            /* Assume C declarations for C++ */#endif /* __cplusplus */BYTE ETHbyGetHashIndexByCrc32(PBYTE pbyMultiAddr);//BYTE ETHbyGetHashIndexByCrc(PBYTE pbyMultiAddr);BOOL ETHbIsBufferCrc32Ok(PBYTE pbyBuffer, UINT cbFrameLength);#ifdef __cplusplus}                                       /* End of extern "C" { */#endif /* __cplusplus */#endif // __TETHER_H__

⌨️ 快捷键说明

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