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