summaryrefslogtreecommitdiff
path: root/windows/TapDriver/mem.c
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@zerotier.com>2014-01-20 11:18:55 -0800
committerAdam Ierymenko <adam.ierymenko@zerotier.com>2014-01-20 11:18:55 -0800
commita365a0e3ba1afdc4151f84efc953a756cc00378d (patch)
treedb3be30c16a60539ccd742013cadaf4799063df9 /windows/TapDriver/mem.c
parent45c5b66e9ef4d8a2afafe4250e40557290f07997 (diff)
downloadinfinitytier-a365a0e3ba1afdc4151f84efc953a756cc00378d.tar.gz
infinitytier-a365a0e3ba1afdc4151f84efc953a756cc00378d.zip
Remove a lot of code that we don't need from tap-windows, further winnowing down this fork of OpenVPN's tap-windows to a more minimal version that does only basic Ethernet tap functionality.
Diffstat (limited to 'windows/TapDriver/mem.c')
-rw-r--r--windows/TapDriver/mem.c252
1 files changed, 126 insertions, 126 deletions
diff --git a/windows/TapDriver/mem.c b/windows/TapDriver/mem.c
index c56304cc..2f01616e 100644
--- a/windows/TapDriver/mem.c
+++ b/windows/TapDriver/mem.c
@@ -1,183 +1,183 @@
/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
+* TAP-Windows -- A kernel driver to provide virtual tap
+* device functionality on Windows.
+*
+* This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
+*
+* This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
+* and is released under the GPL version 2 (see below).
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2
+* as published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program (see the file COPYING included with this
+* distribution); if not, write to the Free Software Foundation, Inc.,
+* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
//------------------
// Memory Management
//------------------
PVOID
-MemAlloc (ULONG p_Size, BOOLEAN zero)
+ MemAlloc (ULONG p_Size, BOOLEAN zero)
{
- PVOID l_Return = NULL;
-
- if (p_Size)
- {
- __try
- {
- if (NdisAllocateMemoryWithTag (&l_Return, p_Size, 'APAT')
- == NDIS_STATUS_SUCCESS)
- {
- if (zero)
- NdisZeroMemory (l_Return, p_Size);
- }
- else
- l_Return = NULL;
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- l_Return = NULL;
- }
- }
-
- return l_Return;
+ PVOID l_Return = NULL;
+
+ if (p_Size)
+ {
+ __try
+ {
+ if (NdisAllocateMemoryWithTag (&l_Return, p_Size, 'APAT')
+ == NDIS_STATUS_SUCCESS)
+ {
+ if (zero)
+ NdisZeroMemory (l_Return, p_Size);
+ }
+ else
+ l_Return = NULL;
+ }
+ __except (EXCEPTION_EXECUTE_HANDLER)
+ {
+ l_Return = NULL;
+ }
+ }
+
+ return l_Return;
}
VOID
-MemFree (PVOID p_Addr, ULONG p_Size)
+ MemFree (PVOID p_Addr, ULONG p_Size)
{
- if (p_Addr && p_Size)
- {
- __try
- {
+ if (p_Addr && p_Size)
+ {
+ __try
+ {
#if DBG
- NdisZeroMemory (p_Addr, p_Size);
+ NdisZeroMemory (p_Addr, p_Size);
#endif
- NdisFreeMemory (p_Addr, p_Size, 0);
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- }
- }
+ NdisFreeMemory (p_Addr, p_Size, 0);
+ }
+ __except (EXCEPTION_EXECUTE_HANDLER)
+ {
+ }
+ }
}
/*
- * Circular queue management routines.
- */
+* Circular queue management routines.
+*/
#define QUEUE_BYTE_ALLOCATION(size) \
- (sizeof (Queue) + (size * sizeof (PVOID)))
+ (sizeof (Queue) + (size * sizeof (PVOID)))
#define QUEUE_ADD_INDEX(var, inc) \
{ \
- var += inc; \
- if (var >= q->capacity) \
- var -= q->capacity; \
- MYASSERT (var < q->capacity); \
+ var += inc; \
+ if (var >= q->capacity) \
+ var -= q->capacity; \
+ MYASSERT (var < q->capacity); \
}
#define QUEUE_SANITY_CHECK() \
- MYASSERT (q != NULL && q->base < q->capacity && q->size <= q->capacity)
+ MYASSERT (q != NULL && q->base < q->capacity && q->size <= q->capacity)
#define QueueCount(q) (q->size)
#define UPDATE_MAX_SIZE() \
{ \
- if (q->size > q->max_size) \
- q->max_size = q->size; \
+ if (q->size > q->max_size) \
+ q->max_size = q->size; \
}
Queue *
-QueueInit (ULONG capacity)
+ QueueInit (ULONG capacity)
{
- Queue *q;
+ Queue *q;
- MYASSERT (capacity > 0);
- q = (Queue *) MemAlloc (QUEUE_BYTE_ALLOCATION (capacity), TRUE);
- if (!q)
- return NULL;
+ MYASSERT (capacity > 0);
+ q = (Queue *) MemAlloc (QUEUE_BYTE_ALLOCATION (capacity), TRUE);
+ if (!q)
+ return NULL;
- q->base = q->size = 0;
- q->capacity = capacity;
- q->max_size = 0;
- return q;
+ q->base = q->size = 0;
+ q->capacity = capacity;
+ q->max_size = 0;
+ return q;
}
VOID
-QueueFree (Queue *q)
+ QueueFree (Queue *q)
{
- if (q)
- {
- QUEUE_SANITY_CHECK ();
- MemFree (q, QUEUE_BYTE_ALLOCATION (q->capacity));
- }
+ if (q)
+ {
+ QUEUE_SANITY_CHECK ();
+ MemFree (q, QUEUE_BYTE_ALLOCATION (q->capacity));
+ }
}
PVOID
-QueuePush (Queue *q, PVOID item)
+ QueuePush (Queue *q, PVOID item)
{
- ULONG dest;
- QUEUE_SANITY_CHECK ();
- if (q->size == q->capacity)
- return NULL;
- dest = q->base;
- QUEUE_ADD_INDEX (dest, q->size);
- q->data[dest] = item;
- ++q->size;
- UPDATE_MAX_SIZE();
- return item;
+ ULONG dest;
+ QUEUE_SANITY_CHECK ();
+ if (q->size == q->capacity)
+ return NULL;
+ dest = q->base;
+ QUEUE_ADD_INDEX (dest, q->size);
+ q->data[dest] = item;
+ ++q->size;
+ UPDATE_MAX_SIZE();
+ return item;
}
PVOID
-QueuePop (Queue *q)
+ QueuePop (Queue *q)
{
- ULONG oldbase;
- QUEUE_SANITY_CHECK ();
- if (!q->size)
- return NULL;
- oldbase = q->base;
- QUEUE_ADD_INDEX (q->base, 1);
- --q->size;
- UPDATE_MAX_SIZE();
- return q->data[oldbase];
+ ULONG oldbase;
+ QUEUE_SANITY_CHECK ();
+ if (!q->size)
+ return NULL;
+ oldbase = q->base;
+ QUEUE_ADD_INDEX (q->base, 1);
+ --q->size;
+ UPDATE_MAX_SIZE();
+ return q->data[oldbase];
}
PVOID
-QueueExtract (Queue *q, PVOID item)
+ QueueExtract (Queue *q, PVOID item)
{
- ULONG src, dest, count, n;
- QUEUE_SANITY_CHECK ();
- n = 0;
- src = dest = q->base;
- count = q->size;
- while (count--)
- {
- if (item == q->data[src])
+ ULONG src, dest, count, n;
+ QUEUE_SANITY_CHECK ();
+ n = 0;
+ src = dest = q->base;
+ count = q->size;
+ while (count--)
{
- ++n;
- --q->size;
+ if (item == q->data[src])
+ {
+ ++n;
+ --q->size;
+ }
+ else
+ {
+ q->data[dest] = q->data[src];
+ QUEUE_ADD_INDEX (dest, 1);
+ }
+ QUEUE_ADD_INDEX (src, 1);
}
- else
- {
- q->data[dest] = q->data[src];
- QUEUE_ADD_INDEX (dest, 1);
- }
- QUEUE_ADD_INDEX (src, 1);
- }
- if (n)
- return item;
- else
- return NULL;
+ if (n)
+ return item;
+ else
+ return NULL;
}
#undef QUEUE_BYTE_ALLOCATION