ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

afilter.h
Go to the documentation of this file.
00001 /*
00002  * afilter.h
00003  *
00004  * Address filtering for NDIS MACs
00005  *
00006  * This file is part of the w32api package.
00007  *
00008  * Contributors:
00009  *   Created by Filip Navara <xnavara@volny.cz>
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #ifndef _ARC_FILTER_DEFS_
00024 #define _ARC_FILTER_DEFS_
00025 
00026 #ifdef __cplusplus
00027 extern "C" {
00028 #endif
00029 
00030 #define ARC_RECEIVE_BUFFERS            64
00031 #define ARCNET_ADDRESS_LEN             1
00032 #define ARC_PROTOCOL_HEADER_SIZE       (sizeof(ARC_PROTOCOL_HEADER))
00033 #define ARC_MAX_FRAME_SIZE             504
00034 #define ARC_MAX_ADDRESS_IDS            256
00035 #define ARC_MAX_FRAME_HEADER_SIZE      6
00036 #define ARC_MAX_PACKET_SIZE            576
00037 #define ARC_FILTER_MAX_OPENS           (sizeof(ULONG) * 8)
00038 
00039 #define ARC_IS_BROADCAST(Address) (BOOLEAN)(!(Address))
00040 
00041 #define ARC_QUERY_FILTER_CLASSES(Filter) ((Filter)->CombinedPacketFilter)
00042 #define ARC_QUERY_PACKET_FILTER(Filter, NdisFilterHandle) \
00043         (((PARC_BINDING_INFO)(NdisFilterHandle))->PacketFilters)
00044 
00045 typedef ULONG MASK, *PMASK;
00046 
00047 typedef struct _ARC_BUFFER_LIST
00048 {
00049   PVOID  Buffer;
00050   UINT  Size;
00051   UINT  BytesLeft;
00052   struct _ARC_BUFFER_LIST  *Next;
00053 } ARC_BUFFER_LIST, *PARC_BUFFER_LIST;
00054 
00055 typedef struct _ARC_PROTOCOL_HEADER
00056 {
00057   UCHAR  SourceId[ARCNET_ADDRESS_LEN];
00058   UCHAR  DestId[ARCNET_ADDRESS_LEN];
00059   UCHAR  ProtId;
00060 } ARC_PROTOCOL_HEADER, *PARC_PROTOCOL_HEADER;
00061 
00062 typedef struct _ARC_PACKET_HEADER
00063 {
00064   ARC_PROTOCOL_HEADER  ProtHeader;
00065   USHORT  FrameSequence;
00066   UCHAR  SplitFlag;
00067   UCHAR  LastSplitFlag;
00068   UCHAR  FramesReceived;
00069 } ARC_PACKET_HEADER, *PARC_PACKET_HEADER;
00070 
00071 typedef struct _ARC_PACKET
00072 {
00073   ARC_PACKET_HEADER  Header;
00074   struct _ARC_PACKET  *Next;
00075   ULONG  TotalLength;
00076   BOOLEAN  LastFrame;
00077   PARC_BUFFER_LIST  FirstBuffer;
00078   PARC_BUFFER_LIST  LastBuffer;
00079   NDIS_PACKET  TmpNdisPacket;
00080 } ARC_PACKET, *PARC_PACKET;
00081 
00082 typedef struct _ARC_BINDING_INFO
00083 {
00084   PNDIS_OPEN_BLOCK  NdisBindingHandle;
00085   PVOID  Reserved;
00086   UINT  PacketFilters;
00087   ULONG  References;
00088   struct _ARC_BINDING_INFO  *NextOpen;
00089   BOOLEAN  ReceivedAPacket;
00090   UINT  OldPacketFilters;
00091 } ARC_BINDING_INFO,*PARC_BINDING_INFO;
00092 
00093 typedef struct _ARC_FILTER
00094 {
00095   struct _NDIS_MINIPORT_BLOCK  *Miniport;
00096   UINT  CombinedPacketFilter;
00097   PARC_BINDING_INFO  OpenList;
00098   NDIS_HANDLE  ReceiveBufferPool;
00099   PARC_BUFFER_LIST  FreeBufferList;
00100   PARC_PACKET  FreePackets;
00101   PARC_PACKET  OutstandingPackets;
00102   UCHAR  AdapterAddress;
00103   UINT  OldCombinedPacketFilter;
00104 } ARC_FILTER,*PARC_FILTER;
00105 
00106 BOOLEAN
00107 NTAPI
00108 ArcCreateFilter(
00109   IN struct _NDIS_MINIPORT_BLOCK  *Miniport,
00110   IN UCHAR  AdapterAddress,
00111   OUT PARC_FILTER  *Filter);
00112 
00113 VOID
00114 NTAPI
00115 ArcDeleteFilter(
00116   IN PARC_FILTER Filter);
00117 
00118 BOOLEAN
00119 NTAPI
00120 ArcNoteFilterOpenAdapter(
00121   IN PARC_FILTER  Filter,
00122   IN NDIS_HANDLE  NdisBindingHandle,
00123   OUT PNDIS_HANDLE  NdisFilterHandle);
00124 
00125 NDIS_STATUS
00126 NTAPI
00127 ArcDeleteFilterOpenAdapter(
00128   IN PARC_FILTER  Filter,
00129   IN NDIS_HANDLE  NdisFilterHandle,
00130   IN PNDIS_REQUEST  NdisRequest);
00131 
00132 NDIS_STATUS
00133 NTAPI
00134 ArcFilterAdjust(
00135   IN PARC_FILTER  Filter,
00136   IN NDIS_HANDLE  NdisFilterHandle,
00137   IN PNDIS_REQUEST  NdisRequest,
00138   IN UINT  FilterClasses,
00139   IN BOOLEAN  Set);
00140 
00141 VOID
00142 NTAPI
00143 ArcFilterDprIndicateReceiveComplete(
00144   IN PARC_FILTER  Filter);
00145 
00146 VOID
00147 NTAPI
00148 ArcFilterDprIndicateReceive(
00149   IN PARC_FILTER  Filter,
00150   IN PUCHAR  pRawHeader,
00151   IN PUCHAR  pData,
00152   IN UINT  Length);
00153 
00154 NDIS_STATUS
00155 NTAPI
00156 ArcFilterTransferData(
00157   IN PARC_FILTER  Filter,
00158   IN NDIS_HANDLE  MacReceiveContext,
00159   IN UINT  ByteOffset,
00160   IN UINT  BytesToTransfer,
00161   OUT PNDIS_PACKET  Packet,
00162   OUT PUINT  BytesTransfered);
00163 
00164 VOID
00165 NTAPI
00166 ArcFreeNdisPacket(
00167   IN PARC_PACKET  Packet);
00168 
00169 VOID
00170 NTAPI
00171 ArcFilterDoIndication(
00172   IN PARC_FILTER  Filter,
00173   IN PARC_PACKET  Packet);
00174 
00175 VOID
00176 NTAPI
00177 ArcDestroyPacket(
00178   IN PARC_FILTER  Filter,
00179   IN PARC_PACKET  Packet);
00180 
00181 #ifdef __cplusplus
00182 }
00183 #endif
00184 
00185 #endif /* _ARC_FILTER_DEFS_ */

Generated on Sun May 27 2012 04:29:55 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.