ntcompat.h
上传用户:tjescc
上传日期:2021-02-23
资源大小:419k
文件大小:3k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. #ifndef NESSUS_NT_COMPAT__
  2. #define NESSUS_NT_COMPAT__
  3. /*
  4.  * This file is subject to the GPL
  5.  *
  6.  * (c) 1998 Renaud Deraison <deraison@worldnet.fr>
  7.  *
  8.  * ntcompat.h : redefinition of several system calls to provide
  9.  *              NT compatibility to Nessus
  10.  *
  11.  */
  12. #ifdef NESSUSNT
  13. #include <windows.h>
  14. #endif
  15. /*
  16.  * Thread management
  17.  */
  18.  
  19. typedef int(*thread_func_t)(void *);
  20. #ifdef USE_NT_THREADS
  21. typedef HANDLE nthread_t;
  22. #define EXIT(x) ExitThread(x)
  23. #define _EXIT(x) ExitThread(x)
  24. #define DO_EXIT(x) exit(x)
  25. #define TERMINATE_THREAD(x) TerminateThread(x,0)
  26. #endif /* US_NT_THREADS */
  27. #ifdef USE_FORK_THREADS
  28. typedef int nthread_t;
  29. #define EXIT(x) exit(x)
  30. #define _EXIT(x) _exit(x)
  31. #define DO_EXIT(x) exit(x)
  32. #define TERMINATE_THREAD(x) kill(x, SIGTERM)
  33. #endif /* USE_FORK_THREADS */
  34. #ifdef USE_PTHREADS
  35. /*
  36.  * I hate pthreads
  37.  */
  38. typedef struct {
  39.    pthread_t thread;
  40.    pthread_mutex_t mutex;
  41.    int ready;
  42.    } _nthread_t,*nthread_t;
  43.    
  44. struct thread_args {
  45.     void * arg;
  46.     pthread_mutex_t * mutex;
  47.     thread_func_t func;
  48.     nthread_t thread;
  49.     };
  50. #define EXIT(x) exit_pthread(x)
  51. #define _EXIT(x) EXIT(x)
  52. #define DO_EXIT(x) exit(x)
  53. #ifdef HAVE_PTHREAD_CANCEL
  54. #define TERMINATE_THREAD(x) {pthread_cancel(x->thread);pthread_detach(x->thread);}
  55. #else
  56. #warning "Your system lacks pthread_cancel() ! Using the pthreads is not recommanded"
  57. #define TERMINATE_THREAD(x)
  58. #endif /* HAVE_PTHREAD_CANCEL */
  59. #endif /* USE_PTHREADS */
  60. /*
  61.  * External libraries management
  62.  */
  63. #ifdef NESSUSNT
  64. typedef HMODULE ext_library_t;
  65. #define LOAD_FUNCTION(x,y) GetProcAddress(x,y)
  66. #define LOAD_LIBRARY(x) LoadLibrary(x)
  67. #define LIB_LAST_ERROR WSAGetLastError
  68. #define CLOSE_LIBRARY(x) FreeLibrary(x)
  69. #else
  70. typedef void * ext_library_t;
  71. #define LOAD_FUNCTION(x,y) dlsym(x,y)
  72. #ifdef RTLD_NOW
  73. #define LOAD_LIBRARY(x) dlopen(x,RTLD_NOW)
  74. #else
  75. #define LOAD_LIBRARY(x) dlopen(x, 1)
  76. #endif /* not defined(RTLD_NOW) */
  77. #define LIB_LAST_ERROR dlerror
  78. #define CLOSE_LIBRARY(x) dlclose(x)
  79. #endif /* defined(NESSUSNT) */
  80. /*
  81.  * Misc. functions
  82.  */
  83. #ifdef NESSUSNT
  84. #define getpid GetCurrentProcessId
  85. #define ioctl(x,y,z) ioctlsocket(x,y,z)
  86. #define signal(x,y)
  87. #define alarm(x)
  88. #define chmod(x,y)
  89. #define getopt(x,y,z) <*error*> unless you define optarg, as well
  90. typedef unsigned int u_int32_t;
  91. typedef unsigned short n_short;
  92. typedef unsigned short u_short;
  93. typedef unsigned short u_int16_t;
  94. typedef unsigned long n_time;
  95. #define ICMP_ECHO 8
  96. #define ICMP_ECHOREPLY 0
  97. #else
  98. #define closesocket(x) close (x)
  99. #endif /* defined(NESSUSNT) */
  100. #ifndef NESSUSNT
  101. #define print_error printf
  102. #endif
  103. #ifdef NESSUSNT
  104. #define DllExport __declspec (dllexport)
  105. #define DllImport __declspec  (dllimport)
  106. #define PlugExport DllExport
  107. #ifdef EXPORTING
  108. #define ExtFunc DllExport
  109. #else
  110. #define ExtFunc DllImport
  111. #endif /* defined(EXPORTING) */
  112. #else /* !NESSUSNT */
  113. #define PlugExport
  114. #define DllExport
  115. #define DllImport
  116. #define ExtFunc
  117. #endif /* defined(NESSUSNT) */
  118. #endif /* defined(NESSUS_NT_COMPAT_H) */