/*---------------------------------------------------------------------------* Project: Horizon File: socket_Admin.autogen.h Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev: 26749 $ *---------------------------------------------------------------------------*/ /** * モジュール 接続管理プロセス用定義 */ #ifndef NN_SOCKET_SOCKET_ADMIN_AUTOGEN_H_ #define NN_SOCKET_SOCKET_ADMIN_AUTOGEN_H_ #ifndef NN_SOCKET_NO_DEPEND_HEADER #include /* for NOSxxxx */ #include /* for NNETxxxx */ #include /* for InAddr, DnsServerInfo */ #endif namespace nn { namespace socket { /*---------------------------------------------------------------------------* * Definitions *---------------------------------------------------------------------------*/ #define NN_SOCKET_VENDOR_NINTENDO 0x0000 //!< 本実装が対応している設定のベンダーコード #define NN_SOCKET_COMMON_CONF_VERSION 0x3100 //!< 本実装が対応している全体設定のバージョン #define NN_SOCKET_INS_CONF_VERSION 0x4100 //!< 本実装が対応しているインスタンス設定のバージョン /** * モジュールのエラーコード */ #define ERROR_BASE 0xffff8000 #define ERROR_CODE(code) ((s32)(ERROR_BASE|(code))) enum ErrorCode { ERR_PARAM = ERROR_CODE(1), //!< パラメータエラー ERR_INIT = ERROR_CODE(2), //!< 初期状態のため実行不可 ERR_FINISH = ERROR_CODE(3), //!< 終了状態のため実行不可 ERR_CONFVER = ERROR_CODE(4), //!< 設定のバージョンエラー ERR_STATE = ERROR_CODE(5), //!< ステートエラー ERR_EXIST = ERROR_CODE(6), //!< 既に作成済み ERR_NOMEM = ERROR_CODE(7), //!< メモリ不足 ERR_NOS = ERROR_CODE(8), //!< OSサービス関数がエラーを返した ERR_LOWER = ERROR_CODE(9), //!< 下位レイヤからのエラー ERR_TIMEOUT = ERROR_CODE(10), //!< タイムアウト ERR_INS_RESOURCES = ERROR_CODE(11), //!< OSリソース確保失敗 ERR_MAXSOCKET = ERROR_CODE(12), //!< ソケット数が最大に達した ERR_ABORT = ERROR_CODE(13), //!< アボートされた ERR_IP_UNREACHABLE = ERROR_CODE(21), //!< 到達できなかった ERR_IP_DATASIZE = ERROR_CODE(22), //!< データサイズ不正 ERR_IP_NETDOWN = ERROR_CODE(23), //!< ネットワークダウン ERR_IP_INVALID = ERROR_CODE(24), //!< 不正パラメータ ERR_IP_REFUSED = ERROR_CODE(25), //!< 処理の拒否 ERR_IP_TIMEOUT = ERROR_CODE(26), //!< タイムアウト ERR_IP_CANCELED = ERROR_CODE(27), //!< キャンセル ERR_IP_BUSY = ERROR_CODE(28), //!< ビジー ERR_IP_CLOSING = ERROR_CODE(29), //!< ソケットを閉じた ERR_IP_EXIST = ERROR_CODE(30), //!< 既に存在する ERR_IP_RESET = ERROR_CODE(31), //!< リセットを受けた ERR_IP_NOT_EXIST = ERROR_CODE(32), //!< 最早存在しない ERR_IP_INV_SOCKET = ERROR_CODE(33), //!< 無効なソケット ERR_IP_AGAIN = ERROR_CODE(34), //!< 実行中 ERR_IP_SOCKET_UNSPECIFIED = ERROR_CODE(35), //!< ソケットが指定されていない ERR_IP_SOURCE_QUENCH = ERROR_CODE(36), //!< 送信抑制 ERR_IP_INV_OPTION = ERROR_CODE(37), //!< 不正なオプション ERR_IP_ADDR_COLLISION = ERROR_CODE(38), //!< IPアドレス重複 ERR_IP_SHUTDOWN = ERROR_CODE(39), //!< シャットダウン状態 ERR_IP_INV_HEADER = ERROR_CODE(40), //!< 不正なIPヘッダ ERR_IP_INV_ADDR = ERROR_CODE(41), //!< 不正なIPアドレス ERR_IP_INV_DATA = ERROR_CODE(42), //!< 不正なIPデータ ERR_DHCP_EXPIRED = ERROR_CODE(51), //!< DHCPリース時間満了 ERR_DHCP_TIMEOUT = ERROR_CODE(52), //!< DHCPタイムアウト ERR_DHCP_NAK = ERROR_CODE(53), //!< DHCPのNAKを受信 ERR_IP6_ADDR_COLLISION = ERROR_CODE(60), //!< IPv6アドレス重複 ERR_NONE = 0 //!< 正常終了 }; /*---------------------------------------------------------------------------* * Types/Declarations *---------------------------------------------------------------------------*/ /** * set_common_config()で使用するモジュール全体の設定構造体 */ struct CommonConfig { u16 vendor; //!< ベンダーコード。VENDOR_NINTENDOを指定すること u16 version; //!< バージョンコード。COMMON_CONF_VERSIONを指定すること s32 timeWaitBuffer; //!< TCPのTIME-WAITソケットを保持するためのバッファサイズ s32 reassembleMtu; //!< 再構築後の最大IPパケットサイズ // TCP s32 rwin; //!< TCP受信ウインドウサイズ(default 2 x MSS) s32 r2; //!< TCP再送のトータル時間(default 100 sec) // UDP s32 udpRecvBuff; //!< UDP受信バッファサイズ(default 4416 byte) // DHCP const char* hostName; //!< DHCPで使用するホスト名へのポインタ s32 rdhcp; //!< DHCP再送回数(default 4) }; /* * InstanceConfigのflagにセットするフラグ */ enum InstanceConfigFlag { FLAG_DHCP = 0x0001, //!< DHCPによるIPアドレス取得 FLAG_PPP = 0x0002, //!< PPPによるIPアドレス取得 FLAG_IP4 = 0x0004, //!< IPv4を有効にする FLAG_IP6 = 0x0008, //!< IPv6を有効にする FLAG_DHCP6 = 0x0010, //!< DHCPv6によるIPv6アドレス取得 FLAG_NORA_DHCP6 = 0x0020, //!< NDP RAが受信されないとき、DHCPv6を起動する FLAG_DHCP_REBOOT = 0x0100, //!< DHCPでのIPアドレス取得失敗時に再度実行する FLAG_DNS_AUTO = 0x1000, //!< DHCPやPPPで取得したDNSサーバを使用する FLAG_ZEROCONF = 0x8000 //!< リンクローカルアドレスを取得する }; /** * SetInstanceConfig()で使用するインスタンスごとの設定 */ struct InstanceConfig { u16 vendor; //!< ベンダーコード。VENDOR_NINTENDOを指定すること u16 version; //!< バージョンコード。INS_CONF_VERSIONを指定すること u32 flag; //!< フラグ。FLAG_XXXのORをとったもの InAddr addr; //!< 自IPアドレス InAddr netmask; //!< サブネットマスク InAddr router; //!< デフォルトゲートウエイIPアドレス s32 mtu; //!< MTUサイズ DnsServerInfo dnsserver; //!< DNSサーバアドレスリスト #ifdef NN_SOCKET_IP6_ENABLE u8 curHopLimit; /* ホップリミット */ u32 retransTimer; /* NS再送間隔(msec) */ u32 dadNSTransmits; /* アドアレス重複検査用NS送信回数 */ u8 interfaceId[8]; /* インタフェースID */ #endif /* NN_SOCKET_IP6_ENABLE */ }; typedef void (* ConfigErrorCallback )(InstancePtr insP, s32 err); #ifndef NN_SOCKET_NO_DEPEND_HEADER /** * GetInstanceOpt(), SetInstanceOpt()でCONFIG_FILTER_INPUT/CONFIG_FILTER_OUTPUT使用時の型 */ typedef Bool (* Filter)(InstancePtr insP, NOSMessageBuf *mbuf); /** * インスタンスからNNETInstanceを取得する */ NN_INLINE NNETInstance *GetNNETInstance(InstancePtr insP) { return (NNETInstance *)insP; } /** * NNETInstanceからインスタンスを取得する */ NN_INLINE InstancePtr GetInstance(NNETInstance *ins) { return (InstancePtr)ins; } #endif /*---------------------------------------------------------------------------* * Function Prototypes *---------------------------------------------------------------------------*/ /* nsoc_main.c */ /* nsoc_socket.c */ } // socket } // nn /* NN_SOCKET_SOCKET_ADMIN_AUTOGEN_H_ */ #endif