source: lab.git/Dev/utvpn/utvpn-unix-v101-7101-public/src/Mayaqua/MayaType.h @ a1bae3e

trunk
Last change on this file since a1bae3e was a1bae3e, checked in by mitty <mitty@…>, 12 years ago
  • copy vendor drop to trunk

git-svn-id: https://lab.mitty.jp/svn/lab/trunk@147 7d2118f6-f56c-43e7-95a2-4bb3031d96e7

  • Property mode set to 100644
File size: 15.1 KB
Line 
1// SoftEther UT-VPN SourceCode
2//
3// Copyright (C) 2004-2010 SoftEther Corporation.
4// Copyright (C) 2004-2010 University of Tsukuba, Japan.
5// Copyright (C) 2003-2010 Daiyuu Nobori.
6// All Rights Reserved.
7//
8// http://utvpn.tsukuba.ac.jp/
9//
10// This program is free software; you can redistribute it and/or
11// modify it under the terms of the GNU General Public License
12// version 2 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 version 2
20// along with this program; if not, write to the Free Software
21// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22//
23// このファイルは GPL バージョン 2 ライセンスで公開されています。
24// 誰でもこのファイルの内容を複製、改変したり、改変したバージョンを再配布
25// することができます。ただし、原著作物を改変した場合は、原著作物の著作権表示
26// を除去することはできません。改変した著作物を配布する場合は、改変実施者の
27// 著作権表示を原著作物の著作権表示に付随して記載するようにしてください。
28//
29// この SoftEther UT-VPN オープンソース・プロジェクトは、日本国の
30// ソフトイーサ株式会社 (SoftEther Corporation, http://www.softether.co.jp/ )
31// および筑波大学 (University of Tsukuba, http://www.tsukuba.ac.jp/ ) によって
32// ホストされています。
33// 本プログラムの配布者は、本プログラムを、業としての利用以外のため、
34// および、試験または研究のために利用が行われることを想定して配布
35// しています。
36// SoftEther UT-VPN プロジェクトの Web サイトは http://utvpn.tsukuba.ac.jp/ に
37// あります。
38// 本ソフトウェアの不具合の修正、機能改良、セキュリティホールの修復などのコード
39// の改変を行った場合で、その成果物を SoftEther UT-VPN プロジェクトに提出して
40// いただける場合は、 http://utvpn.tsukuba.ac.jp/ までソースコードを送付して
41// ください。SoftEther UT-VPN プロジェクトの本体リリースまたはブランチリリース
42// に組み込みさせていただきます。
43//
44// GPL に基づいて原著作物が提供される本ソフトウェアの改良版を配布、販売する
45// 場合は、そのソースコードを GPL に基づいて誰にでも開示する義務が生じます。
46//
47// 本ソフトウェアに関連する著作権、特許権、商標権はソフトイーサ株式会社
48// (SoftEther Corporation) およびその他の著作権保持者が保有しています。
49// ソフトイーサ株式会社等はこれらの権利を放棄していません。本ソフトウェアの
50// 二次著作物を配布、販売する場合は、これらの権利を侵害しないようにご注意
51// ください。
52//
53// お願い: どのような通信ソフトウェアにも通常は必ず未発見の
54// セキュリティホールが潜んでいます。本ソースコードをご覧いただいた結果、
55// UT-VPN にセキュリティホールを発見された場合は、当該セキュリティホールの
56// 情報を不特定多数に開示される前に、必ず、ソフトイーサ株式会社
57// および脆弱性情報の届出を受け付ける公的機関まで通報いただき、
58// 公益保護にご協力いただきますようお願い申し上げます。
59//
60// ソフトイーサ株式会社は、当該セキュリティホールについて迅速に対処を
61// 行い、UT-VPN および UT-VPN に関連するソフトウェアのユーザー・顧客
62// を保護するための努力を行います。
63//
64// ソフトイーサへの届出先: http://www.softether.co.jp/jp/contact/
65// 日本国内の脆弱性情報届出受付公的機関:
66//         独立行政法人 情報処理推進機構
67//         http://www.ipa.go.jp/security/vuln/report/
68//
69// 上記各事項について不明な点は、ソフトイーサ株式会社までご連絡ください。
70// 連絡先: http://www.softether.co.jp/jp/contact/
71
72// -----------------------------------------------
73// [ChangeLog]
74// 2010.05.20
75//  新規リリース by SoftEther
76// -----------------------------------------------
77
78// MayaType.h
79// Mayaqua Kernel 型宣言ヘッダファイル
80
81#ifndef MAYATYPE_H
82#define MAYATYPE_H
83
84// windows.h ヘッダが include されているかどうかをチェック
85#ifndef WINDOWS_H
86#ifdef  _WINDOWS_
87#define WINDOWS_H
88#endif  // _WINDOWS_
89#endif  // WINDOWS_H
90
91
92#if !defined(ENCRYPT_C) && !defined(HAM_C)
93// OpenSSL が使用する構造体
94typedef struct x509_st X509;
95typedef struct evp_pkey_st EVP_PKEY;
96typedef struct bio_st BIO;
97typedef struct ssl_st SSL;
98typedef struct ssl_ctx_st SSL_CTX;
99typedef struct X509_req_st X509_REQ;
100typedef struct PKCS12 PKCS12;
101typedef struct bignum_st BIGNUM;
102typedef struct x509_crl_st X509_CRL;
103#endif  // ENCRYPT_C
104
105//
106// 定数
107//
108
109// 標準のバッファサイズ
110#define STD_SIZE            512
111#define MAX_SIZE            512
112#define BUF_SIZE            512
113
114// 対応 Windows OS 一覧
115#define SUPPORTED_WINDOWS_LIST      "Windows 98 / 98 SE / ME / NT 4.0 SP6a / 2000 SP4 / XP SP2, SP3 / Server 2003 SP2 / SBS 2003 SP2 / Storage Server 2003 SP2 / Vista SP1, SP2 / Server 2008 SP1, SP2 / Storage Server 2008 SP1, SP2 / Home Server / 7 / Server 2008 R2"
116
117// 無限
118#ifndef WINDOWS_H
119#define INFINITE            (0xFFFFFFFF)
120#endif
121
122
123#define SRC_NAME            __FILE__    // ソースコードのファイル名
124#define SRC_LINE            __LINE__    // ソースコード中の行番号
125
126// 最大パスサイズ
127#ifndef WINDOWS_H
128#define MAX_PATH            260
129#endif  // WINDOWS_H
130
131// シークの種類
132#ifndef FILE_BEGIN
133#define FILE_BEGIN  SEEK_SET
134#endif  // FILE_BEGIN
135#ifndef FILE_END
136#define FILE_END    SEEK_END
137#endif  // FILE_END
138#ifndef FILE_CURRENT
139#define FILE_CURRENT    SEEK_CUR
140#endif  // FILE_CURRENT
141
142#ifndef INVALID_SOCKET
143#define INVALID_SOCKET      (-1)
144#endif  // INVALID_SOCKET
145
146#ifndef SOCKET_ERROR
147#define SOCKET_ERROR        (-1)
148#endif  //SOCKET_ERROR
149
150// 比較関数
151typedef int (COMPARE)(void *p1, void *p2);
152
153//
154// マクロ
155
156
157#ifdef  MAX
158#undef  MAX
159#endif  // MAX
160
161#ifdef  MIN
162#undef  MIN
163#endif  // MIN
164
165// a と b の最小値を求める
166#define MIN(a, b)           ((a) >= (b) ? (b) : (a))
167// a と b の最大値を求める
168#define MAX(a, b)           ((a) >= (b) ? (a) : (b))
169
170// int を bool にする
171#define INT_TO_BOOL(i)      (((i) == 0) ? false : true)
172#define MAKEBOOL(i)         INT_TO_BOOL(i)
173#define BOOL_TO_INT(i)      (((i) == false) ? 0 : 1)
174
175// max_value よりも小さい a を返す
176#define LESS(a, max_value)  ((a) <= (max_value) ? (a) : (max_value))
177// min_value よりも大きい a を返す
178#define MORE(a, min_value)  ((a) >= (min_value) ? (a) : (min_value))
179// a が b と c の内部にある値かどうか調べる
180#define INNER(a, b, c)      (((b) <= (c) && (a) >= (b) && (a) <= (c)) || ((b) >= (c) && (a) >= (c) && (a) <= (b)))
181// a が b と c の外部にある値かどうか調べる
182#define OUTER(a, b, c)      (!INNER((a), (b), (c)))
183// a を b と c の間にある値となるように調整する
184#define MAKESURE(a, b, c)       (((b) <= (c)) ? (MORE(LESS((a), (c)), (b))) : (MORE(LESS((a), (b)), (c))))
185
186// ポインタを UINT にする
187#define POINTER_TO_KEY(p)       ((sizeof(void *) == sizeof(UINT)) ? (UINT)(p) : HashPtrToUINT(p))
188// UINT とポインタを比較する
189#define COMPARE_POINTER_AND_KEY(p, i)   (POINTER_TO_KEY(p) == (i))
190// ポインタを UINT64 にする
191#define POINTER_TO_UINT64(p)    (((sizeof(void *) == sizeof(UINT64)) ? (UINT64)(p) : (UINT64)((UINT)(p))))
192// UINT64 をポインタにする
193#define UINT64_TO_POINTER(i)    ((sizeof(void *) == sizeof(UINT64)) ? (void *)(i) : (void *)((UINT)(i)))
194
195//
196// 型宣言
197//
198
199// BOOL 型
200#ifndef WINDOWS_H
201typedef unsigned int        BOOL;
202#define TRUE                1
203#define FALSE               0
204#endif  // WINDOWS_H
205
206// bool 型
207#ifndef WIN32HTML_CPP
208typedef unsigned int        bool;
209#define true                1
210#define false               0
211#endif  // WIN32HTML_CPP
212
213// 32bit 整数型
214#ifndef WINDOWS_H
215typedef unsigned int        UINT;
216typedef unsigned int        UINT32;
217typedef unsigned int        DWORD;
218typedef signed int          INT;
219typedef signed int          INT32;
220
221typedef int                 UINT_PTR;
222typedef long                LONG_PTR;
223
224#endif
225
226// 16bit 整数型
227typedef unsigned short      WORD;
228typedef unsigned short      USHORT;
229typedef signed short        SHORT;
230
231// 8bit 整数型
232typedef unsigned char       BYTE;
233typedef unsigned char       UCHAR;
234
235#ifndef WIN32HTML_CPP
236typedef signed char         CHAR;
237#endif  // WIN32HTML_CPP
238
239
240// 64bit 整数型
241typedef unsigned long long  UINT64;
242typedef signed long long    INT64;
243
244#ifdef  OS_UNIX
245// コンパイルエラーの回避
246#define __cdecl
247#define __declspec(x)
248// socket 型
249typedef int SOCKET;
250#else   // OS_UNIX
251#ifndef _WINSOCK2API_
252typedef UINT_PTR SOCKET;
253#endif  // _WINSOCK2API_
254#endif  // OS_UNIX
255
256// OS の種類
257#define OSTYPE_WINDOWS_95                       1100    // Windows 95
258#define OSTYPE_WINDOWS_98                       1200    // Windows 98
259#define OSTYPE_WINDOWS_ME                       1300    // Windows Me
260#define OSTYPE_WINDOWS_UNKNOWN                  1400    // Windows (不明)
261#define OSTYPE_WINDOWS_NT_4_WORKSTATION         2100    // Windows NT 4.0 Workstation
262#define OSTYPE_WINDOWS_NT_4_SERVER              2110    // Windows NT 4.0 Server
263#define OSTYPE_WINDOWS_NT_4_SERVER_ENTERPRISE   2111    // Windows NT 4.0 Server, Enterprise Edition
264#define OSTYPE_WINDOWS_NT_4_TERMINAL_SERVER     2112    // Windows NT 4.0 Terminal Server
265#define OSTYPE_WINDOWS_NT_4_BACKOFFICE          2113    // BackOffice Server 4.5
266#define OSTYPE_WINDOWS_NT_4_SMS                 2114    // Small Business Server 4.5
267#define OSTYPE_WINDOWS_2000_PROFESSIONAL        2200    // Windows 2000 Professional
268#define OSTYPE_WINDOWS_2000_SERVER              2211    // Windows 2000 Server
269#define OSTYPE_WINDOWS_2000_ADVANCED_SERVER     2212    // Windows 2000 Advanced Server
270#define OSTYPE_WINDOWS_2000_DATACENTER_SERVER   2213    // Windows 2000 Datacenter Server
271#define OSTYPE_WINDOWS_2000_BACKOFFICE          2214    // BackOffice Server 2000
272#define OSTYPE_WINDOWS_2000_SBS                 2215    // Small Business Server 2000
273#define OSTYPE_WINDOWS_XP_HOME                  2300    // Windows XP Home Edition
274#define OSTYPE_WINDOWS_XP_PROFESSIONAL          2301    // Windows XP Professional
275#define OSTYPE_WINDOWS_2003_WEB                 2410    // Windows Server 2003 Web Edition
276#define OSTYPE_WINDOWS_2003_STANDARD            2411    // Windows Server 2003 Standard Edition
277#define OSTYPE_WINDOWS_2003_ENTERPRISE          2412    // Windows Server 2003 Enterprise Edition
278#define OSTYPE_WINDOWS_2003_DATACENTER          2413    // Windows Server 2003 DataCenter Edition
279#define OSTYPE_WINDOWS_2003_BACKOFFICE          2414    // BackOffice Server 2003
280#define OSTYPE_WINDOWS_2003_SBS                 2415    // Small Business Server 2003
281#define OSTYPE_WINDOWS_LONGHORN_PROFESSIONAL    2500    // Windows Vista
282#define OSTYPE_WINDOWS_LONGHORN_SERVER          2510    // Windows Server 2008
283#define OSTYPE_WINDOWS_7                        2600    // Windows 7
284#define OSTYPE_WINDOWS_SERVER_2008_R2           2610    // Windows Server 2008 R2
285#define OSTYPE_WINDOWS_8                        2700    // Windows 8
286#define OSTYPE_WINDOWS_SERVER_8                 2710    // Windows Server 8
287#define OSTYPE_UNIX_UNKNOWN                     3000    // 不明な UNIX
288#define OSTYPE_LINUX                            3100    // Linux
289#define OSTYPE_SOLARIS                          3200    // Solaris
290#define OSTYPE_CYGWIN                           3300    // Cygwin
291#define OSTYPE_BSD                              3400    // BSD
292#define OSTYPE_MACOS_X                          3500    // MacOS X
293
294
295// OS 判別用マクロ
296#define GET_KETA(t, i)          (((t) % (i * 10)) / i)
297#define OS_IS_WINDOWS_9X(t)     (GET_KETA(t, 1000) == 1)
298#define OS_IS_WINDOWS_NT(t)     (GET_KETA(t, 1000) == 2)
299#define OS_IS_WINDOWS(t)        (OS_IS_WINDOWS_9X(t) || OS_IS_WINDOWS_NT(t))
300#define OS_IS_SERVER(t)         (OS_IS_WINDOWS_NT(t) && GET_KETA(t, 10))
301#define OS_IS_WORKSTATION(t)    ((OS_IS_WINDOWS_NT(t) && (!(GET_KETA(t, 10)))) || OS_IS_WINDOWS_9X(t))
302#define OS_IS_UNIX(t)           (GET_KETA(t, 1000) == 3)
303
304
305// OS 情報
306typedef struct OS_INFO
307{
308    UINT OsType;                                // OS の種類
309    UINT OsServicePack;                         // サービスパック番号
310    char *OsSystemName;                         // OS システム名
311    char *OsProductName;                        // OS 製品名
312    char *OsVendorName;                         // OS ベンダ名
313    char *OsVersion;                            // OS バージョン
314    char *KernelName;                           // カーネル名
315    char *KernelVersion;                        // カーネルバージョン
316} OS_INFO;
317
318// 時刻型
319#ifndef WINDOWS_H
320typedef struct SYSTEMTIME
321{
322    WORD wYear;
323    WORD wMonth;
324    WORD wDayOfWeek;
325    WORD wDay;
326    WORD wHour;
327    WORD wMinute;
328    WORD wSecond;
329    WORD wMilliseconds;
330} SYSTEMTIME;
331#endif  // WINDOWS_H
332
333
334// Object.h
335typedef struct LOCK LOCK;
336typedef struct COUNTER COUNTER;
337typedef struct REF REF;
338typedef struct EVENT EVENT;
339typedef struct DEADCHECK DEADCHECK;
340
341// Tracking.h
342typedef struct CALLSTACK_DATA CALLSTACK_DATA;
343typedef struct TRACKING_OBJECT TRACKING_OBJECT;
344typedef struct MEMORY_STATUS MEMORY_STATUS;
345typedef struct TRACKING_LIST TRACKING_LIST;
346
347// FileIO.h
348typedef struct IO IO;
349
350// Memory.h
351typedef struct MEMTAG MEMTAG;
352typedef struct BUF BUF;
353typedef struct FIFO FIFO;
354typedef struct LIST LIST;
355typedef struct QUEUE QUEUE;
356typedef struct SK SK;
357typedef struct CANDIDATE CANDIDATE;
358typedef struct STRMAP_ENTRY STRMAP_ENTRY;
359
360// Str.h
361typedef struct TOKEN_LIST TOKEN_LIST;
362typedef struct INI_ENTRY INI_ENTRY;
363
364// Internat.h
365typedef struct UNI_TOKEN_LIST UNI_TOKEN_LIST;
366
367// Encrypt.h
368typedef struct CRYPT CRYPT;
369typedef struct NAME NAME;
370typedef struct X_SERIAL X_SERIAL;
371typedef struct X X;
372typedef struct K K;
373typedef struct P12 P12;
374typedef struct X_CRL X_CRL;
375
376// Secure.h
377typedef struct SECURE_DEVICE SECURE_DEVICE;
378typedef struct SEC_INFO SEC_INFO;
379typedef struct SECURE SECURE;
380typedef struct SEC_OBJ SEC_OBJ;
381
382// Kernel.h
383typedef struct MEMINFO MEMINFO;
384typedef struct LOCALE LOCALE;
385typedef struct THREAD THREAD;
386typedef struct THREAD_POOL_DATA THREAD_POOL_DATA;
387typedef struct INSTANCE INSTANCE;
388
389// Pack.h
390typedef struct VALUE VALUE;
391typedef struct ELEMENT ELEMENT;
392typedef struct PACK PACK;
393
394// Cfg.h
395typedef struct FOLDER FOLDER;
396typedef struct ITEM ITEM;
397typedef struct CFG_RW CFG_RW;
398typedef struct CFG_ENUM_PARAM CFG_ENUM_PARAM;
399
400// Table.h
401typedef struct TABLE TABLE;
402
403// Network.h
404typedef struct IP IP;
405typedef struct DNSCACHE DNSCACHE;
406typedef struct SOCK_EVENT SOCK_EVENT;
407typedef struct SOCK SOCK;
408typedef struct SOCKSET SOCKSET;
409typedef struct CANCEL CANCEL;
410typedef struct ROUTE_ENTRY ROUTE_ENTRY;
411typedef struct ROUTE_TABLE ROUTE_TABLE;
412//typedef struct SOCKLIST SOCKLIST;
413typedef struct IP_CLIENT IP_CLIENT;
414typedef struct ROUTE_CHANGE ROUTE_CHANGE;
415typedef struct ROUTE_CHANGE_DATA ROUTE_CHANGE_DATA;
416typedef struct GETIP_THREAD_PARAM GETIP_THREAD_PARAM;
417typedef struct WIN32_RELEASEADDRESS_THREAD_PARAM WIN32_RELEASEADDRESS_THREAD_PARAM;
418typedef struct IPV6_ADDR IPV6_ADDR;
419
420// Tick64.h
421typedef struct ADJUST_TIME ADJUST_TIME;
422typedef struct TICK64 TICK64;
423
424// FileIO.h
425typedef struct DIRENT DIRENT;
426typedef struct DIRLIST DIRLIST;
427
428
429
430
431#endif  // MAYATYPE_H
432
Note: See TracBrowser for help on using the repository browser.