/*---------------------------------------------------------------------------* Project: Horizon File: socket_Entry.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 $ *---------------------------------------------------------------------------*/ /** * GetInstanceOpt(), SetInstanceOpt()で使用する情報構造体 */ #ifndef NN_SOCKET_SOCKET_ENTRY_AUTOGEN_H_ #define NN_SOCKET_SOCKET_ENTRY_AUTOGEN_H_ #include /* for NN_SOCKET_IP_ALEN, NN_SOCKET_ETH_ALEN */ namespace nn { namespace socket { enum ArpState { ARP_STATE_INCOMPLETE = 1, //!< ARP解決実行中状態 ARP_STATE_REACHABLE = 2, //!< 到達可能状態 ARP_STATE_PROBE = 3 //!< 確認中状態 }; /** * GetInstanceOpt(), SetInstanceOpt()でCONFIG_ARP_TABLE使用時の構造体 */ struct ArpEntry { int state; //!< ARP_STATE_*のいずれか u8 prAddr[NN_SOCKET_IP_ALEN]; //!< IPアドレス u8 hwAddr[NN_SOCKET_ETH_ALEN]; //!< MACアドレス }; /** * GetInstanceOpt(), SetInstanceOpt()でCONFIG_IP_ADDR_TABLE 使用時の構造体 */ struct IpAddrEntry { u8 addr[NN_SOCKET_IP_ALEN]; //!< IPアドレス u8 netMask[NN_SOCKET_IP_ALEN]; //!< サブネットマスク u8 bcastAddr[NN_SOCKET_IP_ALEN]; //!< ブロードキャストアドレス }; enum IpRouteFlag { IP_ROUTE_FLAG_G = 0x01, //!< ルータからの情報により作成 IP_ROUTE_FLAG_D = 0x02, //!< ICMPにより作成 IP_ROUTE_FLAG_M = 0x04 //!< ICMPにより変更 }; /** * GetInstanceOpt(), SetInstanceOpt()でCONFIG_IP_ROUTING_TABLE 使用時の構造体 */ struct IpRouteEntry { u8 dst[NN_SOCKET_IP_ALEN]; //!< 宛先IPアドレス u8 netmask[NN_SOCKET_IP_ALEN]; //!< サブネットマスク u8 gateway[NN_SOCKET_IP_ALEN]; //!< next-hopゲートウエイ u32 flag; //!< IP_ROUTE_FLAG_XXX、SetInstanceOpt()では0を指定してください。 s64 time; //!< 最後にアクセスされた時刻(tick)、SetInstanceOpt()では0を指定してください。 }; #ifdef NN_SOCKET_IP6_ENABLE /** * GetInstanceOpt(), SetInstanceOpt()でCONFIG_IP6_ADD_ROUTE 使用時の構造体 */ struct Ip6RouteEntry { u8 prefix[NN_SOCKET_IP6_ALEN]; //!< プレフィックス u32 prefixLen; //!< プレフィックス長 u32 flag; //!< IP_ROUTE_FLAG_XXX、SetInstanceOpt()では0を指定してください。 u32 expireTime; //!< 期限切れとなる時刻(秒)、SetInstanceOpt()時は0を指定してください。 }; /** * GetInstanceOpt(), SetInstanceOpt()でCONFIG_IP6_ADD_ADDRESS、 * CONFIG_IP6_ADDR_TABLE 使用時の構造体 */ struct Ip6MyAddrEntry { u8 addr[NN_SOCKET_IP6_ALEN]; //!< アドレス u32 preferredTime; //!< Preferred Lifetime(秒) u32 validTime; //!< Valid Lifetime(秒) u32 state; //!< 自アドレスの状態 IP6_MYADR_ST_XXXX、SetInstanceOpt()時は0を指定してください。 Bool anycast; //!< エニーキャストアドレスか否か }; /** * GetInstanceOpt(), SetInstanceOpt()でCONFIG_IP6_ADD_PREFIX、 * CONFIG_IP6_PREFIX_TABLE 使用時の構造体 */ struct Ip6PrefixEntry { u8 prefix[NN_SOCKET_IP6_ALEN]; //!< プレフィックス u32 prefixLen; //!< プレフィックス長。GetInstanceOpt()時は1-64のビット長で指定してください。 u32 preferredTime; //!< Preferred Lifetime(秒) u32 validTime; //!< Valid Lifetime(秒) u8 flags; //!< NDP_OPT_PI_FLAG_XXXXのいずれか }; /** * GetInstanceOpt() * CONFIG_IP6_NEIGHBOR_CACHE_TABLE 使用時の構造体 */ struct Ip6NeighborCacheEntry { u8 addr[NN_SOCKET_IP6_ALEN]; //!< 近隣アドレス u32 state; //!< キャッシュの状態 NDP_NCST_XXXX Bool isRouter; //!< ルータか否か }; /** * GetInstanceOpt()で * CONFIG_IP6_DESTINATION_CACHE_TABLE 使用時の構造体 */ struct Ip6DestinationCacheEntry { u8 dst[NN_SOCKET_IP6_ALEN]; //!< 宛先アドレス u8 nextHop[NN_SOCKET_IP6_ALEN]; //!< 次ホップアドレス u32 pmtu; //!< パスMTU値 }; /** * GetInstanceOpt()で * CONFIG_IP6_DEFAULT_ROUTER_TABLE 使用時の構造体 */ struct Ip6DefaultRouterEntry { u8 addr[NN_SOCKET_IP6_ALEN]; //!< デフォルトルータアドレス }; #endif /* NN_SOCKET_IP6_ENABLE */ /** * GetInstanceOpt(), SetInstanceOpt()でCONFIG_UDP_TABLE 使用時の構造体 */ struct UdpEntry { SockAddrStorage local; //!< 自ソケットアドレス情報 SockAddrStorage remote; //!< 相手先ソケットアドレス情報 }; #define TCP_STATE_CLOSED 1 //!< CLOSEDステート #define TCP_STATE_LISTEN 2 //!< LISTENステート #define TCP_STATE_SYN_SENT 3 //!< SYN_SENTステート #define TCP_STATE_SYN_RECEIVED 4 //!< SYN_RECEIVED ステート #define TCP_STATE_ESTABLISHED 5 //!< ESTABLISHEDステート #define TCP_STATE_FINWAIT1 6 //!< FINWAIT_1ステート #define TCP_STATE_FINWAIT2 7 //!< FINWAIT_2ステート #define TCP_STATE_CLOSE_WAIT 8 //!< CLOSE_WAITステート #define TCP_STATE_LAST_ACK 9 //!< LAST_ACKステート #define TCP_STATE_CLOSING 10 //!< CLOSINGステート #define TCP_STATE_TIME_WAIT 11 //!< TIME_WAITステート /** * GetInstanceOpt(), SetInstanceOpt()でCONFIG_TCP_TABLE 使用時の構造体 */ struct TcpEntry { s32 state; //!< TCP_STATE_*のいずれか SockAddrStorage local; //!< 自ソケットアドレス情報 SockAddrStorage remote; //!< 相手先ソケットアドレス情報 }; } // socket } // nn #endif /* NN_SOCKET_SOCKET_ENTRY_AUTOGEN_H_ */