1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     nsoc_stat.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_stat.h
18  * NSOC_GetInterfaceOpt(), NSOC_SetInterfaceOpt()で使用する各プロトコルの統計情報構造体
19  */
20 
21 #ifndef __NSOC_STAT_H__
22 #define __NSOC_STAT_H__
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /**
29  * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_INTERFACE_STATISTICS使用時の構造体
30  */
31 typedef struct NSOCInstanceStat
32 {
33     u64             inOctets;           /**< 受信したパケット数 */
34     u32             inUcastPkts;        /**< 受信したユニキャストパケット数 */
35     u32             inNUcastPkts;       /**< 受信した非ユニキャストパケット数 */
36     u32             inDiscards;         /**< 破棄した受信パケット数 */
37     u32             inErrors;           /**< エラーだった受信パケット数 */
38     u32             inUnknownProtos;    /**< 不明なプロトコルだった受信パケット数 */
39     u32             outUcastPkts;       /**< 送信したユニキャストパケット数 */
40     u64             outOctets;          /**< 送信した総バイト数 */
41     u32             outNUcastPkts;      /**< 送信した非ユニキャストパケット数 */
42     u32             outDiscards;        /**< 破棄した送信パケット数 */
43     u32             outErrors;          /**< エラーとなった送信パケット数 */
44     u32             outCollisions;      /**< Ethernetでコリジョンエラーとなったパケット数 */
45 } NSOCInstanceStat;
46 
47 
48 /**
49  * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_IP_STATISTICS使用時の構造体
50  */
51 typedef struct NSOCIPStat
52 {
53     u32             inReceives;         /**< 受信したIPパケット数 */
54     u32             inHdrErrors;        /**< ヘッダエラーだったIPパケット数 */
55     u32             inAddrErrors;       /**< IPアドレスエラーだったIPパケット数 */
56     u32             inUnknownProtos;    /**< プロトコルが不明だったIPパケット数 */
57     u32             inDiscards;         /**< 破棄したIPパケット数 */
58     u32             inDelivers;         /**< 上位プロトコルに渡したIPパケット数 */
59     u32             outRequests;        /**< 送信要求のあったIPパケット数 */
60     u32             outDiscards;        /**< 破棄された送信IPパケット数 */
61     u32             outNoRoutes;        /**< 到達不可だったIPパケット数 */
62     u32             reasmTimeout;       /**< 再構築タイムアウトだったIPパケット数 */
63     u32             reasmReqds;         /**< 受信したIPフラグメントパケット数 */
64     u32             reasmOKs;           /**< 再構築に成功したIPパケット数 */
65     u32             reasmFails;         /**< 再構築に失敗したIPパケット数 */
66     u32             fragOKs;            /**< フラグメントに成功した送信IPパケット数 */
67     u32             fragFails;          /**< フラグメントに失敗した送信IPパケット数 */
68     u32             fragCreates;        /**< 作成されたIPフラグメントパケット数 */
69 } NSOCIPStat;
70 
71 /**
72  * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_ICMP_STATISTICS使用時の構造体
73  */
74 typedef struct NSOCICMPStat
75 {
76     u32             inMsgs;             /**< 受信したICMPパケット数 */
77     u32             inErrors;           /**< 受信エラーとなったICMPパケット数 */
78     u32             inDestUnreachs;     /**< 受信したDestination Unreachableパケット数 */
79     u32             inTimeExcds;        /**< 受信したTime Exceededパケット数 */
80     u32             inParmProbs;        /**< 受信したParameter Problemパケット数 */
81     u32             inSrcQuenchs;       /**< 受信したSource Quenchパケット数 */
82     u32             inRedirects;        /**< 受信したRedirectパケット数 */
83     u32             inEchos;            /**< 受信したEcho Requestパケット数 */
84     u32             inEchoReps;         /**< 受信したEcho Responseパケット数 */
85     u32             inTimestamps;       /**< 受信したTimestamp Requestパケット数 */
86     u32             inTimestampReps;    /**< 受信したTimestamp Replyパケット数 */
87     u32             inAddrMasks;        /**< 受信したAddress Mask Requestパケット数 */
88     u32             inAddrMaskReps;     /**< 受信したAddress Mask Replyパケット数 */
89     u32             outMsgs;            /**< 送信したICMPパケット数 */
90     u32             outErrors;          /**< 送信エラーとなったICMPパケット数 */
91     u32             outDestUnreachs;    /**< 送信したDestination Unreachableパケット数 */
92     u32             outTimeExcds;       /**< 送信したTime Exceededパケット数 */
93     u32             outParmProbs;       /**< 送信したParameter Problemパケット数 */
94     u32             outSrcQuenchs;      /**< 送信したSource Quenchパケット数 */
95     u32             outRedirects;       /**< 送信したRedirectパケット数 */
96     u32             outEchos;           /**< 送信したEcho Requestパケット数 */
97     u32             outEchoReps;        /**< 送信したEcho Responseパケット数 */
98     u32             outTimestamps;      /**< 送信したTimestamp Requestパケット数(現在未使用) */
99     u32             outTimestampReps;   /**< 送信したTimestamp Replyパケット数(現在未使用) */
100     u32             outAddrMasks;       /**< 送信したAddress Mask Requestパケット数(現在未使用) */
101     u32             outAddrMaskReps;    /**< 送信したAddress Mask Replyパケット数(現在未使用) */
102 } NSOCICMPStat;
103 
104 /**
105  * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_UDP_STATISTICS使用時の構造体
106  */
107 typedef struct NSOCUDPStat
108 {
109     u32             inDatagrams;         /**< 受信したUDPパケット数 */
110     u32             inErrors;            /**< 受信したエラーUDPパケット数 */
111     u32             noPorts;             /**< 該当ポートがオープンされていなかった受信UDPパケット数 */
112     u32             outDatagrams;        /**< 送信したUDPパケット数 */
113     u32             outErrors;          /**< 送信エラーとなったUDPパケット数 */
114 } NSOCUDPStat;
115 
116 /**
117  * NSOC_GetInstanceOpt(), NSOC_SetInstanceOpt()でNSOC_CONFIG_TCP_STATISTICS使用時の構造体
118  */
119 typedef struct NSOCTCPStat
120 {
121     u32             activeOpens;         /**< NSOC_Connect()による接続回数 */
122     u32             passiveOpens;        /**< NSOC_Accept()による着信回数 */
123     u32             attemptFails;        /**< 接続失敗回数 */
124     u32             estabResets;         /**< RSTによる切断回数 */
125     u32             currEstab;           /**< 現在接続確立しているソケット数 */
126     u32             inSegs;              /**< 受信したTCPパケット数 */
127     u32             outSegs;             /**< 送信したTCPパケット数 */
128     u32             retransSegs;         /**< 再送したTCPパケット数 */
129     u32             inErrs;              /**< 受信したエラーTCPパケット数 */
130     u32             outErrs;             /**< 送信エラーとなったTCPパケット数 */
131     u32             outRsts;             /**< RST送信数 */
132 } NSOCTCPStat;
133 
134 #ifdef NSOC_IP6_ENABLE
135 typedef struct NSOCIP6Stat
136 {
137     u32             inReceives;         /**< 受信したIPv6パケット数 */
138     u32             inHdrErrors;        /**< ヘッダエラーだった受信IPv6パケット数 */
139     u32             inAddrErrors;       /**< IPアドレスエラーだった受信IPv6パケット数 */
140     u32             inUnknownProtos;    /**< プロトコルが不明だった受信IPv6パケット数 */
141     u32             inTruncatedPkts;    /**< 長さ不足の受信IPv6パケット数 */
142     u32             inDiscards;         /**< IP層で破棄した受信IPv6パケット数 */
143     u32             inDelivers;         /**< 上位プロトコルに渡したIPv6パケット数 */
144     u32             outRequests;        /**< 送信要求のあったIPv6パケット数 */
145     u32             outDiscards;        /**< IP層で破棄した送信IPv6パケット数 */
146     u32             outFragOKs;         /**< フラグメントに成功した送信IPv6パケット数 */
147     u32             outFragFails;       /**< フラグメントに失敗した送信IPv6パケット数 */
148     u32             outFragCreates;     /**< 作成されたIPv6フラグメントパケット数 */
149     u32             reasmReqds;         /**< 受信したIPv6フラグメントパケット数 */
150     u32             reasmOKs;           /**< 再構築に成功したIPv6パケット数 */
151     u32             reasmFails;         /**< 再構築に失敗したIPv6パケット数 */
152     u32             inMcastPkts;        /**< 受信したIPv6マルチキャストパケット数 */
153     u32             outMcastPkts;       /**< 送信したIPv6マルチキャストパケット数 */
154 } NSOCIP6Stat;
155 
156 typedef struct NSOCICMP6Stat
157 {
158     u32             inMsgs;             /**< 受信したICMPv6パケット数 */
159     u32             inErrors;           /**< 受信エラーとなったICMPv6パケット数 */
160     u32             inDestUnreachs;     /**< 受信したDestination Unreachableエラーパケット数 */
161     u32             inAdminProhibs;     /**< 受信したadministratively prohibitedエラーパケット数 */
162     u32             inTimeExcds;        /**< 受信したTime Exceededエラーパケット数 */
163     u32             inParmProblems;     /**< 受信したParameter Problemエラーパケット数 */
164     u32             inPktTooBigs;       /**< 受信したPacket Too Bigエラーパケット数 */
165     u32             inEchos;            /**< 受信したEcho Requestパケット数 */
166     u32             inEchoReplies;      /**< 受信したEcho Replyパケット数 */
167     u32             inRouterSolicits;   /**< 受信したRouter Solicitパケット数 */
168     u32             inRouterAdvertisements; /**< 受信したRouter Advertisementパケット数 */
169     u32             inNeighborSolicits; /**< 受信したNeighbor Solicitパケット数 */
170     u32             inNeighborAdvertisements; /**< 受信したNeighbor Advertisementパケット数 */
171     u32             inRedirects;        /**< 受信したRedirectパケット数 */
172     u32             inGroupMembQueries; /**< 受信したMLD Listener Queryパケット数 */
173     u32             inGroupMembResponses; /**< 受信したMLD Listener Reportパケット数 */
174     u32             inGroupMembResponsesV1; /**< 受信したMLD Listener Report V1パケット数 */
175     u32             inGroupMembReductions; /**< 受信したMLD Listener Reductionパケット数 */
176     u32             outMsgs;            /**< 送信したICMPv6パケット数 */
177     u32             outErrors;          /**< 送信エラーとなったICMPv6パケット数 */
178     u32             outDestUnreachs;    /**< 送信したDestination Unreachableパケット数 */
179     u32             outAdminProhibs;    /**< 送信したadministratively prohibitedエラーパケット数 */
180     u32             outTimeExcds;       /**< 送信したTime Exceededエラーパケット数 */
181     u32             outParmProblems;    /**< 送信したParameter Problemエラーパケット数 */
182     u32             outPktTooBigs;      /**< 送信したPacket Too Bigエラーパケット数 */
183     u32             outEchos;           /**< 送信したEcho Requestパケット数 */
184     u32             outEchoReplies;     /**< 送信したEcho Replyパケット数 */
185     u32             outRouterSolicits;  /**< 送信したRouter Solicitパケット数 */
186     u32             outRouterAdvertisements; /**< 送信したRouter Advertisementパケット数 */
187     u32             outNeighborSolicits; /**< 送信したNeighbor Solicitパケット数 */
188     u32             outNeighborAdvertisements; /**< 送信したNeighbor Advertisementパケット数 */
189     u32             outRedirects;       /**< 送信したRedirectパケット数 */
190     u32             outGroupMembQueries; /**< 送信したMLD Listener Queryパケット数 */
191     u32             outGroupMembResponses; /**< 送信したMLD Listener Reportパケット数 */
192     u32             outGroupMembResponsesV1; /**< 送信したMLD Listener Report V1パケット数 */
193     u32             outGroupMembReductions; /**< 送信したMLD Listener Reductionパケット数 */
194 } NSOCICMP6Stat;
195 #endif
196 
197 #ifdef __cplusplus
198 }
199 #endif
200 
201 #endif  /* __NSOC_STAT_H__ */
202