1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: nsoc_entry.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 * @file nsoc_entry.h 18 * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()で使用する情報構造体 19 */ 20 21 #ifndef __NSOC_ENTRY_H__ 22 #define __NSOC_ENTRY_H__ 23 24 #include <nn/net/compatible/nsoc/nsoc_user.h> /* for NSOC_IP_ALEN, NSOC_ETH_ALEN */ 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 enum NSOCARPState { 31 NSOC_ARP_STATE_INCOMPLETE = 1, /**< ARP解決実行中状態 */ 32 NSOC_ARP_STATE_REACHABLE = 2, /**< 到達可能状態 */ 33 NSOC_ARP_STATE_PROBE = 3 /**< 確認中状態 */ 34 }; 35 36 /** 37 * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_ARP_TABLE使用時の構造体 38 */ 39 typedef struct NSOCARPEntry 40 { 41 int state; /**< NSOC_ARP_STATE_*のいずれか */ 42 u8 prAddr[NSOC_IP_ALEN]; /**< IPアドレス */ 43 u8 hwAddr[NSOC_ETH_ALEN]; /**< MACアドレス */ 44 } NSOCARPEntry; 45 46 47 /** 48 * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_IP_ADDR_TABLE 使用時の構造体 49 */ 50 typedef struct NSOCIPAddrEntry 51 { 52 u8 addr[NSOC_IP_ALEN]; /**< IPアドレス */ 53 u8 netMask[NSOC_IP_ALEN]; /**< サブネットマスク */ 54 u8 bcastAddr[NSOC_IP_ALEN]; /**< ブロードキャストアドレス */ 55 } NSOCIPAddrEntry; 56 57 enum NSOCIPRouteFlag { 58 NSOC_IP_ROUTE_FLAG_G = 0x01, /**< ルータからの情報により作成 */ 59 NSOC_IP_ROUTE_FLAG_D = 0x02, /**< ICMPにより作成 */ 60 NSOC_IP_ROUTE_FLAG_M = 0x04 /**< ICMPにより変更 */ 61 }; 62 63 /** 64 * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_IP_ROUTING_TABLE 使用時の構造体 65 */ 66 typedef struct NSOCIPRouteEntry 67 { 68 u8 dst[NSOC_IP_ALEN]; /**< 宛先IPアドレス */ 69 u8 netmask[NSOC_IP_ALEN]; /**< サブネットマスク */ 70 u8 gateway[NSOC_IP_ALEN]; /**< next-hopゲートウエイ */ 71 u32 flag; /**< NSOC_IP_ROUTE_FLAG_XXX、NSOC_SetInstanceOpt()では0を指定してください。 */ 72 NOSTick time; /**< 最後にアクセスされた時刻(tick)、NSOC_SetInstanceOpt()では0を指定してください。 */ 73 } NSOCIPRouteEntry; 74 75 #ifdef NSOC_IP6_ENABLE 76 /** 77 * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_IP6_ADD_ROUTE 使用時の構造体 78 */ 79 typedef struct NSOCIP6RouteEntry 80 { 81 u8 prefix[NSOC_IP6_ALEN]; /**< プレフィックス */ 82 u32 prefixLen; /**< プレフィックス長 */ 83 u32 flag; /**< NSOC_IP_ROUTE_FLAG_XXX、NSOC_SetInstanceOpt()では0を指定してください。 */ 84 u32 expireTime; /**< 期限切れとなる時刻(秒)、NSOC_SetInstanceOpt()時は0を指定してください。 */ 85 } NSOCIP6RouteEntry; 86 87 /** 88 * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_IP6_ADD_ADDRESS、 89 * NSOC_CONFIG_IP6_ADDR_TABLE 使用時の構造体 90 */ 91 typedef struct NSOCIP6MyAddrEntry 92 { 93 u8 addr[NSOC_IP6_ALEN]; /**< アドレス */ 94 u32 preferredTime; /**< Preferred Lifetime(秒) */ 95 u32 validTime; /**< Valid Lifetime(秒) */ 96 u32 state; /**< 自アドレスの状態 NSOC_IP6_MYADR_ST_XXXX、NSOC_SetInstanceOpt()時は0を指定してください。 */ 97 BOOL anycast; /**< エニーキャストアドレスか否か */ 98 } NSOCIP6MyAddrEntry; 99 100 /** 101 * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_IP6_ADD_PREFIX、 102 * NSOC_CONFIG_IP6_PREFIX_TABLE 使用時の構造体 103 */ 104 typedef struct NSOCIP6PrefixEntry 105 { 106 u8 prefix[NSOC_IP6_ALEN]; /**< プレフィックス */ 107 u32 prefixLen; /**< プレフィックス長。NSOC_GetInstanceOpt()時は1-64のビット長で指定してください。 */ 108 u32 preferredTime; /**< Preferred Lifetime(秒) */ 109 u32 validTime; /**< Valid Lifetime(秒) */ 110 u8 flags; /**< NSOC_NDP_OPT_PI_FLAG_XXXXのいずれか */ 111 } NSOCIP6PrefixEntry; 112 113 /** 114 * NSOC_GetInstanceOpt() 115 * NSOC_CONFIG_IP6_NEIGHBOR_CACHE_TABLE 使用時の構造体 116 */ 117 typedef struct NSOCIP6NeighborCacheEntry 118 { 119 u8 addr[NSOC_IP6_ALEN]; /**< 近隣アドレス */ 120 u32 state; /**< キャッシュの状態 NSOC_NDP_NCST_XXXX */ 121 BOOL isRouter; /**< ルータか否か */ 122 } NSOCIP6NeighborCacheEntry; 123 124 /** 125 * NSOC_GetInstanceOpt()で 126 * NSOC_CONFIG_IP6_DESTINATION_CACHE_TABLE 使用時の構造体 127 */ 128 typedef struct NSOCIP6DestinationCacheEntry 129 { 130 u8 dst[NSOC_IP6_ALEN]; /**< 宛先アドレス */ 131 u8 nextHop[NSOC_IP6_ALEN]; /**< 次ホップアドレス */ 132 u32 pmtu; /**< パスMTU値 */ 133 } NSOCIP6DestinationCacheEntry; 134 135 /** 136 * NSOC_GetInstanceOpt()で 137 * NSOC_CONFIG_IP6_DEFAULT_ROUTER_TABLE 使用時の構造体 138 */ 139 typedef struct NSOCIP6DefaultRouterEntry 140 { 141 u8 addr[NSOC_IP6_ALEN]; /**< デフォルトルータアドレス */ 142 } NSOCIP6DefaultRouterEntry; 143 144 #endif /* NSOC_IP6_ENABLE */ 145 146 /** 147 * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_UDP_TABLE 使用時の構造体 148 */ 149 typedef struct NSOCUDPEntry 150 { 151 NSOCSockAddrStorage local; /**< 自ソケットアドレス情報 */ 152 NSOCSockAddrStorage remote; /**< 相手先ソケットアドレス情報 */ 153 } NSOCUDPEntry; 154 155 156 #define NSOC_TCP_STATE_CLOSED 1 /**< CLOSEDステート */ 157 #define NSOC_TCP_STATE_LISTEN 2 /**< LISTENステート */ 158 #define NSOC_TCP_STATE_SYN_SENT 3 /**< SYN_SENTステート */ 159 #define NSOC_TCP_STATE_SYN_RECEIVED 4 /**< SYN_RECEIVED ステート */ 160 #define NSOC_TCP_STATE_ESTABLISHED 5 /**< ESTABLISHEDステート */ 161 #define NSOC_TCP_STATE_FINWAIT1 6 /**< FINWAIT_1ステート */ 162 #define NSOC_TCP_STATE_FINWAIT2 7 /**< FINWAIT_2ステート */ 163 #define NSOC_TCP_STATE_CLOSE_WAIT 8 /**< CLOSE_WAITステート */ 164 #define NSOC_TCP_STATE_LAST_ACK 9 /**< LAST_ACKステート */ 165 #define NSOC_TCP_STATE_CLOSING 10 /**< CLOSINGステート */ 166 #define NSOC_TCP_STATE_TIME_WAIT 11 /**< TIME_WAITステート */ 167 168 /** 169 * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_TCP_TABLE 使用時の構造体 170 */ 171 typedef struct NSOCTCPEntry 172 { 173 s32 state; /**< NSOC_TCP_STATE_*のいずれか */ 174 NSOCSockAddrStorage local; /**< 自ソケットアドレス情報 */ 175 NSOCSockAddrStorage remote; /**< 相手先ソケットアドレス情報 */ 176 } NSOCTCPEntry; 177 178 #ifdef __cplusplus 179 } 180 #endif 181 182 #endif /* __NSOC_ENTRY_H__ */ 183