* tar xzf utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz
[lab.git] / utvpn / utvpn-unix-v101-7101-public / src / Mayaqua / MayaType.h
diff --git a/utvpn/utvpn-unix-v101-7101-public/src/Mayaqua/MayaType.h b/utvpn/utvpn-unix-v101-7101-public/src/Mayaqua/MayaType.h
new file mode 100644 (file)
index 0000000..652d2bd
--- /dev/null
@@ -0,0 +1,432 @@
+// SoftEther UT-VPN SourceCode\r
+// \r
+// Copyright (C) 2004-2010 SoftEther Corporation.\r
+// Copyright (C) 2004-2010 University of Tsukuba, Japan.\r
+// Copyright (C) 2003-2010 Daiyuu Nobori.\r
+// All Rights Reserved.\r
+// \r
+// http://utvpn.tsukuba.ac.jp/\r
+// \r
+// This program is free software; you can redistribute it and/or\r
+// modify it under the terms of the GNU General Public License\r
+// version 2 as published by the Free Software Foundation.\r
+// \r
+// This program is distributed in the hope that it will be useful,\r
+// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+// GNU General Public License for more details.\r
+// \r
+// You should have received a copy of the GNU General Public License version 2\r
+// along with this program; if not, write to the Free Software\r
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
+// \r
+// このファイルは GPL バージョン 2 ライセンスで公開されています。\r
+// 誰でもこのファイルの内容を複製、改変したり、改変したバージョンを再配布\r
+// することができます。ただし、原著作物を改変した場合は、原著作物の著作権表示\r
+// を除去することはできません。改変した著作物を配布する場合は、改変実施者の\r
+// 著作権表示を原著作物の著作権表示に付随して記載するようにしてください。\r
+// \r
+// この SoftEther UT-VPN オープンソース・プロジェクトは、日本国の\r
+// ソフトイーサ株式会社 (SoftEther Corporation, http://www.softether.co.jp/ )\r
+// および筑波大学 (University of Tsukuba, http://www.tsukuba.ac.jp/ ) によって\r
+// ホストされています。\r
+// 本プログラムの配布者は、本プログラムを、業としての利用以外のため、\r
+// および、試験または研究のために利用が行われることを想定して配布\r
+// しています。\r
+// SoftEther UT-VPN プロジェクトの Web サイトは http://utvpn.tsukuba.ac.jp/ に\r
+// あります。\r
+// 本ソフトウェアの不具合の修正、機能改良、セキュリティホールの修復などのコード\r
+// の改変を行った場合で、その成果物を SoftEther UT-VPN プロジェクトに提出して\r
+// いただける場合は、 http://utvpn.tsukuba.ac.jp/ までソースコードを送付して\r
+// ください。SoftEther UT-VPN プロジェクトの本体リリースまたはブランチリリース\r
+// に組み込みさせていただきます。\r
+// \r
+// GPL に基づいて原著作物が提供される本ソフトウェアの改良版を配布、販売する\r
+// 場合は、そのソースコードを GPL に基づいて誰にでも開示する義務が生じます。\r
+// \r
+// 本ソフトウェアに関連する著作権、特許権、商標権はソフトイーサ株式会社\r
+// (SoftEther Corporation) およびその他の著作権保持者が保有しています。\r
+// ソフトイーサ株式会社等はこれらの権利を放棄していません。本ソフトウェアの\r
+// 二次著作物を配布、販売する場合は、これらの権利を侵害しないようにご注意\r
+// ください。\r
+// \r
+// お願い: どのような通信ソフトウェアにも通常は必ず未発見の\r
+// セキュリティホールが潜んでいます。本ソースコードをご覧いただいた結果、\r
+// UT-VPN にセキュリティホールを発見された場合は、当該セキュリティホールの\r
+// 情報を不特定多数に開示される前に、必ず、ソフトイーサ株式会社\r
+// および脆弱性情報の届出を受け付ける公的機関まで通報いただき、\r
+// 公益保護にご協力いただきますようお願い申し上げます。\r
+// \r
+// ソフトイーサ株式会社は、当該セキュリティホールについて迅速に対処を\r
+// 行い、UT-VPN および UT-VPN に関連するソフトウェアのユーザー・顧客\r
+// を保護するための努力を行います。\r
+// \r
+// ソフトイーサへの届出先: http://www.softether.co.jp/jp/contact/\r
+// 日本国内の脆弱性情報届出受付公的機関:\r
+//         独立行政法人 情報処理推進機構\r
+//         http://www.ipa.go.jp/security/vuln/report/\r
+// \r
+// 上記各事項について不明な点は、ソフトイーサ株式会社までご連絡ください。\r
+// 連絡先: http://www.softether.co.jp/jp/contact/\r
+\r
+// -----------------------------------------------\r
+// [ChangeLog]\r
+// 2010.05.20\r
+//  新規リリース by SoftEther\r
+// -----------------------------------------------\r
+\r
+// MayaType.h\r
+// Mayaqua Kernel 型宣言ヘッダファイル\r
+\r
+#ifndef        MAYATYPE_H\r
+#define        MAYATYPE_H\r
+\r
+// windows.h ヘッダが include されているかどうかをチェック\r
+#ifndef        WINDOWS_H\r
+#ifdef _WINDOWS_\r
+#define        WINDOWS_H\r
+#endif // _WINDOWS_\r
+#endif // WINDOWS_H\r
+\r
+\r
+#if    !defined(ENCRYPT_C) && !defined(HAM_C)\r
+// OpenSSL が使用する構造体\r
+typedef struct x509_st X509;\r
+typedef struct evp_pkey_st EVP_PKEY;\r
+typedef struct bio_st BIO;\r
+typedef struct ssl_st SSL;\r
+typedef struct ssl_ctx_st SSL_CTX;\r
+typedef struct X509_req_st X509_REQ;\r
+typedef struct PKCS12 PKCS12;\r
+typedef struct bignum_st BIGNUM;\r
+typedef struct x509_crl_st X509_CRL;\r
+#endif // ENCRYPT_C\r
+\r
+// \r
+// 定数\r
+// \r
+\r
+// 標準のバッファサイズ\r
+#define        STD_SIZE                        512\r
+#define        MAX_SIZE                        512\r
+#define        BUF_SIZE                        512\r
+\r
+// 対応 Windows OS 一覧\r
+#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"\r
+\r
+// 無限\r
+#ifndef        WINDOWS_H\r
+#define        INFINITE                        (0xFFFFFFFF)\r
+#endif\r
+\r
+\r
+#define        SRC_NAME                        __FILE__        // ソースコードのファイル名\r
+#define        SRC_LINE                        __LINE__        // ソースコード中の行番号\r
+\r
+// 最大パスサイズ\r
+#ifndef        WINDOWS_H\r
+#define        MAX_PATH                        260\r
+#endif // WINDOWS_H\r
+\r
+// シークの種類\r
+#ifndef        FILE_BEGIN\r
+#define        FILE_BEGIN      SEEK_SET\r
+#endif // FILE_BEGIN\r
+#ifndef        FILE_END\r
+#define        FILE_END        SEEK_END\r
+#endif // FILE_END\r
+#ifndef        FILE_CURRENT\r
+#define        FILE_CURRENT    SEEK_CUR\r
+#endif // FILE_CURRENT\r
+\r
+#ifndef        INVALID_SOCKET\r
+#define        INVALID_SOCKET          (-1)\r
+#endif // INVALID_SOCKET\r
+\r
+#ifndef        SOCKET_ERROR\r
+#define        SOCKET_ERROR            (-1)\r
+#endif //SOCKET_ERROR\r
+\r
+// 比較関数\r
+typedef int (COMPARE)(void *p1, void *p2);\r
+\r
+// \r
+// マクロ\r
+\r
+\r
+#ifdef MAX\r
+#undef MAX\r
+#endif // MAX\r
+\r
+#ifdef MIN\r
+#undef MIN\r
+#endif // MIN\r
+\r
+// a と b の最小値を求める\r
+#define        MIN(a, b)                       ((a) >= (b) ? (b) : (a))\r
+// a と b の最大値を求める\r
+#define        MAX(a, b)                       ((a) >= (b) ? (a) : (b))\r
+\r
+// int を bool にする\r
+#define        INT_TO_BOOL(i)          (((i) == 0) ? false : true)\r
+#define        MAKEBOOL(i)                     INT_TO_BOOL(i)\r
+#define        BOOL_TO_INT(i)          (((i) == false) ? 0 : 1)\r
+\r
+// max_value よりも小さい a を返す\r
+#define        LESS(a, max_value)      ((a) <= (max_value) ? (a) : (max_value))\r
+// min_value よりも大きい a を返す\r
+#define        MORE(a, min_value)      ((a) >= (min_value) ? (a) : (min_value))\r
+// a が b と c の内部にある値かどうか調べる\r
+#define        INNER(a, b, c)          (((b) <= (c) && (a) >= (b) && (a) <= (c)) || ((b) >= (c) && (a) >= (c) && (a) <= (b)))\r
+// a が b と c の外部にある値かどうか調べる\r
+#define        OUTER(a, b, c)          (!INNER((a), (b), (c)))\r
+// a を b と c の間にある値となるように調整する\r
+#define        MAKESURE(a, b, c)               (((b) <= (c)) ? (MORE(LESS((a), (c)), (b))) : (MORE(LESS((a), (b)), (c))))\r
+\r
+// ポインタを UINT にする\r
+#define        POINTER_TO_KEY(p)               ((sizeof(void *) == sizeof(UINT)) ? (UINT)(p) : HashPtrToUINT(p))\r
+// UINT とポインタを比較する\r
+#define        COMPARE_POINTER_AND_KEY(p, i)   (POINTER_TO_KEY(p) == (i))\r
+// ポインタを UINT64 にする\r
+#define        POINTER_TO_UINT64(p)    (((sizeof(void *) == sizeof(UINT64)) ? (UINT64)(p) : (UINT64)((UINT)(p))))\r
+// UINT64 をポインタにする\r
+#define        UINT64_TO_POINTER(i)    ((sizeof(void *) == sizeof(UINT64)) ? (void *)(i) : (void *)((UINT)(i)))\r
+\r
+// \r
+// 型宣言\r
+// \r
+\r
+// BOOL 型\r
+#ifndef        WINDOWS_H\r
+typedef        unsigned int            BOOL;\r
+#define        TRUE                            1\r
+#define        FALSE                           0\r
+#endif // WINDOWS_H\r
+\r
+// bool 型\r
+#ifndef        WIN32HTML_CPP\r
+typedef        unsigned int            bool;\r
+#define        true                            1\r
+#define        false                           0\r
+#endif // WIN32HTML_CPP\r
+\r
+// 32bit 整数型\r
+#ifndef        WINDOWS_H\r
+typedef        unsigned int            UINT;\r
+typedef        unsigned int            UINT32;\r
+typedef        unsigned int            DWORD;\r
+typedef        signed int                      INT;\r
+typedef        signed int                      INT32;\r
+\r
+typedef        int                                     UINT_PTR;\r
+typedef        long                            LONG_PTR;\r
+\r
+#endif\r
+\r
+// 16bit 整数型\r
+typedef        unsigned short          WORD;\r
+typedef        unsigned short          USHORT;\r
+typedef        signed short            SHORT;\r
+\r
+// 8bit 整数型\r
+typedef        unsigned char           BYTE;\r
+typedef        unsigned char           UCHAR;\r
+\r
+#ifndef        WIN32HTML_CPP\r
+typedef signed char                    CHAR;\r
+#endif // WIN32HTML_CPP\r
+\r
+\r
+// 64bit 整数型\r
+typedef        unsigned long long      UINT64;\r
+typedef signed long long       INT64;\r
+\r
+#ifdef OS_UNIX\r
+// コンパイルエラーの回避\r
+#define        __cdecl\r
+#define        __declspec(x)\r
+// socket 型\r
+typedef        int SOCKET;\r
+#else  // OS_UNIX\r
+#ifndef        _WINSOCK2API_\r
+typedef UINT_PTR SOCKET;\r
+#endif // _WINSOCK2API_\r
+#endif // OS_UNIX\r
+\r
+// OS の種類\r
+#define        OSTYPE_WINDOWS_95                                               1100    // Windows 95\r
+#define        OSTYPE_WINDOWS_98                                               1200    // Windows 98\r
+#define        OSTYPE_WINDOWS_ME                                               1300    // Windows Me\r
+#define        OSTYPE_WINDOWS_UNKNOWN                                  1400    // Windows (不明)\r
+#define        OSTYPE_WINDOWS_NT_4_WORKSTATION                 2100    // Windows NT 4.0 Workstation\r
+#define        OSTYPE_WINDOWS_NT_4_SERVER                              2110    // Windows NT 4.0 Server\r
+#define        OSTYPE_WINDOWS_NT_4_SERVER_ENTERPRISE   2111    // Windows NT 4.0 Server, Enterprise Edition\r
+#define        OSTYPE_WINDOWS_NT_4_TERMINAL_SERVER             2112    // Windows NT 4.0 Terminal Server\r
+#define        OSTYPE_WINDOWS_NT_4_BACKOFFICE                  2113    // BackOffice Server 4.5\r
+#define        OSTYPE_WINDOWS_NT_4_SMS                                 2114    // Small Business Server 4.5\r
+#define        OSTYPE_WINDOWS_2000_PROFESSIONAL                2200    // Windows 2000 Professional\r
+#define        OSTYPE_WINDOWS_2000_SERVER                              2211    // Windows 2000 Server\r
+#define        OSTYPE_WINDOWS_2000_ADVANCED_SERVER             2212    // Windows 2000 Advanced Server\r
+#define        OSTYPE_WINDOWS_2000_DATACENTER_SERVER   2213    // Windows 2000 Datacenter Server\r
+#define        OSTYPE_WINDOWS_2000_BACKOFFICE                  2214    // BackOffice Server 2000\r
+#define        OSTYPE_WINDOWS_2000_SBS                                 2215    // Small Business Server 2000\r
+#define        OSTYPE_WINDOWS_XP_HOME                                  2300    // Windows XP Home Edition\r
+#define        OSTYPE_WINDOWS_XP_PROFESSIONAL                  2301    // Windows XP Professional\r
+#define        OSTYPE_WINDOWS_2003_WEB                                 2410    // Windows Server 2003 Web Edition\r
+#define        OSTYPE_WINDOWS_2003_STANDARD                    2411    // Windows Server 2003 Standard Edition\r
+#define        OSTYPE_WINDOWS_2003_ENTERPRISE                  2412    // Windows Server 2003 Enterprise Edition\r
+#define        OSTYPE_WINDOWS_2003_DATACENTER                  2413    // Windows Server 2003 DataCenter Edition\r
+#define        OSTYPE_WINDOWS_2003_BACKOFFICE                  2414    // BackOffice Server 2003\r
+#define        OSTYPE_WINDOWS_2003_SBS                                 2415    // Small Business Server 2003\r
+#define        OSTYPE_WINDOWS_LONGHORN_PROFESSIONAL    2500    // Windows Vista\r
+#define        OSTYPE_WINDOWS_LONGHORN_SERVER                  2510    // Windows Server 2008\r
+#define        OSTYPE_WINDOWS_7                                                2600    // Windows 7\r
+#define        OSTYPE_WINDOWS_SERVER_2008_R2                   2610    // Windows Server 2008 R2\r
+#define        OSTYPE_WINDOWS_8                                                2700    // Windows 8\r
+#define        OSTYPE_WINDOWS_SERVER_8                                 2710    // Windows Server 8\r
+#define        OSTYPE_UNIX_UNKNOWN                                             3000    // 不明な UNIX\r
+#define        OSTYPE_LINUX                                                    3100    // Linux\r
+#define        OSTYPE_SOLARIS                                                  3200    // Solaris\r
+#define        OSTYPE_CYGWIN                                                   3300    // Cygwin\r
+#define        OSTYPE_BSD                                                              3400    // BSD\r
+#define        OSTYPE_MACOS_X                                                  3500    // MacOS X\r
+\r
+\r
+// OS 判別用マクロ\r
+#define        GET_KETA(t, i)                  (((t) % (i * 10)) / i)\r
+#define        OS_IS_WINDOWS_9X(t)             (GET_KETA(t, 1000) == 1)\r
+#define        OS_IS_WINDOWS_NT(t)             (GET_KETA(t, 1000) == 2)\r
+#define        OS_IS_WINDOWS(t)                (OS_IS_WINDOWS_9X(t) || OS_IS_WINDOWS_NT(t))\r
+#define        OS_IS_SERVER(t)                 (OS_IS_WINDOWS_NT(t) && GET_KETA(t, 10))\r
+#define        OS_IS_WORKSTATION(t)    ((OS_IS_WINDOWS_NT(t) && (!(GET_KETA(t, 10)))) || OS_IS_WINDOWS_9X(t))\r
+#define        OS_IS_UNIX(t)                   (GET_KETA(t, 1000) == 3)\r
+\r
+\r
+// OS 情報\r
+typedef struct OS_INFO\r
+{\r
+       UINT OsType;                                                            // OS の種類\r
+       UINT OsServicePack;                                                     // サービスパック番号\r
+       char *OsSystemName;                                                     // OS システム名\r
+       char *OsProductName;                                            // OS 製品名\r
+       char *OsVendorName;                                                     // OS ベンダ名\r
+       char *OsVersion;                                                        // OS バージョン\r
+       char *KernelName;                                                       // カーネル名\r
+       char *KernelVersion;                                            // カーネルバージョン\r
+} OS_INFO;\r
+\r
+// 時刻型\r
+#ifndef        WINDOWS_H\r
+typedef struct SYSTEMTIME\r
+{\r
+       WORD wYear;\r
+       WORD wMonth;\r
+       WORD wDayOfWeek;\r
+       WORD wDay;\r
+       WORD wHour;\r
+       WORD wMinute;\r
+       WORD wSecond;\r
+       WORD wMilliseconds;\r
+} SYSTEMTIME;\r
+#endif // WINDOWS_H\r
+\r
+\r
+// Object.h\r
+typedef struct LOCK LOCK;\r
+typedef struct COUNTER COUNTER;\r
+typedef struct REF REF;\r
+typedef struct EVENT EVENT;\r
+typedef struct DEADCHECK DEADCHECK;\r
+\r
+// Tracking.h\r
+typedef struct CALLSTACK_DATA CALLSTACK_DATA;\r
+typedef struct TRACKING_OBJECT TRACKING_OBJECT;\r
+typedef struct MEMORY_STATUS MEMORY_STATUS;\r
+typedef struct TRACKING_LIST TRACKING_LIST;\r
+\r
+// FileIO.h\r
+typedef struct IO IO;\r
+\r
+// Memory.h\r
+typedef struct MEMTAG MEMTAG;\r
+typedef struct BUF BUF;\r
+typedef struct FIFO FIFO;\r
+typedef struct LIST LIST;\r
+typedef struct QUEUE QUEUE;\r
+typedef struct SK SK;\r
+typedef struct CANDIDATE CANDIDATE;\r
+typedef struct STRMAP_ENTRY STRMAP_ENTRY;\r
+\r
+// Str.h\r
+typedef struct TOKEN_LIST TOKEN_LIST;\r
+typedef struct INI_ENTRY INI_ENTRY;\r
+\r
+// Internat.h\r
+typedef struct UNI_TOKEN_LIST UNI_TOKEN_LIST;\r
+\r
+// Encrypt.h\r
+typedef struct CRYPT CRYPT;\r
+typedef struct NAME NAME;\r
+typedef struct X_SERIAL X_SERIAL;\r
+typedef struct X X;\r
+typedef struct K K;\r
+typedef struct P12 P12;\r
+typedef struct X_CRL X_CRL;\r
+\r
+// Secure.h\r
+typedef struct SECURE_DEVICE SECURE_DEVICE;\r
+typedef struct SEC_INFO SEC_INFO;\r
+typedef struct SECURE SECURE;\r
+typedef struct SEC_OBJ SEC_OBJ;\r
+\r
+// Kernel.h\r
+typedef struct MEMINFO MEMINFO;\r
+typedef struct LOCALE LOCALE;\r
+typedef struct THREAD THREAD;\r
+typedef struct THREAD_POOL_DATA THREAD_POOL_DATA;\r
+typedef struct INSTANCE INSTANCE;\r
+\r
+// Pack.h\r
+typedef struct VALUE VALUE;\r
+typedef struct ELEMENT ELEMENT;\r
+typedef struct PACK PACK;\r
+\r
+// Cfg.h\r
+typedef struct FOLDER FOLDER;\r
+typedef struct ITEM ITEM;\r
+typedef struct CFG_RW CFG_RW;\r
+typedef struct CFG_ENUM_PARAM CFG_ENUM_PARAM;\r
+\r
+// Table.h\r
+typedef struct TABLE TABLE;\r
+\r
+// Network.h\r
+typedef struct IP IP;\r
+typedef struct DNSCACHE DNSCACHE;\r
+typedef struct SOCK_EVENT SOCK_EVENT;\r
+typedef struct SOCK SOCK;\r
+typedef struct SOCKSET SOCKSET;\r
+typedef struct CANCEL CANCEL;\r
+typedef struct ROUTE_ENTRY ROUTE_ENTRY;\r
+typedef struct ROUTE_TABLE ROUTE_TABLE;\r
+//typedef struct SOCKLIST SOCKLIST;\r
+typedef struct IP_CLIENT IP_CLIENT;\r
+typedef struct ROUTE_CHANGE ROUTE_CHANGE;\r
+typedef struct ROUTE_CHANGE_DATA ROUTE_CHANGE_DATA;\r
+typedef struct GETIP_THREAD_PARAM GETIP_THREAD_PARAM;\r
+typedef struct WIN32_RELEASEADDRESS_THREAD_PARAM WIN32_RELEASEADDRESS_THREAD_PARAM;\r
+typedef struct IPV6_ADDR IPV6_ADDR;\r
+\r
+// Tick64.h\r
+typedef struct ADJUST_TIME ADJUST_TIME;\r
+typedef struct TICK64 TICK64;\r
+\r
+// FileIO.h\r
+typedef struct DIRENT DIRENT;\r
+typedef struct DIRLIST DIRLIST;\r
+\r
+\r
+\r
+\r
+#endif // MAYATYPE_H\r
+\r