49 (
"PacketEntry: %x, NdisPacket %x\n",
50 PacketEntry,
Packet->Packet));
79 (
"PacketEntry: %x, NdisPacket %x\n",
80 PacketEntry,
Packet->Packet));
108 (NCE = *PrevNCE) !=
NULL;) {
141 *PrevNCE = NCE->
Next;
162 PrevNCE = &NCE->
Next;
203 NextNCE = CurNCE->
Next;
250 (NCE = *PrevNCE) !=
NULL;)
255 *PrevNCE = NCE->
Next;
264 PrevNCE = &NCE->
Next;
277 UINT LinkAddressLength,
302 (
"Called. Interface (0x%X) Address (0x%X) "
303 "LinkAddress (0x%X) LinkAddressLength (%d) State (0x%X)\n",
456 FirstInterface =
NULL;
476 while ((FirstInterface !=
NULL) &&
479 if ((NCE ==
NULL) && (FirstInterface !=
NULL))
533 if (!NCE)
return NULL;
561 (
"Called. NCE (0x%X) NdisPacket (0x%X).\n", NCE, NdisPacket));
577 Packet->Complete = PacketComplete;
578 Packet->Context = PacketContext;
579 Packet->Packet = NdisPacket;
617 (CurNCE = *PrevNCE) !=
NULL;
618 PrevNCE = &CurNCE->
Next)
623 *PrevNCE = CurNCE->
Next;
647 CurNCE = CurNCE->
Next ) {
654 (ArpTable[
Size].PhysAddr,
BOOLEAN AddrIsUnspecified(PIP_ADDRESS Address)
BOOLEAN AddrIsEqual(PIP_ADDRESS Address1, PIP_ADDRESS Address2)
BOOLEAN ARPTransmit(PIP_ADDRESS Address, PVOID LinkAddress, PIP_INTERFACE Interface)
#define TI_DbgPrint(_t_, _x_)
#define ASSERT_KM_POINTER(_x)
VOID TcpipAcquireSpinLockAtDpcLevel(PKSPIN_LOCK SpinLock)
VOID TcpipReleaseSpinLockFromDpcLevel(PKSPIN_LOCK SpinLock)
VOID TcpipReleaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL Irql)
VOID TcpipInitializeSpinLock(PKSPIN_LOCK SpinLock)
VOID TcpipAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL Irql)
PCHAR A2S(PIP_ADDRESS Address)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define KeRaiseIrql(irql, oldIrql)
#define KeLowerIrql(oldIrql)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define ARP_ENTRY_INVALID
#define ARP_ENTRY_DYNAMIC
PLIST_ENTRY NTAPI ExInterlockedRemoveHeadList(IN OUT PLIST_ENTRY ListHead, IN OUT PKSPIN_LOCK Lock)
#define ExFreePoolWithTag(_P, _T)
_In_ NDIS_HANDLE _In_ PNDIS_PACKET Packet
#define NDIS_STATUS_NETWORK_UNREACHABLE
#define NDIS_STATUS_REQUEST_ABORTED
#define NDIS_STATUS_HOST_UNREACHABLE
_In_ NDIS_ERROR_CODE ErrorCode
#define NDIS_STATUS_NOT_ACCEPTED
VOID NBSendPackets(PNEIGHBOR_CACHE_ENTRY NCE)
NEIGHBOR_CACHE_TABLE NeighborCache[NB_HASHMASK+1]
ULONG NBCopyNeighbors(PIP_INTERFACE Interface, PIPARP_ENTRY ArpTable)
VOID NBDestroyNeighborsForInterface(PIP_INTERFACE Interface)
PNEIGHBOR_CACHE_ENTRY NBFindOrCreateNeighbor(PIP_INTERFACE Interface, PIP_ADDRESS Address, BOOLEAN NoTimeout)
BOOLEAN NBQueuePacket(PNEIGHBOR_CACHE_ENTRY NCE, PNDIS_PACKET NdisPacket, PNEIGHBOR_PACKET_COMPLETE PacketComplete, PVOID PacketContext)
PNEIGHBOR_CACHE_ENTRY NBLocateNeighbor(PIP_ADDRESS Address, PIP_INTERFACE Interface)
PNEIGHBOR_CACHE_ENTRY NBAddNeighbor(PIP_INTERFACE Interface, PIP_ADDRESS Address, PVOID LinkAddress, UINT LinkAddressLength, UCHAR State, UINT EventTimer)
VOID NBResetNeighborTimeout(PIP_ADDRESS Address)
VOID NBRemoveNeighbor(PNEIGHBOR_CACHE_ENTRY NCE)
VOID NBSendSolicit(PNEIGHBOR_CACHE_ENTRY NCE)
VOID NBUpdateNeighbor(PNEIGHBOR_CACHE_ENTRY NCE, PVOID LinkAddress, UCHAR State)
VOID NBCompleteSend(PVOID Context, PNDIS_PACKET NdisPacket, NDIS_STATUS Status)
VOID NBFlushPacketQueue(PNEIGHBOR_CACHE_ENTRY NCE, NTSTATUS ErrorCode)
VOID(* PNEIGHBOR_PACKET_COMPLETE)(PVOID Context, PNDIS_PACKET Packet, NDIS_STATUS Status)
#define ARP_TIMEOUT_RETRANSMISSION
#define ARP_COMPLETE_TIMEOUT
#define ARP_INCOMPLETE_TIMEOUT
struct _NEIGHBOR_PACKET * PNEIGHBOR_PACKET
PIP_INTERFACE GetDefaultInterface(VOID)
union IP_ADDRESS::@1014 Address
IPv4_RAW_ADDRESS IPv4Address
struct NEIGHBOR_CACHE_ENTRY * Next
struct NEIGHBOR_CACHE_ENTRY * Cache
LL_TRANSMIT_ROUTINE Transmit
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_ BOOLEAN _In_ ULONG _Out_ PULONG HashValue