Declare TUN_MEMORY_TAG in network-byte order
...due to popular demand. Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
parent
7ac5c57d41
commit
db9eaf108e
19
wintun.c
19
wintun.c
@ -40,7 +40,6 @@
|
|||||||
#define TUN_EXCH_MIN_BUFFER_SIZE_READ TUN_EXCH_MAX_PACKET_SIZE /* Minimum size of read exchange buffer */
|
#define TUN_EXCH_MIN_BUFFER_SIZE_READ TUN_EXCH_MAX_PACKET_SIZE /* Minimum size of read exchange buffer */
|
||||||
#define TUN_EXCH_MIN_BUFFER_SIZE_WRITE (sizeof(TUN_PACKET)) /* Minimum size of write exchange buffer */
|
#define TUN_EXCH_MIN_BUFFER_SIZE_WRITE (sizeof(TUN_PACKET)) /* Minimum size of write exchange buffer */
|
||||||
#define TUN_QUEUE_MAX_NBLS 1000
|
#define TUN_QUEUE_MAX_NBLS 1000
|
||||||
#define TUN_MEMORY_TAG 'wtun'
|
|
||||||
#define TUN_CSQ_INSERT_HEAD ((PVOID)TRUE)
|
#define TUN_CSQ_INSERT_HEAD ((PVOID)TRUE)
|
||||||
#define TUN_CSQ_INSERT_TAIL ((PVOID)FALSE)
|
#define TUN_CSQ_INSERT_TAIL ((PVOID)FALSE)
|
||||||
|
|
||||||
@ -56,6 +55,8 @@
|
|||||||
# error "Unable to determine endianess"
|
# error "Unable to determine endianess"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TUN_MEMORY_TAG TUN_HTONL('wtun')
|
||||||
|
|
||||||
typedef struct _TUN_PACKET
|
typedef struct _TUN_PACKET
|
||||||
{
|
{
|
||||||
ULONG Size; /* Size of packet data (TUN_EXCH_MAX_IP_PACKET_SIZE max) */
|
ULONG Size; /* Size of packet data (TUN_EXCH_MAX_IP_PACKET_SIZE max) */
|
||||||
@ -951,7 +952,7 @@ static NTSTATUS
|
|||||||
TunDispatchCreate(_Inout_ TUN_CTX *Ctx, _Inout_ IRP *Irp)
|
TunDispatchCreate(_Inout_ TUN_CTX *Ctx, _Inout_ IRP *Irp)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
TUN_FILE_CTX *FileCtx = ExAllocatePoolWithTag(NonPagedPoolNx, sizeof(*FileCtx), TUN_HTONL(TUN_MEMORY_TAG));
|
TUN_FILE_CTX *FileCtx = ExAllocatePoolWithTag(NonPagedPoolNx, sizeof(*FileCtx), TUN_MEMORY_TAG);
|
||||||
if (!FileCtx)
|
if (!FileCtx)
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
RtlZeroMemory(FileCtx, sizeof(*FileCtx));
|
RtlZeroMemory(FileCtx, sizeof(*FileCtx));
|
||||||
@ -977,7 +978,7 @@ cleanup_ExReleaseSpinLockShared:
|
|||||||
ExReleaseSpinLockShared(&Ctx->TransitionLock, Irql);
|
ExReleaseSpinLockShared(&Ctx->TransitionLock, Irql);
|
||||||
TunCompleteRequest(Ctx, Irp, Status, IO_NO_INCREMENT);
|
TunCompleteRequest(Ctx, Irp, Status, IO_NO_INCREMENT);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
ExFreePoolWithTag(FileCtx, TUN_HTONL(TUN_MEMORY_TAG));
|
ExFreePoolWithTag(FileCtx, TUN_MEMORY_TAG);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1001,7 +1002,7 @@ TunDispatchClose(_Inout_ TUN_CTX *Ctx, _Inout_ IRP *Irp)
|
|||||||
TUN_FILE_CTX *FileCtx = (TUN_FILE_CTX *)Stack->FileObject->FsContext;
|
TUN_FILE_CTX *FileCtx = (TUN_FILE_CTX *)Stack->FileObject->FsContext;
|
||||||
TunUnmapUbuffer(&FileCtx->ReadBuffer);
|
TunUnmapUbuffer(&FileCtx->ReadBuffer);
|
||||||
TunUnmapUbuffer(&FileCtx->WriteBuffer);
|
TunUnmapUbuffer(&FileCtx->WriteBuffer);
|
||||||
ExFreePoolWithTag(FileCtx, TUN_HTONL(TUN_MEMORY_TAG));
|
ExFreePoolWithTag(FileCtx, TUN_MEMORY_TAG);
|
||||||
IoReleaseRemoveLock(&Ctx->Device.RemoveLock, Stack->FileObject);
|
IoReleaseRemoveLock(&Ctx->Device.RemoveLock, Stack->FileObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1235,7 +1236,7 @@ TunInitializeEx(
|
|||||||
|
|
||||||
Ctx->Device.Handle = DeviceObjectHandle;
|
Ctx->Device.Handle = DeviceObjectHandle;
|
||||||
Ctx->Device.Object = DeviceObject;
|
Ctx->Device.Object = DeviceObject;
|
||||||
IoInitializeRemoveLock(&Ctx->Device.RemoveLock, TUN_HTONL(TUN_MEMORY_TAG), 0, 0);
|
IoInitializeRemoveLock(&Ctx->Device.RemoveLock, TUN_MEMORY_TAG, 0, 0);
|
||||||
KeInitializeSpinLock(&Ctx->Device.ReadQueue.Lock);
|
KeInitializeSpinLock(&Ctx->Device.ReadQueue.Lock);
|
||||||
IoCsqInitializeEx(
|
IoCsqInitializeEx(
|
||||||
&Ctx->Device.ReadQueue.Csq,
|
&Ctx->Device.ReadQueue.Csq,
|
||||||
@ -1255,7 +1256,7 @@ TunInitializeEx(
|
|||||||
.Size = NDIS_SIZEOF_NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1 },
|
.Size = NDIS_SIZEOF_NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1 },
|
||||||
.ProtocolId = NDIS_PROTOCOL_ID_DEFAULT,
|
.ProtocolId = NDIS_PROTOCOL_ID_DEFAULT,
|
||||||
.fAllocateNetBuffer = TRUE,
|
.fAllocateNetBuffer = TRUE,
|
||||||
.PoolTag = TUN_HTONL(TUN_MEMORY_TAG)
|
.PoolTag = TUN_MEMORY_TAG
|
||||||
};
|
};
|
||||||
#pragma warning( \
|
#pragma warning( \
|
||||||
suppress : 6014) /* Leaking memory 'ctx->NBLPool'. Note: 'ctx->NBLPool' is freed in TunHaltEx; or on failure. */
|
suppress : 6014) /* Leaking memory 'ctx->NBLPool'. Note: 'ctx->NBLPool' is freed in TunHaltEx; or on failure. */
|
||||||
@ -1414,8 +1415,8 @@ TunForceHandlesClosed(_Inout_ TUN_CTX *Ctx)
|
|||||||
Size = RequestedSize)
|
Size = RequestedSize)
|
||||||
{
|
{
|
||||||
if (HandleTable)
|
if (HandleTable)
|
||||||
ExFreePoolWithTag(HandleTable, TUN_HTONL(TUN_MEMORY_TAG));
|
ExFreePoolWithTag(HandleTable, TUN_MEMORY_TAG);
|
||||||
HandleTable = ExAllocatePoolWithTag(PagedPool, RequestedSize, TUN_HTONL(TUN_MEMORY_TAG));
|
HandleTable = ExAllocatePoolWithTag(PagedPool, RequestedSize, TUN_MEMORY_TAG);
|
||||||
if (!HandleTable)
|
if (!HandleTable)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1448,7 +1449,7 @@ TunForceHandlesClosed(_Inout_ TUN_CTX *Ctx)
|
|||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
if (HandleTable)
|
if (HandleTable)
|
||||||
ExFreePoolWithTag(HandleTable, TUN_HTONL(TUN_MEMORY_TAG));
|
ExFreePoolWithTag(HandleTable, TUN_MEMORY_TAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
_IRQL_requires_max_(APC_LEVEL)
|
_IRQL_requires_max_(APC_LEVEL)
|
||||||
|
Loading…
Reference in New Issue
Block a user