1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     socket_Entry.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: 26698 $
14  *---------------------------------------------------------------------------*/
15 
16 /**
17  * GetInstanceOpt(), SetInstanceOpt()で使用する情報構造体
18  */
19 
20 #ifndef NN_SOCKET_SOCKET_ENTRY_AUTOGEN_H_
21 #define NN_SOCKET_SOCKET_ENTRY_AUTOGEN_H_
22 
23 #include <nn/socket/socket_User.autogen.h>	/* for NN_SOCKET_IP_ALEN, NN_SOCKET_ETH_ALEN */
24 
25 namespace nn {
26 namespace socket {
27 
28 enum ArpState {
29 	ARP_STATE_INCOMPLETE              = 1, //!< ARP解決実行中状態
30 	ARP_STATE_REACHABLE               = 2, //!< 到達可能状態
31 	ARP_STATE_PROBE                   = 3  //!< 確認中状態
32 };
33 
34 /**
35  * GetInstanceOpt(), SetInstanceOpt()でCONFIG_ARP_TABLE使用時の構造体
36  */
37 struct ArpEntry
38 {
39     int             state;                      //!< ARP_STATE_*のいずれか
40     u8              prAddr[NN_SOCKET_IP_ALEN];       //!< IPアドレス
41     u8              hwAddr[NN_SOCKET_ETH_ALEN];      //!< MACアドレス
42 };
43 
44 
45 /**
46  * GetInstanceOpt(), SetInstanceOpt()でCONFIG_IP_ADDR_TABLE 使用時の構造体
47  */
48 struct IpAddrEntry
49 {
50     u8              addr[NN_SOCKET_IP_ALEN];         //!< IPアドレス
51     u8              netMask[NN_SOCKET_IP_ALEN];      //!< サブネットマスク
52     u8              bcastAddr[NN_SOCKET_IP_ALEN];    //!< ブロードキャストアドレス
53 };
54 
55 enum IpRouteFlag {
56 	IP_ROUTE_FLAG_G                   = 0x01,    //!< ルータからの情報により作成
57 	IP_ROUTE_FLAG_D                   = 0x02,    //!< ICMPにより作成
58 	IP_ROUTE_FLAG_M                   = 0x04     //!< ICMPにより変更
59 };
60 
61 /**
62  * GetInstanceOpt(), SetInstanceOpt()でCONFIG_IP_ROUTING_TABLE 使用時の構造体
63  */
64 struct IpRouteEntry
65 {
66     u8           dst[NN_SOCKET_IP_ALEN];          //!< 宛先IPアドレス
67     u8           netmask[NN_SOCKET_IP_ALEN];      //!< サブネットマスク
68     u8           gateway[NN_SOCKET_IP_ALEN];      //!< next-hopゲートウエイ
69     u32          flag;                       //!< IP_ROUTE_FLAG_XXX、SetInstanceOpt()では0を指定してください。
70     s64      time;                       //!< 最後にアクセスされた時刻(tick)、SetInstanceOpt()では0を指定してください。
71 };
72 
73 #ifdef NN_SOCKET_IP6_ENABLE
74 /**
75  * GetInstanceOpt(), SetInstanceOpt()でCONFIG_IP6_ADD_ROUTE 使用時の構造体
76  */
77 struct Ip6RouteEntry
78 {
79     u8              prefix[NN_SOCKET_IP6_ALEN];      //!< プレフィックス
80     u32             prefixLen;                  //!< プレフィックス長
81     u32             flag;                       //!< IP_ROUTE_FLAG_XXX、SetInstanceOpt()では0を指定してください。
82     u32             expireTime;                 //!< 期限切れとなる時刻(秒)、SetInstanceOpt()時は0を指定してください。
83 };
84 
85 /**
86  * GetInstanceOpt(), SetInstanceOpt()でCONFIG_IP6_ADD_ADDRESS、
87  * CONFIG_IP6_ADDR_TABLE 使用時の構造体
88  */
89 struct Ip6MyAddrEntry
90 {
91     u8              addr[NN_SOCKET_IP6_ALEN];    //!< アドレス
92     u32             preferredTime;          //!< Preferred Lifetime(秒)
93     u32             validTime;              //!< Valid Lifetime(秒)
94     u32             state;                  //!< 自アドレスの状態 IP6_MYADR_ST_XXXX、SetInstanceOpt()時は0を指定してください。
95     Bool            anycast;                //!< エニーキャストアドレスか否か
96 };
97 
98 /**
99  * GetInstanceOpt(), SetInstanceOpt()でCONFIG_IP6_ADD_PREFIX、
100  * CONFIG_IP6_PREFIX_TABLE 使用時の構造体
101  */
102 struct Ip6PrefixEntry
103 {
104     u8              prefix[NN_SOCKET_IP6_ALEN];  //!< プレフィックス
105     u32             prefixLen;              //!< プレフィックス長。GetInstanceOpt()時は1-64のビット長で指定してください。
106     u32             preferredTime;          //!< Preferred Lifetime(秒)
107     u32             validTime;              //!< Valid Lifetime(秒)
108     u8              flags;                  //!< NDP_OPT_PI_FLAG_XXXXのいずれか
109 };
110 
111 /**
112  * GetInstanceOpt()
113  * CONFIG_IP6_NEIGHBOR_CACHE_TABLE 使用時の構造体
114  */
115 struct Ip6NeighborCacheEntry
116 {
117     u8              addr[NN_SOCKET_IP6_ALEN];    //!< 近隣アドレス
118     u32             state;                  //!< キャッシュの状態 NDP_NCST_XXXX
119     Bool            isRouter;               //!< ルータか否か
120 };
121 
122 /**
123  * GetInstanceOpt()で
124  * CONFIG_IP6_DESTINATION_CACHE_TABLE 使用時の構造体
125  */
126 struct Ip6DestinationCacheEntry
127 {
128     u8              dst[NN_SOCKET_IP6_ALEN];     //!< 宛先アドレス
129     u8              nextHop[NN_SOCKET_IP6_ALEN]; //!< 次ホップアドレス
130     u32             pmtu;                   //!< パスMTU値
131 };
132 
133 /**
134  * GetInstanceOpt()で
135  * CONFIG_IP6_DEFAULT_ROUTER_TABLE 使用時の構造体
136  */
137 struct Ip6DefaultRouterEntry
138 {
139     u8              addr[NN_SOCKET_IP6_ALEN];     //!< デフォルトルータアドレス
140 };
141 
142 #endif /* NN_SOCKET_IP6_ENABLE */
143 
144 /**
145  * GetInstanceOpt(), SetInstanceOpt()でCONFIG_UDP_TABLE 使用時の構造体
146  */
147 struct UdpEntry
148 {
149     SockAddrStorage    local;         //!< 自ソケットアドレス情報
150     SockAddrStorage    remote;        //!< 相手先ソケットアドレス情報
151 };
152 
153 
154 #define TCP_STATE_CLOSED        1    //!< CLOSEDステート
155 #define TCP_STATE_LISTEN        2    //!< LISTENステート
156 #define TCP_STATE_SYN_SENT      3    //!< SYN_SENTステート
157 #define TCP_STATE_SYN_RECEIVED  4    //!< SYN_RECEIVED ステート
158 #define TCP_STATE_ESTABLISHED   5    //!< ESTABLISHEDステート
159 #define TCP_STATE_FINWAIT1      6    //!< FINWAIT_1ステート
160 #define TCP_STATE_FINWAIT2      7    //!< FINWAIT_2ステート
161 #define TCP_STATE_CLOSE_WAIT    8    //!< CLOSE_WAITステート
162 #define TCP_STATE_LAST_ACK      9    //!< LAST_ACKステート
163 #define TCP_STATE_CLOSING       10   //!< CLOSINGステート
164 #define TCP_STATE_TIME_WAIT     11   //!< TIME_WAITステート
165 
166 /**
167  * GetInstanceOpt(), SetInstanceOpt()でCONFIG_TCP_TABLE 使用時の構造体
168  */
169 struct TcpEntry
170 {
171     s32                    state;         //!< TCP_STATE_*のいずれか
172     SockAddrStorage    local;         //!< 自ソケットアドレス情報
173     SockAddrStorage    remote;        //!< 相手先ソケットアドレス情報
174 };
175 
176 
177 } // socket
178 } // nn
179 #endif  /* NN_SOCKET_SOCKET_ENTRY_AUTOGEN_H_ */
180