📄 etherif.h
字号:
//--------------------------------------------------------------------------
// Ip Stack
//--------------------------------------------------------------------------
// ETHERIF.H
//
// Author: Michael A. Denio
// Copyright 1999 by Texas Instruments Inc.
//-------------------------------------------------------------------------
#ifndef _C_ETHERIF_INC
#define _C_ETHERIF_INC /* #defined if this .h file has been included */
//-------------------------------------------------------------------------
// Device Structure
//
// Our Max Multicast (Independent of Low-level MAX)
#define ETH_MIN_PAYLOAD 46
// Message
typedef struct _ethdev {
//---[ These fields match IF structure ]---
uint Type; // Set to HTYPE_ETH
uint llIndex; // Low-level Device Index
uint ProtMTU; // MTU less ETHER stuff
//-----------------------------------------
UINT8 MacAddr[6]; // Device's Unicast Addr
uint PktFilter; // Current packet filter
uint EthHdrSize; // Byte Size of ETH header
uint OffDstMac; // Hdr offset to dst mac
uint OffSrcMac; // Hdr offset to src mac
uint OffEtherType; // Hdr offset to eth type
uint PacketPad; // Bytes of pad at end of packet
uint PhysMTU; // Physical pkt size (with all)
} ETHDRV;
//-----------------------------------------------------------------------
//
// Ether Packet Filter (cumulative)
//
#define ETH_PKTFLT_NOTHING 0
#define ETH_PKTFLT_DIRECT 1
#define ETH_PKTFLT_BROADCAST 2
#define ETH_PKTFLT_MULTICAST 3
#define ETH_PKTFLT_ALLMULTICAST 4
#define ETH_PKTFLT_ALL 5
//-----------------------------------------------------------------------
//
// Packet Access Functions
//
_extern void EtherRxPacket( PBM_Handle hPkt );
//-----------------------------------------------------------------------
//
// Global Access Functions
//
_extern HANDLE EtherNew( uint llIndex );
_extern void EtherFree( HANDLE hEther );
_extern void EtherConfig( HANDLE hEther, uint PhysMTU, uint EthHdrSize,
uint OffDstMac, uint OffSrcMac, uint OffEtherType,
uint PacketPad );
_extern void EtherSetPktFilter( HANDLE hEther, uint PktFilter );
_extern uint EtherAddMCast( HANDLE hEther, UINT8 *pMCastAddr );
_extern uint EtherDelMCast( HANDLE hEther, UINT8 *pMCastAddr );
_extern void EtherClearMCast( HANDLE hEther );
_extern uint EtherGetMacAddr( HANDLE hEther, UINT8 *pMacAddr, uint MaxLen );
//-----------------------------------------------------------------------
//
// Direct Functions
//
#ifdef _STRONG_CHECKING
_extern uint EtherGetPktFilter( HANDLE hEther );
#else
#define EtherGetPktFilter( h ) (((ETHDRV *)h)->PktFilter)
#endif
//-----------------------------------------------------------------------
//
// PBM Packet Flags Maintained by this module
//
// Packet Flags (maintained by the stack lib)
#define FLG_PKT_MACBCAST 0x00000002 // Pkt Received as a LL BCast
#define FLG_PKT_MACMCAST 0x00000001 // Pkt Received as a LL MCast
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -