1 /*---------------------------------------------------------------------------*
2 Project: Horizon
3 File: socket_Admin.autogen.h
4
5 Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
6
7 These coded instructions, statements, and computer programs contain
8 proprietary information of Nintendo of America Inc. and/or Nintendo
9 Company Ltd., and are protected by Federal copyright law. They may
10 not be disclosed to third parties or copied or duplicated in any form,
11 in whole or in part, without the prior written consent of Nintendo.
12
13 $Rev: 27829 $
14 *---------------------------------------------------------------------------*/
15
16 /**
17 * モジュール 接続管理プロセス用定義
18 */
19
20 #ifndef NN_SOCKET_SOCKET_ADMIN_AUTOGEN_H_
21 #define NN_SOCKET_SOCKET_ADMIN_AUTOGEN_H_
22
23 #ifndef NN_SOCKET_NO_DEPEND_HEADER
24 #include <nn/types.h> /* for NOSxxxx */
25 #include <nn/net/compatible/nnet/nnet.h> /* for NNETxxxx */
26 #include <nn/socket/socket_User.autogen.h> /* for InAddr, DnsServerInfo */
27 #endif
28
29 namespace nn {
30 namespace socket {
31
32 /*---------------------------------------------------------------------------*
33 * Definitions
34 *---------------------------------------------------------------------------*/
35
36 #define NN_SOCKET_VENDOR_NINTENDO 0x0000 //!< 本実装が対応している設定のベンダーコード
37 #define NN_SOCKET_COMMON_CONF_VERSION 0x3100 //!< 本実装が対応している全体設定のバージョン
38 #define NN_SOCKET_INS_CONF_VERSION 0x4100 //!< 本実装が対応しているインスタンス設定のバージョン
39
40 /**
41 * モジュールのエラーコード
42 */
43 #define ERROR_BASE 0xffff8000
44 #define ERROR_CODE(code) ((s32)(ERROR_BASE|(code)))
45
46 enum ErrorCode {
47 ERR_PARAM = ERROR_CODE(1), //!< パラメータエラー
48 ERR_INIT = ERROR_CODE(2), //!< 初期状態のため実行不可
49 ERR_FINISH = ERROR_CODE(3), //!< 終了状態のため実行不可
50 ERR_CONFVER = ERROR_CODE(4), //!< 設定のバージョンエラー
51 ERR_STATE = ERROR_CODE(5), //!< ステートエラー
52 ERR_EXIST = ERROR_CODE(6), //!< 既に作成済み
53 ERR_NOMEM = ERROR_CODE(7), //!< メモリ不足
54 ERR_NOS = ERROR_CODE(8), //!< OSサービス関数がエラーを返した
55 ERR_LOWER = ERROR_CODE(9), //!< 下位レイヤからのエラー
56 ERR_TIMEOUT = ERROR_CODE(10), //!< タイムアウト
57 ERR_INS_RESOURCES = ERROR_CODE(11), //!< OSリソース確保失敗
58 ERR_MAXSOCKET = ERROR_CODE(12), //!< ソケット数が最大に達した
59 ERR_ABORT = ERROR_CODE(13), //!< アボートされた
60
61 ERR_IP_UNREACHABLE = ERROR_CODE(21), //!< 到達できなかった
62 ERR_IP_DATASIZE = ERROR_CODE(22), //!< データサイズ不正
63 ERR_IP_NETDOWN = ERROR_CODE(23), //!< ネットワークダウン
64 ERR_IP_INVALID = ERROR_CODE(24), //!< 不正パラメータ
65 ERR_IP_REFUSED = ERROR_CODE(25), //!< 処理の拒否
66 ERR_IP_TIMEOUT = ERROR_CODE(26), //!< タイムアウト
67 ERR_IP_CANCELED = ERROR_CODE(27), //!< キャンセル
68 ERR_IP_BUSY = ERROR_CODE(28), //!< ビジー
69 ERR_IP_CLOSING = ERROR_CODE(29), //!< ソケットを閉じた
70 ERR_IP_EXIST = ERROR_CODE(30), //!< 既に存在する
71 ERR_IP_RESET = ERROR_CODE(31), //!< リセットを受けた
72 ERR_IP_NOT_EXIST = ERROR_CODE(32), //!< 最早存在しない
73 ERR_IP_INV_SOCKET = ERROR_CODE(33), //!< 無効なソケット
74 ERR_IP_AGAIN = ERROR_CODE(34), //!< 実行中
75 ERR_IP_SOCKET_UNSPECIFIED = ERROR_CODE(35), //!< ソケットが指定されていない
76 ERR_IP_SOURCE_QUENCH = ERROR_CODE(36), //!< 送信抑制
77 ERR_IP_INV_OPTION = ERROR_CODE(37), //!< 不正なオプション
78 ERR_IP_ADDR_COLLISION = ERROR_CODE(38), //!< IPアドレス重複
79 ERR_IP_SHUTDOWN = ERROR_CODE(39), //!< シャットダウン状態
80 ERR_IP_INV_HEADER = ERROR_CODE(40), //!< 不正なIPヘッダ
81 ERR_IP_INV_ADDR = ERROR_CODE(41), //!< 不正なIPアドレス
82 ERR_IP_INV_DATA = ERROR_CODE(42), //!< 不正なIPデータ
83
84 ERR_DHCP_EXPIRED = ERROR_CODE(51), //!< DHCPリース時間満了
85 ERR_DHCP_TIMEOUT = ERROR_CODE(52), //!< DHCPタイムアウト
86 ERR_DHCP_NAK = ERROR_CODE(53), //!< DHCPのNAKを受信
87
88 ERR_IP6_ADDR_COLLISION = ERROR_CODE(60), //!< IPv6アドレス重複
89
90 ERR_NONE = 0 //!< 正常終了
91 };
92
93 /*---------------------------------------------------------------------------*
94 * Types/Declarations
95 *---------------------------------------------------------------------------*/
96 /**
97 * set_common_config()で使用するモジュール全体の設定構造体
98 */
99 struct CommonConfig {
100 u16 vendor; //!< ベンダーコード。VENDOR_NINTENDOを指定すること
101 u16 version; //!< バージョンコード。COMMON_CONF_VERSIONを指定すること
102
103 s32 timeWaitBuffer; //!< TCPのTIME-WAITソケットを保持するためのバッファサイズ
104
105 s32 reassembleMtu; //!< 再構築後の最大IPパケットサイズ
106
107 // TCP
108 s32 rwin; //!< TCP受信ウインドウサイズ(default 2 x MSS)
109 s32 r2; //!< TCP再送のトータル時間(default 100 sec)
110
111 // UDP
112 s32 udpRecvBuff; //!< UDP受信バッファサイズ(default 4416 byte)
113
114 // DHCP
115 const char* hostName; //!< DHCPで使用するホスト名へのポインタ
116 s32 rdhcp; //!< DHCP再送回数(default 4)
117
118 };
119
120 /*
121 * InstanceConfigのflagにセットするフラグ
122 */
123 enum InstanceConfigFlag {
124 FLAG_DHCP = 0x0001, //!< DHCPによるIPアドレス取得
125 FLAG_PPP = 0x0002, //!< PPPによるIPアドレス取得
126 FLAG_IP4 = 0x0004, //!< IPv4を有効にする
127 FLAG_IP6 = 0x0008, //!< IPv6を有効にする
128 FLAG_DHCP6 = 0x0010, //!< DHCPv6によるIPv6アドレス取得
129 FLAG_NORA_DHCP6 = 0x0020, //!< NDP RAが受信されないとき、DHCPv6を起動する
130 FLAG_DHCP_REBOOT = 0x0100, //!< DHCPでのIPアドレス取得失敗時に再度実行する
131 FLAG_DHCP_RELEASE = 0x0200, //!< CleanupIns()実行時に、DHCP Releaseを送信する
132 FLAG_DNS_AUTO = 0x1000, //!< DHCPやPPPで取得したDNSサーバを使用する
133 FLAG_ZEROCONF = 0x8000 //!< リンクローカルアドレスを取得する
134 };
135
136 /**
137 * SetInstanceConfig()で使用するインスタンスごとの設定
138 */
139 struct InstanceConfig {
140 u16 vendor; //!< ベンダーコード。VENDOR_NINTENDOを指定すること
141 u16 version; //!< バージョンコード。INS_CONF_VERSIONを指定すること
142
143 u32 flag; //!< フラグ。FLAG_XXXのORをとったもの
144 InAddr addr; //!< 自IPアドレス
145 InAddr netmask; //!< サブネットマスク
146 InAddr router; //!< デフォルトゲートウエイIPアドレス
147 s32 mtu; //!< MTUサイズ
148
149 DnsServerInfo dnsserver; //!< DNSサーバアドレスリスト
150
151 #ifdef NN_SOCKET_IP6_ENABLE
152 u8 curHopLimit; /* ホップリミット */
153 u32 retransTimer; /* NS再送間隔(msec) */
154 u32 dadNSTransmits; /* アドアレス重複検査用NS送信回数 */
155 u8 interfaceId[8]; /* インタフェースID */
156 #endif /* NN_SOCKET_IP6_ENABLE */
157 };
158
159 /**
160 * インスタンスで発生したエラーを通知するコールバック関数
161 */
162 typedef void (* ConfigErrorCallback )(InstancePtr insP, s32 err);
163
164 #ifndef NN_SOCKET_NO_DEPEND_HEADER
165 /**
166 * GetInstanceOpt(), SetInstanceOpt()でCONFIG_FILTER_INPUT/CONFIG_FILTER_OUTPUT使用時の型
167 */
168 typedef Bool (* Filter)(InstancePtr insP, NOSMessageBuf *mbuf);
169
170 /**
171 * インスタンスからNNETInstanceを取得する
172 */
GetNNETInstance(InstancePtr insP)173 NN_INLINE NNETInstance *GetNNETInstance(InstancePtr insP)
174 {
175 return (NNETInstance *)insP;
176 }
177
178 /**
179 * NNETInstanceからインスタンスを取得する
180 */
GetInstance(NNETInstance * ins)181 NN_INLINE InstancePtr GetInstance(NNETInstance *ins)
182 {
183 return (InstancePtr)ins;
184 }
185 #endif
186
187 /*---------------------------------------------------------------------------*
188 * Function Prototypes
189 *---------------------------------------------------------------------------*/
190 /* nsoc_main.c */
191
192 /* nsoc_socket.c */
193
194
195
196
197 } // socket
198 } // nn
199 /* NN_SOCKET_SOCKET_ADMIN_AUTOGEN_H_ */
200 #endif
201
202
203