tap.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /*
  2. * TAP-Windows -- A kernel driver to provide virtual tap
  3. * device functionality on Windows.
  4. *
  5. * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
  6. *
  7. * This source code is Copyright (C) 2002-2014 OpenVPN Technologies, Inc.,
  8. * and is released under the GPL version 2 (see below).
  9. *
  10. * This program is free software; you can redistribute it and/or modify
  11. * it under the terms of the GNU General Public License version 2
  12. * as published by the Free Software Foundation.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this program (see the file COPYING included with this
  21. * distribution); if not, write to the Free Software Foundation, Inc.,
  22. * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  23. */
  24. #ifndef __TAP_H
  25. #define __TAP_H
  26. #ifndef NDIS_SUPPORT_NDIS6
  27. #define NDIS_SUPPORT_NDIS6 1
  28. #define NDIS_SUPPORT_NDIS61 1
  29. #define NDIS_WDM1 1
  30. #define NDIS61_MINIPORT 1
  31. #endif
  32. #include <ntifs.h>
  33. #include <ndis.h>
  34. #include <ntstrsafe.h>
  35. #include <netioapi.h>
  36. #include "config.h"
  37. #include "lock.h"
  38. #include "constants.h"
  39. #include "proto.h"
  40. #include "mem.h"
  41. #include "macinfo.h"
  42. #include "error.h"
  43. #include "endian.h"
  44. #include "types.h"
  45. #include "adapter.h"
  46. #include "device.h"
  47. #include "prototypes.h"
  48. #include "tap-windows.h"
  49. //========================================================
  50. // Check for truncated IPv4 packets, log errors if found.
  51. //========================================================
  52. #define PACKET_TRUNCATION_CHECK 0
  53. //========================================================
  54. // EXPERIMENTAL -- Configure TAP device object to be
  55. // accessible from non-administrative accounts, based
  56. // on an advanced properties setting.
  57. //
  58. // Duplicates the functionality of OpenVPN's
  59. // --allow-nonadmin directive.
  60. //========================================================
  61. #define ENABLE_NONADMIN 1
  62. //
  63. // The driver has exactly one instance of the TAP_GLOBAL structure. NDIS keeps
  64. // an opaque handle to this data, (it doesn't attempt to read or interpret this
  65. // data), and it passes the handle back to the miniport in MiniportSetOptions
  66. // and MiniportInitializeEx.
  67. //
  68. typedef struct _TAP_GLOBAL
  69. {
  70. LIST_ENTRY AdapterList;
  71. NDIS_RW_LOCK Lock;
  72. NDIS_HANDLE NdisDriverHandle; // From NdisMRegisterMiniportDriver
  73. } TAP_GLOBAL, *PTAP_GLOBAL;
  74. // Global data
  75. extern TAP_GLOBAL GlobalData;
  76. #endif // __TAP_H