#include "precomp.h"
#include "lwip/netifapi.h"
Go to the source code of this file.
◆ __LWIP_INET_H__
Definition at line 13 of file ip.c.
◆ DefaultProtocolHandler()
Definition at line 369 of file ip.c.
378{
381
382 Interface->Stats.InDiscardedUnknownProto++;
383}
#define TI_DbgPrint(_t_, _x_)
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
Referenced by IPRegisterProtocol(), and IPStartup().
◆ DeinitializePacket()
Definition at line 35 of file ip.c.
42{
44
46
47
49 IPPacket->
Type = 0xFF;
50
51
53 {
55 {
56
60 }
61 else
62 {
63
67 }
68 }
69
70
72 {
73
78 }
79}
#define FreeNdisPacket(x)
#define ExFreePoolWithTag(_P, _T)
VOID EXPORT NdisReturnPackets(IN PNDIS_PACKET *PacketsToReturn, IN UINT NumberOfPackets)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
Referenced by IPInitializePacket().
◆ FreeIF()
◆ IPAddInterfaceRoute()
Definition at line 262 of file ip.c.
262 {
265
266
270 if (!NCE) {
272 return;
273 }
274
276
279 }
280
281
282
285
287}
VOID AddrWidenAddress(PIP_ADDRESS Network, PIP_ADDRESS Source, PIP_ADDRESS Netmask)
BOOLEAN ARPTransmit(PIP_ADDRESS Address, PVOID LinkAddress, PIP_INTERFACE Interface)
VOID TCPUpdateInterfaceIPInformation(PIP_INTERFACE IF)
_Must_inspect_result_ _Out_ PNDIS_STATUS _Outptr_result_bytebuffer_to_ NetworkAddressLength PVOID * NetworkAddress
PNEIGHBOR_CACHE_ENTRY NBAddNeighbor(PIP_INTERFACE Interface, PIP_ADDRESS Address, PVOID LinkAddress, UINT LinkAddressLength, UCHAR Type, UINT EventTimer)
PFIB_ENTRY RouterAddRoute(PIP_ADDRESS NetworkAddress, PIP_ADDRESS Netmask, PNEIGHBOR_CACHE_ENTRY Router, UINT Metric)
Referenced by DispTdiSetIPAddress(), LoopRegisterAdapter(), and ReadIpConfiguration().
◆ IPCreateInterface()
Definition at line 182 of file ip.c.
192{
194
196
197#if DBG
201 A[0],
A[1],
A[2],
A[3],
A[4],
A[5]));
202 }
203#endif
204
207 if (!IF) {
210 }
211
213
221
226
228
234 }
235
237
239
240 return IF;
241}
VOID TcpipInitializeSpinLock(PKSPIN_LOCK SpinLock)
VOID FreeIF(PVOID Object)
VOID TCPRegisterInterface(PIP_INTERFACE IF)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define ExAllocatePool(type, size)
VOID InsertTDIInterfaceEntity(PIP_INTERFACE Interface)
LL_TRANSMIT_ROUTINE Transmit
#define RtlZeroMemory(Destination, Length)
Referenced by BindAdapter(), LoopRegisterAdapter(), and main().
◆ IPDestroyInterface()
◆ IPDispatchProtocol()
Definition at line 142 of file ip.c.
154{
157
158 switch (IPPacket->
Type) {
162 break;
164
166 return;
167 default:
169 return;
170 }
171
173
175 {
176
178 }
179}
#define AddrInitIPv4(IPAddress, RawAddress)
#define IP_PROTOCOL_TABLE_SIZE
IP_PROTOCOL_HANDLER ProtocolTable[IP_PROTOCOL_TABLE_SIZE]
struct IPv4_HEADER * PIPv4_HEADER
VOID NBResetNeighborTimeout(PIP_ADDRESS Address)
Referenced by ProcessFragment().
◆ IPInitializePacket()
◆ IPRegisterInterface()
Definition at line 289 of file ip.c.
298{
300 UINT ChosenIndex = 0;
303
305
307
308
309 do {
310 IndexHasBeenChosen =
TRUE;
313 ChosenIndex++;
314 IndexHasBeenChosen =
FALSE;
315 }
317 } while( !IndexHasBeenChosen );
318
319 IF->
Index = ChosenIndex;
320
321
325
327
329}
VOID TcpipReleaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL Irql)
VOID TcpipInterlockedInsertTailList(PLIST_ENTRY ListHead, PLIST_ENTRY Item, PKSPIN_LOCK Lock)
VOID TcpipAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL Irql)
KSPIN_LOCK InterfaceListLock
LIST_ENTRY InterfaceListHead
#define ForEachInterface(n)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
Referenced by BindAdapter(), and LoopRegisterAdapter().
◆ IPRegisterProtocol()
◆ IPRemoveInterfaceRoute()
Definition at line 331 of file ip.c.
331 {
334
336 if (NCE)
337 {
340
342
344
346 }
347}
PCHAR A2S(PIP_ADDRESS Address)
PNEIGHBOR_CACHE_ENTRY NBLocateNeighbor(PIP_ADDRESS Address, PIP_INTERFACE Interface)
VOID NBRemoveNeighbor(PNEIGHBOR_CACHE_ENTRY NCE)
NTSTATUS RouterRemoveRoute(PIP_ADDRESS Target, PIP_ADDRESS Router)
Referenced by DispTdiDeleteIPAddress(), DispTdiSetIPAddress(), and IPUnregisterInterface().
◆ IPShutdown()
Definition at line 473 of file ip.c.
480{
482
485
486
488
489
491
493
494
498
500
502}
VOID NTAPI ExDeleteNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside)
NPAGED_LOOKASIDE_LIST IPHoleList
VOID IPFreeReassemblyList(VOID)
NPAGED_LOOKASIDE_LIST IPDRList
NPAGED_LOOKASIDE_LIST IPFragmentList
NTSTATUS RouterShutdown(VOID)
Referenced by TiUnload().
◆ IPStartup()
Definition at line 407 of file ip.c.
415{
417
419
420
425 0,
428 0);
429
434 0,
437 0);
438
443 0,
446 0);
447
448
450
451
453
454
455
458
459
462
463
466
468
470}
LIST_ENTRY NetTableListHead
KSPIN_LOCK NetTableListLock
VOID IPRegisterProtocol(UINT ProtocolNumber, IP_PROTOCOL_HANDLER Handler)
#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
VOID NTAPI ExInitializeNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside, IN PALLOCATE_FUNCTION Allocate OPTIONAL, IN PFREE_FUNCTION Free OPTIONAL, IN ULONG Flags, IN SIZE_T Size, IN ULONG Tag, IN USHORT Depth)
LIST_ENTRY ReassemblyListHead
KSPIN_LOCK ReassemblyListLock
NTSTATUS RouterStartup(VOID)
Referenced by DriverEntry(), and main().
◆ IPTimeoutDpcFn()
Definition at line 112 of file ip.c.
126{
128
130 {
132 }
133
134
136
137
139}
VOID LogActiveObjects(VOID)
VOID IPDatagramReassemblyTimeout(VOID)
Referenced by DriverEntry().
◆ IPUnregisterInterface()
◆ TCPRegisterInterface()
Definition at line 118 of file if.c.
119{
123
124 gw.addr = 0;
125 ipaddr.addr = 0;
126 netmask.addr = 0;
127
129 &ipaddr,
130 &netmask,
131 &gw,
132 IF,
135}
err_t TCPInterfaceInit(struct netif *netif)
err_t tcpip_input(struct pbuf *p, struct netif *inp)
struct netif * netif_add(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)
Referenced by IPCreateInterface().
◆ TCPUnregisterInterface()
◆ InterfaceListHead
◆ InterfaceListLock
◆ IPInitialized
◆ IpTimerExpirations
◆ IpWorkItemQueued
Definition at line 22 of file ip.c.
◆ NetTableListHead
◆ NetTableListLock
◆ ProtocolTable