tap.h 2.7 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_MINIPORT_DRIVER 1
  28. #define NDIS_SUPPORT_NDIS6 1
  29. #define NDIS_SUPPORT_NDIS630 1
  30. #define NDIS_WDM1 1
  31. #define NDIS630_MINIPORT 1
  32. #endif
  33. #include <ntifs.h>
  34. #include <ndis.h>
  35. #include <ntstrsafe.h>
  36. #include <netioapi.h>
  37. #include "config.h"
  38. #include "lock.h"
  39. #include "constants.h"
  40. #include "proto.h"
  41. #include "mem.h"
  42. #include "macinfo.h"
  43. #include "error.h"
  44. #include "endian.h"
  45. #include "types.h"
  46. #include "adapter.h"
  47. #include "device.h"
  48. #include "prototypes.h"
  49. #include "tap-windows.h"
  50. //========================================================
  51. // Check for truncated IPv4 packets, log errors if found.
  52. //========================================================
  53. #define PACKET_TRUNCATION_CHECK 0
  54. //========================================================
  55. // EXPERIMENTAL -- Configure TAP device object to be
  56. // accessible from non-administrative accounts, based
  57. // on an advanced properties setting.
  58. //
  59. // Duplicates the functionality of OpenVPN's
  60. // --allow-nonadmin directive.
  61. //========================================================
  62. #define ENABLE_NONADMIN 0
  63. //
  64. // The driver has exactly one instance of the TAP_GLOBAL structure. NDIS keeps
  65. // an opaque handle to this data, (it doesn't attempt to read or interpret this
  66. // data), and it passes the handle back to the miniport in MiniportSetOptions
  67. // and MiniportInitializeEx.
  68. //
  69. typedef struct _TAP_GLOBAL
  70. {
  71. LIST_ENTRY AdapterList;
  72. NDIS_RW_LOCK Lock;
  73. NDIS_HANDLE NdisDriverHandle; // From NdisMRegisterMiniportDriver
  74. } TAP_GLOBAL, *PTAP_GLOBAL;
  75. // Global data
  76. extern TAP_GLOBAL GlobalData;
  77. #endif // __TAP_H